![]() |
VR-Link API Documentation for HLA 1516
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00009 00010 #ifndef datumRecSet_H_ 00011 #define datumRecSet_H_ 00012 00013 #include "hostStructs.h" 00014 #include <vlpi/datumIdType.h> 00015 #include <vlutil/vlBaseMsg.h> 00016 #include "packets/dataP.h" 00017 00018 enum DtDatumRetCode 00019 { 00020 DtDatumValid, 00021 DtDatumBadLength, 00022 DtDatumBadId, 00023 DtDatumBadIndex 00024 }; 00025 00026 enum DtDatumRecordType 00027 { 00028 DtFixed, 00029 DtVar 00030 }; 00031 00035 class DT_DLL_VL DtVarDatumSpec 00036 { 00037 public: 00038 DtDatumParam param; 00039 int length; 00040 }; 00041 00042 #define DtNullDatumParam DtDatumParam(0) 00043 #define DtNullVarDatumSpec DtNullDatumParam,0 00044 00045 class DT_DLL_VL DtDatumRecordSet : public DtBaseMsg 00046 { 00047 public: 00048 00050 DtDatumRecordSet(DtBufferPtr bufferPtr = DtUSE_INTERNAL_BUFFER); 00051 00053 DtDatumRecordSet(const void* netRep, int size, 00054 DtBufferPtr bufferPtr = DtUSE_INTERNAL_BUFFER); 00055 00057 virtual ~DtDatumRecordSet(); 00058 00060 DtDatumRecordSet(const DtDatumRecordSet& orig); 00061 00063 DtDatumRecordSet& operator=(const DtDatumRecordSet& orig); 00064 00066 virtual int numFixedFields() const; 00067 00069 virtual int numVarFields() const; 00070 00074 virtual DtDatumParam varDatumId(int index) const; 00075 00079 virtual DtDatumParam fixedDatumId(int index) const; 00080 00085 virtual DtDatumParam datumId(DtDatumRecordType fixedOrVar, int index) const; 00086 00091 virtual int datumSizeBits(DtDatumRecordType fixedOrVar, int index) const; 00092 00097 virtual int datumSizeBytes(DtDatumRecordType fixedOrVar, int index) const; 00098 00105 virtual void getIndex(DtDatumParam param, DtDatumRecordType* fixedOrVar, 00106 int* index, DtDatumRetCode* retcode = NULL) const; 00107 00120 00121 virtual DtFloat32 datumValFloat32(DtDatumRecordType fixedOrVar, int index, 00122 DtDatumRetCode* retcode = NULL) const; 00123 virtual DtFloat64 datumValFloat64(DtDatumRecordType fixedOrVar, int index, 00124 DtDatumRetCode* retcode = NULL) const; 00125 virtual unsigned long datumValUnsigned32(DtDatumRecordType fixedOrVar, 00126 int index, DtDatumRetCode* retcode = NULL) const; 00127 virtual long datumValInt32(DtDatumRecordType fixedOrVar, int index, 00128 DtDatumRetCode* retcode = NULL) const; 00129 virtual const char* datumValByteArray(DtDatumRecordType fixedOrVar, 00130 int index) const; 00131 00144 00145 virtual DtFloat32 datumValFloat32(DtDatumParam param, 00146 DtDatumRetCode* retcode = NULL) const; 00147 virtual DtFloat64 datumValFloat64(DtDatumParam param, 00148 DtDatumRetCode* retcode = NULL) const; 00149 virtual unsigned long datumValUnsigned32(DtDatumParam param, 00150 DtDatumRetCode* retcode = NULL) const; 00151 virtual long datumValInt32(DtDatumParam param, 00152 DtDatumRetCode* retcode = NULL) const; 00153 virtual const char* datumValByteArray(DtDatumParam param, 00154 DtDatumRetCode* retcode = NULL) const; 00155 00157 00164 virtual void init(const DtDatumParam* fixedParams, 00165 const DtVarDatumSpec* specList); 00166 00171 virtual void setNumFixedFields(int newNum); 00172 virtual void setNumVarFields(int newNum); 00173 00178 virtual void setDatumParam(DtDatumRecordType fixedOrVar, int index, DtDatumParam param, 00179 DtDatumRetCode* retcode = NULL); 00180 00186 virtual void setVarDataBytes(int index, int length, DtDatumRetCode* retcode = NULL); 00187 00200 00201 virtual void setDatumValFloat64(DtDatumRecordType fixedOrVar, int index, DtFloat64 val, 00202 DtDatumRetCode* retcode = NULL); 00203 virtual void setDatumValFloat32(DtDatumRecordType fixedOrVar, int index, DtFloat32 val, 00204 DtDatumRetCode* retcode = NULL); 00205 virtual void setDatumValInt32(DtDatumRecordType fixedOrVar, int index, long val, 00206 DtDatumRetCode* retcode = NULL); 00207 virtual void setDatumValUnsigned32(DtDatumRecordType fixedOrVar, int index, 00208 unsigned long val, DtDatumRetCode* retcode = NULL); 00209 virtual void setDatumValByteArray(DtDatumRecordType fixedOrVar, int index, 00210 const char* val, DtDatumRetCode* retcode = NULL); 00211 00224 00225 virtual void setDatumValFloat64(DtDatumParam param, DtFloat64 val, 00226 DtDatumRetCode* retcode = NULL); 00227 virtual void setDatumValFloat32(DtDatumParam param, DtFloat32 val, 00228 DtDatumRetCode* retcode = NULL); 00229 virtual void setDatumValInt32(DtDatumParam param, long val, 00230 DtDatumRetCode* retcode = NULL); 00231 virtual void setDatumValUnsigned32(DtDatumParam param, unsigned long val, 00232 DtDatumRetCode* retcode = NULL); 00233 virtual void setDatumValByteArray(DtDatumParam param, const char* val, 00234 DtDatumRetCode* retcode = NULL); 00235 00237 virtual void printData() const; 00238 00240 virtual void printDataToStream(std::ostream& stream) const; 00241 00245 virtual DtNetDataPduTail* netDataRep() const; 00246 00249 virtual DtNetFixDatum* nthFixedDataRecord(int index) const; 00250 00253 virtual DtNetVarDatum* nthVarDataRecord(int index) const; 00254 00257 virtual void setFromNetFixed(const char* fixedFields, int numFixedFields); 00258 00262 virtual void setFromNetVar(const char* varFields, int numVarFields, 00263 int totalVarFieldsLength); 00264 00265 protected: 00266 00267 friend class DtPduWithData; 00268 00271 virtual void sizeChanged(int size); 00272 00276 virtual void* datumValPtr(DtDatumRecordType fixedOrVar, int index) const; 00277 }; 00278 00279 inline DtNetDataPduTail* DtDatumRecordSet::netDataRep() const 00280 { 00281 return (DtNetDataPduTail*) netRep(); 00282 } 00283 00285 #define DtFIXED DtFixed 00286 #define DtVAR DtVar 00287 #define DtDATUM_VALID DtDatumValid 00288 #define DtDATUM_BAD_LENGTH DtDatumBadLength 00289 #define DtDATUM_BAD_ID DtDatumBadId 00290 #define DtDATUM_BAD_INDEX DtDatumBadIndex 00291 00292 #endif 00293 00294