MAK Data Logger API Documentation for DIS
baseFomDesc13.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 baseFomDesc13_H_
10 #define baseFomDesc13_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 "lgrSimDriver.h"
21 
22 #include "leTypes.h"
23 #include <vector>
24 
25 class DtFom;
26 
27 namespace MAKLogger
28 {
29  struct DtGenFomDesc
30  {
31  DtLeInt32 size;
32  DtLeInt32 numObjClasses;
33  DtLeInt32 bufObjClassesSz;
34  DtLeInt32 numIntClasses;
35  DtLeInt32 bufIntClassesSz;
36  };
37  const size_t DtGenFomDescSz = sizeof( DtGenFomDesc );
38 
39  struct DtGenObjDesc
40  {
41  DtLeInt32 size;
42  DtLeU32 handle;
43  DtLeU32 flags;
44  DtLeInt32 ownNameOff;
45  DtLeInt32 baseNameOff;
46  DtLeInt32 numAttrs;
47  DtLeInt32 attrsOff;
48  };
49  const size_t DtGenObjDescSz = sizeof( DtGenObjDesc );
50 
51 
52  struct DtGenAttrDesc
53  {
54  DtLeU32 handle;
55  DtLeU32 flags;
56  DtLeInt32 size;
57  char name[4];
58  };
59  const size_t DtGenAttrDescSz = sizeof( DtGenAttrDesc ) - 4;
60 
61 
62  struct DtSubscriptionMap
63  {
64  int size;
65  int objSubsOnNum;
66  int objSubsOnPos;
67  int objSubsOffNum;
68  int objSubsOffPos;
69  int intSubsOnNum;
70  int intSubsOnPos;
71  int intSubsOffNum;
72  int intSubsOffPos;
73  };
74  const size_t DtSubscriptionMapSz = sizeof( DtSubscriptionMap );
75 
76  class DtLgrFom;
77  class DtBaseObjClassDesc;
78  class DtBaseInterClassDesc;
79 
87  class DT_DLL_LGRSIM DtBaseFomDesc
88  {
89  public:
90 
92  DT_VIRTUAL_CTR(DtBaseFomDesc,())
93 
94 
95  DT_VIRTUAL_COPY_ASSIGN(DtBaseFomDesc)
96 
97  virtual ~DtBaseFomDesc();
98 
99  public:
100 
101  virtual DtBaseObjClassDesc* addObjectClass(const DtBaseObjClassDesc&);
102  virtual DtBaseInterClassDesc* addInteractionClass(const DtBaseInterClassDesc&);
103 
104 
106  virtual int readFromFile( FILE* fp );
107  virtual int readFromFile64( int fd );
108 
110  virtual int writeToFile( FILE* fp ) const;
111  virtual int writeToFile64( int fd ) const;
112 
114  virtual int setFromSerialForm( const void* p );
115 
117  virtual char* serialize( int* pSize = 0 ) const;
118 
119  typedef std::vector<DtBaseObjClassDesc*>::iterator objectIterator;
120  typedef std::vector<DtBaseObjClassDesc*>::const_iterator const_objectIterator;
121 
122  typedef std::vector<DtBaseInterClassDesc*>::iterator interactionIterator;
123  typedef std::vector<DtBaseInterClassDesc*>::const_iterator const_interactionIterator;
124 
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 
185  virtual bool equivalent( const DtBaseFomDesc& other) const;
186 
189  virtual bool identical( const DtBaseFomDesc& other) const;
190 
192  virtual void setFilterByClass( const DtSubscriptionMap* map );
193 
195  virtual void setFilterAllObjectClasses();
196 
198  virtual void setFilterNoObjectClasses();
199 
201  virtual void setFilterAllInteractionClasses();
202 
204  virtual void setFilterNoInteractionClasses();
205 
207  virtual void empty();
208 
210  virtual void setObjectClassHeartbeatTime(const DtString& className, double time, bool includeSubclasses = false);
211 
214  virtual bool getObjectClassHeartbeatTime(const DtString& className, double& heartbeat) const;
215 
217  virtual bool objectClassHeartbeatInheritable(const DtString& className) const;
218 
220  virtual void setObjectClassTimeoutTime(const DtString& className, double time, bool includeSubclasses = false);
221 
224  virtual bool getObjectClassTimeoutTime(const DtString& className, double& timeout) const;
225 
227  virtual bool objectClassTimeoutInheritable(const DtString& className) const;
228 
230 
231 
232 
233 
234  virtual void initObjClasses();
235  virtual void initIntClasses();
237 
238  protected:
239 
241  bool processCommand(const char*command,char* tkn,const char* sep);
242 
244  virtual void deleteObjClasses();
245 
247  virtual void deleteIntClasses();
248 
250  void resetAll();
251 
253  void initFromSource( const DtBaseFomDesc& src );
254 
256  int unserialize( const char* bfr );
257 
258  protected:
259 
260  DtDynamicBuffer myDynBuf;
261 
262  typedef DtMultiKeyMap<DtString,DtLgrHlaHandle,DtBaseObjClassDesc*> ObjectMap;
263  typedef DtMultiKeyMap<DtString,DtLgrHlaHandle,DtBaseInterClassDesc*> InteractionMap;
264 
265  ObjectMap myObjectLookupMap;
266  InteractionMap myInteractionLookupMap;
267 
268  std::vector<DtBaseObjClassDesc*> myObjectClasses;
269  std::vector<DtBaseInterClassDesc*> myInteractionClasses;
270  std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord> myHeartbeatTimes;
271  std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord> myTimeoutTimes;
272 
273  protected:
274  static int theHashSize;
275  };
276 
277 
278  inline int DtBaseFomDesc::objectClassCount() const
279  {
280  return (int)myObjectClasses.size();
281  }
282 
283  inline int DtBaseFomDesc::interactionClassCount() const
284  {
285  return (int)myInteractionClasses.size();
286  }
287 
288 
289  inline int DtBaseFomDesc::count() const
290  {
291  return ( objectClassCount() + interactionClassCount() );
292  }
293 
294 }
295 
296 #endif
297 #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)