![]() |
MAK RTIspy API Documentation for HLA 1516
|
00001 /********************************************************************* 00002 ** Copyright (c) 2001 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: timeInfoList.h,v $ $Revision: 1.4 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtTimeInfoList_H_ 00013 #define DtTimeInfoList_H_ 00014 00015 #ifdef DtTIME 00016 00017 #include <vlutil/vlHashlist.h> 00018 #include "sortedList.h" 00019 #include "internalTypes.h" 00020 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E) 00021 #include "RTI/LogicalTime.h" 00022 #include "RTI/LogicalTimeInterval.h" 00023 #else 00024 #include "RTI.hh" 00025 #endif 00026 00028 00032 00033 class DtTimeInfo; 00034 00035 enum DtTimeInfoSort 00036 { 00037 DtTimeInfoSortTime, 00038 DtTimeInfoSortLookahead, 00039 DtTimeInfoSortLbts, 00040 DtTimeInfoSortNer 00041 }; 00042 00045 class DT_DLL_EXEC DtTimeInfoItem : public DtSortedListItem 00046 { 00047 public: 00048 00049 friend class DtTimeInfoList; 00050 00051 public: 00052 00054 virtual ~DtTimeInfoItem(); 00055 00057 virtual bool operator<= (const DtSortedListItem& item) const; 00058 virtual bool operator< (const DtSortedListItem& item) const; 00059 virtual bool operator>= (const DtSortedListItem& item) const; 00060 virtual bool operator> (const DtSortedListItem& item) const; 00061 virtual bool operator== (const DtSortedListItem& item) const; 00062 00064 virtual DtTimeInfo* timeInfo(); 00065 00067 virtual void printData(); 00068 00069 protected: 00070 00072 DtTimeInfoItem(void* data, DtTimeInfoSort sortField=DtTimeInfoSortLbts); 00073 00074 protected: 00075 DtTimeInfo* myInfo; 00076 DtTimeInfoSort mySortField; 00077 }; 00078 00079 inline DtTimeInfo* DtTimeInfoItem::timeInfo() 00080 { 00081 return myInfo; 00082 } 00083 00084 class DT_DLL_EXEC DtTimeInfoList : public DtSortedList 00085 { 00086 00087 public: 00088 DtTimeInfoList(DtTimeInfoSort sortFieldValue=DtTimeInfoSortLbts); 00089 00090 virtual ~DtTimeInfoList(); 00091 00092 private: 00093 00095 DtTimeInfoList(const DtTimeInfoList& orig); 00096 DtTimeInfoList& operator=(DtTimeInfoList const& orig); 00097 00098 public: 00100 virtual DtTimeInfoItem* add(DtTimeInfo* info); 00101 00104 virtual void removeAll(); 00105 00107 virtual DtTimeInfo* removeByHandle(DtFederateHandle federateHandle); 00108 00110 virtual void deleteByHandle(DtFederateHandle federateHandle); 00111 00113 virtual DtTimeInfo* lookupByHandle(DtFederateHandle federateHandle) const; 00114 00116 #ifdef DtIFSPEC1516 00117 virtual void adjustTime(DtFederateHandle federateHandle, 00118 rti1516::LogicalTime const & time); 00119 #elif defined(DtIFSPEC1516E) 00120 virtual void adjustTime(DtFederateHandle federateHandle, 00121 rti1516e::LogicalTime const & time); 00122 #else 00123 virtual void adjustTime(DtFederateHandle federateHandle, 00124 RTI::FedTime const & time); 00125 #endif 00126 00128 #ifdef DtIFSPEC1516 00129 virtual void adjustLookahead(DtFederateHandle federateHandle, 00130 rti1516::LogicalTimeInterval const & lookahead); 00131 #elif defined(DtIFSPEC1516E) 00132 virtual void adjustLookahead(DtFederateHandle federateHandle, 00133 rti1516e::LogicalTimeInterval const & lookahead); 00134 #else 00135 virtual void adjustLookahead(DtFederateHandle federateHandle, 00136 RTI::FedTime const & lookahead); 00137 #endif 00138 00140 #ifdef DtIFSPEC1516 00141 virtual void adjust(DtFederateHandle federateHandle, 00142 rti1516::LogicalTime const & time, 00143 rti1516::LogicalTimeInterval const & lookahead); 00144 #elif defined(DtIFSPEC1516E) 00145 virtual void adjust(DtFederateHandle federateHandle, 00146 rti1516e::LogicalTime const & time, 00147 rti1516e::LogicalTimeInterval const & lookahead); 00148 #else 00149 virtual void adjust(DtFederateHandle federateHandle, 00150 RTI::FedTime const & time, RTI::FedTime const & lookahead); 00151 #endif 00152 00154 virtual void adjust(const DtTimeInfo* info); 00155 00157 #ifdef DtIFSPEC1516 00158 virtual void adjustNerTime(DtFederateHandle federateHandle, 00159 rti1516::LogicalTime const & time); 00160 #elif defined(DtIFSPEC1516E) 00161 virtual void adjustNerTime(DtFederateHandle federateHandle, 00162 rti1516e::LogicalTime const & time); 00163 #else 00164 virtual void adjustNerTime(DtFederateHandle federateHandle, 00165 RTI::FedTime const & time); 00166 #endif 00167 00169 #ifdef DtIFSPEC1516 00170 virtual void adjustNerLookahead(DtFederateHandle federateHandle, 00171 rti1516::LogicalTimeInterval const & lookahead); 00172 #elif defined(DtIFSPEC1516E) 00173 virtual void adjustNerLookahead(DtFederateHandle federateHandle, 00174 rti1516e::LogicalTimeInterval const & lookahead); 00175 #else 00176 virtual void adjustNerLookahead(DtFederateHandle federateHandle, 00177 RTI::FedTime const & lookahead); 00178 #endif 00179 00181 #ifdef DtIFSPEC1516 00182 virtual void adjustNer(DtFederateHandle federateHandle, 00183 rti1516::LogicalTime const & time, 00184 rti1516::LogicalTimeInterval const & lookahead); 00185 #elif defined(DtIFSPEC1516E) 00186 virtual void adjustNer(DtFederateHandle federateHandle, 00187 rti1516e::LogicalTime const & time, 00188 rti1516e::LogicalTimeInterval const & lookahead); 00189 #else 00190 virtual void adjustNer(DtFederateHandle federateHandle, 00191 RTI::FedTime const & time, RTI::FedTime const & lookahead); 00192 #endif 00193 00197 virtual DtTimeInfoItem* firstTimeItem() const; 00198 virtual DtTimeInfoItem* secondTimeItem() const; 00199 virtual DtTimeInfoItem* lastTimeItem() const; 00200 00204 virtual DtTimeInfo* minInfo(DtFederateHandle handle=0) const; 00205 virtual DtTimeInfo* maxInfo(DtFederateHandle handle=0) const; 00206 00208 virtual DtTimeInfo* secondInfo() const; 00209 00211 virtual void printData(); 00212 00213 protected: 00214 00216 virtual DtSortedListItem* add(void* data); 00217 00225 virtual void* remove(DtSortedListItem* item); 00226 00229 virtual DtSortedListItem* newItem(void* data); 00230 00232 virtual DtTimeInfoItem* lookupItem(DtFederateHandle federateHandle); 00233 00234 00235 protected: 00236 00237 DtSortedListItem* mySecond; 00238 MAKRti::DtHashList myFederateIndexList; 00239 DtTimeInfoSort mySortField; 00240 }; 00241 00242 inline DtTimeInfoItem* DtTimeInfoList::firstTimeItem() const 00243 { 00244 return (DtTimeInfoItem*)first(); 00245 } 00246 00247 inline DtTimeInfoItem* DtTimeInfoList::secondTimeItem() const 00248 { 00249 return (DtTimeInfoItem*)(first() ? first()->next() : NULL); 00250 } 00251 00252 inline DtTimeInfoItem* DtTimeInfoList::lastTimeItem() const 00253 { 00254 return (DtTimeInfoItem*)last(); 00255 } 00256 00257 #endif 00258 #endif