00001 // ===================================================================== 00002 // $Id: TSystemTimer.hh,v 1.2 2003/07/30 16:21:21 goiwai Exp $ 00003 // $Name: CLDAQ-1-08-00 $ 00004 // 00005 // $Log: TSystemTimer.hh,v $ 00006 // Revision 1.2 2003/07/30 16:21:21 goiwai 00007 // ファイルにコミットログをつけることにしました. 00008 // 00009 // ===================================================================== 00010 #ifndef __TSYSTEMTIMER_HH 00011 #define __TSYSTEMTIMER_HH 00012 00013 #include "Tglobals.h" 00014 00015 class TSystemTimer 00016 { 00017 00018 private: 00019 enum { tUndefined = -1, tIdle, tReady, tRunning }; 00020 00021 private: 00022 Tint theStatus; 00023 Tstring theUnit; 00024 Tdouble theBeginOfRealTime; 00025 Tdouble theEndOfRealTime; 00026 Tdouble theBeginOfSystemTime; 00027 Tdouble theEndOfSystemTime; 00028 Tdouble theBeginOfUserTime; 00029 Tdouble theEndOfUserTime; 00030 Tdouble thePausedTime; 00031 Tdouble theRunningTime; 00032 Tdouble theIdlingTime; 00033 TdoubleList theRealLapTime; 00034 TdoubleList theSystemLapTime; 00035 TdoubleList theUserLapTime; 00036 00037 public: 00038 TSystemTimer( const Tstring& theUnit = Tsec ); 00039 TSystemTimer( const TSystemTimer& right ); 00040 ~TSystemTimer(); 00041 00042 public: 00043 Tint GetStatus() const; 00044 Tdouble GetBeginOfRealTime() const; 00045 Tdouble GetEndOfRealTime() const; 00046 Tdouble GetBeginOfSystemTime() const; 00047 Tdouble GetEndOfSystemTime() const; 00048 Tdouble GetBeginOfUserTime() const; 00049 Tdouble GetEndOfUserTime() const; 00050 Tdouble GetPausedTime() const; 00051 Tdouble GetRunningTime() const; 00052 Tdouble GetIdlingTime() const; 00053 const TdoubleList& GetRealLapTime() const; 00054 const TdoubleList& GetSystemLapTime() const; 00055 const TdoubleList& GetUserLapTime() const; 00056 const Tstring& GetUnit() const; 00057 Tint GetNumberOfLaps() const; 00058 Tstring WhatTimeIsItNow(); 00059 Tvoid SetUnit( const Tstring& unit ); 00060 00061 public: 00062 const TSystemTimer& operator=( const TSystemTimer& right ); 00063 friend Tostream& operator<<( Tostream& tos, const TSystemTimer& right ); 00064 00065 public: 00066 Tvoid Start(); 00067 Tvoid Pause(); 00068 Tvoid Stop(); 00069 Tvoid Lap(); 00070 Tvoid Restart(); 00071 00072 private: 00073 Tvoid initialize(); 00074 Tvoid clear(); 00075 Tvoid start(); 00076 Tvoid pause(); 00077 Tvoid stop(); 00078 Tvoid lap(); 00079 Tvoid restart(); 00080 Tvoid convertTimeScale( Tdouble factor ); 00081 00082 public: 00083 Tdouble GetRealElapsedTime(); 00084 Tdouble GetSystemElapsedTime(); 00085 Tdouble GetUserElapsedTime(); 00086 Tdouble GetTotalRunningTime(); 00087 Tdouble GetTotalIdlingTime(); 00088 00089 }; 00090 00091 inline Tint TSystemTimer::GetStatus() const 00092 { 00093 return( theStatus ); 00094 } 00095 00096 inline Tdouble TSystemTimer::GetBeginOfRealTime() const 00097 { 00098 return( theBeginOfRealTime ); 00099 } 00100 00101 inline Tdouble TSystemTimer::GetEndOfRealTime() const 00102 { 00103 return( theEndOfRealTime ); 00104 } 00105 00106 inline Tdouble TSystemTimer::GetBeginOfSystemTime() const 00107 { 00108 return( theBeginOfSystemTime ); 00109 } 00110 00111 inline Tdouble TSystemTimer::GetEndOfSystemTime() const 00112 { 00113 return( theEndOfSystemTime ); 00114 } 00115 00116 inline Tdouble TSystemTimer::GetBeginOfUserTime() const 00117 { 00118 return( theBeginOfUserTime ); 00119 } 00120 00121 inline Tdouble TSystemTimer::GetEndOfUserTime() const 00122 { 00123 return( theEndOfUserTime ); 00124 } 00125 00126 inline Tdouble TSystemTimer::GetPausedTime() const 00127 { 00128 return( thePausedTime ); 00129 } 00130 00131 inline Tdouble TSystemTimer::GetRunningTime() const 00132 { 00133 return( theRunningTime ); 00134 } 00135 00136 inline Tdouble TSystemTimer::GetIdlingTime() const 00137 { 00138 return( theIdlingTime ); 00139 } 00140 00141 inline const TdoubleList& TSystemTimer::GetRealLapTime() const 00142 { 00143 return( theRealLapTime ); 00144 } 00145 00146 inline const TdoubleList& TSystemTimer::GetSystemLapTime() const 00147 { 00148 return( theSystemLapTime ); 00149 } 00150 00151 inline const TdoubleList& TSystemTimer::GetUserLapTime() const 00152 { 00153 return( theUserLapTime ); 00154 } 00155 00156 inline const Tstring& TSystemTimer::GetUnit() const 00157 { 00158 return( theUnit ); 00159 } 00160 00161 inline Tint TSystemTimer::GetNumberOfLaps() const 00162 { 00163 return( (Tint)theRealLapTime.size() ); 00164 } 00165 00166 #endif