MAK Data Logger API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
baseFomDesc1516.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 1992-2025 MAK Technologies, Inc
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/lgrSim.h>
15 #include <lgrSim/lgrDynStrings.h>
16 #include <lgrSim/lgrHlaAttribute.h>
17 #include <lgrUtil/multiKeyMap.h>
20 #include <lgrUtil/leTypes.h>
21 #include <lgrCore/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  objectIterator obj_begin();
129  const_objectIterator obj_begin() const;
131 
133  objectIterator obj_end();
135  const_objectIterator obj_end() const;
137 
139  interactionIterator inter_begin();
141  const_interactionIterator inter_begin() const;
143 
145  interactionIterator inter_end();
147  const_interactionIterator inter_end() const;
149 
151  virtual DtBaseObjClassDesc* objDesc( unsigned int hand );
153  virtual const DtBaseObjClassDesc* objDesc( unsigned int hand ) const;
155 
157  virtual DtBaseObjClassDesc* objDesc( const DtString& _name );
159  virtual const DtBaseObjClassDesc* objDesc( const DtString& _name ) const;
161 
163  virtual DtBaseInterClassDesc* interDesc( unsigned int hand );
165  virtual const DtBaseInterClassDesc* interDesc( unsigned int hand ) const;
167 
169  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  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
Defines IMPORT/EXPORT macros for lgrSim library.
Contains Little Endian Types.
#define DT_DLL_LGRSIM
Definition: lgrSim.h:21
Contains Legacy code.
#define DT_VIRTUAL_CTR(CLASS_NAME, ARG_TYPES_LIST)
Declare a Virtual Constructor Create using DT_VIRTUAL_CTR(CLASS_NAME,ARG_TYPES_LIST) Where CLASS_NAME...
Definition: virtualConstructor.h:34
Contains MAKLogger::DtLgrVariableLengthData class.
Contains DT_VIRTUAL_CTR DT_VIRTUAL_CTR_DEFAULTS DT_VIRTUAL_COPY_ASSIGN DT_VIRTUAL_BASE_CTR DT_PURE_VI...
Contains MAKLogger::DtLgrHlaHandle typedef and MAKLogger::DtLgrValueReference and MAKLogger::DtLgrVal...
Little Endian unsigned 32-bit quantity.
Definition: leTypes.h:52
Contains MAKLogger::DtMultiKeyMap class.
Contains MAKLogger::DtLgrSimDriver subclass of MAKLogger::DtLgrCommandHandler.
#define DT_VIRTUAL_COPY_ASSIGN(CLASS_NAME)
Declare a Virtual Copy Constructor Create using DT_VIRTUAL_COPY_CTR(CLASS_NAME) Where CLASS_NAME = th...
Definition: virtualConstructor.h:93
Little endian signed 32-bit quantity.
Definition: leTypes.h:130

Document ID: Generated on Thu Dec 18 15:35:09 EST 2025 from SVN revision 282494
Copyright © 2024 MAK Technologies. All Rights Reserved (www.mak.com)