VR-Link API Documentation for DIS
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;
22 class DT_DLL_VL DtDimensionDesc;
23 class DT_DLL_VL DtInterClassDesc;
24 class DT_DLL_VL DtObjClassDesc;
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 
217  static DtFom* create(DtExerciseConn* exConn);
218 
219 protected:
220 
221  DtExerciseConn* myExConn;
222 
224 #if DtHLA_1516
225  std::map<DtString, DtDimensionDesc*> myDimensionsByName;
226 #else
227  std::map<DtString, DtRoutingSpaceDesc*> myRoutingSpacesByName;
228 #endif
229  std::map<DtString, DtInterClassDesc*> myInterClassesByName;
230  std::map<DtString, DtObjClassDesc*> myObjClassesByName;
231 
234 #if DtHLA_1516
235  std::map<std::wstring, DtDimensionDesc*> myDimensionsByHandle;
236  std::map<std::wstring, DtInterClassDesc*> myInterClassesByHandle;
237  std::map<std::wstring, DtObjClassDesc*> myObjClassesByHandle;
238 #else
239  std::map<RTI::SpaceHandle, DtRoutingSpaceDesc*> myRoutingSpacesByHandle;
240  std::map<int, DtInterClassDesc*> myInterClassesByHandle;
241  std::map<int, DtObjClassDesc*> myObjClassesByHandle;
242 #endif
243 
245 #if DtHLA_1516
246  std::list<DtDimensionDesc*> myDimensionList;
247 #else
248  std::list<DtRoutingSpaceDesc*> myRoutingSpaceList;
249 #endif
250  std::list<DtObjClassDesc*> myObjClassList;
251  std::list<DtInterClassDesc*> myInterClassList;
252 
253 #if !DtHLA_1516
254  int myLowestObj;
255  int myHighestObj;
256  int myLowestInter;
257  int myHighestInter;
258 #endif
259 
260  DtString myObjRootName;
261  DtString myInterRootName;
262 
263  std::set<DtString> myFailedObjClasses;
264  std::set<DtString> myFailedInterClasses;
265 
266 protected:
267  static DtFomCreator theCreatorFunction;
268 
269 protected:
270 
272  virtual DtMergeFomStatus mergeObjectClasses( const DtFedTarget& module );
273 
275  virtual DtMergeFomStatus mergeInteractionClasses( const DtFedTarget& module );
276 
277  virtual bool resolveAttributeDimensions();
278 };
279 
280 
281 inline DtVrlRtiAmbassador* DtFom::rtiAmb() const
282 {
283  return myExConn->rtiAmb();
284 }
285 
286 #endif
287 
288 
289 

Document ID: Generated on Wed Oct 23 22:25:48 EDT 2013 from SVN revision 132765
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)