1 | #ifndef COSY_Timer
|
---|
2 | #define COSY_Timer
|
---|
3 |
|
---|
4 | struct timeval;
|
---|
5 |
|
---|
6 | class ostream;
|
---|
7 |
|
---|
8 | class Timer
|
---|
9 | {
|
---|
10 | friend ostream &operator<<(ostream &out, Timer &t);
|
---|
11 | private:
|
---|
12 | double fMs; // Microsec in units of sec as returned by gettimeofday
|
---|
13 | int fSecs; // Seconds as returned by gettimeofday
|
---|
14 |
|
---|
15 | int fSec; // Sec of time
|
---|
16 | int fMin; // Min of time
|
---|
17 | int fHor; // Hor of time
|
---|
18 | int fDay; // Day of time
|
---|
19 | int fMon; // Mon of time
|
---|
20 | int fYea; // Yea of time
|
---|
21 |
|
---|
22 | double fDiv; // Division of day
|
---|
23 | double fMjd; // MJD
|
---|
24 |
|
---|
25 | char fDateStr[30];
|
---|
26 |
|
---|
27 | //void Set(const long mjd);
|
---|
28 |
|
---|
29 | public:
|
---|
30 | Timer(int d, int m, int y, int h, int min, int s, double ms)
|
---|
31 | : fMs(ms), fSecs(0), fSec(s), fMin(m), fHor(h), fDay(d), fMon(m), fYea(y), fDiv(0), fMjd(0) {}
|
---|
32 | Timer() : fMs(0), fSecs(0), fSec(0), fMin(0), fHor(0), fDay(0), fMon(0), fYea(0), fDiv(0), fMjd(0) {}
|
---|
33 | Timer(double t);
|
---|
34 | Timer(struct timeval *tv);
|
---|
35 | Timer(const Timer &t);
|
---|
36 |
|
---|
37 | void SetTimer(int tv_sec, double tv_usec);
|
---|
38 | void SetTimer(const struct timeval *tv);
|
---|
39 | void SetTimer(int y, int m, int d, int h, int min, int s, double ms)
|
---|
40 | {
|
---|
41 | fMs = ms;
|
---|
42 | fSec = s;
|
---|
43 | fMin = min;
|
---|
44 | fHor = h;
|
---|
45 | fDay = d;
|
---|
46 | fMon = m;
|
---|
47 | fYea = y;
|
---|
48 | }
|
---|
49 |
|
---|
50 | void GetTimeval(struct timeval *tv) const;
|
---|
51 |
|
---|
52 | int GetSecs() { return fSecs; }
|
---|
53 |
|
---|
54 | double Now(); //[s]
|
---|
55 | double GetMjd() const { return fMjd/*+fDiv*/; }
|
---|
56 |
|
---|
57 | virtual void SetMjd(double mjd);
|
---|
58 |
|
---|
59 | int Day() const { return fDay; }
|
---|
60 | int Month() const { return fMon; }
|
---|
61 | int Year() const { return fYea; }
|
---|
62 |
|
---|
63 | int H() const { return fHor; }
|
---|
64 | int M() const { return fMin; }
|
---|
65 | int S() const { return fSec; }
|
---|
66 | int MilliSec() const { return (int)(fMs*1000); }
|
---|
67 | double MicroSec() const { return fMs; }
|
---|
68 |
|
---|
69 | const char *GetTimeStr();
|
---|
70 |
|
---|
71 | void Print();
|
---|
72 |
|
---|
73 | operator double() const; //[s]
|
---|
74 | };
|
---|
75 |
|
---|
76 | ostream &operator<<(ostream &out, Timer &t);
|
---|
77 |
|
---|
78 | #endif
|
---|