annotate DEPENDENCIES/generic/include/boost/chrono/process_cpu_clocks.hpp @ 16:2665513ce2d3

Add boost headers
author Chris Cannam
date Tue, 05 Aug 2014 11:11:38 +0100
parents
children c530137014c0
rev   line source
Chris@16 1 // boost/chrono/process_cpu_clocks.hpp -----------------------------------------------------------//
Chris@16 2
Chris@16 3 // Copyright 2009-2011 Vicente J. Botet Escriba
Chris@16 4
Chris@16 5 // Distributed under the Boost Software License, Version 1.0.
Chris@16 6 // See http://www.boost.org/LICENSE_1_0.txt
Chris@16 7
Chris@16 8 // See http://www.boost.org/libs/system for documentation.
Chris@16 9
Chris@16 10 #ifndef BOOST_CHRONO_PROCESS_CPU_CLOCKS_HPP
Chris@16 11 #define BOOST_CHRONO_PROCESS_CPU_CLOCKS_HPP
Chris@16 12
Chris@16 13 #include <boost/chrono/config.hpp>
Chris@16 14
Chris@16 15
Chris@16 16 #if defined(BOOST_CHRONO_HAS_PROCESS_CLOCKS)
Chris@16 17
Chris@16 18 #include <boost/chrono/duration.hpp>
Chris@16 19 #include <boost/chrono/time_point.hpp>
Chris@16 20 #include <boost/operators.hpp>
Chris@16 21 #include <boost/chrono/detail/system.hpp>
Chris@16 22 #include <iostream>
Chris@16 23 #include <boost/type_traits/common_type.hpp>
Chris@16 24 #include <boost/chrono/clock_string.hpp>
Chris@16 25
Chris@16 26 #ifndef BOOST_CHRONO_HEADER_ONLY
Chris@16 27 #include <boost/config/abi_prefix.hpp> // must be the last #include
Chris@16 28 #endif
Chris@16 29
Chris@16 30 namespace boost { namespace chrono {
Chris@16 31
Chris@16 32 class BOOST_CHRONO_DECL process_real_cpu_clock {
Chris@16 33 public:
Chris@16 34 typedef nanoseconds duration;
Chris@16 35 typedef duration::rep rep;
Chris@16 36 typedef duration::period period;
Chris@16 37 typedef chrono::time_point<process_real_cpu_clock> time_point;
Chris@16 38 BOOST_STATIC_CONSTEXPR bool is_steady = true;
Chris@16 39
Chris@16 40 static BOOST_CHRONO_INLINE time_point now() BOOST_NOEXCEPT;
Chris@16 41 #if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
Chris@16 42 static BOOST_CHRONO_INLINE time_point now(system::error_code & ec );
Chris@16 43 #endif
Chris@16 44 };
Chris@16 45
Chris@16 46 class BOOST_CHRONO_DECL process_user_cpu_clock {
Chris@16 47 public:
Chris@16 48 typedef nanoseconds duration;
Chris@16 49 typedef duration::rep rep;
Chris@16 50 typedef duration::period period;
Chris@16 51 typedef chrono::time_point<process_user_cpu_clock> time_point;
Chris@16 52 BOOST_STATIC_CONSTEXPR bool is_steady = true;
Chris@16 53
Chris@16 54 static BOOST_CHRONO_INLINE time_point now() BOOST_NOEXCEPT;
Chris@16 55 #if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
Chris@16 56 static BOOST_CHRONO_INLINE time_point now(system::error_code & ec );
Chris@16 57 #endif
Chris@16 58 };
Chris@16 59
Chris@16 60 class BOOST_CHRONO_DECL process_system_cpu_clock {
Chris@16 61 public:
Chris@16 62 typedef nanoseconds duration;
Chris@16 63 typedef duration::rep rep;
Chris@16 64 typedef duration::period period;
Chris@16 65 typedef chrono::time_point<process_system_cpu_clock> time_point;
Chris@16 66 BOOST_STATIC_CONSTEXPR bool is_steady = true;
Chris@16 67
Chris@16 68 static BOOST_CHRONO_INLINE time_point now() BOOST_NOEXCEPT;
Chris@16 69 #if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
Chris@16 70 static BOOST_CHRONO_INLINE time_point now(system::error_code & ec );
Chris@16 71 #endif
Chris@16 72 };
Chris@16 73
Chris@16 74 template <typename Rep>
Chris@16 75 struct process_times
Chris@16 76 : arithmetic<process_times<Rep>,
Chris@16 77 multiplicative<process_times<Rep>, Rep,
Chris@16 78 less_than_comparable<process_times<Rep> > > >
Chris@16 79 {
Chris@16 80 //typedef process_real_cpu_clock::rep rep;
Chris@16 81 typedef Rep rep;
Chris@16 82 process_times()
Chris@16 83 : real(0)
Chris@16 84 , user(0)
Chris@16 85 , system(0){}
Chris@16 86 template <typename Rep2>
Chris@16 87 explicit process_times(
Chris@16 88 Rep2 r)
Chris@16 89 : real(r)
Chris@16 90 , user(r)
Chris@16 91 , system(r){}
Chris@16 92 template <typename Rep2>
Chris@16 93 explicit process_times(
Chris@16 94 process_times<Rep2> const& rhs)
Chris@16 95 : real(rhs.real)
Chris@16 96 , user(rhs.user)
Chris@16 97 , system(rhs.system){}
Chris@16 98 process_times(
Chris@16 99 rep r,
Chris@16 100 rep u,
Chris@16 101 rep s)
Chris@16 102 : real(r)
Chris@16 103 , user(u)
Chris@16 104 , system(s){}
Chris@16 105
Chris@16 106 rep real; // real (i.e wall clock) time
Chris@16 107 rep user; // user cpu time
Chris@16 108 rep system; // system cpu time
Chris@16 109
Chris@16 110 operator rep() const
Chris@16 111 {
Chris@16 112 return real;
Chris@16 113 }
Chris@16 114 template <typename Rep2>
Chris@16 115 bool operator==(process_times<Rep2> const& rhs) {
Chris@16 116 return (real==rhs.real &&
Chris@16 117 user==rhs.user &&
Chris@16 118 system==rhs.system);
Chris@16 119 }
Chris@16 120
Chris@16 121 process_times& operator+=(
Chris@16 122 process_times const& rhs)
Chris@16 123 {
Chris@16 124 real+=rhs.real;
Chris@16 125 user+=rhs.user;
Chris@16 126 system+=rhs.system;
Chris@16 127 return *this;
Chris@16 128 }
Chris@16 129 process_times& operator-=(
Chris@16 130 process_times const& rhs)
Chris@16 131 {
Chris@16 132 real-=rhs.real;
Chris@16 133 user-=rhs.user;
Chris@16 134 system-=rhs.system;
Chris@16 135 return *this;
Chris@16 136 }
Chris@16 137 process_times& operator*=(
Chris@16 138 process_times const& rhs)
Chris@16 139 {
Chris@16 140 real*=rhs.real;
Chris@16 141 user*=rhs.user;
Chris@16 142 system*=rhs.system;
Chris@16 143 return *this;
Chris@16 144 }
Chris@16 145 process_times& operator*=(rep const& rhs)
Chris@16 146 {
Chris@16 147 real*=rhs;
Chris@16 148 user*=rhs;
Chris@16 149 system*=rhs;
Chris@16 150 return *this;
Chris@16 151 }
Chris@16 152 process_times& operator/=(process_times const& rhs)
Chris@16 153 {
Chris@16 154 real/=rhs.real;
Chris@16 155 user/=rhs.user;
Chris@16 156 system/=rhs.system;
Chris@16 157 return *this;
Chris@16 158 }
Chris@16 159 process_times& operator/=(rep const& rhs)
Chris@16 160 {
Chris@16 161 real/=rhs;
Chris@16 162 user/=rhs;
Chris@16 163 system/=rhs;
Chris@16 164 return *this;
Chris@16 165 }
Chris@16 166 bool operator<(process_times const & rhs) const
Chris@16 167 {
Chris@16 168 if (real < rhs.real) return true;
Chris@16 169 if (real > rhs.real) return false;
Chris@16 170 if (user < rhs.user) return true;
Chris@16 171 if (user > rhs.user) return false;
Chris@16 172 if (system < rhs.system) return true;
Chris@16 173 else return false;
Chris@16 174 }
Chris@16 175
Chris@16 176 template <class CharT, class Traits>
Chris@16 177 void print(std::basic_ostream<CharT, Traits>& os) const
Chris@16 178 {
Chris@16 179 os << "{"<< real <<";"<< user <<";"<< system << "}";
Chris@16 180 }
Chris@16 181
Chris@16 182 template <class CharT, class Traits>
Chris@16 183 void read(std::basic_istream<CharT, Traits>& is) const
Chris@16 184 {
Chris@16 185 typedef std::istreambuf_iterator<CharT, Traits> in_iterator;
Chris@16 186 in_iterator i(is);
Chris@16 187 in_iterator e;
Chris@16 188 if (i == e || *i != '{') // mandatory '{'
Chris@16 189 {
Chris@16 190 is.setstate(is.failbit | is.eofbit);
Chris@16 191 return;
Chris@16 192 }
Chris@16 193 CharT x,y,z;
Chris@16 194 is >> real >> x >> user >> y >> system >> z;
Chris@16 195 if (!is.good() || (x != ';')|| (y != ';')|| (z != '}'))
Chris@16 196 {
Chris@16 197 is.setstate(is.failbit);
Chris@16 198 }
Chris@16 199 }
Chris@16 200 };
Chris@16 201 }
Chris@16 202 template <class Rep1, class Rep2>
Chris@16 203 struct common_type<
Chris@16 204 chrono::process_times<Rep1>,
Chris@16 205 chrono::process_times<Rep2>
Chris@16 206 >
Chris@16 207 {
Chris@16 208 typedef chrono::process_times<typename common_type<Rep1, Rep2>::type> type;
Chris@16 209 };
Chris@16 210
Chris@16 211 template <class Rep1, class Rep2>
Chris@16 212 struct common_type<
Chris@16 213 chrono::process_times<Rep1>,
Chris@16 214 Rep2
Chris@16 215 >
Chris@16 216 {
Chris@16 217 typedef chrono::process_times<typename common_type<Rep1, Rep2>::type> type;
Chris@16 218 };
Chris@16 219
Chris@16 220 template <class Rep1, class Rep2>
Chris@16 221 struct common_type<
Chris@16 222 Rep1,
Chris@16 223 chrono::process_times<Rep2>
Chris@16 224 >
Chris@16 225 {
Chris@16 226 typedef chrono::process_times<typename common_type<Rep1, Rep2>::type> type;
Chris@16 227 };
Chris@16 228
Chris@16 229
Chris@16 230 namespace chrono
Chris@16 231 {
Chris@16 232 template <class Rep1, class Period1, class Rep2, class Period2>
Chris@16 233 inline BOOST_CONSTEXPR
Chris@16 234 bool
Chris@16 235 operator==(const duration<process_times<Rep1>, Period1>& lhs,
Chris@16 236 const duration<process_times<Rep2>, Period2>& rhs)
Chris@16 237 {
Chris@16 238 return boost::chrono::detail::duration_eq<
Chris@16 239 duration<process_times<Rep1>, Period1>, duration<process_times<Rep2>, Period2> >()(lhs, rhs);
Chris@16 240 }
Chris@16 241
Chris@16 242 template <class Rep1, class Period1, class Rep2, class Period2>
Chris@16 243 inline BOOST_CONSTEXPR
Chris@16 244 bool
Chris@16 245 operator==(const duration<process_times<Rep1>, Period1>& lhs,
Chris@16 246 const duration<Rep2, Period2>& rhs)
Chris@16 247 {
Chris@16 248 return boost::chrono::detail::duration_eq<
Chris@16 249 duration<Rep1, Period1>, duration<Rep2, Period2> >()(duration<Rep1, Period1>(lhs.count().real), rhs);
Chris@16 250 }
Chris@16 251
Chris@16 252 template <class Rep1, class Period1, class Rep2, class Period2>
Chris@16 253 inline BOOST_CONSTEXPR
Chris@16 254 bool
Chris@16 255 operator==(const duration<Rep1, Period1>& lhs,
Chris@16 256 const duration<process_times<Rep2>, Period2>& rhs)
Chris@16 257 {
Chris@16 258 return rhs == lhs;
Chris@16 259 }
Chris@16 260
Chris@16 261
Chris@16 262 // Duration <
Chris@16 263
Chris@16 264 template <class Rep1, class Period1, class Rep2, class Period2>
Chris@16 265 inline BOOST_CONSTEXPR
Chris@16 266 bool
Chris@16 267 operator< (const duration<process_times<Rep1>, Period1>& lhs,
Chris@16 268 const duration<Rep2, Period2>& rhs)
Chris@16 269 {
Chris@16 270 return boost::chrono::detail::duration_lt<
Chris@16 271 duration<Rep1, Period1>, duration<Rep2, Period2> >()(duration<Rep1, Period1>(lhs.count().real), rhs);
Chris@16 272 }
Chris@16 273
Chris@16 274 template <class Rep1, class Period1, class Rep2, class Period2>
Chris@16 275 inline BOOST_CONSTEXPR
Chris@16 276 bool
Chris@16 277 operator< (const duration<Rep1, Period1>& lhs,
Chris@16 278 const duration<process_times<Rep2>, Period2>& rhs)
Chris@16 279 {
Chris@16 280 return rhs < lhs;
Chris@16 281 }
Chris@16 282
Chris@16 283 template <class Rep1, class Period1, class Rep2, class Period2>
Chris@16 284 inline BOOST_CONSTEXPR
Chris@16 285 bool
Chris@16 286 operator< (const duration<process_times<Rep1>, Period1>& lhs,
Chris@16 287 const duration<process_times<Rep2>, Period2>& rhs)
Chris@16 288 {
Chris@16 289 return boost::chrono::detail::duration_lt<
Chris@16 290 duration<Rep1, Period1>, duration<Rep2, Period2> >()(lhs, rhs);
Chris@16 291 }
Chris@16 292
Chris@16 293
Chris@16 294 typedef process_times<nanoseconds::rep> process_cpu_clock_times;
Chris@16 295 class BOOST_CHRONO_DECL process_cpu_clock
Chris@16 296 {
Chris@16 297 public:
Chris@16 298
Chris@16 299 typedef process_cpu_clock_times times;
Chris@16 300 typedef boost::chrono::duration<times, nano> duration;
Chris@16 301 typedef duration::rep rep;
Chris@16 302 typedef duration::period period;
Chris@16 303 typedef chrono::time_point<process_cpu_clock> time_point;
Chris@16 304 BOOST_STATIC_CONSTEXPR bool is_steady = true;
Chris@16 305
Chris@16 306 static BOOST_CHRONO_INLINE time_point now() BOOST_NOEXCEPT;
Chris@16 307 #if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
Chris@16 308 static BOOST_CHRONO_INLINE time_point now(system::error_code & ec );
Chris@16 309 #endif
Chris@16 310 };
Chris@16 311
Chris@16 312 template <class CharT, class Traits, typename Rep>
Chris@16 313 std::basic_ostream<CharT, Traits>&
Chris@16 314 operator<<(std::basic_ostream<CharT, Traits>& os,
Chris@16 315 process_times<Rep> const& rhs)
Chris@16 316 {
Chris@16 317 rhs.print(os);
Chris@16 318 return os;
Chris@16 319 }
Chris@16 320
Chris@16 321 template <class CharT, class Traits, typename Rep>
Chris@16 322 std::basic_istream<CharT, Traits>&
Chris@16 323 operator>>(std::basic_istream<CharT, Traits>& is,
Chris@16 324 process_times<Rep> const& rhs)
Chris@16 325 {
Chris@16 326 rhs.read(is);
Chris@16 327 return is;
Chris@16 328 }
Chris@16 329
Chris@16 330 template <typename Rep>
Chris@16 331 struct duration_values<process_times<Rep> >
Chris@16 332 {
Chris@16 333 typedef process_times<Rep> Res;
Chris@16 334 public:
Chris@16 335 static Res zero()
Chris@16 336 {
Chris@16 337 return Res();
Chris@16 338 }
Chris@16 339 static Res max BOOST_PREVENT_MACRO_SUBSTITUTION ()
Chris@16 340 {
Chris@16 341 return Res((std::numeric_limits<Rep>::max)(),
Chris@16 342 (std::numeric_limits<Rep>::max)(),
Chris@16 343 (std::numeric_limits<Rep>::max)());
Chris@16 344 }
Chris@16 345 static Res min BOOST_PREVENT_MACRO_SUBSTITUTION ()
Chris@16 346 {
Chris@16 347 return Res((std::numeric_limits<Rep>::min)(),
Chris@16 348 (std::numeric_limits<Rep>::min)(),
Chris@16 349 (std::numeric_limits<Rep>::min)());
Chris@16 350 }
Chris@16 351 };
Chris@16 352
Chris@16 353 template<class CharT>
Chris@16 354 struct clock_string<process_real_cpu_clock, CharT>
Chris@16 355 {
Chris@16 356 static std::basic_string<CharT> name()
Chris@16 357 {
Chris@16 358 static const CharT
Chris@16 359 u[] =
Chris@16 360 { 'p', 'r', 'o', 'c', 'e', 's', 's', '_', 'r', 'e', 'a', 'l', '_', 'c', 'l', 'o', 'c', 'k' };
Chris@16 361 static const std::basic_string<CharT> str(u, u + sizeof(u)
Chris@16 362 / sizeof(u[0]));
Chris@16 363 return str;
Chris@16 364 }
Chris@16 365 static std::basic_string<CharT> since()
Chris@16 366 {
Chris@16 367 const CharT
Chris@16 368 u[] =
Chris@16 369 { ' ', 's', 'i', 'n', 'c', 'e', ' ', 'p', 'r', 'o', 'c', 'e', 's', 's', ' ', 's', 't', 'a', 'r', 't', '-', 'u', 'p' };
Chris@16 370 const std::basic_string<CharT> str(u, u + sizeof(u) / sizeof(u[0]));
Chris@16 371 return str;
Chris@16 372 }
Chris@16 373 };
Chris@16 374
Chris@16 375 template<class CharT>
Chris@16 376 struct clock_string<process_user_cpu_clock, CharT>
Chris@16 377 {
Chris@16 378 static std::basic_string<CharT> name()
Chris@16 379 {
Chris@16 380 static const CharT
Chris@16 381 u[] =
Chris@16 382 { 'p', 'r', 'o', 'c', 'e', 's', 's', '_', 'u', 's', 'e', 'r', '_', 'c', 'l', 'o', 'c', 'k' };
Chris@16 383 static const std::basic_string<CharT> str(u, u + sizeof(u)
Chris@16 384 / sizeof(u[0]));
Chris@16 385 return str;
Chris@16 386 }
Chris@16 387 static std::basic_string<CharT> since()
Chris@16 388 {
Chris@16 389 const CharT
Chris@16 390 u[] =
Chris@16 391 { ' ', 's', 'i', 'n', 'c', 'e', ' ', 'p', 'r', 'o', 'c', 'e', 's', 's', ' ', 's', 't', 'a', 'r', 't', '-', 'u', 'p' };
Chris@16 392 const std::basic_string<CharT> str(u, u + sizeof(u) / sizeof(u[0]));
Chris@16 393 return str;
Chris@16 394 }
Chris@16 395 };
Chris@16 396
Chris@16 397 template<class CharT>
Chris@16 398 struct clock_string<process_system_cpu_clock, CharT>
Chris@16 399 {
Chris@16 400 static std::basic_string<CharT> name()
Chris@16 401 {
Chris@16 402 static const CharT
Chris@16 403 u[] =
Chris@16 404 { 'p', 'r', 'o', 'c', 'e', 's', 's', '_', 's', 'y', 's', 't', 't', 'e', 'm', '_', 'c', 'l', 'o', 'c', 'k' };
Chris@16 405 static const std::basic_string<CharT> str(u, u + sizeof(u)
Chris@16 406 / sizeof(u[0]));
Chris@16 407 return str;
Chris@16 408 }
Chris@16 409 static std::basic_string<CharT> since()
Chris@16 410 {
Chris@16 411 const CharT
Chris@16 412 u[] =
Chris@16 413 { ' ', 's', 'i', 'n', 'c', 'e', ' ', 'p', 'r', 'o', 'c', 'e', 's', 's', ' ', 's', 't', 'a', 'r', 't', '-', 'u', 'p' };
Chris@16 414 const std::basic_string<CharT> str(u, u + sizeof(u) / sizeof(u[0]));
Chris@16 415 return str;
Chris@16 416 }
Chris@16 417 };
Chris@16 418
Chris@16 419 template<class CharT>
Chris@16 420 struct clock_string<process_cpu_clock, CharT>
Chris@16 421 {
Chris@16 422 static std::basic_string<CharT> name()
Chris@16 423 {
Chris@16 424 static const CharT u[] =
Chris@16 425 { 'p', 'r', 'o', 'c', 'e', 's', 's', '_', 'c', 'l', 'o', 'c', 'k' };
Chris@16 426 static const std::basic_string<CharT> str(u, u + sizeof(u)
Chris@16 427 / sizeof(u[0]));
Chris@16 428 return str;
Chris@16 429 }
Chris@16 430 static std::basic_string<CharT> since()
Chris@16 431 {
Chris@16 432 const CharT
Chris@16 433 u[] =
Chris@16 434 { ' ', 's', 'i', 'n', 'c', 'e', ' ', 'p', 'r', 'o', 'c', 'e', 's', 's', ' ', 's', 't', 'a', 'r', 't', '-', 'u', 'p' };
Chris@16 435 const std::basic_string<CharT> str(u, u + sizeof(u) / sizeof(u[0]));
Chris@16 436 return str;
Chris@16 437 }
Chris@16 438 };
Chris@16 439
Chris@16 440 } // namespace chrono
Chris@16 441 } // namespace boost
Chris@16 442
Chris@16 443 namespace std {
Chris@16 444
Chris@16 445 template <typename Rep>
Chris@16 446 struct numeric_limits<boost::chrono::process_times<Rep> >
Chris@16 447 {
Chris@16 448 typedef boost::chrono::process_times<Rep> Res;
Chris@16 449
Chris@16 450 public:
Chris@16 451 static const bool is_specialized = true;
Chris@16 452 static Res min BOOST_PREVENT_MACRO_SUBSTITUTION ()
Chris@16 453 {
Chris@16 454 return Res((std::numeric_limits<Rep>::min)(),
Chris@16 455 (std::numeric_limits<Rep>::min)(),
Chris@16 456 (std::numeric_limits<Rep>::min)());
Chris@16 457 }
Chris@16 458 static Res max BOOST_PREVENT_MACRO_SUBSTITUTION ()
Chris@16 459 {
Chris@16 460 return Res((std::numeric_limits<Rep>::max)(),
Chris@16 461 (std::numeric_limits<Rep>::max)(),
Chris@16 462 (std::numeric_limits<Rep>::max)());
Chris@16 463 }
Chris@16 464 static Res lowest() throw()
Chris@16 465 {
Chris@16 466 return (min)();
Chris@16 467 }
Chris@16 468 static const int digits = std::numeric_limits<Rep>::digits+
Chris@16 469 std::numeric_limits<Rep>::digits+
Chris@16 470 std::numeric_limits<Rep>::digits;
Chris@16 471 static const int digits10 = std::numeric_limits<Rep>::digits10+
Chris@16 472 std::numeric_limits<Rep>::digits10+
Chris@16 473 std::numeric_limits<Rep>::digits10;
Chris@16 474 static const bool is_signed = Rep::is_signed;
Chris@16 475 static const bool is_integer = Rep::is_integer;
Chris@16 476 static const bool is_exact = Rep::is_exact;
Chris@16 477 static const int radix = 0;
Chris@16 478 //~ static Res epsilon() throw() { return 0; }
Chris@16 479 //~ static Res round_error() throw() { return 0; }
Chris@16 480 //~ static const int min_exponent = 0;
Chris@16 481 //~ static const int min_exponent10 = 0;
Chris@16 482 //~ static const int max_exponent = 0;
Chris@16 483 //~ static const int max_exponent10 = 0;
Chris@16 484 //~ static const bool has_infinity = false;
Chris@16 485 //~ static const bool has_quiet_NaN = false;
Chris@16 486 //~ static const bool has_signaling_NaN = false;
Chris@16 487 //~ static const float_denorm_style has_denorm = denorm_absent;
Chris@16 488 //~ static const bool has_denorm_loss = false;
Chris@16 489 //~ static Res infinity() throw() { return 0; }
Chris@16 490 //~ static Res quiet_NaN() throw() { return 0; }
Chris@16 491 //~ static Res signaling_NaN() throw() { return 0; }
Chris@16 492 //~ static Res denorm_min() throw() { return 0; }
Chris@16 493 //~ static const bool is_iec559 = false;
Chris@16 494 //~ static const bool is_bounded = true;
Chris@16 495 //~ static const bool is_modulo = false;
Chris@16 496 //~ static const bool traps = false;
Chris@16 497 //~ static const bool tinyness_before = false;
Chris@16 498 //~ static const float_round_style round_style = round_toward_zero;
Chris@16 499
Chris@16 500 };
Chris@16 501 }
Chris@16 502
Chris@16 503 #ifndef BOOST_CHRONO_HEADER_ONLY
Chris@16 504 #include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
Chris@16 505 #else
Chris@16 506 #include <boost/chrono/detail/inlined/process_cpu_clocks.hpp>
Chris@16 507 #endif
Chris@16 508 #endif
Chris@16 509
Chris@16 510 #endif // BOOST_CHRONO_PROCESS_CPU_CLOCKS_HPP