Listing 1: clock.hpp.

// clock.hpp Begin 

#ifdef __PALMOS
  #include <SystemMgr.h>
  #include <TimeMgr.h>
  #define CLOCKS_PER_SEC ((clock_t)SysTicksPerSecond())
  typedef long clock_t;
#elif defined( __WINDOWS )
  #include <windows.h>
  #define CLOCKS_PER_SEC 1000
  typedef long clock_t;
#else
  #include <time.h>
#endif

class cClock
  {
  public:
     cClock( clock_t ClocksPerSec = CLOCKS_PER_SEC );
     cClock( clock_t CalPeriod, clock_t CalError,
            clock_t ClocksPerSec = CLOCKS_PER_SEC );
     ~cClock() {};
     clock_t StartClock();
     clock_t GetClock();
     clock_t GetCalClock();
     clock_t GetClocksPerSec();
     static void SetCalibration( clock_t CalPeriod, clock_t CalCorrection );
     static void CalcCalibration( clock_t ActualTime,
           clock_t MeasuredTime, clock_t Correction );
  private:
     static clock_t _mClockStart;
     static clock_t _mNumClockCalls;
     static clock_t _mDesClockRes;
     static clock_t _mDesClocksPerSec;
     static clock_t _mNatClockRes;
     static clock_t _mCalPeriod;
     static clock_t _mCalCorrection;
     static void InitClock();
     static inline clock_t LoopClock( clock_t Clock1, clock_t *NumCalls );
     static void SetClockRes( clock_t ClocksPerSec );
     static clock_t RoundToRes( clock_t Clock );
  };

// clock.hpp End