MAK RTIspy API Documentation for HLA 1516
 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 public:
52  typedef std::map<DtObjectClassHandle, DtObjectClassInfo*> DtObjectClassByHandleMap;
53  typedef std::map<DtInteractionClassHandle, DtInteractionClassInfo*> DtInteractionClassByHandleMap;
54 
55 protected:
56 
59 
61  DtFomClassMgr& operator=(const DtFomClassMgr& orig);
62 
63 public:
64 
68  DtFomClassMgr();
69 
71  DtFomClassMgr(const DtFomClassMgr& orig);
72 
74  virtual ~DtFomClassMgr();
75 
76  //-------------------------------------------------------------------------
78  //-------------------------------------------------------------------------
79 
80 
82  virtual void addSpace(const char* name);
83 
86  virtual void addDimension(const char* spaceName, const char* dimName);
87 
89  virtual void addDimension(const char* dimName, unsigned long upperBound,
90  unsigned long defaultLowerBound, unsigned long defaultUpperBound,
91  bool excluded, const MAKRti::DtString& normalization);
92 
95  virtual bool addInteractionDimension(const char* interactionName, const char* dimension);
96 
98  virtual bool addInteractionClass(const char* name, const char* baseName,
99  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
100  DtSharingType sharing, const MAKRti::DtString& semantics,
101  const char* space=NULL);
102 
103  virtual bool addInterClass(const char* name, const char* baseName,
104  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
105  const char* spaceName = NULL );
106 
109  virtual bool addObjectDimension(const char* objectClassName, const char* dimension);
110 
113  bool addDirectedInteraction(const char* objectClassName, const char* interactionClassName) override;
114 
115  virtual bool addObjectClass(const char* name, const char* baseName,
116  DtSharingType sharing, const MAKRti::DtString& semantics );
117 
119  virtual bool addObjClass(const char* name, const char* baseName);
120 
127  virtual void addHandleForUnknownObjectClass(DtObjectClassHandle handle, DtObjectClassHandle baseClassHandle);
128 
129  virtual void addParameter(const char* className, const char* paramName);
130 
133  virtual void addParameter(const char* className,
134  const char* paramName,
135  const char* semantics );
136 
139  virtual bool addAttributeDimension(const char* className,
140  const char* attributeName, const char* dimName);
141 
144  virtual void addAttribute(const char* className, const char* attrName,
145  MAKRti::DtTransportType transport, MAKRti::DtOrderType order, DtSharingType sharing,
146  DtFomUpdateType updateType, const MAKRti::DtString& updateCondition,
147  DtOwnershipType ownershipType, const MAKRti::DtString& semantics,
148  const char* spaceName=NULL );
149 
150  virtual void addAttribute(const char* className, const char* attrName,
151  MAKRti::DtTransportType transport, MAKRti::DtOrderType order, const char* spaceName=NULL );
152 
154  virtual void initUpdateRates(DtRIDParameters* params) ;
155 
157  const MAKRti::DtUpdateRateSetT & getUpdateRates() const;
158 
160  float updateRateByName(const char * name);
161 
164  int positionOfRate(float rate) const;
165 
167  bool knownUpdateRate(const MAKRti::DtString& rateName) const;
168 
170  virtual DtMergeFomStatus mergeObjectClasses( DtFedTarget const& module );
171 
174  virtual DtMergeFomStatus mergeObjectInfo(DtObjectClassInfo const& classInfo, DtAttributeByHandleMap& attributesToMerge);
175 
177  virtual void mergeAttributes(DtObjectClassInfo const& classInfo, const DtAttributeByHandleMap& attributesToMerge,
178  DtFomClassMgr const& module );
179 
181  virtual DtMergeFomStatus mergeInteractionClasses( DtFedTarget const& module );
182 
184  virtual DtMergeFomStatus mergeInteractionInfo( DtInteractionClassInfo const & interInfo, const char* spaceName,
185  DtParameterByHandleMap& parametersToMerge);
186 
188  virtual void mergeParameters( DtInteractionClassInfo const& interInfo, const DtParameterByHandleMap& parametersToMerge);
189 
191  virtual DtMergeFomStatus mergeSpaces( DtFedTarget const& module );
192 
194  virtual DtMergeFomStatus mergeDimensions( DtSpaceInfo const& spaceInfo );
195 
196  //-------------------------------------------------------------------------
198  //-------------------------------------------------------------------------
199 
200  //------------------------------------------- Object classes and attributes
201 
203  virtual DtObjectClassHandle classHandle (
204  const char* theName,
205  bool throwException=true) const;
206 
209  virtual const char* className (
210  DtObjectClassHandle theHandle,
211  const char* defaultName = "ObjectClassNotDefined") const;
212 
214 
215  virtual DtObjectClassInfo* classByName(const char *name);
216  virtual const DtObjectClassInfo* classByName(const char *name) const;
218 
220 
221  virtual DtObjectClassInfo* classByHandle(DtObjectClassHandle handle);
222  virtual const DtObjectClassInfo* classByHandle(DtObjectClassHandle handle) const;
224 
226  virtual const DtObjectClassByHandleMap& classesByHandle() const;
227 
229 
230  virtual DtObjectClassInfo* objectRootClass();
231  virtual const DtObjectClassInfo* objectRootClass() const;
233 
235  virtual DtObjectClassHandle objectRootHandle() const;
236 
238  virtual int numClasses() const;
239 
241  virtual int firstFomObjectClassHandle();
242 
244  virtual int lastFomObjectClassHandle();
245 
248  virtual std::set<const DtObjectClassInfo*>& getObjectClassDifferences(const DtFomClassMgr& otherFom,
249  std::set<const DtObjectClassInfo*>& diffSet) const;
250 
253  virtual std::set<const DtInteractionClassInfo*>& getInteractionClassDifferences(const DtFomClassMgr& otherFom,
254  std::set<const DtInteractionClassInfo*>& diffSet) const;
255 
257  virtual DtAttributeHandle attrHandle(const char* theName, DtObjectClassHandle whichClass, bool throwException = true) const;
258 
261  virtual const char* attrName(DtAttributeHandle theHandle, DtObjectClassHandle whichClass, bool throwException = true) const;
262 
263  //------------------------------------------- Dimensions and spaces
264 #ifdef DDM
265  virtual DtSpaceHandle spaceHandle(const char* theName, bool throwException=true) const;
267 
270  virtual const char* spaceName(DtSpaceHandle theHandle, bool throwException=true) const;
271 
273  virtual DtDimensionHandle dimHandle(const char* theName, DtSpaceHandle whichSpace, bool throwException=true) const;
274 
277  virtual const char* dimName(DtDimensionHandle theHandle, DtSpaceHandle whichSpace, bool throwException=true) const;
278 
280  virtual unsigned long dimUpperBound(DtDimensionHandle theHandle, DtSpaceHandle whichSpace, bool throwException=true) const;
281 
283  virtual DtDimensionHandleStdSet const& getAvailableDimensionsForObjectClass(
284  DtObjectClassHandle passedInClassHandle) const;
285 
287  virtual DtDimensionHandleStdSet const & getAvailableDimensionsForClassAttribute(
288  DtObjectClassHandle passedInClassHandle, DtAttributeHandle attrHandle) const;
289 
291  virtual DtDimensionHandleStdSet const& getAvailableDimensionsForInteractionClass(
292  DtInteractionClassHandle passedInClassHandle) const;
293 
295 
296  virtual DtSpaceInfo* spaceByName(const char *name);
297  virtual const DtSpaceInfo* spaceByName(const char *name) const;
299 
301 
302  virtual DtSpaceInfo* spaceByHandle(DtSpaceHandle handle);
303  virtual const DtSpaceInfo* spaceByHandle(DtSpaceHandle handle) const;
305 
307  virtual int numSpaces() const;
308 #endif
309 
310  //------------------------------------------- Interactions and parameters
311 
313 
314  virtual DtInteractionClassInfo* interactionByName(const char *name);
315  virtual const DtInteractionClassInfo* interactionByName(const char *name) const;
317 
319 
320  virtual DtInteractionClassInfo* interactionByHandle(DtInteractionClassHandle handle);
321  virtual const DtInteractionClassInfo* interactionByHandle(DtInteractionClassHandle handle) const;
323 
325  virtual const DtInteractionClassByHandleMap& interactionsByHandle() const;
326 
328 
329  virtual DtInteractionClassInfo* interactionRootClass();
330  virtual const DtInteractionClassInfo* interactionRootClass() const;
332 
334  virtual DtInteractionClassHandle interactionRootHandle() const;
335 
337  virtual DtInteractionClassHandle interactionHandle(const char* theName, bool throwException=true) const;
338 
341  virtual const char* interactionName (DtInteractionClassHandle theHandle,
342  const char* defaultName = "InteractionClassNotDefined") const;
343 
345  virtual int numInteractions() const;
346 
348  virtual int firstFomInteractionClassHandle() const;
349 
351  virtual int lastFomInteractionClassHandle() const;
352 
359  virtual void addHandleForUnknownInteractionClass(DtInteractionClassHandle handle, DtInteractionClassHandle baseClassHandle);
360 
362  virtual DtParameterHandle paramHandle(
363  const char* theName,
364  DtInteractionClassHandle whichClass,
365  bool throwException = true);
366 
369  virtual const char* paramName(
370  DtParameterHandle theHandle,
371  DtInteractionClassHandle whichClass,
372  bool throwException = true);
373 
374  //-------------------------------------------------------------------------
376  //-------------------------------------------------------------------------
377 
378  virtual void initDMFilteringParameters(const DtRIDParameters* params);
379  virtual void printDMSubscriptions();
380 
381  //-------------------------------------------------------------------------
383  //-------------------------------------------------------------------------
384 
386  virtual bool save(DtRtiSaveFile& file);
387 
389  virtual void prepareToRestore();
390 
392  virtual bool restore( DtRtiSaveFile& file );
393 
395  virtual void setExtend13and1516interop(bool enable);
396  virtual bool extend13and1516interop() const;
397 
399  virtual void print() const;
400 
402  virtual DtFomClassMgr* clone();
403 
404  //-------------------------------------------------------------------------
406  //-------------------------------------------------------------------------
407 
410  virtual void setConveyRegionDesignatorSets(bool value);
411 
412  virtual void addFedFileName(const MAKRti::DtString & name);
413  virtual const MAKRti::DtNameVector& fedFiles() const;
414 
418  // TODO make this into a method getter/setter thingie
419  unsigned long myCrc;
420 
421 public:
422 
424  static DtFomClassMgr* create(DtRIDParameters* p);
425 
429  static void setCreatorFunction(DtFomClassMgrCreator fn);
430 
431 protected:
432 
433  void init();
434 
435 #ifdef DDM
436  virtual void addSpaceSorted( const char* nameValue );
438  virtual void addSpaceUnsorted( const char* nameValue );
439 #endif
440 
443  virtual void adjustInteractionHandlesByName(DtInteractionClassInfo* classInfo);
444 
447  virtual void adjustObjectHandlesByName(DtObjectClassInfo* classInfo);
448 
450  virtual DtMergeFomStatus mergeObjectDimensions(DtFomClassMgr const& module, DtObjectClassInfo const& objectInfo);
451 
453  virtual DtMergeFomStatus mergeInteractionDimensions(DtFomClassMgr const& module, DtInteractionClassInfo const& interInfo);
454 
455 
457 
458  virtual bool resolveObjectDimensions(MAKRti::DtString& errorString, bool& fomReadError);
459  virtual bool resolveDirectedInteractions(MAKRti::DtString& errorString, bool& fomReadError);
460  virtual bool resolveAttributeDimensions(MAKRti::DtString & errorString, bool& fomReadError);
461  virtual bool resolveInteractionDimensions(MAKRti::DtString & errorString, bool& fomReadError);
462  virtual bool resolveAttributeTransportations(MAKRti::DtString & errorString, bool& fomReadError);
463  virtual bool resolveInteractionTransportations(MAKRti::DtString & errorString, bool& fomReadError);
464  virtual bool resolveObjectClasses(MAKRti::DtString & errorString, bool& fomReadError);
465  virtual bool resolveInteractionClasses(MAKRti::DtString & errorString, bool& fomReadError);
466  virtual bool resolveAttributes(MAKRti::DtString & errorString, bool& fomReadError);
467  virtual bool resolveParameters(MAKRti::DtString & errorString, bool& fomReadError);
468  virtual bool resolveDimensions(MAKRti::DtString & errorString, bool& fomReadError);
470 
472  virtual void addAttrInfoToChildren(DtObjectClassInfo* classDesc,
473  const MAKRti::DtString& attributeName,
474  DtDimensionHandle dimensionHandle);
475 
477  virtual bool componentSortingIsActive() const;
478 
479 protected:
480 
482  typedef std::map<MAKRti::DtString, DtObjectClassInfo*> DtObjectClassByNameMap;
483  typedef std::map<MAKRti::DtString, DtInteractionClassInfo*> DtInteractionClassByNameMap;
484 
485 protected:
486 
492 
498 
499 #ifdef DDM
500  DtSpaceVector mySpaces;
502 
504  DtSpaceHandle myFirstSpaceHandle;
505 #endif
506 
509 
512 
516 
517  // This is all FOM files merged in this target. It includes the MIM and is in merge order.
518  MAKRti::DtNameVector myFedFiles;
519 
522 
524 protected:
525 
528  static const unsigned int theLastMomObjectHandle;
529 
532  static const unsigned int theLastMomInteractionHandle;
533 
536  static const unsigned int theInteractionRootHandle;
537 
540  static const unsigned int theObjectRootHandle;
541 
544 };
DtObjectClassByNameMap myObjectsExcludeMomByName
Definition: fomMgr.h:490
DtObjectClassByHandleMap myObjectsByHandle
Object classes.
Definition: fomMgr.h:488
DtObjectClassByNameMap myObjectsByName
Definition: fomMgr.h:489
DtObjectClassByNameMap myObjectsMomByName
Definition: fomMgr.h:491
std::vector< DtAttrInfo > DtAttrVector
Definition: fomMgr.h:40
std::map< MAKRti::DtString, DtInteractionClassInfo * > DtInteractionClassByNameMap
Definition: fomMgr.h:483
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:523
Definition: attrInfo.h:29
std::map< DtObjectClassHandle, DtObjectClassInfo * > DtObjectClassByHandleMap
Definition: fomMgr.h:52
DtHandle DtObjectClassHandle
Definition: internalTypes.h:48
DtInteractionClassByNameMap myInteractionsByName
Definition: fomMgr.h:495
bool myOverrideConveyRegions
RID file specifies to override the FOM convey regions switch.
Definition: fomMgr.h:521
static DtFomClassMgrCreator theCreator
Creator function creates instance of this class or subclass.
Definition: fomMgr.h:543
DtHandle DtDimensionHandle
Definition: internalTypes.h:62
DtHandle DtInteractionClassHandle
Definition: internalTypes.h:52
unsigned long myCrc
This is 0 by default.
Definition: fomMgr.h:419
DtInteractionClassByNameMap myInteractionsMomByName
Definition: fomMgr.h:497
DtFomClassMgr *(* DtFomClassMgrCreator)(DtRIDParameters *p)
Definition: fomMgr.h:42
bool myEnableComponentSorting
Indicates that FOM component sorting is enabled.
Definition: fomMgr.h:511
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:528
DtInteractionClassByHandleMap myInteractionsByHandle
Interaction classes.
Definition: fomMgr.h:494
std::set< DtDimensionHandle > DtDimensionHandleStdSet
Definition: internalTypes.h:63
bool my13and1516interop
Indicates that 13 and 1516 interoperability is enabled.
Definition: fomMgr.h:508
Definition: fomMgr.h:49
std::map< DtAttributeHandle, DtAttrInfo * > DtAttributeByHandleMap
Definition: attrInfo.h:232
MAKRti::DtNameVector myFedFiles
Definition: fomMgr.h:518
static const unsigned int theInteractionRootHandle
The interaction root handle This value is reserved for the root interaction class handle...
Definition: fomMgr.h:536
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:532
bool myMergingEnabled
Indicates if FOM Module Merging is enabled.
Definition: fomMgr.h:515
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:540
#define DT_DLL_LRC
Definition: rtiMsConfig.h:155
Definition: saveFile.h:21
DtInteractionClassByNameMap myInteractionsExcludeMomByName
Definition: fomMgr.h:496
Definition: objClassInfo.h:36
DtHandle DtParameterHandle
Definition: internalTypes.h:56
std::map< MAKRti::DtString, DtObjectClassInfo * > DtObjectClassByNameMap
Maintain classes as a list of pointers that are hierarchically linked.
Definition: fomMgr.h:482
std::map< DtParameterHandle, DtParamInfo * > DtParameterByHandleMap
Definition: paramInfo.h:94
std::map< DtInteractionClassHandle, DtInteractionClassInfo * > DtInteractionClassByHandleMap
Definition: fomMgr.h:53

Document ID: Generated on Wed Jul 8 16:20:32 EDT 2026 from SVN revision 291616
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)