// timerecord.h // Time Recording Class // Copyright (C) 2000 Yukinori NAGATANI // Yukawa Institute for Themoretical Physics, Kyoto University // nagatani@yukawa.kyoto-u.ac.jp #ifdef TIME_RECORD #else #define TIME_RECORD #include #include class TimeRecord { private: char szTimeString [256]; time_t tNow, tOld, tStart; public: TimeRecord (void) { tNow = 0; tOld = 0; tStart = 0; } TimeRecord & record (void) { tOld = tNow; time (&tNow); if (tStart == 0) tStart = tNow; } char * getTimeString (void) { if (tNow == 0) return NULL; strftime (szTimeString, 255, "%Y/%m/%d %a %H:%M:%S", localtime (&tNow)); return szTimeString; } int getDeltaSecond (void) const { return (tOld == 0 ? 0 : tNow - tOld); } int getTotalSecond (void) const { return (tStart == 0 ? 0 : tNow - tStart); } friend ostream & operator << (ostream & s, TimeRecord & TR) { TR.record (); s << TR.getTimeString() << " (" << TR.getDeltaSecond () << ", " << TR.getTotalSecond () << ")"; return s; } }; #endif // TIME_RECORD