VR-Link API Documentation for HLA 1.3
 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-2010 VT MAK
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 void addParameter(const char* className,
94  const char* paramName);
95 
98  virtual bool addInteractionDimension(const char* interactionName,
99  const char* dimension);
100 
103  virtual void addAttribute(const char* className,
104  const char* attrName, DtTransportType transport,
105  DtOrderType order, const char* space=NULL);
106 
109  void addAttribute( const char* className,
110  const char* attrName,
111  DtTransportType transport,
112  DtOrderType order,
113  DtSharingType sharing,
114  DtFomUpdateType updateType,
115  const DtString& updateCondition,
116  DtOwnershipType ownershipType,
117  const DtString& semantics, const char* spaceName=NULL);
118 
121  virtual bool addAttributeDimension(const char* className,
122  const char* attrName, const char* dimName);
123 
124 #if DtHLA_1516
125  virtual DtDimensionDesc* dimensionByName(const char* dimensionName) const;
127 
129  virtual DtDimensionDesc* dimensionByHandle( RTI::DimensionHandle dimensionHandle) const;
130 #else
131  virtual DtRoutingSpaceDesc* spaceByName(const char *name) const;
133 
135  virtual DtRoutingSpaceDesc* spaceByHandle(RTI::SpaceHandle handle) const;
136 
138  virtual RTI::DimensionHandle dimensionHandle(const char* spaceName, const char* dimensionName) const;
139 
141  virtual const DtString& dimensionName(const char* spaceName, RTI::DimensionHandle dimHandle) const;
142 #endif
143 
145  virtual DtObjClassDesc* rootObjClass() const;
146 
148  virtual DtObjClassDesc* rootMomObjClass() const;
149 
151  virtual DtObjClassDesc* objClassByName(const char *name) const;
152 
154  virtual DtObjClassDesc* objClassByHandle(RTI::ObjectClassHandle handle) const;
155 
159  virtual const std::list<DtObjClassDesc*>& objClassList() const;
160 
162  int numObjClasses() const;
163 
164 #if !DtHLA_1516
165  int minObjClassHandle() const;
168  int maxObjClassHandle() const;
169 
174  virtual DtObjClassDesc* firstObjClass() const;
175  virtual DtObjClassDesc* lastObjClass() const;
176  virtual DtObjClassDesc* nextObjClass(DtObjClassDesc* current) const;
177 #endif
178 
180  virtual DtInterClassDesc* rootInterClass() const;
181 
183  virtual DtInterClassDesc* rootMomInterClass() const;
184 
186  virtual DtInterClassDesc* interClassByName(const char *name) const;
187 
189  virtual DtInterClassDesc* interClassByHandle(RTI::InteractionClassHandle handle) const;
190 
194  virtual const std::list<DtInterClassDesc*>& interClassList() const;
195 
197  int numInterClasses() const;
198 
199 #if !DtHLA_1516
200  int minInterClassHandle() const;
203  int maxInterClassHandle() const;
204 #endif
205 
206 
207 #if !DtHLA_1516
208  virtual DtInterClassDesc* firstInterClass() const;
213  virtual DtInterClassDesc* lastInterClass() const;
214  virtual DtInterClassDesc* nextInterClass(DtInterClassDesc* current) const;
215 #endif
216 
218  virtual DtVrlRtiAmbassador* rtiAmb() const;
219 
221  virtual void print() const;
222 
226  //{@
227  bool isDdmDisabled() const;
228  void setIsDdmDisabled(bool val);
229 
230  bool isMomIsDisabled() const;
231  void setIsMomIsDisabled(bool val);
233 
234 protected:
235 
237  virtual DtMergeFomStatus mergeObjectClasses( const DtFom& module );
238 
240  virtual DtMergeFomStatus mergeObjClassDesc(const DtObjClassDesc* desc);
241 
243  virtual DtMergeFomStatus mergeInteractionClasses( const DtFom& module );
244 
246  virtual DtMergeFomStatus mergeIntClassDesc(const DtInterClassDesc* desc);
247 
248 
249 public:
251  static void setFomCreator(DtFomCreator);
252 
254  static DtFom* create(DtExerciseConn* exConn);
255 
258 
259 
261  static void setIntersection(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
262  RTI::AttributeHandleSet& destinationSet);
263 
265  static void setUnion(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
266  RTI::AttributeHandleSet& destinationSet);
267 
269  static void setDifference(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
270  RTI::AttributeHandleSet& destinationSet);
271 
273  static void setSymmetricDifference(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
274  RTI::AttributeHandleSet& destinationSet);
275 
278  static bool setsEqual(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2);
279 
281  static void setInsert(RTI::AttributeHandleSet& handleSet, const RTI::AttributeHandle& handle);
282 
284  static void setInsert(RTI::AttributeHandleSet& destinationSet, const RTI::AttributeHandleSet& sourceSet);
285 
287  static void setRemove(RTI::AttributeHandleSet& handleSet, const RTI::AttributeHandle& handle);
288 
290  static void setRemove(RTI::AttributeHandleSet& destinationSet, const RTI::AttributeHandleSet& sourceSet);
291 
293  static void setClear(RTI::AttributeHandleSet& handleSet);
294 
296 
297 protected:
298 
300 
302 #if DtHLA_1516
303  std::map<DtString, DtDimensionDesc*> myDimensionsByName;
304 #else
305  std::map<DtString, DtRoutingSpaceDesc*> myRoutingSpacesByName;
306 #endif
307  std::map<DtString, DtInterClassDesc*> myInterClassesByName;
308  std::map<DtString, DtObjClassDesc*> myObjClassesByName;
309 
312 #if DtHLA_1516
313  std::map<std::wstring, DtDimensionDesc*> myDimensionsByHandle;
314  std::map<std::wstring, DtInterClassDesc*> myInterClassesByHandle;
315  std::map<std::wstring, DtObjClassDesc*> myObjClassesByHandle;
316 #else
317  std::map<RTI::SpaceHandle, DtRoutingSpaceDesc*> myRoutingSpacesByHandle;
318  std::map<int, DtInterClassDesc*> myInterClassesByHandle;
319  std::map<int, DtObjClassDesc*> myObjClassesByHandle;
320 #endif
321 
323 #if DtHLA_1516
324  std::list<DtDimensionDesc*> myDimensionList;
325 #else
326  std::list<DtRoutingSpaceDesc*> myRoutingSpaceList;
327 #endif
328  std::list<DtObjClassDesc*> myObjClassList;
329  std::list<DtInterClassDesc*> myInterClassList;
330 
331 #if !DtHLA_1516
336 #endif
337 
340 
341  std::set<DtString> myFailedObjClasses;
342  std::set<DtString> myFailedInterClasses;
343 
346 protected:
348 
349 protected:
350 
352  virtual DtMergeFomStatus mergeObjectClasses( const DtFedTarget& module );
353 
355  virtual DtMergeFomStatus mergeInteractionClasses( const DtFedTarget& module );
356 
357  virtual bool resolveAttributeDimensions();
358 };
359 
360 
362 {
363  return myExConn->rtiAmb();
364 }
365 
366 #endif
367 
368 
369 
virtual DtMergeFomStatus mergeInteractionClasses(const DtFedTarget &module)
std::map< int, DtObjClassDesc * > myObjClassesByHandle
Definition: fom.h:319
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:345
Instances of DtExerciseConn are used to provide an application&#39;s interface or connection to the netwo...
Definition: exerciseConnHLA.h:60
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
enum DtFomUpdateType_enum DtFomUpdateType
Update type for object.
std::map< DtString, DtInterClassDesc * > myInterClassesByName
Definition: fom.h:307
Definition: routingSpaceDesc.h:26
DtExerciseConn * myExConn
Definition: fom.h:299
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:1071
virtual void addSpace(const char *name)
Define a routing space. Used when initializing from FED file.
DtString myObjRootName
Definition: fom.h:338
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)
class DtFedTarget:
Definition: vlFedTarget.h:107
std::map< DtString, DtObjClassDesc * > myObjClassesByName
Definition: fom.h:308
DtString myInterRootName
Definition: fom.h:339
virtual bool addInteractionDimension(const char *interactionName, const char *dimension)=0
Add regions to the class Return true if add was successful (i.e., dimension is valid) ...
std::set< DtString > myFailedObjClasses
Definition: fom.h:341
Definition: dimensionDesc.h:29
std::list< DtInterClassDesc * > myInterClassList
Definition: fom.h:329
DtFedTarget & operator=(const DtFedTarget &orig)
assignment operator
std::map< int, DtInterClassDesc * > myInterClassesByHandle
Definition: fom.h:318
This file provides protocol to independence DtExerciseConn.
int myHighestInter
Definition: fom.h:335
int myLowestObj
Definition: fom.h:332
enum DtMergeFomStatus_enum DtMergeFomStatus
DtTransportType
Definition: vlFedTarget.h:67
std::list< DtObjClassDesc * > myObjClassList
Definition: fom.h:328
virtual bool addObjClass(const char *name, const char *baseName)=0
Define a class.
bool myDdmIsDisabled
Definition: fom.h:344
int myHighestObj
Definition: fom.h:333
std::set< DtString > myFailedInterClasses
Definition: fom.h:342
enum DtOwnershipType_enum DtOwnershipType
DtOrderType
Definition: vlFedTarget.h:74
static DtFomCreator theCreatorFunction
Definition: fom.h:347
static const xmlChar * attrName
Definition: xmlFedTags.h:117
int myLowestInter
Definition: fom.h:334
std::map< RTI::SpaceHandle, DtRoutingSpaceDesc * > myRoutingSpacesByHandle
Hash lists that map class handles (DtIntHashKeys) to DtObjClassDesc pointers.
Definition: fom.h:317
DtVrlRtiAmbassador is a pure virtual class, designed to provide a foundation for different ways to se...
Definition: vrlRtiAmbassador13.h:25
std::map< DtString, DtRoutingSpaceDesc * > myRoutingSpacesByName
Hash lists that map class names (DtStringHashKeys) to descriptor pointers.
Definition: fom.h:305
Instances of DtString are used to represent strings.
Definition: vlString.h:29
virtual DtVrlRtiAmbassador * rtiAmb() const
Returns our RTI ambassador.
Definition: fom.h:361
virtual void addParameter(const char *className, const char *paramName)=0
Define a parameter of a 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 a class.
std::list< DtRoutingSpaceDesc * > myRoutingSpaceList
List of descriptors.
Definition: fom.h:326
This file contains typedefs for machine dependant types.

Document ID: Generated on Mon Apr 25 03:39:01 EDT 2022 from SVN revision 242502
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)