VR-Link API Documentation for HLA Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
fom.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2025 MAK Technologies, Inc
3 ** All rights reserved.
4 *********************************************************************/
5 
6 #pragma once
7 
10 
11 #if DtHLA
12 
13 
14 #include <vlutil/vlMachineTypes.h>
15 #include "rtiNamespace.h"
16 #include "exerciseConn.h"
17 #include <mtl/fedReader.h>
18 #include <vlutil/vlFedTarget.h>
19 #include <map>
20 
25 class DT_DLL_VL DtRtiAmbassador;
26 
27 
28 
29 class DT_DLL_VL DtFom;
30 typedef DtFom* (*DtFomCreator)(DtExerciseConn*);
39 class DT_DLL_VL DtFom : public DtFedTarget
40 {
41 public:
42 
43 
45  DtFom(DtExerciseConn* exConn);
46 
48  virtual ~DtFom();
49 
51  DtFom(const DtFom& orig);
52 
54  DtFom& operator=(const DtFom& orig);
55 
57  virtual DtFedReadStatus readFed(const DtString& fedFile,
58  const std::vector<std::wstring>& fomModules, const DtString& mimModule,
59  bool strictCheckingEnabled, bool useDTD, bool dontParseSwitches );
60 
61 #if DtHLA_1516
62  virtual void addDimension(const char* dimName, unsigned long upperBound,
64  unsigned long defaultLowerBound, unsigned long defaultUpperBound,
65  bool excluded, const DtString& normalization);
66 #else
67  virtual void addSpace(const char* name);
69 
72  virtual void addDimension(const char* spaceName, const char* dimName);
73 #endif
74 
77  virtual bool addInterClass(const char* name,
78  const char* baseName, DtTransportType transport,
79  DtOrderType order, const char* space=NULL);
80 
84  virtual bool shouldPrintMissingClass(const char * name);
85 
88  virtual bool addObjClass(const char* name,
89  const char* baseName);
90 
93  virtual bool addObjectDimension(const char* objectClassName, const char* dimension);
94 
97  virtual void addParameter(const char* className,
98  const char* paramName);
99 
102  virtual bool addInteractionDimension(const char* interactionName,
103  const char* dimension);
104 
107  virtual void addAttribute(const char* className,
108  const char* attrName, DtTransportType transport,
109  DtOrderType order, const char* space=NULL);
110 
113  void addAttribute( const char* className,
114  const char* attrName,
115  DtTransportType transport,
116  DtOrderType order,
117  DtSharingType sharing,
118  DtFomUpdateType updateType,
119  const DtString& updateCondition,
120  DtOwnershipType ownershipType,
121  const DtString& semantics, const char* spaceName=NULL);
122 
125  virtual bool addAttributeDimension(const char* className,
126  const char* attrName, const char* dimName);
127 
128 #if DtHLA_1516
129  virtual DtDimensionDesc* dimensionByName(const char* dimensionName) const;
131 
133  virtual DtDimensionDesc* dimensionByHandle( RTI::DimensionHandle dimensionHandle) const;
134 #else
135  virtual DtRoutingSpaceDesc* spaceByName(const char *name) const;
137 
139  virtual DtRoutingSpaceDesc* spaceByHandle(RTI::SpaceHandle handle) const;
140 
142  virtual RTI::DimensionHandle dimensionHandle(const char* spaceName, const char* dimensionName) const;
143 
145  virtual const DtString& dimensionName(const char* spaceName, RTI::DimensionHandle dimHandle) const;
146 #endif
147 
149  virtual DtObjClassDesc* rootObjClass() const;
150 
152  virtual DtObjClassDesc* rootMomObjClass() const;
153 
155  virtual DtObjClassDesc* objClassByName(const char *name) const;
156 
158  virtual DtObjClassDesc* objClassByHandle(RTI::ObjectClassHandle handle) const;
159 
163  virtual const std::list<DtObjClassDesc*>& objClassList() const;
164 
166  int numObjClasses() const;
167 
168 #if !DtHLA_1516
169  int minObjClassHandle() const;
172  int maxObjClassHandle() const;
173 
178  virtual DtObjClassDesc* firstObjClass() const;
179  virtual DtObjClassDesc* lastObjClass() const;
180  virtual DtObjClassDesc* nextObjClass(DtObjClassDesc* current) const;
181 #endif
182 
184  virtual DtInterClassDesc* rootInterClass() const;
185 
187  virtual DtInterClassDesc* rootMomInterClass() const;
188 
190  virtual DtInterClassDesc* interClassByName(const char *name) const;
191 
193  virtual DtInterClassDesc* interClassByHandle(RTI::InteractionClassHandle handle) const;
194 
198  virtual const std::list<DtInterClassDesc*>& interClassList() const;
199 
201  int numInterClasses() const;
202 
203 #if !DtHLA_1516
204  int minInterClassHandle() const;
207  int maxInterClassHandle() const;
208 #endif
209 
210 
211 #if !DtHLA_1516
212  virtual DtInterClassDesc* firstInterClass() const;
217  virtual DtInterClassDesc* lastInterClass() const;
218  virtual DtInterClassDesc* nextInterClass(DtInterClassDesc* current) const;
219 #endif
220 
222  virtual DtVrlRtiAmbassador* rtiAmb() const;
223 
225  virtual void print() const;
226 
230  //{@
231  bool isDdmDisabled() const;
232  void setIsDdmDisabled(bool val);
233 
234  bool isMomIsDisabled() const;
235  void setIsMomIsDisabled(bool val);
237 
238 protected:
239 
241  virtual DtMergeFomStatus mergeObjectClasses( const DtFom& module );
242 
244  virtual DtMergeFomStatus mergeObjClassDesc(const DtObjClassDesc* desc);
245 
247  virtual DtMergeFomStatus mergeInteractionClasses( const DtFom& module );
248 
250  virtual DtMergeFomStatus mergeIntClassDesc(const DtInterClassDesc* desc);
251 
252 
253 public:
255  static void setFomCreator(DtFomCreator);
256 
258  static DtFom* create(DtExerciseConn* exConn);
259 
262 
263 
265  static void setIntersection(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
266  RTI::AttributeHandleSet& destinationSet);
267 
269  static void setUnion(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
270  RTI::AttributeHandleSet& destinationSet);
271 
273  static void setDifference(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
274  RTI::AttributeHandleSet& destinationSet);
275 
277  static void setSymmetricDifference(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
278  RTI::AttributeHandleSet& destinationSet);
279 
282  static bool setsEqual(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2);
283 
285  static void setInsert(RTI::AttributeHandleSet& handleSet, const RTI::AttributeHandle& handle);
286 
288  static void setInsert(RTI::AttributeHandleSet& destinationSet, const RTI::AttributeHandleSet& sourceSet);
289 
291  static void setRemove(RTI::AttributeHandleSet& handleSet, const RTI::AttributeHandle& handle);
292 
294  static void setRemove(RTI::AttributeHandleSet& destinationSet, const RTI::AttributeHandleSet& sourceSet);
295 
297  static void setClear(RTI::AttributeHandleSet& handleSet);
298 
300 
301 protected:
302 
304 
306 #if DtHLA_1516
307  std::map<DtString, DtDimensionDesc*> myDimensionsByName;
308 #else
309  std::map<DtString, DtRoutingSpaceDesc*> myRoutingSpacesByName;
310 #endif
311  std::map<DtString, DtInterClassDesc*> myInterClassesByName;
312  std::map<DtString, DtObjClassDesc*> myObjClassesByName;
313 
316 #if DtHLA_1516
317  std::map<std::wstring, DtDimensionDesc*> myDimensionsByHandle;
318  std::map<std::wstring, DtInterClassDesc*> myInterClassesByHandle;
319  std::map<std::wstring, DtObjClassDesc*> myObjClassesByHandle;
320 #else
321  std::map<RTI::SpaceHandle, DtRoutingSpaceDesc*> myRoutingSpacesByHandle;
322  std::map<int, DtInterClassDesc*> myInterClassesByHandle;
323  std::map<int, DtObjClassDesc*> myObjClassesByHandle;
324 #endif
325 
327 #if DtHLA_1516
328  std::list<DtDimensionDesc*> myDimensionList;
329 #else
330  std::list<DtRoutingSpaceDesc*> myRoutingSpaceList;
331 #endif
332  std::list<DtObjClassDesc*> myObjClassList;
333  std::list<DtInterClassDesc*> myInterClassList;
334 
335 #if !DtHLA_1516
340 #endif
341 
344 
345  std::set<DtString> myFailedObjClasses;
346  std::set<DtString> myFailedInterClasses;
347 
350 protected:
352 
353 protected:
354 
356  virtual DtMergeFomStatus mergeObjectClasses( const DtFedTarget& module );
357 
359  virtual DtMergeFomStatus mergeInteractionClasses( const DtFedTarget& module );
360 
361  virtual bool resolveAttributeDimensions();
362 };
363 
364 
366 {
367  return myExConn->rtiAmb();
368 }
369 
370 #endif
371 
372 
373 
virtual DtMergeFomStatus mergeInteractionClasses(const DtFedTarget &module)
Merge the interaction classes from the given FOM Module with this one.
std::map< int, DtObjClassDesc * > myObjClassesByHandle
Definition: fom.h:323
virtual void addAttribute(const char *className, const char *attrName, DtTransportType transport, DtOrderType order, DtSharingType sharing, DtFomUpdateType updateType, const DtString &updateCondition, DtOwnershipType ownershipType, const DtString &semantics, const char *spaceName=NULL)=0
Define an attribute of a class.
bool myMomIsDisabled
Definition: fom.h:349
Instances of DtExerciseConn are used to provide an application&#39;s interface or connection to the netwo...
Definition: exerciseConnHLA.h:61
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
enum DtFomUpdateType_enum DtFomUpdateType
Update type for object.
std::map< DtString, DtInterClassDesc * > myInterClassesByName
Definition: fom.h:311
Definition: routingSpaceDesc.h:26
DtExerciseConn * myExConn
Definition: fom.h:303
Instances of DtInterClassDesc are used to represent HLA Object and Interaction classes.
Definition: interClassDesc.h:33
virtual DtVrlRtiAmbassador * rtiAmb()
Get the RTI ambassador.
Definition: exerciseConnHLA.h:1078
virtual void addSpace(const char *name)
Define a routing space. Used when initializing from FED file.
DtString myObjRootName
Definition: fom.h:342
This file declares DtFedReader and several helper classes.
DtFedReadStatus
Definition: fedReader.h:31
virtual bool addAttributeDimension(const char *className, const char *attrName, const char *dimName)=0
Define the dimensions of an attribute Return true if add was successful (i.e., dimension is valid) ...
This file contains the declaration of DtFedTarget and several helper classes.
Represents a particular FOM, as described by a FED file.
Definition: fom.h:39
An instance of DtObjClassDesc is a &quot;class descriptor&quot; for an HLA Object class.
Definition: objClassDesc13.h:41
enum DtSharingType_enum DtSharingType
virtual void addDimension(const char *SpaceName, const char *dimName)
Define a dimension within a routing space.
virtual DtMergeFomStatus mergeObjectClasses(const DtFedTarget &module)
Merge the object classes from the given FOM Module with this one.
virtual bool addObjectDimension(const char *objectClassName, const char *dimension)=0
Add a dimension to the object class Return true if add was successful (i.e., dimension is valid) ...
class DtFedTarget:
Definition: vlFedTarget.h:124
std::map< DtString, DtObjClassDesc * > myObjClassesByName
Definition: fom.h:312
DtString myInterRootName
Definition: fom.h:343
virtual bool addInteractionDimension(const char *interactionName, const char *dimension)=0
Add regions to the interaction class Return true if add was successful (i.e., dimension is valid) ...
std::set< DtString > myFailedObjClasses
Definition: fom.h:345
Definition: dimensionDesc.h:29
std::list< DtInterClassDesc * > myInterClassList
Definition: fom.h:333
DtFedTarget & operator=(const DtFedTarget &orig)
assignment operator
std::map< int, DtInterClassDesc * > myInterClassesByHandle
Definition: fom.h:322
This file provides protocol to independence DtExerciseConn.
int myHighestInter
Definition: fom.h:339
int myLowestObj
Definition: fom.h:336
enum DtMergeFomStatus_enum DtMergeFomStatus
DtTransportType
Definition: vlFedTarget.h:84
std::list< DtObjClassDesc * > myObjClassList
Definition: fom.h:332
virtual bool addObjClass(const char *name, const char *baseName)=0
Define an object class.
bool myDdmIsDisabled
Definition: fom.h:348
int myHighestObj
Definition: fom.h:337
std::set< DtString > myFailedInterClasses
Definition: fom.h:346
enum DtOwnershipType_enum DtOwnershipType
DtOrderType
Definition: vlFedTarget.h:91
static DtFomCreator theCreatorFunction
Definition: fom.h:351
static const xmlChar * attrName
Definition: xmlFedTags.h:116
int myLowestInter
Definition: fom.h:338
std::map< RTI::SpaceHandle, DtRoutingSpaceDesc * > myRoutingSpacesByHandle
Hash lists that map class handles (DtIntHashKeys) to DtObjClassDesc pointers.
Definition: fom.h:321
DtVrlRtiAmbassador is a pure virtual class, designed to provide a foundation for different ways to se...
Definition: vrlRtiAmbassador13.h:23
std::map< DtString, DtRoutingSpaceDesc * > myRoutingSpacesByName
Hash lists that map class names (DtStringHashKeys) to descriptor pointers.
Definition: fom.h:309
Instances of DtString are used to represent strings.
Definition: vlString.h:36
virtual DtVrlRtiAmbassador * rtiAmb() const
Returns our RTI ambassador.
Definition: fom.h:365
virtual void addParameter(const char *className, const char *paramName)=0
Define a parameter of a intertaction class.
DtFom *(* DtFomCreator)(DtExerciseConn *)
Definition: fom.h:30
virtual bool addInterClass(const char *name, const char *baseName, DtTransportType transport, DtOrderType order, const char *space=0)=0
Define an interaction class.
std::list< DtRoutingSpaceDesc * > myRoutingSpaceList
List of descriptors.
Definition: fom.h:330
This file contains typedefs for machine dependant types.

Document ID: Generated on Thu Oct 16 00:12:25 EDT 2025 from SVN revision 280738
Copyright © 1992-2025 MAK Technologies. All Rights Reserved (www.mak.com)