epoc32/include/stdapis/boost/timer.hpp
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
     1 //  boost timer.hpp header file  ---------------------------------------------//
     2 
     3 //  Copyright Beman Dawes 1994-99.  Distributed under the Boost
     4 //  Software License, Version 1.0. (See accompanying file
     5 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
     6 
     7 //  See http://www.boost.org/libs/timer for documentation.
     8 
     9 //  Revision History
    10 //  01 Apr 01  Modified to use new <boost/limits.hpp> header. (JMaddock)
    11 //  12 Jan 01  Change to inline implementation to allow use without library
    12 //             builds. See docs for more rationale. (Beman Dawes) 
    13 //  25 Sep 99  elapsed_max() and elapsed_min() added (John Maddock)
    14 //  16 Jul 99  Second beta
    15 //   6 Jul 99  Initial boost version
    16 
    17 #ifndef BOOST_TIMER_HPP
    18 #define BOOST_TIMER_HPP
    19 
    20 #include <boost/config.hpp>
    21 #include <ctime>
    22 #include <boost/limits.hpp>
    23 
    24 # ifdef BOOST_NO_STDC_NAMESPACE
    25     namespace std { using ::clock_t; using ::clock; }
    26 # endif
    27 
    28 
    29 namespace boost {
    30 
    31 //  timer  -------------------------------------------------------------------//
    32 
    33 //  A timer object measures elapsed time.
    34 
    35 //  It is recommended that implementations measure wall clock rather than CPU
    36 //  time since the intended use is performance measurement on systems where
    37 //  total elapsed time is more important than just process or CPU time.
    38 
    39 //  Warnings: The maximum measurable elapsed time may well be only 596.5+ hours
    40 //  due to implementation limitations.  The accuracy of timings depends on the
    41 //  accuracy of timing information provided by the underlying platform, and
    42 //  this varies a great deal from platform to platform.
    43 
    44 class timer
    45 {
    46  public:
    47          timer() { _start_time = std::clock(); } // postcondition: elapsed()==0
    48 //         timer( const timer& src );      // post: elapsed()==src.elapsed()
    49 //        ~timer(){}
    50 //  timer& operator=( const timer& src );  // post: elapsed()==src.elapsed()
    51   void   restart() { _start_time = std::clock(); } // post: elapsed()==0
    52   double elapsed() const                  // return elapsed time in seconds
    53     { return  double(std::clock() - _start_time) / CLK_TCK; }
    54 
    55   double elapsed_max() const   // return estimated maximum value for elapsed()
    56   // Portability warning: elapsed_max() may return too high a value on systems
    57   // where std::clock_t overflows or resets at surprising values.
    58   {
    59     return (double((std::numeric_limits<std::clock_t>::max)())
    60        - double(_start_time)) / double(CLK_TCK); 
    61   }
    62 
    63   double elapsed_min() const            // return minimum value for elapsed()
    64    { return double(1)/double(CLK_TCK); }
    65 
    66  private:
    67   std::clock_t _start_time;
    68 }; // timer
    69 
    70 } // namespace boost
    71 
    72 #endif  // BOOST_TIMER_HPP