-
-
Notifications
You must be signed in to change notification settings - Fork 112
/
Copy pathclock.cpp
78 lines (62 loc) · 1.64 KB
/
clock.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
#include "stdafx.h"
#include "clock.h"
#include "debug.h"
Clock::Clock(bool neverPause) : neverPause(neverPause) {
initTime = steady_clock::now();
}
milliseconds Clock::getMillis() {
if (lastPause)
return duration_cast<milliseconds>(*lastPause - pausedTime);
else
return duration_cast<milliseconds>(getCurrent() - pausedTime);
}
void Clock::pause() {
if (!lastPause && !neverPause)
lastPause = getCurrent();
}
void Clock::cont() {
if (lastPause) {
pausedTime += getCurrent() - *lastPause;
lastPause = none;
}
}
bool Clock::isPaused() {
return !!lastPause;
}
milliseconds Clock::getRealMillis() {
return duration_cast<milliseconds>(steady_clock::now().time_since_epoch());
}
microseconds Clock::getRealMicros() {
return duration_cast<microseconds>(high_resolution_clock::now().time_since_epoch());
}
int Clock::getCurrentMonth() {
time_t t = time(NULL);
return localtime(&t)->tm_mon + 1;
}
int Clock::getCurrentDayOfMonth() {
time_t t = time(NULL);
return localtime(&t)->tm_mday;
}
steady_clock::time_point Clock::getCurrent() {
return steady_clock::time_point(steady_clock::now() - initTime);
}
Intervalometer::Intervalometer(milliseconds f) : frequency(f) {
}
int Intervalometer::getCount(milliseconds mill) {
if (!lastUpdate)
lastUpdate = mill - frequency;
if (mill >= *lastUpdate + frequency) {
int diff = (mill - *lastUpdate) / frequency;
*lastUpdate += diff * frequency;
return diff;
}
return 0;
}
void Intervalometer::clear() {
lastUpdate = none;
}
ScopeTimer::ScopeTimer(const char* msg) : message(msg) {
}
ScopeTimer::~ScopeTimer() {
INFO << " " << clock.getMillis() << message;
}