Gobelijn API documentation  - generated for commit a0cbea7
 All Classes Namespaces Files Functions Variables Typedefs Friends Macros Pages
ClockCLib.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <chrono>
4 #include <ctime>
5 #include <stdexcept>
6 
7 namespace UA_CoMP {
8 namespace Timekeeper {
9 
15 class ClockCLib
16 {
17 public:
18  typedef std::chrono::milliseconds duration;
19  typedef duration::rep rep;
20  typedef duration::period period;
21  typedef std::chrono::time_point<ClockCLib, duration> time_point;
22 
23  static time_point now()
24  {
25  std::clock_t t = std::clock();
26  if (static_cast<std::clock_t>(-1) == t) {
27  throw std::runtime_error("Error in CallClockCLib");
28  }
29 
30  constexpr double conv = 1.0 / CLOCKS_PER_SEC;
31  constexpr double ratio = static_cast<double>(period::den) / static_cast<double>(period::num);
32  const duration d(static_cast<rep>(static_cast<double>(t) * conv * ratio));
33  return time_point(d);
34  }
35 };
36 
37 } // namespace Timekeeper
38 } // namespace UA_CoMP
Clock based on C library clock_t clock() which returns an approximate processor time in ticks...
Definition: ClockCLib.h:15
static time_point now()
Definition: ClockCLib.h:23
std::chrono::milliseconds duration
Definition: ClockCLib.h:18
duration::period period
Definition: ClockCLib.h:20
std::chrono::time_point< ClockCLib, duration > time_point
Definition: ClockCLib.h:21