HighRezTimer.cpp 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include <boost/date_time/posix_time/posix_time.hpp>
  2. #include "HighRezTimer.h"
  3. #include "Exception.h"
  4. //======================================================================================================================
  5. // Constructor =
  6. //======================================================================================================================
  7. HighRezTimer::HighRezTimer():
  8. startTime(0),
  9. stopTime(0)
  10. {}
  11. //======================================================================================================================
  12. // start =
  13. //======================================================================================================================
  14. void HighRezTimer::start()
  15. {
  16. RASSERT_THROW_EXCEPTION(startTime != 0);
  17. RASSERT_THROW_EXCEPTION(stopTime != 0);
  18. startTime = getCrntTime();
  19. stopTime = 0;
  20. }
  21. //======================================================================================================================
  22. // stop =
  23. //======================================================================================================================
  24. void HighRezTimer::stop()
  25. {
  26. RASSERT_THROW_EXCEPTION(startTime == 0);
  27. RASSERT_THROW_EXCEPTION(stopTime != 0);
  28. stopTime = getCrntTime();
  29. }
  30. //======================================================================================================================
  31. // getElapsedTime =
  32. //======================================================================================================================
  33. uint HighRezTimer::getElapsedTime() const
  34. {
  35. if(stopTime == 0)
  36. {
  37. return getCrntTime() - startTime;
  38. }
  39. else
  40. {
  41. return stopTime - startTime;
  42. }
  43. }
  44. //======================================================================================================================
  45. // getCrntTime =
  46. //======================================================================================================================
  47. uint HighRezTimer::getCrntTime()
  48. {
  49. using namespace boost::posix_time;
  50. return ptime(microsec_clock::local_time()).time_of_day().total_milliseconds();
  51. }