![]() |
VR-Link API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 #pragma once 00007 00010 00011 #if DtHLA 00012 00013 00014 #include <vlutil/vlMachineTypes.h> 00015 #include "rtiNamespace.h" 00016 #include "exerciseConn.h" 00017 #include <mtl/fedReader.h> 00018 #include <vlutil/vlFedTarget.h> 00019 #include <map> 00020 00021 class DT_DLL_VL DtInterClassDesc; 00022 class DT_DLL_VL DtObjClassDesc; 00023 class DT_DLL_VL DtRtiAmbassador; 00024 00025 00026 00027 00028 typedef enum DtMergeFomStatus_enum 00029 { 00030 DtMergeFomStatusFailedDTD, 00031 DtMergeFomStatusFailedSwitches, 00032 DtMergeFomStatusFailedScaffolding, 00033 DtMergeFomStatusFailedContent, 00034 DtMergeFomStatusFailedUpdateRates, 00035 DtMergeFomStatusFailedTransportTypes, 00036 DtMergeFomStatusFailedUserDefinedTags, 00037 DtMergeFomStatusFailedTime, 00038 DtMergeFomStatusFailedObjectClass, 00039 DtMergeFomStatusFailedInteractionClass, 00040 DtMergeFomStatusFailedDimensions, 00041 DtMergeFomStatusAlreadyPresentSuccess, 00042 DtMergeFomStatusSuccess 00043 } DtMergeFomStatus; 00044 00045 00046 class DT_DLL_VL DtFom; 00047 typedef DtFom* (*DtFomCreator)(DtExerciseConn*); 00056 class DT_DLL_VL DtFom : public DtFedTarget 00057 { 00058 public: 00059 00060 00062 DtFom(DtExerciseConn* exConn); 00063 00065 virtual ~DtFom(); 00066 00068 DtFom(const DtFom& orig); 00069 00071 DtFom& operator=(const DtFom& orig); 00072 00074 virtual DtFedReadStatus readFed(const DtString& fedFile, 00075 const std::vector<std::wstring>& fomModules, 00076 const DtString& mimModule, 00077 bool strictCheckingEnabled, bool useDTD, bool dontParseSwitches ); 00078 00080 virtual void addSpace(const char* name); 00081 00084 virtual void addDimension(const char* SpaceName, const char* dimName); 00085 00087 virtual void addDimension(const char* dimName, unsigned long upperBound, 00088 unsigned long defaultLowerBound, unsigned long defaultUpperBound, 00089 bool excluded); 00090 00092 virtual void addInterClass(const char* name, 00093 const char* baseName, DtTransportType transport, 00094 DtOrderType order, const char* space=NULL); 00095 00097 virtual void addObjClass(const char* name, 00098 const char* baseName); 00099 00102 virtual void addParameter(const char* className, 00103 const char* paramName); 00104 00107 virtual bool addInteractionDimension(const char* interactionName, 00108 const char* dimension); 00109 00112 virtual void addAttribute(const char* className, 00113 const char* attrName, DtTransportType transport, 00114 DtOrderType order, const char* space=NULL); 00115 00118 virtual bool addAttributeDimension(const char* className, 00119 const char* attrName, const char* dimName); 00120 00122 virtual DtInterClassDesc* interClassByName(const char *name) const; 00123 00125 virtual DtObjClassDesc* objClassByName(const char *name) const; 00126 00128 virtual DtInterClassDesc* interClassByHandle( 00129 RTI::InteractionClassHandle handle) const; 00130 00132 virtual DtObjClassDesc* objClassByHandle( 00133 RTI::ObjectClassHandle handle) const; 00134 00140 virtual const std::list<DtInterClassDesc*>& interClassList() const; 00141 virtual const std::list<DtObjClassDesc*>& objClassList() const; 00142 00143 #if !DtHLA_1516 00144 00145 00146 00147 00148 virtual DtObjClassDesc* firstObjClass() const; 00149 virtual DtObjClassDesc* lastObjClass() const; 00150 virtual DtObjClassDesc* nextObjClass(DtObjClassDesc* current) const; 00151 00156 virtual DtInterClassDesc* firstInterClass() const; 00157 virtual DtInterClassDesc* lastInterClass() const; 00158 virtual DtInterClassDesc* nextInterClass(DtInterClassDesc* current) const; 00159 #endif 00160 00162 virtual DtVrlRtiAmbassador* rtiAmb() const; 00163 00165 virtual void print() const; 00166 00167 #if !DtHLA_1516 00168 00169 00170 int minObjClassHandle() const; 00171 int maxObjClassHandle() const; 00172 int minInterClassHandle() const; 00173 int maxInterClassHandle() const; 00174 #endif 00175 00177 int numObjClasses() const; 00178 int numInterClasses() const; 00179 00180 protected: 00181 00183 virtual DtMergeFomStatus mergeTarget( const DtFom& module ); 00184 00186 virtual DtMergeFomStatus mergeObjectClasses( const DtFom& module ); 00187 00189 virtual DtMergeFomStatus mergeObjClassDesc(const DtObjClassDesc* desc); 00190 00192 virtual DtMergeFomStatus mergeInteractionClasses( const DtFom& module ); 00193 00195 virtual DtMergeFomStatus mergeIntClassDesc(const DtInterClassDesc* desc); 00196 00198 virtual DtMergeFomStatus mergeSpaces( const DtFom& module ); 00199 00201 virtual DtMergeFomStatus mergeUpdateRates( const DtFom& module ); 00202 00204 virtual DtMergeFomStatus mergeSwitches( const DtFom& module ); 00205 00207 virtual bool switchesSame( const DtFom& module ) const; 00208 00210 virtual bool transportTypesSame(DtFom const& module ) const; 00211 00213 virtual bool timeTypesSame( const DtFom& module ) const; 00214 00216 virtual bool userDefinedTagsSame( const DtFom& module ) const; 00217 00219 virtual bool updateRatesSame( const DtFom& module ) const; 00220 00222 virtual bool knownTransportType(const DtString) const; 00223 00225 virtual bool knownTime(const DtString) const; 00226 00228 virtual void addTime(const DtString); 00229 00231 virtual unsigned int numTimeTypes() const; 00232 00234 virtual bool knownUserDefinedTag(const DtString ) const; 00235 00236 00237 public: 00239 static void setFomCreator(DtFomCreator); 00240 00241 static DtFom* create(DtExerciseConn* exConn); 00242 00243 protected: 00244 00245 DtExerciseConn* myExConn; 00246 00249 std::map<DtString, DtInterClassDesc*> myInterClassesByName; 00250 std::map<DtString, DtObjClassDesc*> myObjClassesByName; 00251 00254 #if !DtHLA_1516 00255 std::map<int, DtInterClassDesc*> myInterClassesByHandle; 00256 std::map<int, DtObjClassDesc*> myObjClassesByHandle; 00257 #else 00258 std::map<std::wstring, DtInterClassDesc*> myInterClassesByHandle; 00259 std::map<std::wstring, DtObjClassDesc*> myObjClassesByHandle; 00260 #endif 00261 std::list<DtObjClassDesc*> myObjClassList; 00262 std::list<DtInterClassDesc*> myInterClassList; 00263 00264 #if !DtHLA_1516 00265 int myLowestObj; 00266 int myHighestObj; 00267 int myLowestInter; 00268 int myHighestInter; 00269 #endif 00270 00271 DtString myObjRootName; 00272 DtString myInterRootName; 00273 00275 std::set<DtString> myTransportTypes; 00277 std::set<DtString> myUserDefinedTags; 00279 std::map<DtString, bool > mySwitches; 00281 std::set<DtString> myTimeTypes; 00282 00283 std::set<DtString> myFailedObjClasses; 00284 std::set<DtString> myFailedInterClasses; 00285 00286 protected: 00287 static DtFomCreator theCreatorFunction; 00288 00289 00290 00291 }; 00292 00293 00294 inline DtVrlRtiAmbassador* DtFom::rtiAmb() const 00295 { 00296 return myExConn->rtiAmb(); 00297 } 00298 00299 #endif 00300 00301 00302