Go to the documentation of this file.00001
00002
00003
00004
00005
00008
00009 #ifndef disDescriptor_H_
00010 #define disDescriptor_H_
00011
00012 #if DtDIS
00013
00014 #include "lgrSim.h"
00015 #include <vlutil/vlMachineTypes.h>
00016 #include "virtualConstructor.h"
00017 #include "multiKeyMap.h"
00018
00019 namespace MAKLogger
00020 {
00021
00022
00023 struct DtGenDisDesc
00024 {
00025 int size;
00026 int numPduKinds;
00027 int bufPduKindSz;
00028 };
00029
00030 struct DtPduKindDesc
00031 {
00032 int size;
00033 DtU32 kind;
00034 bool filtered;
00035 int enIdOff;
00036 int typeOff;
00037 char name[4];
00038 };
00039
00040
00041 struct DtPduSubsMap
00042 {
00043 int size;
00044 int pduSubsOnNum;
00045 int pduSubsOnPos;
00046 int pduSubsOffNum;
00047 int pduSubsOffPos;
00048 };
00049
00050 class DtPduDescriptor;
00051
00055 class DT_DLL_LGRSIM DtDisDescriptor
00056 {
00057 public:
00058 typedef DtU32 PduKind;
00059 typedef DtMultiKeyMap<PduKind,DtString,DtPduDescriptor*> PduDescriptorMap;
00060 typedef PduDescriptorMap::iterator iterator;
00061 typedef PduDescriptorMap::const_iterator const_iterator;
00062
00063 public:
00064
00066 DT_VIRTUAL_CTR(DtDisDescriptor,())
00067
00068
00069 DT_VIRTUAL_COPY_ASSIGN(DtDisDescriptor)
00070
00072 virtual ~DtDisDescriptor();
00073
00074
00077 void addPduDesc(const DtPduDescriptor& desc);
00078
00080 virtual DtPduDescriptor* addPduKind(const DtString& name, PduKind kind,
00081 int enIdOff, int typeOff );
00082
00084 virtual int setFromSerialForm( const void* p );
00085
00087 virtual char* serialize( int* pSize = 0 ) const;
00088
00090
00091 virtual DtPduDescriptor* pduDesc( PduKind kind );
00092 virtual const DtPduDescriptor* pduDesc( PduKind kind ) const;
00094
00096
00097
00098
00099
00100 virtual DtPduDescriptor* pduDesc( const DtString& name );
00101 virtual const DtPduDescriptor* pduDesc( const DtString& name ) const;
00103
00105 int count() const;
00106
00108
00109
00110
00111 iterator begin();
00112 const_iterator begin() const;
00114
00116
00117
00118
00119 iterator end();
00120 const_iterator end() const;
00122
00124 virtual bool equivalent( const DtDisDescriptor& rhs ) const;
00125
00127 virtual void setFilterByPduKind( const DtPduSubsMap* map );
00128 virtual void setFilterAllPduKinds();
00129 virtual void setFilterNoPduKinds();
00130
00132 virtual void clear();
00133
00136 void registerAlias(const DtString& alias,PduKind kind);
00137
00139 void unregisterAlias(const DtString& alias);
00140
00141 public:
00142 static void addKnownPdus( DtDisDescriptor* dsc );
00143
00144 protected:
00145
00148 virtual int unserialize( const char* bfr );
00149
00151 virtual void initFromSource( const DtDisDescriptor& src );
00152
00153 protected:
00154
00155 PduDescriptorMap myPdus;
00156
00157 typedef std::map<DtString,PduKind> AliasMap;
00158 AliasMap myAliases;
00159 };
00160
00161 }
00162
00163 #endif //! !DtHLA
00164 #endif //! DtDisDescriptor_H_