baseFomDesc1516.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00008 
00009 #ifndef baseFomDesc1516_H_
00010 #define baseFomDesc1516_H_
00011 
00012 #if DtHLA & DtHLA_1516
00013 
00014 #include "lgrSim.h"
00015 #include "lgrDynStrings.h"
00016 #include "lgrHlaAttribute.h"
00017 #include "multiKeyMap.h"
00018 #include "lgrVariableLengthData.h"
00019 #include "virtualConstructor.h"
00020 #include "leTypes.h"
00021 #include "lgrSimDriver.h"
00022 
00023 class DtFom;
00024 
00025 namespace MAKLogger
00026 {
00027    struct DtGenFomDesc
00028    {
00029       DtLeInt32 size;
00030       DtLeInt32 numObjClasses;
00031       DtLeInt32 bufObjClassesSz;
00032       DtLeInt32 numIntClasses;
00033       DtLeInt32 bufIntClassesSz;
00034    };
00035    const size_t DtGenFomDescSz = sizeof( DtGenFomDesc );
00036 
00037    struct DtGenObjDesc
00038    {
00039       DtLeInt32 size;
00040       DtLeU32 handle;
00041       DtLeU32 flags;
00042       DtLeInt32 codeLen;
00043       DtLeInt32 ownNameOff;
00044       DtLeInt32 baseNameOff;
00045       DtLeInt32 numAttrs;
00046       DtLeInt32 attrsOff;
00047    };
00048    const size_t DtGenObjDescSz = sizeof( DtGenObjDesc );
00049 
00050 
00051    struct DtGenAttrDesc
00052    {
00053       DtLeU32 handle;
00054       DtLeU32 flags;
00055       DtLeInt32  size;
00056       DtLeInt32   codeLen;
00057       DtLeInt32   nameLen;
00058       DtLeInt32   nameOff;
00059    };
00060    const size_t DtGenAttrDescSz = sizeof( DtGenAttrDesc );
00061 
00062 
00063    struct DtSubscriptionMap
00064    {
00065       int size;
00066       int objSubsOnNum;
00067       int objSubsOnPos;
00068       int objSubsOffNum;
00069       int objSubsOffPos;
00070       int intSubsOnNum;
00071       int intSubsOnPos;
00072       int intSubsOffNum;
00073       int intSubsOffPos;
00074    };
00075    const size_t DtSubscriptionMapSz = sizeof( DtSubscriptionMap );
00076 
00077    class DtLgrFom;
00078    class DtBaseObjClassDesc;
00079    class DtBaseInterClassDesc;
00080 
00088    class DT_DLL_LGRSIM DtBaseFomDesc
00089    {
00090    public:
00091 
00093       DT_VIRTUAL_CTR(DtBaseFomDesc,())
00094 
00095       
00096       DT_VIRTUAL_COPY_ASSIGN(DtBaseFomDesc)
00097 
00098       virtual ~DtBaseFomDesc();
00099 
00100    public:
00101 
00102       virtual DtBaseObjClassDesc* addObjectClass(const DtBaseObjClassDesc&);
00103       virtual DtBaseInterClassDesc* addInteractionClass(const DtBaseInterClassDesc&);
00104 
00105 
00107       virtual int readFromFile( FILE* fp );
00108       virtual int readFromFile64( int fd );
00109 
00111       virtual int writeToFile( FILE* fp ) const;
00112       virtual int writeToFile64( int fd ) const;
00113 
00115       virtual int setFromSerialForm( const void* p );
00116 
00118       virtual char* serialize( int* pSize = 0 ) const;
00119 
00120       typedef std::vector<DtBaseObjClassDesc*>::iterator objectIterator;
00121       typedef std::vector<DtBaseObjClassDesc*>::const_iterator const_objectIterator;
00122 
00123       typedef std::vector<DtBaseInterClassDesc*>::iterator interactionIterator;
00124       typedef std::vector<DtBaseInterClassDesc*>::const_iterator const_interactionIterator;
00125 
00127 
00128       objectIterator obj_begin();
00129       const_objectIterator obj_begin() const;
00131 
00133 
00134       objectIterator obj_end();
00135       const_objectIterator obj_end() const;
00137 
00139 
00140       interactionIterator inter_begin();
00141       const_interactionIterator inter_begin() const;
00143 
00145 
00146       interactionIterator inter_end();
00147       const_interactionIterator inter_end() const;
00149 
00151 
00152       virtual DtBaseObjClassDesc* objDesc( unsigned int hand );
00153       virtual const DtBaseObjClassDesc* objDesc( unsigned int hand ) const;
00155 
00157 
00158       virtual DtBaseObjClassDesc* objDesc( const DtString& _name );
00159       virtual const DtBaseObjClassDesc* objDesc( const DtString& _name ) const;
00161 
00163 
00164       virtual DtBaseInterClassDesc* interDesc( unsigned int hand );
00165       virtual const DtBaseInterClassDesc* interDesc( unsigned int hand ) const;
00167 
00169 
00170       virtual DtBaseInterClassDesc* interDesc( const DtString& _name );
00171       virtual const DtBaseInterClassDesc* interDesc( const DtString& _name ) const;
00173 
00175       inline int objectClassCount() const;
00176 
00178       inline int interactionClassCount() const;
00179 
00181       inline int count() const;
00182 
00184       virtual bool equivalent( const DtBaseFomDesc& other ) const;
00185 
00187       virtual bool identical( const DtBaseFomDesc& other ) const;
00188 
00190       virtual void setFilterByClass( const DtSubscriptionMap* map );
00191 
00193       virtual void setFilterAllObjectClasses();
00194 
00196       virtual void setFilterNoObjectClasses();
00197 
00199       virtual void setFilterAllInteractionClasses();
00200 
00202       virtual void setFilterNoInteractionClasses();
00203 
00205       virtual void empty();
00206 
00208 
00209 
00210 
00211 
00212       virtual void initObjClasses();
00213       virtual void initIntClasses();
00215 
00218       virtual void setObjectClassHeartbeatTime(const DtString& className, double time, bool includeSubclasses = false);
00219 
00223       virtual double objectClassHeartbeatTime(const DtString& className, bool* isSet=0) const;
00224 
00227       virtual bool objectClassHeartbeatInheritable(const DtString& className) const;
00228 
00229    protected:
00230 
00232       bool processCommand(const char*command,char* tkn,const char* sep);
00233 
00235       virtual void deleteObjClasses();
00236 
00238       virtual void deleteIntClasses();
00239 
00241       void resetAll();
00242 
00244       void initFromSource( const DtBaseFomDesc& src );
00245 
00247       int  unserialize( const char* bfr );
00248 
00249    protected:
00250 
00251       typedef DtMultiKeyMap<DtString,DtLgrHlaHandle,DtBaseObjClassDesc*> ObjectMap;
00252       typedef DtMultiKeyMap<DtString,DtLgrHlaHandle,DtBaseInterClassDesc*> InteractionMap;
00253 
00254       ObjectMap myObjectLookupMap;
00255       InteractionMap myInteractionLookupMap;
00256 
00257       std::vector<DtBaseObjClassDesc*> myObjectClasses;
00258       std::vector<DtBaseInterClassDesc*> myInteractionClasses;
00259       std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord> myHeartbeatTimes;
00260 
00261    protected:
00262       static int theHashSize;
00263    };
00264 
00265 
00266    inline int DtBaseFomDesc::objectClassCount() const
00267    {
00268       return (int)myObjectClasses.size();
00269    }
00270 
00271    inline int DtBaseFomDesc::interactionClassCount() const
00272    {
00273       return (int)myInteractionClasses.size();
00274    }
00275 
00276 
00277    inline int DtBaseFomDesc::count() const
00278    {
00279       return ( objectClassCount() + interactionClassCount() );
00280    }
00281 
00282 
00283 }
00284 
00285 #endif   //! DtHLA
00286 #endif   //! DtBaseFomDesc_H_

Document ID: Generated on Tue Oct 11 19:41:03 EDT 2011 from SVN revision 107422
Copyright © 2005-2011 VT MÄK Inc. All Rights Reserved (www.mak.com)