![]() |
MAK RTIspy API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 1998 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: updateMsg.h,v $ $Revision: 1.25 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtUpdateMsg_H_ 00013 #define DtUpdateMsg_H_ 00014 00015 #include "rtiMsConfig.h" 00016 #include "rtiMsg.h" 00017 #include "netAttrs.h" 00018 #include "rtiObject.h" 00020 #include "RIDparams.h" 00021 class DtAhvps; 00022 class DtUpdateMsg; 00023 class DtObjectClassInfo; 00024 00025 typedef void (*DtUpdateCb)(const DtUpdateMsg& msg, void* usr); 00026 00027 class DT_DLL_LRC DtUpdateMsg : public DtRtiMsg 00028 { 00029 public: 00030 00032 DtUpdateMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00033 00035 virtual ~DtUpdateMsg(); 00036 00038 virtual void setClassHandle(DtObjectClassHandle hand) = 0; 00039 virtual DtObjectClassHandle classHandle() const = 0; 00040 00042 virtual void setObjHandle(DtObjectInstanceHandle id) = 0; 00043 virtual DtObjectInstanceHandle objHandle() const = 0; 00044 00046 virtual void setChannel(unsigned long handleValue); 00047 virtual unsigned long channel() const; 00048 00050 virtual void setObjName(const char* name); 00051 virtual const char* objName() const; 00052 00054 #ifdef DtIFSPEC1516 00055 virtual void setTag(rti1516::VariableLengthData const& tag); 00056 virtual rti1516::VariableLengthData const& tag() const; 00057 #elif defined(DtIFSPEC1516E) 00058 virtual void setTag(rti1516e::VariableLengthData const& tag); 00059 virtual rti1516e::VariableLengthData const& tag() const; 00060 #else 00061 virtual void setTag(char const * tag); 00062 virtual char const * tag() const; 00063 #endif 00064 00066 virtual void setAttrs( 00067 const DtAhvps& theAttributes, 00068 bool checkBufferSize=true); 00069 00075 virtual void getAttrs(DtAhvps& attrSetBuff, 00076 bool useMsgMemory, 00077 DtObjectClassInfo* objDesc=NULL, 00078 DtHandle regionSetHandle=DtDefaultRegionSetHandle, 00079 DtRtiObject* obj=NULL, 00080 float tolerance=0.0) const; 00081 00083 virtual unsigned long numAttrs() const; 00084 00085 public: 00086 00088 static void setChannelIncluded(bool includeChannel); 00089 static bool channelIncluded(); 00090 00091 protected: 00092 00094 virtual void setNameSize(int size) = 0; 00095 virtual int nameSize() const = 0; 00096 00098 virtual void setTagSize(int size) = 0; 00099 virtual int tagSize() const = 0; 00100 00102 virtual DtNetU32* channelPtr() const=0; 00103 00105 virtual char* namePtr()=0; 00106 00108 virtual char* tagPtr()=0; 00109 00111 virtual DtNetAttrs* netAttrs() = 0; 00113 virtual DtNetBigAttrs* netBigAttrs() = 0; 00114 00116 virtual DtNetAttrValue* nextNetAttr(DtNetAttrValue* netAttr) const; 00118 virtual DtNetBigAttrValue* nextNetBigAttr(DtNetBigAttrValue* netAttr) const; 00119 00125 virtual void fillFromNetAttrs( 00126 const DtNetAttrs* netRepAttrs, 00127 DtAhvps& attrs, 00128 bool useMsgMemory, 00129 DtObjectClassInfo* objDesc=NULL, 00130 DtHandle regionSetHandle=DtDefaultRegionSetHandle, 00131 DtRtiObject* obj=NULL, 00132 float tolerance=0.0) const; 00133 00140 virtual void fillFromNetBigAttrs( 00141 const DtNetBigAttrs* netAttrs, 00142 DtAhvps& attrs, 00143 bool useMsgMemory, 00144 DtObjectClassInfo* objDesc=NULL, 00145 DtHandle regionSetHandle=DtDefaultRegionSetHandle, 00146 DtRtiObject* obj=NULL, 00147 float tolerance=0.0) const; 00148 00150 virtual void fillNetAttrs( 00151 const DtAhvps& theAttributes, 00152 DtNetAttrs* netRepAttrs); 00154 virtual void fillNetBigAttrs( 00155 const DtAhvps& attrs, 00156 DtNetBigAttrs* netAttrs); 00157 00159 virtual void setSizeOfNetAttrs(unsigned long size); 00160 00162 virtual unsigned long sizeNeededForNetAttrs( 00163 const DtAhvps& attrs) const; 00164 00166 virtual int channelFieldSize() const; 00167 00169 virtual int nameFieldSize() const; 00170 00172 virtual int tagFieldSize() const; 00173 00175 virtual DtUpdateMsg* self() const; 00176 00177 protected: 00178 #ifdef DtIFSPEC1516 00179 rti1516::VariableLengthData* myTag; 00180 #elif defined(DtIFSPEC1516E) 00181 rti1516e::VariableLengthData* myTag; 00182 #else 00183 char* myTag; 00184 #endif 00185 char* myName; 00186 int myAttrFieldLength; 00187 00188 protected: 00189 static bool theChannelIncluded; 00190 }; 00191 00192 00193 inline DtUpdateMsg* DtUpdateMsg::self() const 00194 { 00195 return const_cast<DtUpdateMsg*>( this ); 00196 } 00197 00198 inline bool DtUpdateMsg::channelIncluded() 00199 { 00200 return theChannelIncluded; 00201 } 00202 00203 #endif 00204