/* * File: gtimer.h * -------------- * This file defines the GTimer 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 * GTimerEvent with a specified frequency. Copying a GTimer 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 GTimerEvent each time the * specified number of milliseconds has elapsed. No events are generated * until the client calls start on the timer. For more details on using * timers, see the documentation for the GTimerEvent 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 stop 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