Terminus
timer.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <chrono>
4 #include <map>
5 #include <string>
6 
7 namespace terminus
8 {
9 
18 class Timer
19 {
20 public:
21  using TimerID = unsigned int;
22  using TimerMSec = signed int;
23 
24 protected:
25  static TimerMSec toMSec(std::chrono::steady_clock::duration duration);
26  static std::chrono::steady_clock::duration fromMSec(TimerMSec duration);
27 
28 public:
29  Timer();
30 
34  void pause();
39  void pause(bool flag);
43  bool isPaused();
44 
55  TimerID allocateTimer(std::string name);
56 
61  void releaseTimer(TimerID id);
66  void releaseTimer(std::string name);
67 
74  bool isAllocated(TimerID id);
79  bool isAllocated(std::string name);
80 
88  TimerMSec get();
96  TimerMSec get(TimerID id);
104  TimerMSec get(std::string name);
105 
114  void adjust(TimerMSec newNow);
122  void adjust(TimerID id, TimerMSec newNow);
130  void adjust(std::string name, TimerMSec newNow);
131 
132 protected:
134 
135  std::chrono::steady_clock::time_point localNow();
136  void startPause();
137  void endPause();
138 
139 protected:
140 
141  std::chrono::steady_clock m_clock;
142  std::chrono::steady_clock::time_point m_pauseNow;
144 
145  std::chrono::steady_clock::time_point m_baseTimeStamp;
146 
147  std::map<TimerID, std::chrono::steady_clock::time_point> m_timeStamps;
148  std::map<std::string, TimerID> m_namedTimers;
149 };
150 
151 }//namespace terminus
void adjust(TimerMSec newNow)
adjust the reference time to match newNow
Definition: timer.cpp:136
void startPause()
Definition: timer.cpp:174
The Timer class implements a set of pauseable duration counters (subsequently called timers) and mech...
Definition: timer.h:18
static TimerMSec toMSec(std::chrono::steady_clock::duration duration)
Definition: timer.cpp:9
std::map< TimerID, std::chrono::steady_clock::time_point > m_timeStamps
Definition: timer.h:147
std::chrono::steady_clock::time_point m_pauseNow
Definition: timer.h:142
std::chrono::steady_clock::time_point m_baseTimeStamp
Definition: timer.h:145
bool isPaused()
Definition: timer.cpp:51
Timer()
Definition: timer.cpp:19
static std::chrono::steady_clock::duration fromMSec(TimerMSec duration)
Definition: timer.cpp:14
bool m_isPaused
Definition: timer.h:143
TimerID freeTimerID()
Definition: timer.cpp:158
std::chrono::steady_clock::time_point localNow()
Definition: timer.cpp:169
std::chrono::steady_clock m_clock
Definition: timer.h:141
std::map< std::string, TimerID > m_namedTimers
Definition: timer.h:148
unsigned int TimerID
Definition: timer.h:21
void releaseTimer(TimerID id)
release ressources (id and timestamp) of an unnamed timer
Definition: timer.cpp:74
signed int TimerMSec
Definition: timer.h:22
bool isAllocated(TimerID id)
Definition: timer.cpp:100
Definition: eventhandler.cpp:18
void endPause()
Definition: timer.cpp:179
TimerID allocateTimer()
allocate a new timer without naming it
Definition: timer.cpp:56
void pause()
toggle global pause state
Definition: timer.cpp:25