]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // boost/chrono/timer.hpp ------------------------------------------------------------// |
2 | ||
3 | // Copyright Beman Dawes 2008 | |
4 | // Copyright 2009 Vicente J. Botet Escriba | |
5 | ||
6 | // Distributed under the Boost Software License, Version 1.0. (See accompanying | |
7 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
8 | ||
9 | // See http://www.boost.org/libs/system for documentation. | |
10 | ||
11 | #ifndef BOOSTEX_CHRONO_TIMER_HPP | |
12 | #define BOOSTEX_CHRONO_TIMER_HPP | |
13 | ||
14 | #include <boost/chrono/chrono.hpp> | |
15 | #include <boost/system/error_code.hpp> | |
16 | ||
17 | namespace boost_ex | |
18 | { | |
19 | namespace chrono | |
20 | { | |
21 | ||
22 | //--------------------------------------------------------------------------------------// | |
23 | // timer // | |
24 | //--------------------------------------------------------------------------------------// | |
25 | ||
26 | template <class Clock=boost::chrono::high_resolution_clock> | |
27 | class timer | |
28 | { | |
29 | public: | |
30 | typedef Clock clock; | |
31 | typedef typename Clock::duration duration; | |
32 | typedef typename Clock::time_point time_point; | |
33 | ||
92f5a8d4 TL |
34 | explicit timer( boost::system::error_code & ec = ::boost::throws() ) |
35 | { | |
36 | start(ec); | |
7c673cae FG |
37 | } |
38 | ||
39 | ~timer() {} // never throws | |
40 | ||
92f5a8d4 TL |
41 | void start( boost::system::error_code & ec = ::boost::throws() ) |
42 | { | |
43 | m_start = clock::now( ec ); | |
7c673cae FG |
44 | } |
45 | ||
92f5a8d4 | 46 | duration elapsed( boost::system::error_code & ec = ::boost::throws() ) |
7c673cae FG |
47 | { return clock::now( ec ) - m_start; } |
48 | ||
49 | private: | |
50 | time_point m_start; | |
51 | }; | |
52 | ||
53 | typedef chrono::timer< boost::chrono::system_clock > system_timer; | |
54 | #ifdef BOOST_CHRONO_HAS_CLOCK_STEADY | |
55 | typedef chrono::timer< boost::chrono::steady_clock > steady_timer; | |
56 | #endif | |
57 | typedef chrono::timer< boost::chrono::high_resolution_clock > high_resolution_timer; | |
58 | ||
59 | } // namespace chrono | |
60 | } // namespace boost_ex | |
61 | ||
62 | #endif |