![]() |
MAK RTIspy API Documentation for HLA 1516
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2005 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: logicalTimeIntervalImplUnsignedInteger.h,v $ $Revision: 1.3 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00009 #ifndef RTI_LogicalTimeIntervalImplUnsignedInteger_H_ 00010 #define RTI_LogicalTimeIntervalImplUnsignedInteger_H_ 00011 00012 #include <RTI/LogicalTimeInterval.h> 00013 00014 #if VMS 00015 #include <limits> 00016 #define MAXUINT64 numeric_limits<unsigned long long>::max() 00017 #else 00018 #define MAXUINT64 18446744073709551615ULL 00019 #endif 00020 00021 #define POSITIVE_INFINITY (MAXUINT64) 00022 #define EPSILON (1) 00023 00025 #if DT_HAVE_64BIT_LONGS 00026 00028 typedef unsigned long DtLtU64; 00029 00030 #else 00031 #ifdef _WIN32 00032 00034 typedef unsigned _int64 DtLtU64; 00035 00036 #else 00037 00039 typedef unsigned long long DtLtU64; 00040 00041 #endif 00042 #endif 00043 00044 class RTI_EXPORT_FEDTIME LogicalTimeIntervalImplUnsignedInteger 00045 : public rti1516::LogicalTimeInterval 00046 { 00047 public: 00048 static std::wstring theImplementationName; 00049 00050 public: 00051 00052 // Constructors 00053 LogicalTimeIntervalImplUnsignedInteger(); 00054 LogicalTimeIntervalImplUnsignedInteger(const DtLtU64&); 00055 LogicalTimeIntervalImplUnsignedInteger(rti1516::LogicalTimeInterval const &); 00056 LogicalTimeIntervalImplUnsignedInteger(const LogicalTimeIntervalImplUnsignedInteger&); 00057 00058 // Destructor 00059 virtual ~LogicalTimeIntervalImplUnsignedInteger() 00060 throw (); 00061 00062 // Basic accessors/mutators 00063 virtual void setZero(); 00064 virtual bool isZero() const; 00065 00066 virtual void setEpsilon(); 00067 virtual bool isEpsilon() const; 00068 00069 // Assignment 00070 virtual 00071 rti1516::LogicalTimeInterval& 00072 operator= (rti1516::LogicalTimeInterval const & value) 00073 throw ( 00074 rti1516::InvalidLogicalTimeInterval); 00075 00076 // Set self to the difference between two LogicalTimes 00077 virtual 00078 void 00079 setToDifference(rti1516::LogicalTime const & minuend, 00080 rti1516::LogicalTime const& subtrahend) 00081 throw (rti1516::InvalidLogicalTime); 00082 00083 virtual 00084 rti1516::LogicalTimeInterval& 00085 operator+= (rti1516::LogicalTimeInterval const & addend) 00086 throw ( 00087 rti1516::InvalidLogicalTimeInterval); 00088 00089 virtual 00090 rti1516::LogicalTimeInterval& 00091 operator-= (rti1516::LogicalTimeInterval const & subtrahend) 00092 throw ( 00093 rti1516::InvalidLogicalTimeInterval); 00094 00095 virtual 00096 bool 00097 operator> (rti1516::LogicalTimeInterval const & value) const 00098 throw ( 00099 rti1516::InvalidLogicalTimeInterval); 00100 00101 virtual 00102 bool 00103 operator< (rti1516::LogicalTimeInterval const & value) const 00104 throw ( 00105 rti1516::InvalidLogicalTimeInterval); 00106 00107 virtual 00108 bool 00109 operator== (rti1516::LogicalTimeInterval const & value) const 00110 throw ( 00111 rti1516::InvalidLogicalTimeInterval); 00112 00113 virtual 00114 bool 00115 operator>= (rti1516::LogicalTimeInterval const & value) const 00116 throw ( 00117 rti1516::InvalidLogicalTimeInterval); 00118 00119 virtual 00120 bool 00121 operator<= (rti1516::LogicalTimeInterval const & value) const 00122 throw ( 00123 rti1516::InvalidLogicalTimeInterval); 00124 00125 // Generates an encoded value that can be used to send 00126 // LogicalTimeIntervals to other federates in updates or interactions 00127 virtual rti1516::VariableLengthData encode() const; 00128 00129 // Alternate encode for directly filling a buffer 00130 virtual unsigned long encodedLength() const; 00131 virtual unsigned long encode(void* buffer, unsigned long bufferSize) const 00132 throw (rti1516::CouldNotEncode); 00133 00134 // Decode encodedValue into self 00135 virtual void decode(rti1516::VariableLengthData const & encodedValue) 00136 throw ( 00137 rti1516::InternalError, 00138 rti1516::CouldNotDecode); 00139 00140 // Alternate decode that reads directly from a buffer 00141 virtual void decode(void* buffer, unsigned long bufferSize) 00142 throw ( 00143 rti1516::InternalError, 00144 rti1516::CouldNotDecode); 00145 00146 virtual std::wstring toString() const; 00147 00148 // Returns the name of the implementation, as needed by 00149 // createFederationExecution. 00150 virtual std::wstring implementationName() const; 00151 00152 public: 00153 //----------------------------------------------------------------- 00154 // Implementation functions 00155 //----------------------------------------------------------------- 00156 virtual DtLtU64 getInterval() const; 00157 00158 //----------------------------------------------------------------- 00159 // Implementation operators 00160 //----------------------------------------------------------------- 00161 virtual bool operator== (const DtLtU64&) const 00162 throw (rti1516::InvalidLogicalTimeInterval); 00163 00164 virtual bool operator!= (rti1516::LogicalTimeInterval const & value) const 00165 throw ( 00166 rti1516::InvalidLogicalTimeInterval); 00167 00168 virtual bool operator!= (LogicalTimeIntervalImplUnsignedInteger const & value) const 00169 throw ( 00170 rti1516::InvalidLogicalTimeInterval); 00171 00172 virtual bool operator!= (const DtLtU64&) const 00173 throw (rti1516::InvalidLogicalTimeInterval); 00174 00175 virtual LogicalTimeIntervalImplUnsignedInteger& operator= ( 00176 const LogicalTimeIntervalImplUnsignedInteger& value) 00177 throw (rti1516::InvalidLogicalTimeInterval); 00178 00179 virtual rti1516::LogicalTimeInterval& operator= (const DtLtU64&) 00180 throw (rti1516::InvalidLogicalTimeInterval); 00181 00182 virtual rti1516::LogicalTimeInterval& operator+= (const DtLtU64&) 00183 throw (rti1516::InvalidLogicalTimeInterval); 00184 00185 virtual rti1516::LogicalTimeInterval& operator-= (const DtLtU64&) 00186 throw (rti1516::InvalidLogicalTimeInterval); 00187 00188 private: 00189 //----------------------------------------------------------------- 00190 // Implementation member variables 00191 //----------------------------------------------------------------- 00192 DtLtU64 myInterval; 00193 DtLtU64 myZero; 00194 DtLtU64 myEpsilon; 00195 DtLtU64 myPositiveInfinity; 00196 }; 00197 00198 #endif // RTI_LogicalTimeIntervalImplUnsignedInteger_H_ 00199