VR-Link API Documentation for HLA 1516
 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 
21 class DT_DLL_VL DtRoutingSpaceDesc;
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 
63  virtual void addDimension(const char* dimName, unsigned long upperBound,
64  unsigned long defaultLowerBound, unsigned long defaultUpperBound,
65  bool excluded);
66 #else
67 
68  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 
83  virtual bool addObjClass(const char* name,
84  const char* baseName);
85 
88  virtual void addParameter(const char* className,
89  const char* paramName);
90 
93  virtual bool addInteractionDimension(const char* interactionName,
94  const char* dimension);
95 
98  virtual void addAttribute(const char* className,
99  const char* attrName, DtTransportType transport,
100  DtOrderType order, const char* space=NULL);
101 
104  void addAttribute( const char* className,
105  const char* attrName,
106  DtTransportType transport,
107  DtOrderType order,
108  DtSharingType sharing,
109  DtFomUpdateType updateType,
110  const DtString& updateCondition,
111  DtOwnershipType ownershipType,
112  const DtString& semantics, const char* spaceName=NULL);
113 
116  virtual bool addAttributeDimension(const char* className,
117  const char* attrName, const char* dimName);
118 
119 #if DtHLA_1516
120 
121  virtual DtDimensionDesc* dimensionByName(const char* dimensionName) const;
122 
124  virtual DtDimensionDesc* dimensionByHandle( RTI::DimensionHandle dimensionHandle) const;
125 #else
126 
127  virtual DtRoutingSpaceDesc* spaceByName(const char *name) const;
128 
130  virtual DtRoutingSpaceDesc* spaceByHandle(RTI::SpaceHandle handle) const;
131 
133  virtual RTI::DimensionHandle dimensionHandle(const char* spaceName, const char* dimensionName) const;
134 
136  virtual const DtString& dimensionName(const char* spaceName, RTI::DimensionHandle dimHandle) const;
137 #endif
138 
140  virtual DtInterClassDesc* interClassByName(const char *name) const;
141 
143  virtual DtObjClassDesc* objClassByName(const char *name) const;
144 
146  virtual DtInterClassDesc* interClassByHandle(
147  RTI::InteractionClassHandle handle) const;
148 
150  virtual DtObjClassDesc* objClassByHandle(
151  RTI::ObjectClassHandle handle) const;
152 
158  virtual const std::list<DtInterClassDesc*>& interClassList() const;
159  virtual const std::list<DtObjClassDesc*>& objClassList() const;
160 
161 #if !DtHLA_1516
162 
163 
164 
165 
166  virtual DtObjClassDesc* firstObjClass() const;
167  virtual DtObjClassDesc* lastObjClass() const;
168  virtual DtObjClassDesc* nextObjClass(DtObjClassDesc* current) const;
169 
174  virtual DtInterClassDesc* firstInterClass() const;
175  virtual DtInterClassDesc* lastInterClass() const;
176  virtual DtInterClassDesc* nextInterClass(DtInterClassDesc* current) const;
177 #endif
178 
180  virtual DtVrlRtiAmbassador* rtiAmb() const;
181 
183  virtual void print() const;
184 
185 #if !DtHLA_1516
186 
187 
188  int minObjClassHandle() const;
189  int maxObjClassHandle() const;
190  int minInterClassHandle() const;
191  int maxInterClassHandle() const;
192 #endif
193 
195  int numObjClasses() const;
196  int numInterClasses() const;
197 
198 protected:
199 
201  virtual DtMergeFomStatus mergeObjectClasses( const DtFom& module );
202 
204  virtual DtMergeFomStatus mergeObjClassDesc(const DtObjClassDesc* desc);
205 
207  virtual DtMergeFomStatus mergeInteractionClasses( const DtFom& module );
208 
210  virtual DtMergeFomStatus mergeIntClassDesc(const DtInterClassDesc* desc);
211 
212 
213 public:
215  static void setFomCreator(DtFomCreator);
216 
218  static DtFom* create(DtExerciseConn* exConn);
219 
222 
223 
225  static void setIntersection(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
226  RTI::AttributeHandleSet& destinationSet);
227 
229  static void setUnion(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
230  RTI::AttributeHandleSet& destinationSet);
231 
233  static void setDifference(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
234  RTI::AttributeHandleSet& destinationSet);
235 
237  static void setSymmetricDifference(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
238  RTI::AttributeHandleSet& destinationSet);
239 
242  static bool setsEqual(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2);
243 
245  static void setInsert(RTI::AttributeHandleSet& handleSet, const RTI::AttributeHandle& handle);
246 
248  static void setInsert(RTI::AttributeHandleSet& destinationSet, const RTI::AttributeHandleSet& sourceSet);
249 
251  static void setRemove(RTI::AttributeHandleSet& handleSet, const RTI::AttributeHandle& handle);
252 
254  static void setRemove(RTI::AttributeHandleSet& destinationSet, const RTI::AttributeHandleSet& sourceSet);
255 
257  static void setClear(RTI::AttributeHandleSet& handleSet);
258 
260 
261 protected:
262 
264 
266 #if DtHLA_1516
267  std::map<DtString, DtDimensionDesc*> myDimensionsByName;
268 #else
269  std::map<DtString, DtRoutingSpaceDesc*> myRoutingSpacesByName;
270 #endif
271  std::map<DtString, DtInterClassDesc*> myInterClassesByName;
272  std::map<DtString, DtObjClassDesc*> myObjClassesByName;
273 
276 #if DtHLA_1516
277  std::map<std::wstring, DtDimensionDesc*> myDimensionsByHandle;
278  std::map<std::wstring, DtInterClassDesc*> myInterClassesByHandle;
279  std::map<std::wstring, DtObjClassDesc*> myObjClassesByHandle;
280 #else
281  std::map<RTI::SpaceHandle, DtRoutingSpaceDesc*> myRoutingSpacesByHandle;
282  std::map<int, DtInterClassDesc*> myInterClassesByHandle;
283  std::map<int, DtObjClassDesc*> myObjClassesByHandle;
284 #endif
285 
287 #if DtHLA_1516
288  std::list<DtDimensionDesc*> myDimensionList;
289 #else
290  std::list<DtRoutingSpaceDesc*> myRoutingSpaceList;
291 #endif
292  std::list<DtObjClassDesc*> myObjClassList;
293  std::list<DtInterClassDesc*> myInterClassList;
294 
295 #if !DtHLA_1516
296  int myLowestObj;
297  int myHighestObj;
298  int myLowestInter;
299  int myHighestInter;
300 #endif
301 
304 
305  std::set<DtString> myFailedObjClasses;
306  std::set<DtString> myFailedInterClasses;
307 
308 protected:
310 
311 protected:
312 
314  virtual DtMergeFomStatus mergeObjectClasses( const DtFedTarget& module );
315 
317  virtual DtMergeFomStatus mergeInteractionClasses( const DtFedTarget& module );
318 
319  virtual bool resolveAttributeDimensions();
320 };
321 
322 
324 {
325  return myExConn->rtiAmb();
326 }
327 
328 #endif
329 
330 
331 

Document ID: Generated on Wed Jan 7 13:31:29 EST 2015 from SVN revision 149162
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)