From 4b2051272bf3e682da79c6c3a85b542e1de9bd1b Mon Sep 17 00:00:00 2001 From: Patrik Gornicz Date: Mon, 18 May 2009 16:23:12 -0400 Subject: [PATCH] created a Timer class --- inc/Ticks.h | 49 ++++++++++++++++++++++++++++++++++++++++ inc/{ticks.h => Timer.h} | 34 +++++++++++++++++++--------- src/Ticks.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++ src/{ticks.cpp => Timer.cpp} | 36 +++++++++++++++++------------ src/dir.mk | 3 ++- 5 files changed, 150 insertions(+), 26 deletions(-) create mode 100644 inc/Ticks.h rename inc/{ticks.h => Timer.h} (69%) create mode 100644 src/Ticks.cpp rename src/{ticks.cpp => Timer.cpp} (68%) diff --git a/inc/Ticks.h b/inc/Ticks.h new file mode 100644 index 0000000..f94927a --- /dev/null +++ b/inc/Ticks.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2008 Patrik Gornicz, Gornicz_P (at) hotmail (dot) com. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef TICKS_H +#define TICKS_H + + +namespace pg +{ + + /// ***** Header Class ***** + + class Ticks + { + public: + Ticks(); + Ticks(long int); + ~Ticks() {} + + // returns the microsecond representation of this object + operator long int() const; + + // returns the *seconds representation of this object + long int seconds() const; + long int milliseconds() const; + long int microseconds() const; + + private: + long int m_ticks; + }; + +} + + +#endif // TICKS_H diff --git a/inc/ticks.h b/inc/Timer.h similarity index 69% rename from inc/ticks.h rename to inc/Timer.h index 3c89a2e..c7d9c32 100644 --- a/inc/ticks.h +++ b/inc/Timer.h @@ -15,20 +15,32 @@ * along with this program. If not, see . */ -#ifndef TICKS_H -#define TICKS_H +#ifndef TIMER_H +#define TIMER_H -/// ***** Public Methods ***** +#include "Ticks.h" -typedef long int MICRO; +namespace pg +{ -// returns the current seconds from program start -MICRO tickCountSec(); + /// ***** Header Class ***** -// returns the current milliseconds from program start -MICRO tickCountMilli(); + class Timer + { + public: + Timer(); + ~Timer() {} -// returns the current microseconds from program start -MICRO tickCountMicro(); + void init(); + void fini(); -#endif // TICKS_H + Ticks query() const; + + private: + Ticks m_microstart; + }; + +} + + +#endif // TIMER_H diff --git a/src/Ticks.cpp b/src/Ticks.cpp new file mode 100644 index 0000000..05e9a46 --- /dev/null +++ b/src/Ticks.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2008 Patrik Gornicz, Gornicz_P (at) hotmail (dot) com. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "Ticks.h" +using namespace pg; + + +pg::Ticks::Ticks() + : m_ticks(0) +{ + +} +pg::Ticks::Ticks(long int ticks) + : m_ticks(ticks) +{ + +} + + +/// ***** Public Methods ***** + +pg::Ticks::operator long int () const +{ + return m_ticks; +} + +long int pg::Ticks::seconds() const +{ + return m_ticks / 1000000; +} + +long int pg::Ticks::milliseconds() const +{ + return m_ticks / 1000; +} + +long int pg::Ticks::microseconds() const +{ + return m_ticks; +} diff --git a/src/ticks.cpp b/src/Timer.cpp similarity index 68% rename from src/ticks.cpp rename to src/Timer.cpp index 54699b1..25f9875 100644 --- a/src/ticks.cpp +++ b/src/Timer.cpp @@ -15,31 +15,39 @@ * along with this program. If not, see . */ -#include "ticks.h" +#include "Timer.h" +using namespace pg; #include -/* this file is specific to a UNIX system */ -/// ***** Public Methods ***** +/* this file is specific to a UNIX system */ -// returns the current microseconds from unix time -MICRO tickCountMicro() +pg::Timer::Timer() + : m_microstart(0) { - timeval tv; - gettimeofday(&tv, 0); - return (long int)tv.tv_sec * 1000000 + tv.tv_usec; } -// returns the current milliseconds from unix time -MICRO tickCountMilli() +void pg::Timer::init() { - return tickCountMicro() / 1000; + timeval tv; + gettimeofday(&tv, 0); + + m_microstart = (long int)tv.tv_sec * 1000000 + tv.tv_usec; } +void pg::Timer::fini() +{ -// returns the current seconds from unix time -MICRO tickCountSec() +} + +/// ***** Public Methods ***** + +Ticks pg::Timer::query() const { - return tickCountMicro() / 1000000; + timeval tv; + gettimeofday(&tv, 0); + + return (long int)tv.tv_sec * 1000000 + tv.tv_usec - m_microstart; } + diff --git a/src/dir.mk b/src/dir.mk index 9ca0c66..b03257c 100644 --- a/src/dir.mk +++ b/src/dir.mk @@ -3,7 +3,8 @@ NEWSRCS := # insure blank NEWSRCS += Vector2.cpp NEWSRCS += mathw.cpp NEWSRCS += debug.cpp -NEWSRCS += ticks.cpp +NEWSRCS += Timer.cpp +NEWSRCS += Ticks.cpp NEWDIRS := # insure blank -- 2.10.2