summaryrefslogtreecommitdiffstats
path: root/labb8/lib/StanfordCPPLib/gtimer.h
diff options
context:
space:
mode:
Diffstat (limited to 'labb8/lib/StanfordCPPLib/gtimer.h')
-rwxr-xr-xlabb8/lib/StanfordCPPLib/gtimer.h116
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