--- /dev/null
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+// Author: Andy Rushton\r
+// Copyright: (c) Southampton University 1999-2004\r
+// (c) Andy Rushton 2004-2009\r
+// License: BSD License, see ../docs/license.html\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+#include "timer.hpp"\r
+#include "dprintf.hpp"\r
+#include "time.hpp"\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+namespace stlplus\r
+{\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+ timer::timer(void)\r
+ {\r
+ reset();\r
+ }\r
+\r
+ timer::~timer(void)\r
+ {\r
+ }\r
+\r
+ void timer::reset(void)\r
+ {\r
+ m_clock = clock();\r
+ m_time = time(0);\r
+ }\r
+\r
+ float timer::cpu(void) const\r
+ {\r
+ return ((float)(clock() - m_clock)) / ((float)CLOCKS_PER_SEC);\r
+ }\r
+\r
+ float timer::elapsed(void) const\r
+ {\r
+ return ((float)(time(0) - m_time));\r
+ }\r
+\r
+ std::string timer::text(void) const\r
+ {\r
+ return dformat("%4.2fs CPU, %s elapsed", cpu(), delaytime_string(time(0)-m_time).c_str());\r
+ }\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+ std::ostream& operator << (std::ostream& str, const timer& t)\r
+ {\r
+ return str << t.text();\r
+ }\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+} // end namespace stlplus\r