MAK RTIspy API Documentation for HLA Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
fomMgr.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1998 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: fomMgr.h,v $ $Revision: 1.47 $ $State: Exp $
7 *********************************************************************/
8 
11 
12 #pragma once
13 
14 #include <vlutil/vlFedTarget.h>
15 
16 #include "attrInfo.h"
17 #include "spaceInfo.h"
18 #include "objClassInfo.h"
19 #include "intClassInfo.h"
20 #include "attrInfo.h"
21 #include "RIDparams.h"
22 
23 #include <mtl/xmlFedReader.h>
24 #include <mtl/fedTargetHelper.h>
25 #ifdef _WIN32
26 #ifdef MAK_ENABLE_CRT_DEBUG
27 #include <vlutil/vlDebugCrt.h>
28 #endif
29 #endif
30 
31 #include <vector>
32 #include <set>
33 #include <map>
34 
35 
38 
39 class DtFomClassMgr;
40 class DtAttrInfo;
41 typedef std::vector<DtAttrInfo> DtAttrVector;
42 typedef DtFomClassMgr* (*DtFomClassMgrCreator)(DtRIDParameters* p);
43 
44 
45 #ifdef DDM
46 typedef std::vector<DtSpaceInfo> DtSpaceVector;
47 #endif
48 
49 class DT_DLL_LRC DtFomClassMgr : public MAKRti::DtFedTarget
50 {
51 protected:
52 
55 
57  DtFomClassMgr& operator=(const DtFomClassMgr& orig);
58 
59 public:
60 
64  DtFomClassMgr();
65 
67  DtFomClassMgr(const DtFomClassMgr& orig);
68 
70  virtual ~DtFomClassMgr();
71 
72  //-------------------------------------------------------------------------
74  //-------------------------------------------------------------------------
75 
76 
78  virtual void addSpace(const char* name);
79 
82  virtual void addDimension(const char* spaceName, const char* dimName);
83 
85  virtual void addDimension(const char* dimName, unsigned long upperBound,
86  unsigned long defaultLowerBound, unsigned long defaultUpperBound,
87  bool excluded, const MAKRti::DtString& normalization);
88 
91  virtual bool addInteractionDimension(const char* interactionName, const char* dimension);
92 
94  virtual bool addInteractionClass(const char* name, const char* baseName,
95  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
96  DtSharingType sharing, const MAKRti::DtString& semantics,
97  const char* space=NULL);
98 
99  virtual bool addInterClass(const char* name, const char* baseName,
100  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
101  const char* spaceName = NULL );
102 
105  virtual bool addObjectDimension(const char* objectClassName, const char* dimension);
106 
107  virtual bool addObjectClass(const char* name, const char* baseName,
108  DtSharingType sharing, const MAKRti::DtString& semantics );
109 
111  virtual bool addObjClass(const char* name, const char* baseName);
112 
119  virtual void addHandleForUnknownObjectClass(DtObjectClassHandle handle, DtObjectClassHandle baseClassHandle);
120 
121  virtual void addParameter(const char* className, const char* paramName);
122 
125  virtual void addParameter(const char* className,
126  const char* paramName,
127  const char* semantics );
128 
131  virtual bool addAttributeDimension(const char* className,
132  const char* attributeName, const char* dimName);
133 
136  virtual void addAttribute(const char* className, const char* attrName,
137  MAKRti::DtTransportType transport, MAKRti::DtOrderType order, DtSharingType sharing,
138  DtFomUpdateType updateType, const MAKRti::DtString& updateCondition,
139  DtOwnershipType ownershipType, const MAKRti::DtString& semantics,
140  const char* spaceName=NULL );
141 
142  virtual void addAttribute(const char* className, const char* attrName,
143  MAKRti::DtTransportType transport, MAKRti::DtOrderType order, const char* spaceName=NULL );
144 
146  virtual void initUpdateRates(DtRIDParameters* params) ;
147 
149  const MAKRti::DtUpdateRateSetT & getUpdateRates() const;
150 
152  float updateRateByName(const char * name);
153 
156  int positionOfRate(float rate) const;
157 
159  bool knownUpdateRate(const MAKRti::DtString& rateName) const;
160 
162  virtual DtMergeFomStatus mergeObjectClasses( DtFedTarget const& module );
163 
166  virtual DtMergeFomStatus mergeObjectInfo(DtObjectClassInfo const& classInfo, DtAttributeByHandleMap& attributesToMerge);
167 
169  virtual void mergeAttributes(DtObjectClassInfo const& classInfo, const DtAttributeByHandleMap& attributesToMerge,
170  DtFomClassMgr const& module );
171 
173  virtual DtMergeFomStatus mergeInteractionClasses( DtFedTarget const& module );
174 
176  virtual DtMergeFomStatus mergeInteractionInfo( DtInteractionClassInfo const & interInfo, const char* spaceName,
177  DtParameterByHandleMap& parametersToMerge);
178 
180  virtual void mergeParameters( DtInteractionClassInfo const& interInfo, const DtParameterByHandleMap& parametersToMerge);
181 
183  virtual DtMergeFomStatus mergeSpaces( DtFedTarget const& module );
184 
186  virtual DtMergeFomStatus mergeDimensions( DtSpaceInfo const& spaceInfo );
187 
188  //-------------------------------------------------------------------------
190  //-------------------------------------------------------------------------
191 
192  //------------------------------------------- Object classes and attributes
193 
195  virtual DtObjectClassHandle classHandle (
196  const char* theName,
197  bool throwException=true) const;
198 
201  virtual const char* className (
202  DtObjectClassHandle theHandle,
203  const char* defaultName = "ObjectClassNotDefined") const;
204 
206  virtual DtObjectClassInfo* classByName(const char *name);
207  virtual const DtObjectClassInfo* classByName(const char *name) const;
208 
210  virtual DtObjectClassInfo* classByHandle(DtObjectClassHandle handle);
211  virtual const DtObjectClassInfo* classByHandle(DtObjectClassHandle handle) const;
212 
214  virtual DtObjectClassInfo* objectRootClass();
215  virtual const DtObjectClassInfo* objectRootClass() const;
216 
218  virtual DtObjectClassHandle objectRootHandle() const;
219 
221  virtual int numClasses() const;
222 
224  virtual int firstFomObjectClassHandle();
225 
227  virtual int lastFomObjectClassHandle();
228 
231  virtual std::set<const DtObjectClassInfo*>& getObjectClassDifferences(const DtFomClassMgr& otherFom,
232  std::set<const DtObjectClassInfo*>& diffSet) const;
233 
236  virtual std::set<const DtInteractionClassInfo*>& getInteractionClassDifferences(const DtFomClassMgr& otherFom,
237  std::set<const DtInteractionClassInfo*>& diffSet) const;
238 
240  virtual DtAttributeHandle attrHandle(const char* theName, DtObjectClassHandle whichClass, bool throwException = true) const;
241 
244  virtual const char* attrName(DtAttributeHandle theHandle, DtObjectClassHandle whichClass, bool throwException = true) const;
245 
246  //------------------------------------------- Dimensions and spaces
247 #ifdef DDM
248  virtual DtSpaceHandle spaceHandle(const char* theName, bool throwException=true) const;
250 
253  virtual const char* spaceName(DtSpaceHandle theHandle, bool throwException=true) const;
254 
256  virtual DtDimensionHandle dimHandle(const char* theName, DtSpaceHandle whichSpace, bool throwException=true) const;
257 
260  virtual const char* dimName(DtDimensionHandle theHandle, DtSpaceHandle whichSpace, bool throwException=true) const;
261 
263  virtual unsigned long dimUpperBound(DtDimensionHandle theHandle, DtSpaceHandle whichSpace, bool throwException=true) const;
264 
266  virtual DtDimensionHandleStdSet const& getAvailableDimensionsForObjectClass(
267  DtObjectClassHandle passedInClassHandle) const;
268 
270  virtual DtDimensionHandleStdSet const & getAvailableDimensionsForClassAttribute(
271  DtObjectClassHandle passedInClassHandle, DtAttributeHandle attrHandle) const;
272 
274  virtual DtDimensionHandleStdSet const& getAvailableDimensionsForInteractionClass(
275  DtInteractionClassHandle passedInClassHandle) const;
276 
278 
279  virtual DtSpaceInfo* spaceByName(const char *name);
280  virtual const DtSpaceInfo* spaceByName(const char *name) const;
282 
284 
285  virtual DtSpaceInfo* spaceByHandle(DtSpaceHandle handle);
286  virtual const DtSpaceInfo* spaceByHandle(DtSpaceHandle handle) const;
288 
290  virtual int numSpaces() const;
291 #endif
292 
293  //------------------------------------------- Interactions and parameters
294 
296 
297  virtual DtInteractionClassInfo* interactionByName(const char *name);
298  virtual const DtInteractionClassInfo* interactionByName(const char *name) const;
300 
302 
303  virtual DtInteractionClassInfo* interactionByHandle(DtInteractionClassHandle handle);
304  virtual const DtInteractionClassInfo* interactionByHandle(DtInteractionClassHandle handle) const;
306 
308 
309  virtual DtInteractionClassInfo* interactionRootClass();
310  virtual const DtInteractionClassInfo* interactionRootClass() const;
312 
314  virtual DtInteractionClassHandle interactionRootHandle() const;
315 
317  virtual DtInteractionClassHandle interactionHandle(const char* theName, bool throwException=true) const;
318 
321  virtual const char* interactionName (DtInteractionClassHandle theHandle,
322  const char* defaultName = "InteractionClassNotDefined") const;
323 
325  virtual int numInteractions() const;
326 
328  virtual int firstFomInteractionClassHandle();
329 
331  virtual int lastFomInteractionClassHandle();
332 
339  virtual void addHandleForUnknownInteractionClass(DtInteractionClassHandle handle, DtInteractionClassHandle baseClassHandle);
340 
342  virtual DtParameterHandle paramHandle(
343  const char* theName,
344  DtInteractionClassHandle whichClass,
345  bool throwException = true);
346 
349  virtual const char* paramName(
350  DtParameterHandle theHandle,
351  DtInteractionClassHandle whichClass,
352  bool throwException = true);
353 
354  //-------------------------------------------------------------------------
356  //-------------------------------------------------------------------------
357 
358  virtual void initDMFilteringParameters(const DtRIDParameters* params);
359  virtual void printDMSubscriptions();
360 
361  //-------------------------------------------------------------------------
363  //-------------------------------------------------------------------------
364 
366  virtual bool save(DtRtiSaveFile& file);
367 
369  virtual void prepareToRestore();
370 
372  virtual bool restore( DtRtiSaveFile& file );
373 
375  virtual void setExtend13and1516interop(bool enable);
376  virtual bool extend13and1516interop() const;
377 
379  virtual void print() const;
380 
382  virtual DtFomClassMgr* clone();
383 
384  //-------------------------------------------------------------------------
386  //-------------------------------------------------------------------------
387 
390  virtual void setConveyRegionDesignatorSets(bool value);
391 
392  virtual void addFedFileName(const MAKRti::DtString & name);
393  virtual const MAKRti::DtNameVector& fedFiles() const;
394 
398  // TODO make this into a method getter/setter thingie
399  unsigned long myCrc;
400 
401 public:
402 
404  static DtFomClassMgr* create(DtRIDParameters* p);
405 
409  static void setCreatorFunction(DtFomClassMgrCreator fn);
410 
411 protected:
412 
413  void init();
414 
415 #ifdef DDM
416  virtual void addSpaceSorted( const char* nameValue );
418  virtual void addSpaceUnsorted( const char* nameValue );
419 #endif
420 
423  virtual void adjustInteractionHandlesByName(DtInteractionClassInfo* classInfo);
424 
427  virtual void adjustObjectHandlesByName(DtObjectClassInfo* classInfo);
428 
430  virtual DtMergeFomStatus mergeObjectDimensions(DtFomClassMgr const& module, DtObjectClassInfo const& objectInfo);
431 
433  virtual DtMergeFomStatus mergeInteractionDimensions(DtFomClassMgr const& module, DtInteractionClassInfo const& interInfo);
434 
435 
437 
438  virtual bool resolveObjectDimensions(MAKRti::DtString& errorString, bool& fomReadError);
439  virtual bool resolveAttributeDimensions(MAKRti::DtString & errorString, bool& fomReadError);
440  virtual bool resolveInteractionDimensions(MAKRti::DtString & errorString, bool& fomReadError);
441  virtual bool resolveAttributeTransportations(MAKRti::DtString & errorString, bool& fomReadError);
442  virtual bool resolveInteractionTransportations(MAKRti::DtString & errorString, bool& fomReadError);
443  virtual bool resolveObjectClasses(MAKRti::DtString & errorString, bool& fomReadError);
444  virtual bool resolveInteractionClasses(MAKRti::DtString & errorString, bool& fomReadError);
445  virtual bool resolveAttributes(MAKRti::DtString & errorString, bool& fomReadError);
446  virtual bool resolveParameters(MAKRti::DtString & errorString, bool& fomReadError);
447  virtual bool resolveDimensions(MAKRti::DtString & errorString, bool& fomReadError);
449 
451  virtual void addAttrInfoToChildren(DtObjectClassInfo* classDesc,
452  const MAKRti::DtString& attributeName,
453  DtDimensionHandle dimensionHandle);
454 
456  virtual bool componentSortingIsActive() const;
457 
458 protected:
459 
461  typedef std::map<DtObjectClassHandle, DtObjectClassInfo*> DtObjectClassByHandleMap;
462  typedef std::map<MAKRti::DtString, DtObjectClassInfo*> DtObjectClassByNameMap;
463  typedef std::map<DtInteractionClassHandle, DtInteractionClassInfo*> DtInteractionClassByHandleMap;
464  typedef std::map<MAKRti::DtString, DtInteractionClassInfo*> DtInteractionClassByNameMap;
465 
466 protected:
467 
473 
479 
480 #ifdef DDM
481  DtSpaceVector mySpaces;
483 
485  DtSpaceHandle myFirstSpaceHandle;
486 #endif
487 
490 
493 
497 
498  // This is all FOM files merged in this target. It includes the MIM and is in merge order.
499  MAKRti::DtNameVector myFedFiles;
500 
503 
505 protected:
506 
509  static const unsigned int theLastMomObjectHandle;
510 
513  static const unsigned int theLastMomInteractionHandle;
514 
517  static const unsigned int theInteractionRootHandle;
518 
521  static const unsigned int theObjectRootHandle;
522 
525 };
DtObjectClassByNameMap myObjectsExcludeMomByName
Definition: fomMgr.h:471
DtObjectClassByHandleMap myObjectsByHandle
Object classes.
Definition: fomMgr.h:469
DtObjectClassByNameMap myObjectsByName
Definition: fomMgr.h:470
DtObjectClassByNameMap myObjectsMomByName
Definition: fomMgr.h:472
std::vector< DtAttrInfo > DtAttrVector
Definition: fomMgr.h:40
std::map< MAKRti::DtString, DtInteractionClassInfo * > DtInteractionClassByNameMap
Definition: fomMgr.h:464
This class manages the RTI&#39;s start-up configuration using both MTL variables and functions.
Definition: RIDparams.h:87
const DtDimensionHandleStdSet myEmptyDimHandleSet
Definition: fomMgr.h:504
Definition: attrInfo.h:29
std::map< DtObjectClassHandle, DtObjectClassInfo * > DtObjectClassByHandleMap
Maintain classes as a list of pointers that are hierarchically linked.
Definition: fomMgr.h:461
DtHandle DtObjectClassHandle
Definition: internalTypes.h:48
DtInteractionClassByNameMap myInteractionsByName
Definition: fomMgr.h:476
bool myOverrideConveyRegions
RID file specifies to override the FOM convey regions switch.
Definition: fomMgr.h:502
static DtFomClassMgrCreator theCreator
Creator function creates instance of this class or subclass.
Definition: fomMgr.h:524
DtHandle DtDimensionHandle
Definition: internalTypes.h:62
DtHandle DtInteractionClassHandle
Definition: internalTypes.h:52
unsigned long myCrc
This is 0 by default.
Definition: fomMgr.h:399
DtInteractionClassByNameMap myInteractionsMomByName
Definition: fomMgr.h:478
DtFomClassMgr *(* DtFomClassMgrCreator)(DtRIDParameters *p)
Definition: fomMgr.h:42
bool myEnableComponentSorting
Indicates that FOM component sorting is enabled.
Definition: fomMgr.h:492
static const unsigned int theLastMomObjectHandle
Last class handle of MOM objects Block of handles up to this value are reserved for MOM object classe...
Definition: fomMgr.h:509
DtInteractionClassByHandleMap myInteractionsByHandle
Interaction classes.
Definition: fomMgr.h:475
std::set< DtDimensionHandle > DtDimensionHandleStdSet
Definition: internalTypes.h:63
bool my13and1516interop
Indicates that 13 and 1516 interoperability is enabled.
Definition: fomMgr.h:489
Definition: fomMgr.h:49
std::map< DtAttributeHandle, DtAttrInfo * > DtAttributeByHandleMap
Definition: attrInfo.h:232
MAKRti::DtNameVector myFedFiles
Definition: fomMgr.h:499
static const unsigned int theInteractionRootHandle
The interaction root handle This value is reserved for the root interaction class handle...
Definition: fomMgr.h:517
long DtSpaceHandle
Definition: internalTypes.h:42
static const unsigned int theLastMomInteractionHandle
Last class handle of MOM interactions Block of handles up to this value are reserved for MOM interact...
Definition: fomMgr.h:513
bool myMergingEnabled
Indicates if FOM Module Merging is enabled.
Definition: fomMgr.h:496
Definition: intClassInfo.h:40
DtHandle DtAttributeHandle
Definition: internalTypes.h:54
static const unsigned int theObjectRootHandle
The object root handle This value is reserved for the root object class handle.
Definition: fomMgr.h:521
#define DT_DLL_LRC
Definition: rtiMsConfig.h:155
Definition: saveFile.h:21
DtInteractionClassByNameMap myInteractionsExcludeMomByName
Definition: fomMgr.h:477
Definition: objClassInfo.h:36
DtHandle DtParameterHandle
Definition: internalTypes.h:56
std::map< MAKRti::DtString, DtObjectClassInfo * > DtObjectClassByNameMap
Definition: fomMgr.h:462
std::map< DtParameterHandle, DtParamInfo * > DtParameterByHandleMap
Definition: paramInfo.h:94
std::map< DtInteractionClassHandle, DtInteractionClassInfo * > DtInteractionClassByHandleMap
Definition: fomMgr.h:463

Document ID: Generated on Sun Jul 20 16:15:30 EDT 2025 from SVN revision 277985
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)