jabyengine/include/PSX/Timer/timer.hpp

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__