1 // stopclock_perf.cpp ---------------------------------------------------// 2 3 // Copyright 2009 Vicente J. Botet Escriba 4 // Copyright 2009 Howard Hinnant 5 6 // Distributed under the Boost Software License, Version 1.0. 7 // See http://www.boost.org/LICENSE_1_0.txt 8 9 // See http://www.boost.org/libs/chrono for documentation. 10 11 #ifndef BOOST_CHRONO_CLOCK_NAME_HPP 12 #define BOOST_CHRONO_CLOCK_NAME_HPP 13 14 #include <boost/chrono/chrono.hpp> 15 #include <boost/type_traits/is_same.hpp> 16 17 template <typename Clock, 18 bool = boost::is_same<Clock, boost::chrono::system_clock>::value, 19 #ifdef BOOST_CHRONO_HAS_CLOCK_STEADY 20 bool = boost::is_same<Clock, boost::chrono::steady_clock>::value, 21 #else 22 bool = false, 23 #endif 24 bool = boost::is_same<Clock, boost::chrono::high_resolution_clock>::value 25 > 26 struct name; 27 28 template <typename Clock> 29 struct name<Clock, false, false, false> { applyname30 static const char* apply() { return "unknown clock";} 31 }; 32 33 template <typename Clock> 34 struct name<Clock, true, false, false> { applyname35 static const char* apply() { return "system_clock";} 36 }; 37 38 template <typename Clock> 39 struct name<Clock, false, true, false> { applyname40 static const char* apply() { return "steady_clock";} 41 }; 42 43 template <typename Clock> 44 struct name<Clock, false, false, true> { applyname45 static const char* apply() { return "high_resolution_clock";} 46 }; 47 48 template <typename Clock> 49 struct name<Clock, false, true, true> { applyname50 static const char* apply() { return "steady_clock and high_resolution_clock";} 51 }; 52 53 template <typename Clock> 54 struct name<Clock, true, false, true> { applyname55 static const char* apply() { return "system_clock and high_resolution_clock";} 56 }; 57 58 template <typename Clock> 59 struct name<Clock, true, true, false> { applyname60 static const char* apply() { return "system_clock and steady_clock";} 61 }; 62 63 template <typename Clock> 64 struct name<Clock, true, true, true> { applyname65 static const char* apply() { return "system_clock, steady_clock and high_resolution_clock";} 66 }; 67 68 #endif 69