Commit cd60b0e5 authored by bonnell's avatar bonnell

Add preferences option for specifying floating-point precision used by VisIt's pipeline.

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@21533 18c085ea-50e0-402c-830e-de6fd14e8384
parent 983a6718
......@@ -167,6 +167,35 @@ avtVarTypeToString(avtVarType v)
}
// ****************************************************************************
// Function: avtPrecisionTypeToString
//
// Purpose:
// Creates a string from an avtPrecisionType.
//
// Programmer: Kathleen Biagas
// Creation: July 29, 2013
//
// ****************************************************************************
std::string
avtPrecisionTypeToString(avtPrecisionType v)
{
switch (v)
{
case AVT_PRECISION_FLOAT:
return "float";
case AVT_PRECISION_NATIVE:
return "native";
case AVT_PRECISION_DOUBLE:
return "double";
default:
break;
}
return "unknown";
}
// ****************************************************************************
// Function: GuessVarTypeFromNumDimsAndComps
//
......
......@@ -133,6 +133,13 @@ enum avtMeshCoordType
AVT_ZR /* 2 */
};
enum avtPrecisionType
{
AVT_PRECISION_FLOAT = 0,
AVT_PRECISION_NATIVE, /* 1 */
AVT_PRECISION_DOUBLE /* 2 */
};
enum SetState
{
NoneUsed = 0,
......@@ -178,6 +185,7 @@ DBATTS_API std::string avtExtentType_ToString(int);
DBATTS_API bool avtExtentType_FromString(const std::string &, avtExtentType &);
DBATTS_API std::string avtVarTypeToString(avtVarType);
DBATTS_API std::string avtPrecisionTypeToString(avtPrecisionType);
DBATTS_API std::string LoadBalanceSchemeToString(LoadBalanceScheme);
......
......@@ -92,6 +92,7 @@ bool avtDatabaseFactory::createMeshQualityExpressions = true;
bool avtDatabaseFactory::createTimeDerivativeExpressions = true;
bool avtDatabaseFactory::createVectorMagnitudeExpressions = true;
FileOpenOptions avtDatabaseFactory::defaultFileOpenOptions;
avtPrecisionType avtDatabaseFactory::precisionType = AVT_PRECISION_NATIVE;
//
// Function Prototypes
......@@ -120,6 +121,28 @@ avtDatabaseFactory::SetDefaultFileOpenOptions(const FileOpenOptions &opts)
defaultFileOpenOptions = opts;
}
// ****************************************************************************
// Method: avtDatabaseFactory::SetPrecisionType
//
// Purpose:
// Store off the precisionType. We use this when XForm Manager decides
// whether or not to tranform data.
//
// Arguments:
// pType the new precision type.
//
// Programmer: Kathleen Biagas
// Creation: August 1, 2013
//
// ****************************************************************************
void
avtDatabaseFactory::SetPrecisionType(const int pType)
{
if (pType >= 0 && pType < 3)
precisionType = avtPrecisionType(pType);
}
// ****************************************************************************
// Method: avtDatabaseFactory::FileList
//
......
......@@ -50,6 +50,7 @@
#include <vector>
#include <FileOpenOptions.h>
#include <avtTypes.h>
class avtDatabase;
class CommonDatabasePluginInfo;
......@@ -124,8 +125,11 @@ class DatabasePluginManager;
// Hank Childs, Sun Sep 19 09:07:09 PDT 2010
// Add argument to SetupDatabase for setting times explicitly.
//
// Dave Pugmire, Fri Feb 8 17:22:01 EST 2013
// Added support for ensemble databases. (multiple time values)
// Dave Pugmire, Fri Feb 8 17:22:01 EST 2013
// Added support for ensemble databases. (multiple time values)
//
// Kathleen Biagas, Wed Aug 7 12:44:37 PDT 2013
// Add methods for setting/getting precision type specified by user.
//
// ****************************************************************************
......@@ -162,6 +166,9 @@ class DATABASE_API avtDatabaseFactory
static bool GetCreateVectorMagnitudeExpressions(void)
{return createVectorMagnitudeExpressions;}
static void SetPrecisionType(const int pType);
static avtPrecisionType GetPrecisionType()
{ return precisionType;}
protected:
static avtDatabase *SetupDatabase(CommonDatabasePluginInfo *,
const char * const *, int,
......@@ -173,5 +180,6 @@ class DATABASE_API avtDatabaseFactory
static bool createTimeDerivativeExpressions;
static bool createVectorMagnitudeExpressions;
static FileOpenOptions defaultFileOpenOptions;
static avtPrecisionType precisionType;
};
#endif
This diff is collapsed.
......@@ -104,6 +104,9 @@ class avtSourceFromDatabase;
// I modified the multi-pass discretizion of CSG meshes to only process
// a portion of the mesh on each processor instead of the entire mesh.
//
// Kathleen Biagas, Wed Aug 7 15:42:57 PDT 2013
// Add methods that test for insufficient precision.
//
// ****************************************************************************
class DATABASE_API avtTransformManager
......@@ -127,9 +130,14 @@ class DATABASE_API avtTransformManager
private:
bool CoordinatesHaveExcessPrecision(vtkDataSet *ds,
bool needNativePrecision) const;
bool needNativePrecision) const;
bool DataHasExcessPrecision(vtkDataArray *da,
bool needNativePrecision) const;
bool needNativePrecision) const;
bool CoordinatesHaveInsufficientPrecision(
vtkDataSet *ds,
bool needNativePrecision) const;
bool DataHasInsufficientPrecision(vtkDataArray *da,
bool needNativePrecision) const;
vtkDataSet *NativeToFloat(const avtDatabaseMetaData *const md,
const avtDataRequest_p &spec,
......
......@@ -39,6 +39,44 @@
#include <GlobalAttributes.h>
#include <DataNode.h>
//
// Enum conversion methods for GlobalAttributes::PrecisionType
//
static const char *PrecisionType_strings[] = {
"Float", "Native", "Double"
};
std::string
GlobalAttributes::PrecisionType_ToString(GlobalAttributes::PrecisionType t)
{
int index = int(t);
if(index < 0 || index >= 3) index = 0;
return PrecisionType_strings[index];
}
std::string
GlobalAttributes::PrecisionType_ToString(int t)
{
int index = (t < 0 || t >= 3) ? 0 : t;
return PrecisionType_strings[index];
}
bool
GlobalAttributes::PrecisionType_FromString(const std::string &s, GlobalAttributes::PrecisionType &val)
{
val = GlobalAttributes::Float;
for(int i = 0; i < 3; ++i)
{
if(s == PrecisionType_strings[i])
{
val = (PrecisionType)i;
return true;
}
}
return false;
}
// ****************************************************************************
// Method: GlobalAttributes::GlobalAttributes
//
......@@ -82,6 +120,7 @@ void GlobalAttributes::Init()
saveCrashRecoveryFile = true;
ignoreExtentsFromDbs = false;
expandNewPlots = false;
precisionType = Native;
GlobalAttributes::SelectAll();
}
......@@ -127,6 +166,7 @@ void GlobalAttributes::Copy(const GlobalAttributes &obj)
saveCrashRecoveryFile = obj.saveCrashRecoveryFile;
ignoreExtentsFromDbs = obj.ignoreExtentsFromDbs;
expandNewPlots = obj.expandNewPlots;
precisionType = obj.precisionType;
GlobalAttributes::SelectAll();
}
......@@ -307,7 +347,8 @@ GlobalAttributes::operator == (const GlobalAttributes &obj) const
(userDirForSessionFiles == obj.userDirForSessionFiles) &&
(saveCrashRecoveryFile == obj.saveCrashRecoveryFile) &&
(ignoreExtentsFromDbs == obj.ignoreExtentsFromDbs) &&
(expandNewPlots == obj.expandNewPlots));
(expandNewPlots == obj.expandNewPlots) &&
(precisionType == obj.precisionType));
}
// ****************************************************************************
......@@ -475,6 +516,7 @@ GlobalAttributes::SelectAll()
Select(ID_saveCrashRecoveryFile, (void *)&saveCrashRecoveryFile);
Select(ID_ignoreExtentsFromDbs, (void *)&ignoreExtentsFromDbs);
Select(ID_expandNewPlots, (void *)&expandNewPlots);
Select(ID_precisionType, (void *)&precisionType);
}
///////////////////////////////////////////////////////////////////////////////
......@@ -561,6 +603,9 @@ GlobalAttributes::SelectAll()
// Jeremy Meredith, Wed Feb 3 14:54:47 EST 2010
// Removed maintainData, moved maintainView to view settings, not global.
//
// Kathleen Biagas, Thu Jul 25 13:47:07 PDT 2013
// Add precision.
//
// ****************************************************************************
bool
......@@ -688,6 +733,13 @@ GlobalAttributes::CreateNode(DataNode *parentNode, bool completeSave, bool force
applySelection));
}
if(completeSave || !FieldsEqual(ID_precisionType, &defaultObject))
{
addToParent = true;
node->AddNode(new DataNode("precisionType",
precisionType));
}
// Add the node to the parent node.
if(addToParent || forceAdd)
parentNode->AddNode(node);
......@@ -762,6 +814,9 @@ GlobalAttributes::CreateNode(DataNode *parentNode, bool completeSave, bool force
// Jeremy Meredith, Wed Feb 3 14:54:47 EST 2010
// Removed maintainData, moved maintainView to view settings, not global.
//
// Kathleen Biagas, Thu Jul 25 13:47:07 PDT 2013
// Add precision.
//
// ****************************************************************************
void
......@@ -809,6 +864,21 @@ GlobalAttributes::SetFromNode(DataNode *parentNode)
SetSaveCrashRecoveryFile(node->AsBool());
if((node = searchNode->GetNode("applySelection")) != 0)
SetApplySelection(node->AsBool());
if((node = searchNode->GetNode("precisionType")) != 0)
{
if (node->GetNodeType() == INT_NODE)
{
int ival = node->AsInt();
if (ival >= 0 && ival < 3)
SetPrecisionType(PrecisionType(ival));
}
else if (node->GetNodeType() == STRING_NODE)
{
PrecisionType value;
if (PrecisionType_FromString(node->AsString(), value))
SetPrecisionType(value);
}
}
}
///////////////////////////////////////////////////////////////////////////////
// Set property methods
......@@ -982,6 +1052,13 @@ GlobalAttributes::SetExpandNewPlots(bool expandNewPlots_)
Select(ID_expandNewPlots, (void *)&expandNewPlots);
}
void
GlobalAttributes::SetPrecisionType(GlobalAttributes::PrecisionType precisionType_)
{
precisionType = precisionType_;
Select(ID_precisionType, (void *)&precisionType);
}
///////////////////////////////////////////////////////////////////////////////
// Get property methods
///////////////////////////////////////////////////////////////////////////////
......@@ -1142,6 +1219,12 @@ GlobalAttributes::GetExpandNewPlots() const
return expandNewPlots;
}
GlobalAttributes::PrecisionType
GlobalAttributes::GetPrecisionType() const
{
return PrecisionType(precisionType);
}
///////////////////////////////////////////////////////////////////////////////
// Select property methods
///////////////////////////////////////////////////////////////////////////////
......@@ -1206,6 +1289,7 @@ GlobalAttributes::GetFieldName(int index) const
case ID_saveCrashRecoveryFile: return "saveCrashRecoveryFile";
case ID_ignoreExtentsFromDbs: return "ignoreExtentsFromDbs";
case ID_expandNewPlots: return "expandNewPlots";
case ID_precisionType: return "precisionType";
default: return "invalid index";
}
}
......@@ -1254,6 +1338,7 @@ GlobalAttributes::GetFieldType(int index) const
case ID_saveCrashRecoveryFile: return FieldType_bool;
case ID_ignoreExtentsFromDbs: return FieldType_bool;
case ID_expandNewPlots: return FieldType_bool;
case ID_precisionType: return FieldType_enum;
default: return FieldType_unknown;
}
}
......@@ -1302,6 +1387,7 @@ GlobalAttributes::GetFieldTypeName(int index) const
case ID_saveCrashRecoveryFile: return "bool";
case ID_ignoreExtentsFromDbs: return "bool";
case ID_expandNewPlots: return "bool";
case ID_precisionType: return "enum";
default: return "invalid index";
}
}
......@@ -1448,6 +1534,11 @@ GlobalAttributes::FieldsEqual(int index_, const AttributeGroup *rhs) const
retval = (expandNewPlots == obj.expandNewPlots);
}
break;
case ID_precisionType:
{ // new scope
retval = (precisionType == obj.precisionType);
}
break;
default: retval = false;
}
......
......@@ -88,6 +88,9 @@ Definition:
// Jeremy Meredith, Wed Feb 3 14:54:47 EST 2010
// Removed maintainData, moved maintainView to view settings, not global.
//
// Kathleen Biagas, Thu Jul 25 13:47:07 PDT 2013
// Add precision.
//
// ****************************************************************************
bool
......@@ -215,6 +218,13 @@ GlobalAttributes::CreateNode(DataNode *parentNode, bool completeSave, bool force
applySelection));
}
if(completeSave || !FieldsEqual(ID_precisionType, &defaultObject))
{
addToParent = true;
node->AddNode(new DataNode("precisionType",
precisionType));
}
// Add the node to the parent node.
if(addToParent || forceAdd)
parentNode->AddNode(node);
......@@ -293,6 +303,9 @@ Definition:
// Jeremy Meredith, Wed Feb 3 14:54:47 EST 2010
// Removed maintainData, moved maintainView to view settings, not global.
//
// Kathleen Biagas, Thu Jul 25 13:47:07 PDT 2013
// Add precision.
//
// ****************************************************************************
void
......@@ -340,5 +353,20 @@ GlobalAttributes::SetFromNode(DataNode *parentNode)
SetSaveCrashRecoveryFile(node->AsBool());
if((node = searchNode->GetNode("applySelection")) != 0)
SetApplySelection(node->AsBool());
if((node = searchNode->GetNode("precisionType")) != 0)
{
if (node->GetNodeType() == INT_NODE)
{
int ival = node->AsInt();
if (ival >= 0 && ival < 3)
SetPrecisionType(PrecisionType(ival));
}
else if (node->GetNodeType() == STRING_NODE)
{
PrecisionType value;
if (PrecisionType_FromString(node->AsString(), value))
SetPrecisionType(value);
}
}
}
......@@ -61,6 +61,13 @@
class STATE_API GlobalAttributes : public AttributeSubject
{
public:
enum PrecisionType
{
Float,
Native,
Double
};
// These constructors are for objects of this class
GlobalAttributes();
GlobalAttributes(const GlobalAttributes &obj);
......@@ -114,6 +121,7 @@ public:
void SetSaveCrashRecoveryFile(bool saveCrashRecoveryFile_);
void SetIgnoreExtentsFromDbs(bool ignoreExtentsFromDbs_);
void SetExpandNewPlots(bool expandNewPlots_);
void SetPrecisionType(PrecisionType precisionType_);
// Property getting methods
const stringVector &GetSources() const;
......@@ -142,11 +150,18 @@ public:
bool GetSaveCrashRecoveryFile() const;
bool GetIgnoreExtentsFromDbs() const;
bool GetExpandNewPlots() const;
PrecisionType GetPrecisionType() const;
// Persistence methods
virtual bool CreateNode(DataNode *node, bool completeSave, bool forceAdd);
virtual void SetFromNode(DataNode *node);
// Enum conversion functions
static std::string PrecisionType_ToString(PrecisionType);
static bool PrecisionType_FromString(const std::string &, PrecisionType &);
protected:
static std::string PrecisionType_ToString(int);
public:
// Keyframing methods
virtual std::string GetFieldName(int index) const;
......@@ -181,6 +196,7 @@ public:
ID_saveCrashRecoveryFile,
ID_ignoreExtentsFromDbs,
ID_expandNewPlots,
ID_precisionType,
ID__LAST
};
......@@ -209,11 +225,12 @@ private:
bool saveCrashRecoveryFile;
bool ignoreExtentsFromDbs;
bool expandNewPlots;
int precisionType;
// Static class format string for type map.
static const char *TypeMapFormatString;
static const private_tmfs_t TmfsStruct;
};
#define GLOBALATTRIBUTES_TMFS "s*i*ibbbbbbbibbbbbbbbbbbbb"
#define GLOBALATTRIBUTES_TMFS "s*i*ibbbbbbbibbbbbbbbbbbbbi"
#endif
<?xml version="1.0"?>
<Attribute name="GlobalAttributes" purpose="This class contains attributes associated with the main window." persistent="true" keyframe="true" exportAPI="STATE_API" exportInclude="state_exports.h" codefile="GlobalAttributes.code">
<Enum name="PrecisionType">
Float
Native
Double
</Enum>
<Field name="sources" label="Sources" type="stringVector">
</Field>
<Field name="windows" label="windows" type="intVector">
......@@ -70,6 +75,9 @@
<Field name="expandNewPlots" label="Expand New Plots" type="bool">
false
</Field>
<Field name="precisionType" label="precision" type="enum" subtype="PrecisionType">
Native
</Field>
<Function name="CreateNode" user="false" member="true">
</Function>
<Function name="SetFromNode" user="false" member="true">
......
......@@ -1058,6 +1058,9 @@ Engine::InitializeCompute()
// Eric Brugger, Fri May 10 14:41:08 PDT 2013
// I removed support for mangled mesa.
//
// Kathleen Biagas, Wed Aug 7 15:50:49 PDT 2013
// Added SetPrecisionTypeRPC.
//
// ****************************************************************************
void
......@@ -1135,6 +1138,7 @@ Engine::SetUpViewerInterface(int *argc, char **argv[])
rpcExecutors.push_back(new RPCExecutor<ConstructDataBinningRPC>(&enginestate->GetConstructDataBinningRPC()));
rpcExecutors.push_back(new RPCExecutor<NamedSelectionRPC>(&enginestate->GetNamedSelectionRPC()));
rpcExecutors.push_back(new RPCExecutor<SetEFileOpenOptionsRPC>(&enginestate->GetSetEFileOpenOptionsRPC()));
rpcExecutors.push_back(new RPCExecutor<SetPrecisionTypeRPC>(&enginestate->GetSetPrecisionTypeRPC()));
rpcExecutors.push_back(new RPCExecutor<EnginePropertiesRPC>(&enginestate->GetEnginePropertiesRPC()));
rpcExecutors.push_back(new RPCExecutor<LaunchRPC>(&enginestate->GetLaunchRPC()));
......
......@@ -68,6 +68,7 @@ class UseNetworkRPC;
class ProcInfoRPC;
class SimulationCommandRPC;
class SetEFileOpenOptionsRPC;
class SetPrecisionTypeRPC;
class LaunchRPC;
class EngineState;
......
......@@ -85,6 +85,7 @@
#include <ReleaseDataRPC.h>
#include <RenderRPC.h>
#include <SetEFileOpenOptionsRPC.h>
#include <SetPrecisionTypeRPC.h>
#include <SetWinAnnotAttsRPC.h>
#include <SimulationCommandRPC.h>
#include <StartPickRPC.h>
......@@ -1826,6 +1827,25 @@ RPCExecutor<SetEFileOpenOptionsRPC>::Execute(SetEFileOpenOptionsRPC *rpc)
rpc->SendReply();
}
// ****************************************************************************
// Method: RPCExecutor<SetPrecisionTypeRPC>::Execute
//
// Purpose:
// Set the new precision type in the database factory.
//
//
// Programmer: Kathleen Biagas
// Creation: August 1, 2013
//
// ****************************************************************************
template<>
void
RPCExecutor<SetPrecisionTypeRPC>::Execute(SetPrecisionTypeRPC *rpc)
{
avtDatabaseFactory::SetPrecisionType(rpc->GetPrecisionType());
rpc->SendReply();
}
// ****************************************************************************
// Method: RPCExecutor<LaunchRPC>::Execute
//
......
......@@ -1480,6 +1480,26 @@ EngineMethods::SetDefaultFileOpenOptions(const FileOpenOptions &opts)
state->setEFileOpenOptionsRPC(opts);
}
// ****************************************************************************
// Method: EngineMethods::SetPrecisionType
//
// Purpose:
// Tells the engine about the latest user-requested precision.
//
// Arguments:
// pType The new precision.
//
// Programmer: Kathleen Biagas
// Creation: August 7, 2013
//
// ****************************************************************************
void
EngineMethods::SetPrecisionType(const int pType)
{
state->setPrecisionTypeRPC(pType);
}
// ****************************************************************************
// Method: EngineMethods::GetEngineProperties
//
......
......@@ -37,7 +37,7 @@
*****************************************************************************/
// ************************************************************************* //
// EngineMethods.h //
// EngineMethods.h //
// ************************************************************************* //
#ifndef ENGINE_METHODS_H
......@@ -132,6 +132,7 @@ public:
const int winID);
void SetDefaultFileOpenOptions(const FileOpenOptions&);
void SetPrecisionType(const int);
avtDataObjectReader_p Render(bool, const intVector&, int, int, bool,
void (*waitCB)(void *), void *cbData);
......
......@@ -45,6 +45,9 @@
# Brad Whitlock, Mon Oct 10 11:14:46 PDT 2011
# Added EnginePropertiesRPC.
#
# Kathleen Biagas, Wed Aug 7 15:56:48 PDT 2013
# Added SetPrecisionTypeRPC.
#
#****************************************************************************/
SET(ENGINERPC_SOURCES
......@@ -68,6 +71,7 @@ ReadRPC.C
ReleaseDataRPC.C
RenderRPC.C
SetEFileOpenOptionsRPC.C
SetPrecisionTypeRPC.C
SetWinAnnotAttsRPC.C
SimulationCommandRPC.C
StartPickRPC.C
......
......@@ -28,6 +28,7 @@ EngineState::EngineState()
objVector.push_back(&constructDataBinningRPC);
objVector.push_back(&namedSelectionRPC);
objVector.push_back(&setEFileOpenOptionsRPC);
objVector.push_back(&setPrecisionTypeRPC);
objVector.push_back(&enginePropertiesRPC);
objVector.push_back(&launchRPC);
statusAtts = new StatusAttributes;
......
......@@ -70,6 +70,7 @@
#include <ExpressionList.h>
#include <FileOpenOptions.h>
#include <SetEFileOpenOptionsRPC.h>
#include <SetPrecisionTypeRPC.h>
#include <SelectionProperties.h>
#include <StatusAttributes.h>
......@@ -107,6 +108,7 @@ public:
ConstructDataBinningRPC& GetConstructDataBinningRPC() { return constructDataBinningRPC; }
NamedSelectionRPC& GetNamedSelectionRPC() { return namedSelectionRPC; }
SetEFileOpenOptionsRPC& GetSetEFileOpenOptionsRPC() { return setEFileOpenOptionsRPC; }
SetPrecisionTypeRPC& GetSetPrecisionTypeRPC() { return setPrecisionTypeRPC; }
EnginePropertiesRPC& GetEnginePropertiesRPC() { return enginePropertiesRPC; }
LaunchRPC& GetLaunchRPC() { return launchRPC; }
private:
......@@ -135,6 +137,7 @@ private:
ConstructDataBinningRPC constructDataBinningRPC;
NamedSelectionRPC namedSelectionRPC;
SetEFileOpenOptionsRPC setEFileOpenOptionsRPC;
SetPrecisionTypeRPC setPrecisionTypeRPC;
EnginePropertiesRPC enginePropertiesRPC;
LaunchRPC launchRPC;
StatusAttributes *statusAtts;
......
/*****************************************************************************
*
* Copyright (c) 2000 - 2012, Lawrence Livermore National Security, LLC
* Produced at the Lawrence Livermore National Laboratory
* LLNL-CODE-442911
* All rights reserved.
*
* This file is part of VisIt. For details, see https://visit.llnl.gov/. The
* full copyright notice is contained in the file COPYRIGHT located at the root
* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the disclaimer (as noted below) in the
* documentation and/or other materials provided with the distribution.
* - Neither the name of the LLNS/LLNL nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY,
* LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
*****************************************************************************/
#include <SetPrecisionTypeRPC.h>
#include <DebugStream.h>
using std::string;
// *******************************************************************
// Constructor: SetPrecisionTypeRPC::SetPrecisionTypeRPC
//
// Purpose:
// This is the constructor.
//
// Arguments:
//
// Note:
//
// Programmer: Kathleen Biagas
// Creation: August 1, 2013
//
// Modifications:
//
// *******************************************************************
SetPrecisionTypeRPC::SetPrecisionTypeRPC()
: BlockingRPC("i",NULL)
{
}
// *******************************************************************
// Denstructor: SetPrecisionTypeRPC::~SetPrecisionTypeRPC
//
// Purpose:
// This is the denstructor.
//
// Arguments:
//
// Note:
//
// Programmer: Kathleen Biagas
// Creation: August 1, 2013
//
// Modifications:
//
// *******************************************************************
SetPrecisionTypeRPC::~SetPrecisionTypeRPC()
{
}
// *******************************************************************
//