diff options
Diffstat (limited to 'labb8/lib/StanfordCPPLib/gtimer.h')
| -rwxr-xr-x | labb8/lib/StanfordCPPLib/gtimer.h | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/labb8/lib/StanfordCPPLib/gtimer.h b/labb8/lib/StanfordCPPLib/gtimer.h new file mode 100755 index 0000000..a0a6d7d --- /dev/null +++ b/labb8/lib/StanfordCPPLib/gtimer.h @@ -0,0 +1,116 @@ +/* + * File: gtimer.h + * -------------- + * This file defines the <code>GTimer</code> class, which implements a + * general interval timer. + */ + +#ifndef _gtimer_h +#define _gtimer_h + +#include <string> + +/* + * Friend type: GTimerData + * ----------------------- + * This type maintains a reference count to determine when it is + * possible to free the timer. The address of this block is used + * as the timer id. + */ + +struct GTimerData { + int refCount; +}; + +/* + * Class: GTimer + * ------------- + * This class implements a simple interval timer that generates a + * <code>GTimerEvent</code> with a specified frequency. Copying + * a <code>GTimer</code> object is legal and creates an object that + * refers to the same internal timer. + */ + +class GTimer { + +public: + +/* + * Constructor: GTimer + * Usage: GTimer timer(milliseconds); + * ---------------------------------- + * Creates a timer object that generates a <code>GTimerEvent</code> + * each time the specified number of milliseconds has elapsed. No + * events are generated until the client calls <code>start</code> + * on the timer. For more details on using timers, see the documentation + * for the <a href="GTimerEvent-class.html"><code>GTimerEvent</code></a> + * class. + */ + + GTimer(double milliseconds); + +/* + * Destructor: ~GTimer + * ------------------- + * Frees the resources associated with the timer. + */ + + virtual ~GTimer(); + +/* + * Method: start + * Usage: timer.start(); + * --------------------- + * Starts the timer. A timer continues to generate timer events until it + * is stopped; to achieve the effect of a one-shot timer, the simplest + * approach is to call the <code>stop</code> method inside the event + * handler. + */ + + void start(); + +/* + * Method: stop + * Usage: timer.stop(); + * -------------------- + * Stops the timer so that it stops generating events until it is restarted. + */ + + void stop(); + +/* + * Friend operator: == + * Usage: if (t1 == t2) ... + * ------------------------ + * Checks whether the two objects refer to the same timer. + */ + + bool operator==(GTimer t2); + +/* + * Friend operator: != + * Usage: if (t1 != t2) ... + * ------------------------ + * Checks whether the two objects refer to the different timers. + */ + + bool operator!=(GTimer t2); + +/* Private section */ + + GTimer(GTimerData *gtd); + GTimer(const GTimer & src); + GTimer & operator=(const GTimer & src); + +private: + +/* Instance variables */ + + GTimerData *gtd; + + friend class Platform; + friend class GTimerEvent; + +}; + +#endif |
