diff --git a/timeHandler.h b/timeHandler.h index 2bf39b2e3..613517968 100644 --- a/timeHandler.h +++ b/timeHandler.h @@ -1,7 +1,15 @@ #ifndef __TIMEHANDLER_H__ #define __TIMEHANDLER_H__ -#include +#ifdef __FreeBSD__ + #include + #include + #include + #define TO_MS_DIVISOR (1000) +#else + #include + #define TO_MS_DIVISOR (CLOCKS_PER_SEC/1000) +#endif /* * timeHandler.h, part of VCMI engine @@ -15,13 +23,43 @@ class timeHandler { -public: clock_t start, last, mem; - timeHandler():start(clock()){last=clock();mem=0;}; - long getDif(){long ret=clock()-last;last=clock();return ret/(CLOCKS_PER_SEC/1000);};//get diff in milliseconds - void update(){last=clock();}; - void remember(){mem=clock();}; - long memDif(){return clock()-mem;}; +public: + timeHandler() + : start(clock()) + { + last=clock(); + mem=0; + } + + long getDif() //get diff in milliseconds + { + long ret=clock()-last; + last=clock(); + return ret/TO_MS_DIVISOR; + } + void update() + { + last=clock(); + } + void remember() + { + mem=clock(); + } + long memDif() + { + return clock()-mem; + } + long clock() + { + #ifdef __FreeBSD__ + struct rusage usage; + getrusage(RUSAGE_SELF, &usage); + return static_cast(usage.ru_utime.tv_sec + usage.ru_stime.tv_sec) * 1000000 + usage.ru_utime.tv_usec + usage.ru_stime.tv_usec; + #else + return std::clock(); + #endif + } };