cppx-core
chrono-util.hpp
Go to the documentation of this file.
1 #pragma once // Source encoding: UTF-8 with BOM (π is a lowercase Greek "pi").
2 
3 #include <cppx-core/language/syntax/macro-use.hpp> // CPPX_USE_...
4 
5 #include <chrono> // std::chrono::*
6 #include <ratio> // std::(milli, micro, nano)
7 #include <type_traits> // std::conditional
8 
9 namespace cppx
10 {
13  conditional_t,
14  milli, micro, nano
15  );
16 
17  using Timer_clock = conditional_t<chrono::high_resolution_clock::is_steady,
18  chrono::high_resolution_clock,
19  chrono::steady_clock
20  >;
21 
22  template< class Rep, class Period >
23  inline auto as_seconds( const chrono::duration<Rep, Period> duration_value )
24  -> double
25  { return chrono::duration<double>( duration_value ).count(); }
26 
27  template< class Rep, class Period >
28  inline auto as_milliseconds( const chrono::duration<Rep, Period> duration_value )
29  -> double
30  { return chrono::duration<double, milli>( duration_value ).count(); }
31 
32  template< class Rep, class Period >
33  inline auto as_microseconds( const chrono::duration<Rep, Period> duration_value )
34  -> double
35  { return chrono::duration<double, micro>( duration_value ).count(); }
36 
37  template< class Rep, class Period >
38  inline auto as_nanoseconds( const chrono::duration<Rep, Period> duration_value )
39  -> double
40  { return chrono::duration<double, nano>( duration_value ).count(); }
41 
42 } // namespace cppx
conditional_t< chrono::high_resolution_clock::is_steady, chrono::high_resolution_clock, chrono::steady_clock > Timer_clock
Definition: chrono-util.hpp:20
auto as_nanoseconds(const chrono::duration< Rep, Period > duration_value) -> double
Definition: chrono-util.hpp:38
CPPX_USE_STD(basic_string, basic_string_view, bitset, char_traits, size)
auto as_microseconds(const chrono::duration< Rep, Period > duration_value) -> double
Definition: chrono-util.hpp:33
auto as_milliseconds(const chrono::duration< Rep, Period > duration_value) -> double
Definition: chrono-util.hpp:28
CPPX_USE_STD_NAMESPACE_NAMES(chrono)
Macros for generating more concise and clear using statements, primarily $use_cppx and $use_std,...
auto as_seconds(const chrono::duration< Rep, Period > duration_value) -> double
Definition: chrono-util.hpp:23