![]() |
VR-Link API Documentation for DIS
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00009 00010 #ifndef DtPduWithData_H_ 00011 #define DtPduWithData_H_ 00012 00013 #if DtDIS 00014 00015 #include "hostStructs.h" 00016 #include "simanPdu.h" 00017 #include <vlpi/datumIdType.h> 00018 #include "datumRecSet.h" 00019 00023 class DT_DLL_VL DtPduWithData : public DtSimanPdu 00024 { 00025 public: 00026 00027 enum { PduStaticSize=40 }; 00028 00029 public: 00030 00032 DtPduWithData(); 00033 00035 virtual ~DtPduWithData(); 00036 00037 DtPduWithData(const DtPduWithData& orig); 00038 00040 DtPduWithData& operator=(const DtPduWithData& orig) 00041 { 00042 this->DtPdu::operator=(orig); 00043 return *this; 00044 } 00045 00047 virtual int numFixedFields() const; 00048 00050 virtual int numVarFields() const; 00051 00055 virtual DtDatumParam varDatumId(int index) const; 00056 00060 virtual DtDatumParam fixedDatumId(int index) const; 00061 00066 virtual DtDatumParam datumId(DtDatumRecordType fixedOrVar, int index) const; 00067 00072 virtual int datumSizeBits(DtDatumRecordType fixedOrVar, int index) const; 00073 00078 virtual int datumSizeBytes(DtDatumRecordType fixedOrVar, int index) const; 00079 00086 virtual void getIndex(DtDatumParam param, DtDatumRecordType *fixedOrVar, int *index, 00087 DtDatumRetCode *retcode = NULL) const; 00088 00101 00102 virtual DtFloat32 datumValFloat32(DtDatumRecordType fixedOrVar, int index, 00103 DtDatumRetCode *retcode = NULL) const; 00104 virtual DtFloat64 datumValFloat64(DtDatumRecordType fixedOrVar, int index, 00105 DtDatumRetCode *retcode = NULL) const; 00106 virtual unsigned long datumValUnsigned32(DtDatumRecordType fixedOrVar, int index, 00107 DtDatumRetCode *retcode = NULL) const; 00108 virtual long datumValInt32(DtDatumRecordType fixedOrVar, int index, 00109 DtDatumRetCode *retcode = NULL) const; 00110 virtual const char* datumValByteArray(DtDatumRecordType fixedOrVar, int index) const; 00111 00124 00125 virtual DtFloat32 datumValFloat32(DtDatumParam param, 00126 DtDatumRetCode *retcode = NULL) const; 00127 virtual DtFloat64 datumValFloat64(DtDatumParam param, 00128 DtDatumRetCode *retcode = NULL) const; 00129 virtual unsigned long datumValUnsigned32(DtDatumParam param, 00130 DtDatumRetCode *retcode = NULL) const; 00131 virtual long datumValInt32(DtDatumParam param, 00132 DtDatumRetCode *retcode = NULL) const; 00133 virtual const char* datumValByteArray(DtDatumParam param, 00134 DtDatumRetCode *retcode = NULL) const; 00135 00137 00144 virtual void initDataSection(const DtDatumParam *fixedParams, 00145 const DtVarDatumSpec *specList); 00146 00151 virtual void setNumFixedFields(int newNum); 00152 virtual void setNumVarFields(int newNum); 00153 00158 virtual void setDatumParam(DtDatumRecordType fixedOrVar, int index, DtDatumParam param, 00159 DtDatumRetCode *retcode = NULL); 00160 00166 virtual void setVarDataBytes(int index, int length, DtDatumRetCode *retcode = NULL); 00167 00180 00181 virtual void setDatumValFloat64(DtDatumRecordType fixedOrVar, int index, DtFloat64 val, 00182 DtDatumRetCode *retcode = NULL); 00183 virtual void setDatumValFloat32(DtDatumRecordType fixedOrVar, int index, DtFloat32 val, 00184 DtDatumRetCode *retcode = NULL); 00185 virtual void setDatumValInt32(DtDatumRecordType fixedOrVar, int index, long val, 00186 DtDatumRetCode *retcode = NULL); 00187 virtual void setDatumValUnsigned32(DtDatumRecordType fixedOrVar, int index, unsigned long val, 00188 DtDatumRetCode *retcode = NULL); 00189 virtual void setDatumValByteArray(DtDatumRecordType fixedOrVar, int index, const char *val, 00190 DtDatumRetCode *retcode = NULL); 00191 00204 00205 virtual void setDatumValFloat64(DtDatumParam param, DtFloat64 val, 00206 DtDatumRetCode *retcode = NULL); 00207 virtual void setDatumValFloat32(DtDatumParam param, DtFloat32 val, 00208 DtDatumRetCode *retcode = NULL); 00209 virtual void setDatumValInt32(DtDatumParam param, long val, 00210 DtDatumRetCode *retcode = NULL); 00211 virtual void setDatumValUnsigned32(DtDatumParam param, unsigned long val, 00212 DtDatumRetCode *retcode = NULL); 00213 virtual void setDatumValByteArray(DtDatumParam param, const char *val, 00214 DtDatumRetCode *retcode = NULL); 00215 00217 virtual void printData() const; 00218 virtual void printDataToStream(std::ostream& stream) const; 00219 00221 virtual void printDataSection() const; 00222 virtual void printDataSectionToStream(std::ostream& stream) const; 00223 00224 protected: 00225 00226 friend class DtPduDatumRecordSet; 00227 00228 #ifdef DtGATEWAY 00229 friend class DtDataInteractionTranslator; 00230 friend class DtSetDataInteractionTranslator; 00231 friend class DtCommentInteractionTranslator; 00232 friend class DtEventReportInteractionTranslator; 00233 friend class DtActionRequestInteractionTranslator; 00234 friend class DtActionResponseInteractionTranslator; 00235 #endif 00236 00238 virtual DtDatumRecordSet* datumRecSet(); 00240 virtual const DtDatumRecordSet* datumRecSet() const; 00241 00242 00243 00246 virtual DtNetDataPduTail *dataSection() const = 0; 00247 00250 virtual DtNetFixDatum *nthFixedDataRecord(int index) const; 00251 00254 virtual DtNetVarDatum *nthVarDataRecord(int index) const; 00255 00259 virtual void *datumValPtr(DtDatumRecordType fixedOrVar, int index) const; 00260 00261 00262 protected: 00263 00264 DtDatumRecordSet* myRecSet; 00265 }; 00266 00267 #endif 00268 #endif 00269 00270