45 lines
1.2 KiB
C++
45 lines
1.2 KiB
C++
#ifndef __JABYENGINE_TIMER_HPP__
|
|
#define __JABYENGINE_TIMER_HPP__
|
|
#include "../jabyengine_defines.h"
|
|
|
|
namespace JabyEngine {
|
|
class GlobalTime {
|
|
public:
|
|
class TimeStamp {
|
|
private:
|
|
size_t value;
|
|
|
|
constexpr TimeStamp(size_t value) : value(value) {}
|
|
|
|
public:
|
|
#ifdef JABYENGINE_USE_HIGH_PERCISION_TIMER
|
|
constexpr size_t microseconds_to(const TimeStamp& ts) const {
|
|
return (ts.value - this->value)*100;
|
|
}
|
|
|
|
constexpr size_t milliseconds_to(const TimeStamp& ts) const {
|
|
return microseconds_to(ts)/1000;
|
|
}
|
|
#else
|
|
constexpr size_t milliseconds_to(const TimeStamp& ts) const {
|
|
return (ts.value - this->value)*10;
|
|
}
|
|
#endif //JABYENGINE_USE_HIGH_PERCISION_TIMER
|
|
|
|
friend class GlobalTime;
|
|
};
|
|
|
|
private:
|
|
static volatile size_t global_counter;
|
|
|
|
public:
|
|
GlobalTime() = delete;
|
|
~GlobalTime() = delete;
|
|
|
|
static TimeStamp get_time_stamp() {
|
|
return TimeStamp(GlobalTime::global_counter);
|
|
}
|
|
};
|
|
}
|
|
|
|
#endif //!__JABYENGINE_TIMER_HPP__
|