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, const DtString& normalization);
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 
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 
126  virtual DtDimensionDesc* dimensionByName(const char* dimensionName) const;
127 
129  virtual DtDimensionDesc* dimensionByHandle( RTI::DimensionHandle dimensionHandle) const;
130 #else
131 
132  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 DtInterClassDesc* interClassByName(const char *name) const;
146 
148  virtual DtObjClassDesc* objClassByName(const char *name) const;
149 
151  virtual DtInterClassDesc* interClassByHandle(
152  RTI::InteractionClassHandle handle) const;
153 
155  virtual DtObjClassDesc* objClassByHandle(
156  RTI::ObjectClassHandle handle) const;
157 
163  virtual const std::list<DtInterClassDesc*>& interClassList() const;
164  virtual const std::list<DtObjClassDesc*>& objClassList() const;
165 
166 #if !DtHLA_1516
167 
168 
169 
170 
171  virtual DtObjClassDesc* firstObjClass() const;
172  virtual DtObjClassDesc* lastObjClass() const;
173  virtual DtObjClassDesc* nextObjClass(DtObjClassDesc* current) const;
174 
179  virtual DtInterClassDesc* firstInterClass() const;
180  virtual DtInterClassDesc* lastInterClass() const;
181  virtual DtInterClassDesc* nextInterClass(DtInterClassDesc* current) const;
182 #endif
183 
185  virtual DtVrlRtiAmbassador* rtiAmb() const;
186 
188  virtual void print() const;
189 
190 #if !DtHLA_1516
191 
192 
193  int minObjClassHandle() const;
194  int maxObjClassHandle() const;
195  int minInterClassHandle() const;
196  int maxInterClassHandle() const;
197 #endif
198 
200  int numObjClasses() const;
201  int numInterClasses() const;
202 
206  //{@
207  bool isDdmDisabled() const;
208  void setIsDdmDisabled(bool val);
209 
210  bool isMomIsDisabled() const;
211  void setIsMomIsDisabled(bool val);
213 
214 protected:
215 
217  virtual DtMergeFomStatus mergeObjectClasses( const DtFom& module );
218 
220  virtual DtMergeFomStatus mergeObjClassDesc(const DtObjClassDesc* desc);
221 
223  virtual DtMergeFomStatus mergeInteractionClasses( const DtFom& module );
224 
226  virtual DtMergeFomStatus mergeIntClassDesc(const DtInterClassDesc* desc);
227 
228 
229 public:
231  static void setFomCreator(DtFomCreator);
232 
234  static DtFom* create(DtExerciseConn* exConn);
235 
238 
239 
241  static void setIntersection(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
242  RTI::AttributeHandleSet& destinationSet);
243 
245  static void setUnion(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
246  RTI::AttributeHandleSet& destinationSet);
247 
249  static void setDifference(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
250  RTI::AttributeHandleSet& destinationSet);
251 
253  static void setSymmetricDifference(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2,
254  RTI::AttributeHandleSet& destinationSet);
255 
258  static bool setsEqual(const RTI::AttributeHandleSet& set1, const RTI::AttributeHandleSet& set2);
259 
261  static void setInsert(RTI::AttributeHandleSet& handleSet, const RTI::AttributeHandle& handle);
262 
264  static void setInsert(RTI::AttributeHandleSet& destinationSet, const RTI::AttributeHandleSet& sourceSet);
265 
267  static void setRemove(RTI::AttributeHandleSet& handleSet, const RTI::AttributeHandle& handle);
268 
270  static void setRemove(RTI::AttributeHandleSet& destinationSet, const RTI::AttributeHandleSet& sourceSet);
271 
273  static void setClear(RTI::AttributeHandleSet& handleSet);
274 
276 
277 protected:
278 
280 
282 #if DtHLA_1516
283  std::map<DtString, DtDimensionDesc*> myDimensionsByName;
284 #else
285  std::map<DtString, DtRoutingSpaceDesc*> myRoutingSpacesByName;
286 #endif
287  std::map<DtString, DtInterClassDesc*> myInterClassesByName;
288  std::map<DtString, DtObjClassDesc*> myObjClassesByName;
289 
292 #if DtHLA_1516
293  std::map<std::wstring, DtDimensionDesc*> myDimensionsByHandle;
294  std::map<std::wstring, DtInterClassDesc*> myInterClassesByHandle;
295  std::map<std::wstring, DtObjClassDesc*> myObjClassesByHandle;
296 #else
297  std::map<RTI::SpaceHandle, DtRoutingSpaceDesc*> myRoutingSpacesByHandle;
298  std::map<int, DtInterClassDesc*> myInterClassesByHandle;
299  std::map<int, DtObjClassDesc*> myObjClassesByHandle;
300 #endif
301 
303 #if DtHLA_1516
304  std::list<DtDimensionDesc*> myDimensionList;
305 #else
306  std::list<DtRoutingSpaceDesc*> myRoutingSpaceList;
307 #endif
308  std::list<DtObjClassDesc*> myObjClassList;
309  std::list<DtInterClassDesc*> myInterClassList;
310 
311 #if !DtHLA_1516
312  int myLowestObj;
313  int myHighestObj;
314  int myLowestInter;
315  int myHighestInter;
316 #endif
317 
320 
321  std::set<DtString> myFailedObjClasses;
322  std::set<DtString> myFailedInterClasses;
323 
326 protected:
328 
329 protected:
330 
332  virtual DtMergeFomStatus mergeObjectClasses( const DtFedTarget& module );
333 
335  virtual DtMergeFomStatus mergeInteractionClasses( const DtFedTarget& module );
336 
337  virtual bool resolveAttributeDimensions();
338 };
339 
340 
342 {
343  return myExConn->rtiAmb();
344 }
345 
346 #endif
347 
348 
349 

Document ID: Generated on Mon Feb 6 18:36:34 EST 2017 from SVN revision 173107
Copyright © 2005-2016 VT MÄK. All Rights Reserved (www.mak.com)