VR-Link API Documentation for DIS
fom.h
Go to the documentation of this file.
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 

Document ID: Generated on Mon May 14 08:06:18 EDT 2012 from SVN revision 114750
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)