MAK Data Logger API Documentation for DIS
baseFomDesc1516.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #ifndef baseFomDesc1516_H_
10 #define baseFomDesc1516_H_
11 
12 #if DtHLA & DtHLA_1516
13 
14 #include "lgrSim.h"
15 #include "lgrDynStrings.h"
16 #include "lgrHlaAttribute.h"
17 #include "multiKeyMap.h"
18 #include "lgrVariableLengthData.h"
19 #include "virtualConstructor.h"
20 #include "leTypes.h"
21 #include "lgrSimDriver.h"
22 
23 class DtFom;
24 
25 namespace MAKLogger
26 {
27  struct DtGenFomDesc
28  {
29  DtLeInt32 size;
30  DtLeInt32 numObjClasses;
31  DtLeInt32 bufObjClassesSz;
32  DtLeInt32 numIntClasses;
33  DtLeInt32 bufIntClassesSz;
34  };
35  const size_t DtGenFomDescSz = sizeof( DtGenFomDesc );
36 
37  struct DtGenObjDesc
38  {
39  DtLeInt32 size;
40  DtLeU32 handle;
41  DtLeU32 flags;
42  DtLeInt32 codeLen;
43  DtLeInt32 ownNameOff;
44  DtLeInt32 baseNameOff;
45  DtLeInt32 numAttrs;
46  DtLeInt32 attrsOff;
47  };
48  const size_t DtGenObjDescSz = sizeof( DtGenObjDesc );
49 
50 
51  struct DtGenAttrDesc
52  {
53  DtLeU32 handle;
54  DtLeU32 flags;
55  DtLeInt32 size;
56  DtLeInt32 codeLen;
57  DtLeInt32 nameLen;
58  DtLeInt32 nameOff;
59  };
60  const size_t DtGenAttrDescSz = sizeof( DtGenAttrDesc );
61 
62 
63  struct DtSubscriptionMap
64  {
65  int size;
66  int objSubsOnNum;
67  int objSubsOnPos;
68  int objSubsOffNum;
69  int objSubsOffPos;
70  int intSubsOnNum;
71  int intSubsOnPos;
72  int intSubsOffNum;
73  int intSubsOffPos;
74  };
75  const size_t DtSubscriptionMapSz = sizeof( DtSubscriptionMap );
76 
77  class DtLgrFom;
78  class DtBaseObjClassDesc;
79  class DtBaseInterClassDesc;
80 
88  class DT_DLL_LGRSIM DtBaseFomDesc
89  {
90  public:
91 
93  DT_VIRTUAL_CTR(DtBaseFomDesc,())
94 
95 
96  DT_VIRTUAL_COPY_ASSIGN(DtBaseFomDesc)
97 
98  virtual ~DtBaseFomDesc();
99 
100  public:
101 
102  virtual DtBaseObjClassDesc* addObjectClass(const DtBaseObjClassDesc&);
103  virtual DtBaseInterClassDesc* addInteractionClass(const DtBaseInterClassDesc&);
104 
105 
107  virtual int readFromFile( FILE* fp );
108  virtual int readFromFile64( int fd );
109 
111  virtual int writeToFile( FILE* fp ) const;
112  virtual int writeToFile64( int fd ) const;
113 
115  virtual int setFromSerialForm( const void* p );
116 
118  virtual char* serialize( int* pSize = 0 ) const;
119 
120  typedef std::vector<DtBaseObjClassDesc*>::iterator objectIterator;
121  typedef std::vector<DtBaseObjClassDesc*>::const_iterator const_objectIterator;
122 
123  typedef std::vector<DtBaseInterClassDesc*>::iterator interactionIterator;
124  typedef std::vector<DtBaseInterClassDesc*>::const_iterator const_interactionIterator;
125 
127 
128  objectIterator obj_begin();
129  const_objectIterator obj_begin() const;
131 
133 
134  objectIterator obj_end();
135  const_objectIterator obj_end() const;
137 
139 
140  interactionIterator inter_begin();
141  const_interactionIterator inter_begin() const;
143 
145 
146  interactionIterator inter_end();
147  const_interactionIterator inter_end() const;
149 
151 
152  virtual DtBaseObjClassDesc* objDesc( unsigned int hand );
153  virtual const DtBaseObjClassDesc* objDesc( unsigned int hand ) const;
155 
157 
158  virtual DtBaseObjClassDesc* objDesc( const DtString& _name );
159  virtual const DtBaseObjClassDesc* objDesc( const DtString& _name ) const;
161 
163 
164  virtual DtBaseInterClassDesc* interDesc( unsigned int hand );
165  virtual const DtBaseInterClassDesc* interDesc( unsigned int hand ) const;
167 
169 
170  virtual DtBaseInterClassDesc* interDesc( const DtString& _name );
171  virtual const DtBaseInterClassDesc* interDesc( const DtString& _name ) const;
173 
175  inline int objectClassCount() const;
176 
178  inline int interactionClassCount() const;
179 
181  inline int count() const;
182 
184  virtual bool equivalent( const DtBaseFomDesc& other ) const;
185 
187  virtual bool identical( const DtBaseFomDesc& other ) const;
188 
190  virtual void setFilterByClass( const DtSubscriptionMap* map );
191 
193  virtual void setFilterAllObjectClasses();
194 
196  virtual void setFilterNoObjectClasses();
197 
199  virtual void setFilterAllInteractionClasses();
200 
202  virtual void setFilterNoInteractionClasses();
203 
205  virtual void empty();
206 
208 
209 
210 
211 
212  virtual void initObjClasses();
213  virtual void initIntClasses();
215 
217  virtual void setObjectClassHeartbeatTime(const DtString& className, double time, bool includeSubclasses = false);
218 
221  virtual bool getObjectClassHeartbeatTime(const DtString& className, double& heartbeat) const;
222 
224  virtual bool objectClassHeartbeatInheritable(const DtString& className) const;
225 
227  virtual void setObjectClassTimeoutTime(const DtString& className, double time, bool includeSubclasses = false);
228 
231  virtual bool getObjectClassTimeoutTime(const DtString& className, double& timeout) const;
232 
234  virtual bool objectClassTimeoutInheritable(const DtString& className) const;
235 
236  protected:
237 
239  bool processCommand(const char*command,char* tkn,const char* sep);
240 
242  virtual void deleteObjClasses();
243 
245  virtual void deleteIntClasses();
246 
248  void resetAll();
249 
251  void initFromSource( const DtBaseFomDesc& src );
252 
254  int unserialize( const char* bfr );
255 
256  protected:
257 
258  typedef DtMultiKeyMap<DtString,DtLgrHlaHandle,DtBaseObjClassDesc*> ObjectMap;
259  typedef DtMultiKeyMap<DtString,DtLgrHlaHandle,DtBaseInterClassDesc*> InteractionMap;
260 
261  ObjectMap myObjectLookupMap;
262  InteractionMap myInteractionLookupMap;
263 
264  std::vector<DtBaseObjClassDesc*> myObjectClasses;
265  std::vector<DtBaseInterClassDesc*> myInteractionClasses;
266  std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord> myHeartbeatTimes;
267  std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord> myTimeoutTimes;
268 
269  protected:
270  static int theHashSize;
271  };
272 
273 
274  inline int DtBaseFomDesc::objectClassCount() const
275  {
276  return (int)myObjectClasses.size();
277  }
278 
279  inline int DtBaseFomDesc::interactionClassCount() const
280  {
281  return (int)myInteractionClasses.size();
282  }
283 
284 
285  inline int DtBaseFomDesc::count() const
286  {
287  return ( objectClassCount() + interactionClassCount() );
288  }
289 
290 
291 }
292 
293 #endif
294 #endif

Document ID: Generated on Thu Apr 10 18:53:01 EDT 2014 from SVN revision 138105
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)