-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtime_util.inl
120 lines (102 loc) · 4.32 KB
/
time_util.inl
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
109
110
111
112
113
114
115
116
117
118
119
120
/* THOR - THOR Template Library
* Joshua M. Kriegshauser
*
* time_util.inl
*
* Time utilities
*/
namespace thor
{
namespace time
{
///////////////////////////////////////////////////////////////////////////////Inline functions
inline difference_type seconds_diff(const seconds& earlier) THOR_NOTHROW
{
return (difference_type)(seconds_now().cvalue() - earlier.cvalue());
}
inline difference_type seconds_diff(seconds* earlier) THOR_NOTHROW
{
THOR_ASSERT(earlier != 0);
seconds old = *earlier;
*earlier = seconds_now();
return (difference_type)(earlier->cvalue() - old.cvalue());
}
inline difference_type seconds_diff(const seconds& earlier, const seconds& later) THOR_NOTHROW
{
return (difference_type)(later.cvalue() - earlier.cvalue());
}
inline seconds seconds_adjust(const seconds& t, difference_type adjustment) THOR_NOTHROW
{
return seconds(t.cvalue() + adjustment);
}
inline difference_type milliseconds_diff(const milliseconds& earlier) THOR_NOTHROW
{
THOR_ASSERT(earlier.cvalue() != 0); // Zero is a meaningless time; all comparisons should be relative
return (difference_type)(milliseconds_now().cvalue() - earlier.cvalue());
}
inline difference_type milliseconds_diff(milliseconds* earlier) THOR_NOTHROW
{
THOR_ASSERT(earlier != 0);
THOR_ASSERT(earlier->cvalue() != 0); // Zero is a meaningless time; all comparisons should be relative
milliseconds old = *earlier;
*earlier = milliseconds_now();
return (difference_type)(earlier->cvalue() - old.cvalue());
}
inline difference_type milliseconds_diff(const milliseconds& earlier, const milliseconds& later) THOR_NOTHROW
{
THOR_ASSERT(earlier.cvalue() != 0); // Zero is a meaningless time; all comparisons should be relative
THOR_ASSERT(later.cvalue() != 0); // Zero is a meaningless time; all comparisons should be relative
return (difference_type)(later.cvalue() - earlier.cvalue());
}
inline milliseconds milliseconds_adjust(const milliseconds& t, difference_type adjustment) THOR_NOTHROW
{
return milliseconds(t.cvalue() + adjustment);
}
inline difference_type microseconds_diff(const microseconds& earlier) THOR_NOTHROW
{
THOR_ASSERT(earlier.cvalue() != 0); // Zero is a meaningless time; all comparisons should be relative
return (difference_type)(microseconds_now().cvalue() - earlier.cvalue());
}
inline difference_type microseconds_diff(microseconds* earlier) THOR_NOTHROW
{
THOR_ASSERT(earlier != 0);
THOR_ASSERT(earlier->cvalue() != 0); // Zero is a meaningless time; all comparisons should be relative
microseconds old = *earlier;
*earlier = microseconds_now();
return (difference_type)(earlier->cvalue() - old.cvalue());
}
inline difference_type microseconds_diff(const microseconds& earlier, const microseconds& later) THOR_NOTHROW
{
THOR_ASSERT(earlier.cvalue() != 0); // Zero is a meaningless time; all comparisons should be relative
THOR_ASSERT(later.cvalue() != 0); // Zero is a meaningless time; all comparisons should be relative
return (difference_type)(later.cvalue() - earlier.cvalue());
}
inline microseconds microseconds_adjust(const microseconds& t, difference_type adjustment) THOR_NOTHROW
{
return microseconds(t.cvalue() + adjustment);
}
inline difference_type nanoseconds_diff(const nanoseconds& earlier) THOR_NOTHROW
{
THOR_ASSERT(earlier.cvalue() != 0); // Zero is a meaningless time; all comparisons should be relative
return (difference_type)(nanoseconds_now().cvalue() - earlier.cvalue());
}
inline difference_type nanoseconds_diff(nanoseconds* earlier) THOR_NOTHROW
{
THOR_ASSERT(earlier != 0);
THOR_ASSERT(earlier->cvalue() != 0); // Zero is a meaningless time; all comparisons should be relative
nanoseconds old = *earlier;
*earlier = nanoseconds_now();
return (difference_type)(earlier->cvalue() - old.cvalue());
}
inline difference_type nanoseconds_diff(const nanoseconds& earlier, const nanoseconds& later) THOR_NOTHROW
{
THOR_ASSERT(earlier.cvalue() != 0); // Zero is a meaningless time; all comparisons should be relative
THOR_ASSERT(later.cvalue() != 0); // Zero is a meaningless time; all comparisons should be relative
return (difference_type)(later.cvalue() - earlier.cvalue());
}
inline nanoseconds nanoseconds_adjust(const nanoseconds& t, difference_type adjustment) THOR_NOTHROW
{
return nanoseconds(t.cvalue() + adjustment);
}
}
}