![]() |
MAK RTIspy API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 2001 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: retractList.h,v $ $Revision: 1.17 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtRetractInfoList_H_ 00013 #define DtRetractInfoList_H_ 00014 00015 #include "rtiMsConfig.h" 00016 #include <memory> 00017 #include <vlutil/vlHashlist.h> 00018 #include "sortedList.h" 00019 00020 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E) 00021 #include <RTI/RTI1516.h> 00022 #else 00023 #ifdef DtIFSPEC13DLC 00024 #include "RTI13.h" 00025 #define RTI rti13 00026 #else 00027 #include "RTI.hh" 00028 #endif 00029 #endif 00030 00032 00033 class DtRtiMsg; 00034 class DtLogicalTimeFactory; 00035 00038 class DT_DLL_LRC DtRetractInfo 00039 { 00040 public: 00041 00043 #ifdef DtIFSPEC1516 00044 DtRetractInfo(unsigned long value, 00045 std::auto_ptr <rti1516::LogicalTime> timePtr); 00046 #elif defined(DtIFSPEC1516E) 00047 DtRetractInfo(unsigned long value, 00048 std::auto_ptr <rti1516e::LogicalTime> timePtr); 00049 #else 00050 DtRetractInfo(unsigned long value, std::auto_ptr <RTI::FedTime> timePtr); 00051 #endif 00052 00054 virtual ~DtRetractInfo(); 00055 00057 #ifdef DtIFSPEC1516 00058 virtual void setTime(rti1516::LogicalTime const & timeVal); 00059 virtual rti1516::LogicalTime const & time() const; 00060 #elif defined(DtIFSPEC1516E) 00061 virtual void setTime(rti1516e::LogicalTime const & timeVal); 00062 virtual rti1516e::LogicalTime const & time() const; 00063 #else 00064 virtual void setTime(RTI::FedTime const & timeVal); 00065 virtual RTI::FedTime const & time() const; 00066 #endif 00067 00069 unsigned long serialNumber(); 00070 void setSerialNumber(unsigned long value); 00071 00072 protected: 00073 explicit DtRetractInfo(); 00074 00075 protected: 00076 #ifdef DtIFSPEC1516 00077 std::auto_ptr <rti1516::LogicalTime> myTime; 00078 #elif defined(DtIFSPEC1516E) 00079 std::auto_ptr <rti1516e::LogicalTime> myTime; 00080 #else 00081 std::auto_ptr <RTI::FedTime> myTime; 00082 #endif 00083 unsigned long mySerialNumber; 00084 }; 00085 00086 #ifdef DtIFSPEC1516 00087 inline rti1516::LogicalTime const & DtRetractInfo::time() const 00088 {return *myTime;} 00089 inline void DtRetractInfo::setTime(rti1516::LogicalTime const & timeVal) 00090 {*myTime = timeVal;} 00091 #elif defined(DtIFSPEC1516E) 00092 inline rti1516e::LogicalTime const & DtRetractInfo::time() const 00093 {return *myTime;} 00094 inline void DtRetractInfo::setTime(rti1516e::LogicalTime const & timeVal) 00095 {*myTime = timeVal;} 00096 #else 00097 inline RTI::FedTime const & DtRetractInfo::time() const 00098 {return *myTime;} 00099 inline void DtRetractInfo::setTime(RTI::FedTime const & timeVal) 00100 {*myTime = timeVal;} 00101 #endif 00102 inline unsigned long DtRetractInfo::serialNumber() 00103 {return mySerialNumber;} 00104 inline void DtRetractInfo::setSerialNumber(unsigned long value) 00105 {mySerialNumber = value;} 00106 00107 00110 class DT_DLL_LRC DtRetractInfoItem : public DtSortedListItem 00111 { 00112 public: 00113 00114 friend class DtRetractInfoList; 00115 00116 public: 00117 00119 virtual ~DtRetractInfoItem(); 00120 00122 virtual bool operator<= (const DtSortedListItem& item) const; 00123 virtual bool operator< (const DtSortedListItem& item) const; 00124 virtual bool operator>= (const DtSortedListItem& item) const; 00125 virtual bool operator> (const DtSortedListItem& item) const; 00126 virtual bool operator== (const DtSortedListItem& item) const; 00127 00129 virtual DtRetractInfo* retractInfo(); 00130 00132 virtual void printData(); 00133 00134 protected: 00135 00137 DtRetractInfoItem(void* data); 00138 00139 protected: 00140 DtRetractInfo* myInfo; 00141 }; 00142 00143 inline DtRetractInfo* DtRetractInfoItem::retractInfo() 00144 { 00145 return myInfo; 00146 } 00147 00148 class DT_DLL_LRC DtRetractInfoList : public DtSortedList 00149 { 00150 00151 public: 00152 DtRetractInfoList(DtLogicalTimeFactory* logicalTimeFactory); 00153 00154 virtual ~DtRetractInfoList(); 00155 00157 virtual DtRetractInfoItem* add(DtRetractInfo* info); 00158 00160 virtual DtRetractInfoItem* add(const DtRtiMsg& msg); 00161 00164 virtual void removeAll(); 00165 00167 #ifdef DtIFSPEC1516 00168 virtual void deleteAll(rti1516::LogicalTime const & time); 00169 #elif defined(DtIFSPEC1516E) 00170 virtual void deleteAll(rti1516e::LogicalTime const & time); 00171 #else 00172 virtual void deleteAll(RTI::FedTime const & time); 00173 #endif 00174 00176 virtual DtRetractInfo* removeByNumber(unsigned long serialNumber); 00177 00179 virtual void deleteByNumber(unsigned long serialNumber); 00180 00182 virtual DtRetractInfo* lookupByNumber(unsigned long serialNumber); 00183 00187 virtual DtRetractInfoItem* firstRetractItem() const; 00188 virtual DtRetractInfoItem* lastRetractItem() const; 00189 00193 #ifdef DtIFSPEC1516 00194 virtual DtRetractInfo* minRetraction(rti1516::LogicalTime const & lower, 00195 rti1516::LogicalTime const & upper, bool includeLower) const; 00196 #elif defined(DtIFSPEC1516E) 00197 virtual DtRetractInfo* minRetraction(rti1516e::LogicalTime const & lower, 00198 rti1516e::LogicalTime const & upper, bool includeLower) const; 00199 #else 00200 virtual DtRetractInfo* minRetraction(RTI::FedTime const & lower, 00201 RTI::FedTime const & upper, bool includeLower) const; 00202 #endif 00203 00204 protected: 00205 00207 virtual DtSortedListItem* add(void* data); 00208 00216 virtual void* remove(DtSortedListItem* item); 00217 00220 virtual DtSortedListItem* newItem(void* data); 00221 00223 virtual DtRetractInfoItem* lookupItem(unsigned long serialNumber); 00224 00226 DtRetractInfoList(const DtRetractInfoList& orig); 00227 DtRetractInfoList& operator=(DtRetractInfoList const& orig); 00228 protected: 00229 00230 MAKRti::DtHashlist mySerialIndexList; 00231 DtLogicalTimeFactory* myLogicalTimeFactory; 00232 }; 00233 00234 inline DtRetractInfoItem* DtRetractInfoList::firstRetractItem() const 00235 { 00236 return (DtRetractInfoItem*)first(); 00237 } 00238 00239 inline DtRetractInfoItem* DtRetractInfoList::lastRetractItem() const 00240 { 00241 return (DtRetractInfoItem*)last(); 00242 } 00243 00244 #endif