// stopclock_perf.cpp ---------------------------------------------------// // Copyright 2009 Vicente J. Botet Escriba // Copyright 2009 Howard Hinnant // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt // See http://www.boost.org/libs/chrono for documentation. #ifndef BOOST_CHRONO_CLOCK_NAME_HPP #define BOOST_CHRONO_CLOCK_NAME_HPP #include <boost/chrono/chrono.hpp> #include <boost/type_traits/is_same.hpp> template <typename Clock, bool = boost::is_same<Clock, boost::chrono::system_clock>::value, #ifdef BOOST_CHRONO_HAS_CLOCK_STEADY bool = boost::is_same<Clock, boost::chrono::steady_clock>::value, #else bool = false, #endif bool = boost::is_same<Clock, boost::chrono::high_resolution_clock>::value > struct name; template <typename Clock> struct name<Clock, false, false, false> { static const char* apply() { return "unknown clock";} }; template <typename Clock> struct name<Clock, true, false, false> { static const char* apply() { return "system_clock";} }; template <typename Clock> struct name<Clock, false, true, false> { static const char* apply() { return "steady_clock";} }; template <typename Clock> struct name<Clock, false, false, true> { static const char* apply() { return "high_resolution_clock";} }; template <typename Clock> struct name<Clock, false, true, true> { static const char* apply() { return "steady_clock and high_resolution_clock";} }; template <typename Clock> struct name<Clock, true, false, true> { static const char* apply() { return "system_clock and high_resolution_clock";} }; template <typename Clock> struct name<Clock, true, true, false> { static const char* apply() { return "system_clock and steady_clock";} }; template <typename Clock> struct name<Clock, true, true, true> { static const char* apply() { return "system_clock, steady_clock and high_resolution_clock";} }; #endif