summaryrefslogtreecommitdiffstats
path: root/labb8/lib/StanfordCPPLib/gtimer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'labb8/lib/StanfordCPPLib/gtimer.cpp')
-rwxr-xr-xlabb8/lib/StanfordCPPLib/gtimer.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/labb8/lib/StanfordCPPLib/gtimer.cpp b/labb8/lib/StanfordCPPLib/gtimer.cpp
new file mode 100755
index 0000000..20e160d
--- /dev/null
+++ b/labb8/lib/StanfordCPPLib/gtimer.cpp
@@ -0,0 +1,62 @@
+/*
+ * File: gtimer.cpp
+ * ----------------
+ * This file implements the gtimer.h interface.
+ */
+
+#include <iostream>
+#include <sstream>
+#include <string>
+#include "platform.h"
+using namespace std;
+
+/* Global variables */
+
+static Platform *pp = getPlatform();
+
+/* Implementation of the GTimer class */
+
+GTimer::GTimer(double milliseconds) {
+ gtd = new GTimerData();
+ gtd->refCount = 1;
+ pp->createTimer(*this, milliseconds);
+}
+
+GTimer::~GTimer() {
+ if (--gtd->refCount == 0) delete gtd;
+}
+
+void GTimer::start() {
+ pp->startTimer(*this);
+}
+
+void GTimer::stop() {
+ pp->stopTimer(*this);
+}
+
+bool GTimer::operator==(GTimer t2) {
+ return gtd == t2.gtd;
+}
+
+bool GTimer::operator!=(GTimer t2) {
+ return gtd != t2.gtd;
+}
+
+GTimer::GTimer(GTimerData *gtd) {
+ this->gtd = gtd;
+ gtd->refCount++;
+}
+
+GTimer::GTimer(const GTimer & src) {
+ this->gtd = src.gtd;
+ this->gtd->refCount++;
+}
+
+GTimer & GTimer::operator=(const GTimer & src) {
+ if (this != &src) {
+ if (--gtd->refCount == 0) delete gtd;
+ this->gtd = src.gtd;
+ this->gtd->refCount++;
+ }
+ return *this;
+}