summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/catch/include/internal/catch_timer.hpp
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2016-11-12 10:20:42 +0100
committer Miodrag Milanovic <mmicko@gmail.com>2016-11-12 10:20:42 +0100
commitbe98f6b83acf489daefe604e238e4657940b1e64 (patch)
tree07b91557b9f437db49683bb467841879b904540b /3rdparty/catch/include/internal/catch_timer.hpp
parent29212523d201c4ac7a64a5f8e967d725be6d3b6d (diff)
Added Catch testing library (nw)
Diffstat (limited to '3rdparty/catch/include/internal/catch_timer.hpp')
-rw-r--r--3rdparty/catch/include/internal/catch_timer.hpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/3rdparty/catch/include/internal/catch_timer.hpp b/3rdparty/catch/include/internal/catch_timer.hpp
new file mode 100644
index 00000000000..2ba709e36dd
--- /dev/null
+++ b/3rdparty/catch/include/internal/catch_timer.hpp
@@ -0,0 +1,63 @@
+/*
+ * Created by Phil on 05/08/2013.
+ * Copyright 2013 Two Blue Cubes Ltd. All rights reserved.
+ *
+ * Distributed under the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+#include "catch_timer.h"
+#include "catch_platform.h"
+
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wc++11-long-long"
+#endif
+
+#ifdef CATCH_PLATFORM_WINDOWS
+#include <windows.h>
+#else
+#include <sys/time.h>
+#endif
+
+namespace Catch {
+
+ namespace {
+#ifdef CATCH_PLATFORM_WINDOWS
+ uint64_t getCurrentTicks() {
+ static uint64_t hz=0, hzo=0;
+ if (!hz) {
+ QueryPerformanceFrequency( reinterpret_cast<LARGE_INTEGER*>( &hz ) );
+ QueryPerformanceCounter( reinterpret_cast<LARGE_INTEGER*>( &hzo ) );
+ }
+ uint64_t t;
+ QueryPerformanceCounter( reinterpret_cast<LARGE_INTEGER*>( &t ) );
+ return ((t-hzo)*1000000)/hz;
+ }
+#else
+ uint64_t getCurrentTicks() {
+ timeval t;
+ gettimeofday(&t,CATCH_NULL);
+ return static_cast<uint64_t>( t.tv_sec ) * 1000000ull + static_cast<uint64_t>( t.tv_usec );
+ }
+#endif
+ }
+
+ void Timer::start() {
+ m_ticks = getCurrentTicks();
+ }
+ unsigned int Timer::getElapsedMicroseconds() const {
+ return static_cast<unsigned int>(getCurrentTicks() - m_ticks);
+ }
+ unsigned int Timer::getElapsedMilliseconds() const {
+ return static_cast<unsigned int>(getElapsedMicroseconds()/1000);
+ }
+ double Timer::getElapsedSeconds() const {
+ return getElapsedMicroseconds()/1000000.0;
+ }
+
+} // namespace Catch
+
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif