7 #ifndef _INC_cTimeSys_H
8 #define _INC_cTimeSys_H
31 #if defined(__linux__)
32 class cTimeSpec :
public timespec
41 static const UINT k_FREQ = 1000000000;
49 put_mSec(nMilliSeconds);
51 cTimeSpec(
TIMESECD_t iSeconds,
int iNanoSec) noexcept
53 this->tv_sec = iSeconds;
54 this->tv_nsec = iNanoSec;
56 void put_mSec(
TIMESYSD_t nMilliSeconds) noexcept
59 this->tv_sec = nMilliSeconds / 1000;
60 this->tv_nsec = (nMilliSeconds % 1000) * 1000000;
66 nTicks += this->tv_nsec / 1000000;
69 UINT64 get_nSec()
const noexcept
72 return (((UINT64)this->tv_sec) * cTimeSpec::k_FREQ) + this->tv_nsec;
74 void InitTimeNow() noexcept
79 ::clock_gettime(CLOCK_MONOTONIC,
this);
81 void InitTimeNow1() noexcept
85 ::clock_gettime(CLOCK_REALTIME,
this);
113 : m_TimeSys(t.m_TimeSys)
128 return ::GetTickCount64();
130 return ::GetTickCount();
132 #elif defined(__linux__)
135 return tNow.get_mSec();
145 return m_TimeSys > k_CLEAR;
158 m_TimeSys = GetTimeNow();
162 m_TimeSys = GetTimeNow() + iOffset;
166 InitTimeNowPlusSys((
TIMESYSD_t)(fOffsetSec * k_FREQ));
170 return m_TimeSys > GetTimeNow();
179 if (m_TimeSys == k_INF)
181 return (
TIMESYSD_t)(m_TimeSys - GetTimeNow());
191 if (m_TimeSys == k_INF)
193 return (
TIMESYSD_t)(GetTimeNow() - m_TimeSys);
210 return get_AgeSys() / k_FREQ;
263 static bool GRAYCALL InitFreq() noexcept;
264 void InitTimeNow() noexcept;
274 return tStop.m_nTime - this->m_nTime;
280 return GetAgeDiff(tStop);
285 return ((
double)t) / ((double)sm_nFreq);
291 return ToSeconds(m_nTime);
298 return ToSeconds(tDiff);
306 return ToDays(m_nTime);
#define GRAYCORE_LINK
Definition: GrayCore.h:47
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define UNITTEST_FRIEND(n)
Define this in the class body to be unit tested. Allow the unit test to access private/protected stuf...
Definition: cUnitTestDecl.h:17
Definition: cTimeSys.h:225
double get_Seconds() const noexcept
Definition: cTimeSys.h:287
cTimePerf(int nTime) noexcept
Definition: cTimeSys.h:244
cTimePerf(TIMEPERF_t nTime=0) noexcept
Definition: cTimeSys.h:239
TIMEPERF_t get_AgePerf() const noexcept
Definition: cTimeSys.h:276
cTimePerf(bool bTrue) noexcept
Definition: cTimeSys.h:249
TIMEPERF_t m_nTime
Arbitrary start time in k_nFreq units. 64 byte unsigned type.
Definition: cTimeSys.h:231
TIMEPERF_t GetAgeDiff(cTimePerf tStop) const noexcept
Definition: cTimeSys.h:271
bool isTimeValid() const noexcept
Definition: cTimeSys.h:258
double get_AgeSeconds() const noexcept
Definition: cTimeSys.h:293
static double __stdcall ToSeconds(TIMEPERF_t t) noexcept
Definition: cTimeSys.h:283
double get_Days() const noexcept
Definition: cTimeSys.h:302
Definition: cTimeSys.h:93
TIMESECD_t get_AgeSec() const noexcept
Definition: cTimeSys.h:206
cTimeSys(TIMESYS_t t) noexcept
Definition: cTimeSys.h:116
void InitTime(TIMESYS_t t=k_CLEAR) noexcept
Definition: cTimeSys.h:152
void InitTimeNow() noexcept
Definition: cTimeSys.h:156
TIMESECF_t get_TimeTilSecF() const noexcept
Definition: cTimeSys.h:196
bool isTimeFuture() const noexcept
Definition: cTimeSys.h:168
cTimeSys() noexcept
Definition: cTimeSys.h:108
TIMESYSD_t get_TimeTilSys() const noexcept
Definition: cTimeSys.h:173
TIMESYS_t get_TimeSys() const noexcept
Definition: cTimeSys.h:147
static TIMESYS_t GetTimeNow() noexcept
Definition: cTimeSys.h:121
void InitTimeNowPlusSec(float fOffsetSec) noexcept
Definition: cTimeSys.h:164
void InitTimeNowPlusSys(TIMESYSD_t iOffset) noexcept
Definition: cTimeSys.h:160
bool isTimeValid() const noexcept
Definition: cTimeSys.h:143
TIMESECF_t get_AgeSecF() const noexcept
Definition: cTimeSys.h:201
TIMESYSD_t get_AgeSys() const noexcept
Definition: cTimeSys.h:183
cTimeSys(const cTimeSys &t) noexcept
Definition: cTimeSys.h:112
< The main namespace for all Core functions.
Definition: GrayCore.cpp:14
INT32 TIMESYSD_t
Time delta. signed milli-Seconds Span. cTimeSys::k_DMAX, cTimeSys::k_INF = MAILSLOT_WAIT_FOREVER.
Definition: cTimeSys.h:28
int TIMESECD_t
signed delta seconds. like TIMESEC_t. redefined in TimeUnits.h.
Definition: cTimeSys.h:19
UINT64 TIMEPERF_t
The system very high precision performance timer. cTimeSpec.
Definition: cTimeSys.h:221
float TIMESECF_t
delta float seconds.
Definition: cTimeSys.h:20
UINT32 TIMESYS_t
TIMESYS_t = The normal system tick timer. milli-seconds since start of system/app ?
Definition: cTimeSys.h:27