VR-Link API Documentation for HLA 1516
datumRecSet.h
Go to the documentation of this file.
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 

Document ID: Generated on Mon May 14 08:06:18 EDT 2012 from SVN revision 114750
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)