-
Notifications
You must be signed in to change notification settings - Fork 51
/
Copy pathTimestamp.cpp
108 lines (85 loc) · 2.1 KB
/
Timestamp.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include "Timestamp.h"
namespace FeatureExtractor {
Timestamp::Timestamp()
{
ts.tv_sec = 0;
ts.tv_usec = 0;
}
Timestamp::Timestamp(const struct timeval &ts)
{
this->ts = ts;
}
Timestamp::Timestamp(int64_t usecs)
{
ts.tv_sec = (long) (usecs / 1000000);
ts.tv_usec = (long) (usecs % 1000000);
}
Timestamp::~Timestamp()
{
}
struct timeval Timestamp::get_timeval() const
{
return ts;
}
int64_t Timestamp::get_usecs() const
{
return ts.tv_usec;
}
int64_t Timestamp::get_secs() const
{
return ts.tv_sec;
}
int64_t Timestamp::get_total_usecs() const
{
return ts.tv_sec * (uint64_t)1000000 + ts.tv_usec;
}
int64_t Timestamp::get_total_msecs() const
{
return (ts.tv_sec * (uint64_t)1000) + (ts.tv_usec / 1000);
}
bool Timestamp::operator==(const Timestamp &b) const
{
return (ts.tv_sec == b.ts.tv_sec && ts.tv_usec == b.ts.tv_usec);
}
bool Timestamp::operator!=(const Timestamp &b) const
{
return (ts.tv_sec != b.ts.tv_sec || ts.tv_usec != b.ts.tv_usec);
}
bool Timestamp::operator<(const Timestamp &b) const
{
return (ts.tv_sec < b.ts.tv_sec
|| (ts.tv_sec == b.ts.tv_sec && ts.tv_usec < b.ts.tv_usec));
}
bool Timestamp::operator<=(const Timestamp &b) const
{
return (ts.tv_sec < b.ts.tv_sec
|| (ts.tv_sec == b.ts.tv_sec && ts.tv_usec <= b.ts.tv_usec));
}
bool Timestamp::operator>(const Timestamp &b) const
{
return (ts.tv_sec > b.ts.tv_sec
|| (ts.tv_sec == b.ts.tv_sec && ts.tv_usec > b.ts.tv_usec));
}
bool Timestamp::operator>=(const Timestamp &b) const
{
return (ts.tv_sec > b.ts.tv_sec
|| (ts.tv_sec == b.ts.tv_sec && ts.tv_usec >= b.ts.tv_usec));
}
Timestamp Timestamp::operator+(const Timestamp &b) const
{
return Timestamp(this->get_total_usecs() + b.get_total_usecs());
}
Timestamp Timestamp::operator-(const Timestamp &b) const
{
return Timestamp(this->get_total_usecs() - b.get_total_usecs());
}
Timestamp Timestamp::operator+(int64_t b) const
{
return Timestamp(this->get_total_usecs() + b);
}
Timestamp Timestamp::operator-(int64_t b) const
{
Timestamp t = Timestamp(this->get_total_usecs() - b);
return t;
}
}