![]() |
VR-Link API Documentation for DIS
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00007 00010 00011 #ifndef DtEmitterSystemRepository_H_ 00012 #define DtEmitterSystemRepository_H_ 00013 00014 #include "embedSystemSR.h" 00015 #include "emittrBeamSR.h" 00016 #include <vlutil/vlList.h> 00017 00019 enum DtEmitterSysRetCode 00020 { 00021 DtEmitterSuccess, 00022 DtBadBeamId, 00023 DtDuplicateBeamId 00024 }; 00025 00029 class DT_DLL_VL DtEmitterSystemRepository : public DtEmbeddedSystemRepository 00030 { 00031 public: 00032 00034 typedef DtEmitterBeamRepository* (*DtBeamStateRepCreator)(); 00035 00036 public: 00037 00039 DtEmitterSystemRepository(); 00040 00042 virtual ~DtEmitterSystemRepository(); 00043 00045 DtEmitterSystemRepository(const DtEmitterSystemRepository& orig); 00046 00048 DtEmitterSystemRepository& operator=(const DtEmitterSystemRepository& orig); 00049 00051 virtual DtStateRepository* clone(bool copy = false) const; 00052 00053 00055 virtual void setEmitterFunction(DtEmissionFunc function); 00056 virtual DtEmissionFunc emitterFunction() const; 00057 00059 virtual void setEmitterName(DtEmitterSysName name); 00060 virtual DtEmitterSysName emitterName() const; 00061 00063 virtual void setEmitterNumber(DtU8 number); 00064 virtual DtU8 emitterNumber() const; 00065 00067 virtual void setEventId(const DtEventId& id); 00068 virtual const DtEventId& eventId() const; 00069 00071 virtual void printData() const; 00072 00074 virtual void printDataToStream(std::ostream& stream) const; 00075 00077 virtual DtEmitterBeamRepository* beamSRById( 00078 DtU8 beamId, 00079 DtEmitterSysRetCode* retcode = NULL); 00080 00085 virtual DtEmitterBeamRepository* addBeam( 00086 DtU8 beamId = 0, DtBeamType type = DtRegularBeam, 00087 DtEmitterSysRetCode *retcode = NULL); 00088 00094 virtual DtEmitterSysRetCode removeBeam(DtU8 beamId); 00095 #if DtHLA 00096 virtual DtEmitterSysRetCode removeBeam(const DtGlobalObjectDesignator& id); 00097 #endif 00098 00100 virtual int numBeams() const; 00101 00103 virtual const DtList* beamList() const; 00104 virtual DtList* beamList(); 00105 00107 bool isMember(DtEmitterBeamRepository* bsr) const; 00108 00109 public: 00110 00111 static DtEmitterSystemRepository* create(); 00112 00114 static DtBeamStateRepCreator setStateRepCreator(DtBeamStateRepCreator creator); 00115 00116 00117 protected: 00118 virtual void purgeBeamList(); 00119 00120 protected: 00121 DtEventId myEventId; 00122 DtEmissionFunc myEmitterFunction; 00123 DtEmitterSysName myEmitterName; 00124 DtU8 myEmitterNumber; 00125 00127 DtList myBeamList; 00128 00129 protected: 00130 00131 static DtBeamStateRepCreator theBeamStateRepCreator; 00132 }; 00133 00134 #endif //DtEmitterSystemRepository_H_ 00135