$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r74848 - in branches/release: boost boost/timer libs/timer libs/timer/build libs/timer/doc libs/timer/example libs/timer/src libs/timer/test libs/timer/test/msvc10 libs/timer/test/msvc10/chrono_dll libs/timer/test/msvc10/chrono_dll/Debug libs/timer/test/msvc10/cpu_timer_test libs/timer/test/msvc10/cpu_timer_test/Debug libs/timer/test/msvc10/system_dll libs/timer/test/msvc10/timer_dll
From: bdawes_at_[hidden]
Date: 2011-10-09 08:17:52
Author: bemandawes
Date: 2011-10-09 08:17:51 EDT (Sun, 09 Oct 2011)
New Revision: 74848
URL: http://svn.boost.org/trac/boost/changeset/74848
Log:
Merge Boost.Timer version 2
Added:
   branches/release/boost/timer/config.hpp   (contents, props changed)
   branches/release/boost/timer/timer.hpp   (contents, props changed)
   branches/release/libs/timer/build/   (props changed)
      - copied from r74846, /trunk/libs/timer/build/
   branches/release/libs/timer/build/Jamfile.v2
      - copied unchanged from r74846, /trunk/libs/timer/build/Jamfile.v2
   branches/release/libs/timer/doc/   (props changed)
      - copied from r74846, /trunk/libs/timer/doc/
   branches/release/libs/timer/doc/cpu_timers.html
      - copied unchanged from r74846, /trunk/libs/timer/doc/cpu_timers.html
   branches/release/libs/timer/doc/index.html
      - copied unchanged from r74846, /trunk/libs/timer/doc/index.html
   branches/release/libs/timer/doc/original_timer.html
      - copied unchanged from r74846, /trunk/libs/timer/doc/original_timer.html
   branches/release/libs/timer/example/   (props changed)
      - copied from r74846, /trunk/libs/timer/example/
   branches/release/libs/timer/example/auto_cpu_timer_example.cpp
      - copied unchanged from r74846, /trunk/libs/timer/example/auto_cpu_timer_example.cpp
   branches/release/libs/timer/example/timex.cpp
      - copied unchanged from r74846, /trunk/libs/timer/example/timex.cpp
   branches/release/libs/timer/src/   (props changed)
      - copied from r74846, /trunk/libs/timer/src/
   branches/release/libs/timer/src/auto_timers_construction.cpp
      - copied unchanged from r74846, /trunk/libs/timer/src/auto_timers_construction.cpp
   branches/release/libs/timer/src/cpu_timer.cpp
      - copied unchanged from r74846, /trunk/libs/timer/src/cpu_timer.cpp
   branches/release/libs/timer/test/cpu_timer_info.cpp
      - copied unchanged from r74846, /trunk/libs/timer/test/cpu_timer_info.cpp
   branches/release/libs/timer/test/cpu_timer_test.cpp
      - copied unchanged from r74846, /trunk/libs/timer/test/cpu_timer_test.cpp
   branches/release/libs/timer/test/msvc10/   (props changed)
      - copied from r74846, /trunk/libs/timer/test/msvc10/
   branches/release/libs/timer/test/msvc10/chrono_dll/   (props changed)
      - copied from r74846, /trunk/libs/timer/test/msvc10/chrono_dll/
   branches/release/libs/timer/test/msvc10/chrono_dll/Debug/   (props changed)
      - copied from r74846, /trunk/libs/timer/test/msvc10/chrono_dll/Debug/
   branches/release/libs/timer/test/msvc10/chrono_dll/chrono_dll.vcxproj
      - copied unchanged from r74846, /trunk/libs/timer/test/msvc10/chrono_dll/chrono_dll.vcxproj
   branches/release/libs/timer/test/msvc10/common.props
      - copied unchanged from r74846, /trunk/libs/timer/test/msvc10/common.props
   branches/release/libs/timer/test/msvc10/cpu_timer_test/   (props changed)
      - copied from r74846, /trunk/libs/timer/test/msvc10/cpu_timer_test/
   branches/release/libs/timer/test/msvc10/cpu_timer_test/Debug/   (props changed)
      - copied from r74846, /trunk/libs/timer/test/msvc10/cpu_timer_test/Debug/
   branches/release/libs/timer/test/msvc10/cpu_timer_test/cpu_timer_test.vcxproj
      - copied unchanged from r74846, /trunk/libs/timer/test/msvc10/cpu_timer_test/cpu_timer_test.vcxproj
   branches/release/libs/timer/test/msvc10/system_dll/   (props changed)
      - copied from r74846, /trunk/libs/timer/test/msvc10/system_dll/
   branches/release/libs/timer/test/msvc10/system_dll/system_dll.vcxproj
      - copied unchanged from r74846, /trunk/libs/timer/test/msvc10/system_dll/system_dll.vcxproj
   branches/release/libs/timer/test/msvc10/timer.sln
      - copied unchanged from r74846, /trunk/libs/timer/test/msvc10/timer.sln
   branches/release/libs/timer/test/msvc10/timer_dll/   (props changed)
      - copied from r74846, /trunk/libs/timer/test/msvc10/timer_dll/
   branches/release/libs/timer/test/msvc10/timer_dll/timer_dll.vcxproj
      - copied unchanged from r74846, /trunk/libs/timer/test/msvc10/timer_dll/timer_dll.vcxproj
   branches/release/libs/timer/test/original_timer_test.cpp
      - copied unchanged from r74846, /trunk/libs/timer/test/original_timer_test.cpp
Removed:
   branches/release/libs/timer/test/timer_test.cpp
   branches/release/libs/timer/timer.htm
Properties modified: 
   branches/release/boost/timer.hpp   (props changed)
   branches/release/libs/timer/   (props changed)
Text files modified: 
   branches/release/libs/timer/index.html      |    49 ++++++--------------------------------- 
   branches/release/libs/timer/test/Jamfile.v2 |    42 +++++++++++++++++++++++++++++----       
   2 files changed, 44 insertions(+), 47 deletions(-)
Added: branches/release/boost/timer/config.hpp
==============================================================================
--- (empty file)
+++ branches/release/boost/timer/config.hpp	2011-10-09 08:17:51 EDT (Sun, 09 Oct 2011)
@@ -0,0 +1,53 @@
+//  boost/timer/config.hpp  -----------------------------------------------------------//
+
+//  Copyright Beman Dawes 2003, 2006, 2011
+
+//  Distributed under the Boost Software License, Version 1.0.
+//  See http://www.boost.org/LICENSE_1_0.txt
+
+//  See http://www.boost.org/libs/timer for documentation.
+
+#ifndef BOOST_TIMER_CONFIG_HPP
+#define BOOST_TIMER_CONFIG_HPP
+
+#include <boost/config.hpp>
+
+#include <boost/system/api_config.hpp> 
+
+// This header implements separate compilation features as described in
+// http://www.boost.org/more/separate_compilation.html
+
+//  enable dynamic or static linking as requested --------------------------------------//
+
+#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_TIMER_DYN_LINK)
+# if defined(BOOST_TIMER_SOURCE)
+#   define BOOST_TIMER_DECL BOOST_SYMBOL_EXPORT
+# else
+#   define BOOST_TIMER_DECL BOOST_SYMBOL_IMPORT
+# endif
+#else
+# define BOOST_TIMER_DECL
+#endif
+
+//  enable automatic library variant selection  ----------------------------------------//
+
+#if !defined(BOOST_TIMER_SOURCE) && !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_TIMER_NO_LIB)
+//
+// Set the name of our library, this will get undef'ed by auto_link.hpp
+// once it's done with it:
+//
+#define BOOST_LIB_NAME boost_timer
+//
+// If we're importing code from a dll, then tell auto_link.hpp about it:
+//
+#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_TIMER_DYN_LINK)
+#  define BOOST_DYN_LINK
+#endif
+//
+// And include the header that does the work:
+//
+#include <boost/config/auto_link.hpp>
+#endif  // auto-linking disabled
+
+#endif // BOOST_TIMER_CONFIG_HPP
+
Added: branches/release/boost/timer/timer.hpp
==============================================================================
--- (empty file)
+++ branches/release/boost/timer/timer.hpp	2011-10-09 08:17:51 EDT (Sun, 09 Oct 2011)
@@ -0,0 +1,138 @@
+//  boost/timer/timer.hpp  -------------------------------------------------------------//
+
+//  Copyright Beman Dawes 1994-2007, 2011
+
+//  Distributed under the Boost Software License, Version 1.0.
+//  See http://www.boost.org/LICENSE_1_0.txt
+
+#ifndef BOOST_TIMER_TIMER_HPP                  
+#define BOOST_TIMER_TIMER_HPP
+
+#include <boost/config/warning_disable.hpp>
+
+#include <boost/timer/config.hpp>
+#include <boost/chrono/chrono.hpp>
+#include <boost/cstdint.hpp>
+#include <string>
+#include <cstring>
+#include <ostream>
+
+#include <boost/config/abi_prefix.hpp> // must be the last #include
+
+#   if defined(_MSC_VER)
+#     pragma warning(push)           // Save warning settings
+#     pragma warning(disable : 4251) // disable warning: class 'std::basic_string<_Elem,_Traits,_Ax>'
+#   endif                            // needs to have dll-interface...
+
+//--------------------------------------------------------------------------------------//
+
+//  TODO:
+//  
+//  * Add BOOST_NOEXCEPT where applicable
+
+//--------------------------------------------------------------------------------------//
+
+namespace boost
+{
+namespace timer
+{
+  class cpu_timer;
+  class auto_cpu_timer;
+
+  typedef boost::int_least64_t nanosecond_type;
+
+  struct cpu_times
+  {
+    nanosecond_type wall;
+    nanosecond_type user;
+    nanosecond_type system;
+
+    void clear() { wall = user = system = 0LL; }
+  };
+      
+  const short         default_places = 6;
+
+  BOOST_TIMER_DECL
+  std::string format(const cpu_times& times, short places, const std::string& format); 
+
+  BOOST_TIMER_DECL
+  std::string format(const cpu_times& times, short places = default_places); 
+
+//  cpu_timer  -------------------------------------------------------------------------//
+
+  class BOOST_TIMER_DECL cpu_timer
+  {
+  public:
+
+    //  constructor
+    cpu_timer()                                    { start(); }
+
+    //  observers
+    bool          is_stopped() const               { return m_is_stopped; }
+    cpu_times     elapsed() const;  // does not stop()
+    std::string   format(short places, const std::string& format) const
+                        { return ::boost::timer::format(elapsed(), places, format); }
+    std::string   format(short places = default_places) const
+                        { return ::boost::timer::format(elapsed(), places); }
+    //  actions
+    void          start();
+    void          stop();
+    void          resume(); 
+
+  private:
+    cpu_times     m_times;
+    bool          m_is_stopped;
+  };
+
+//  auto_cpu_timer  --------------------------------------------------------------------//
+
+  class BOOST_TIMER_DECL auto_cpu_timer : public cpu_timer
+  {
+  public:
+
+    //  Explicit defaults for os are not provided to avoid including <iostream>, which has
+    //  high costs even when the standard streams are not actually used. Explicit defaults
+    //  for format are not provided to avoid order-of-dynamic-initialization issues with a
+    //  std::string.
+
+    explicit auto_cpu_timer(short places = default_places);                          // #1
+             auto_cpu_timer(short places, const std::string& format);                // #2
+    explicit auto_cpu_timer(const std::string& format);                              // #3
+             auto_cpu_timer(std::ostream& os, short places,
+                            const std::string& format)                               // #4
+                                   : m_places(places), m_os(&os), m_format(format)
+                                   { start(); }
+    explicit auto_cpu_timer(std::ostream& os, short places = default_places);        // #5
+             auto_cpu_timer(std::ostream& os, const std::string& format)             // #6
+                                   : m_places(default_places), m_os(&os), m_format(format)
+                                   { start(); }
+
+   ~auto_cpu_timer();
+
+   //  observers
+   //    not particularly useful to users, but allow testing of constructor
+   //    postconditions and ease specification of other functionality without resorting
+   //    to "for exposition only" private members.
+   std::ostream&       ostream() const       { return *m_os; }
+   short               places() const        { return m_places; }
+   const std::string&  format_string() const { return m_format; }
+
+    //  actions
+    void   report(); 
+
+  private:
+    short           m_places;
+    std::ostream*   m_os;      // stored as ptr so compiler can generate operator= 
+    std::string     m_format;  
+  };
+   
+} // namespace timer
+} // namespace boost
+
+#   if defined(_MSC_VER)
+#     pragma warning(pop) // restore warning settings.
+#   endif 
+
+#include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
+
+#endif  // BOOST_TIMER_TIMER_HPP
Modified: branches/release/libs/timer/index.html
==============================================================================
--- branches/release/libs/timer/index.html	(original)
+++ branches/release/libs/timer/index.html	2011-10-09 08:17:51 EDT (Sun, 09 Oct 2011)
@@ -1,47 +1,14 @@
 <html>
-
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
-<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<title>Boost Timer Library</title>
+<meta http-equiv="refresh" content="0; URL=v3/doc/index.htm">
 </head>
-
-<body bgcolor="#FFFFFF" text="#000000">
-
-<table border="1" bgcolor="#007F7F" cellpadding="2">
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../boost.png" alt="boost.png (6897 bytes)" width="277" height="86"></td>
-    <td>Home </td>
-    <td>Libraries </td>
-    <td>People </td>
-    <td>FAQ </td>
-    <td>More </td>
-  </tr>
-</table>
-
-<h1>Timer library</h1>
-
-<p>The timer library supplies a timer class for measuring elapsed time, a
-progress_timer class for reporting elapsed time, and a progress_display class
-for displaying an indication of progress toward a goal.
-
-<ul>
-  <li>Documentation (HTML).</li>
-  <li>Headers timer.hpp and progress.hpp</li>
-  <li>Test program timer_test.cpp</li>
-  <li>Submitted by Beman Dawes.</li>
-</ul>
-
-<p> </p>
+<body>
+Automatic redirection failed, please go to doc/index.html.
 <hr>
-<p>© Copyright Beman Dawes, 2001<br>
-Distributed under the Boost Software License, Version 1.0. See
-www.boost.org/LICENSE_1_0.txt</p>
-
-<p><!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->07 November, 2007<!--webbot bot="Timestamp" endspan i-checksum="39369" -->
-</p>
-
+<p>© Copyright Beman Dawes, 2003, 2011</p>
+<p> Distributed under the Boost Software 
+License, Version 1.0.</p>
+<p> See <a href="http://www.boost.org/LICENSE_1_0.txt">
+www.boost.org/LICENSE_1_0.txt</a></p>
 </body>
-
 </html>
\ No newline at end of file
Modified: branches/release/libs/timer/test/Jamfile.v2
==============================================================================
--- branches/release/libs/timer/test/Jamfile.v2	(original)
+++ branches/release/libs/timer/test/Jamfile.v2	2011-10-09 08:17:51 EDT (Sun, 09 Oct 2011)
@@ -1,9 +1,39 @@
-#~ Copyright Rene Rivera 2008
-#~ Distributed under the Boost Software License, Version 1.0.
-#~ (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+# Boost Timer Library test Jamfile
 
-import testing ;
+# Copyright Beman Dawes 2003, 2006, 2011
 
-test-suite timer
-    :   [ compile timer_test.cpp ]
+# Distributed under the Boost Software License, Version 1.0.
+# See http://www.boost.org/LICENSE_1_0.txt
+
+# See library home page at http://www.boost.org/libs/timer
+
+project
+    : requirements
+      <library>/boost/timer//boost_timer
+      <toolset>msvc:<asynch-exceptions>on
     ;
+ 
+   test-suite "timer"
+   :
+     [ run ../example/auto_cpu_timer_example.cpp
+       : # command line
+       : # input files
+       : <test-info>always_show_run_output # requirements
+     ]
+     [ run cpu_timer_info.cpp
+       : # command line
+       : # input files
+       : <test-info>always_show_run_output # requirements
+     ]
+     [ run cpu_timer_test.cpp
+       : # command line
+       : # input files
+       : <test-info>always_show_run_output # requirements
+     ]
+     [ run ../example/timex.cpp
+       : echo "Hello, world"
+	     :
+	     : <test-info>always_show_run_output
+     ]
+     [ compile original_timer_test.cpp ]
+   ;
Deleted: branches/release/libs/timer/test/timer_test.cpp
==============================================================================
--- branches/release/libs/timer/test/timer_test.cpp	2011-10-09 08:17:51 EDT (Sun, 09 Oct 2011)
+++ (empty file)
@@ -1,89 +0,0 @@
-//  timer, job_timer, and progress_display sample program  -------------------//
-
-//  Copyright Beman Dawes 1998.  Distributed under the Boost
-//  Software License, Version 1.0. (See accompanying file
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/libs/timer for documentation.
-
-//  Revision History
-//  12 Jan 01  Cut time to 1.0 secs to speed regression tests (Beman Dawes)
-//  25 Sep 99  added elapsed_min() and elapsed_max() reporting
-//  16 Jul 99  Second beta
-//   6 Jul 99  Initial boost version
-
-#include <boost/progress.hpp>
-#include <iostream>
-#include <climits>
-
-using boost::timer;
-using boost::progress_timer;
-using boost::progress_display;
-using std::cout;
-using std::endl;
-
-int main() {
-
-  timer t0;  // used only for elapsed_max() and elapsed_min()
-
-  cout << "timer::elapsed_min() reports " << t0.elapsed_min() << " seconds\n";
-  cout << "timer::elapsed_max() reports " << t0.elapsed_max()
-       << " seconds, which is " << t0.elapsed_max()/3600.0 << " hours\n";
-
-  cout << "\nverify progress_display(0) doesn't divide by zero" << endl;
-  progress_display zero( 0 );  // verify 0 doesn't divide by zero
-  ++zero;
-
-  long loops;
-  timer loop_timer;
-  const double time = 1.0;
-
-  cout << "\ndetermine " << time << " second iteration count" << endl;
-  for ( loops = 0; loops < LONG_MAX
-     && loop_timer.elapsed() < time; ++loops ) {}
-  cout << loops << " iterations"<< endl;
-    
-  long i;
-  bool time_waster; // defeat [some] optimizers by storing result here
-
-  progress_timer pt;
-  timer t1;
-  timer t4;
-  timer t5;
-
-  cout << "\nburn about " << time << " seconds" << endl;
-  progress_display pd( loops );
-  for ( i = loops; i--; )
-    { time_waster = loop_timer.elapsed() < time; ++pd; }
-
-  timer t2( t1 );
-  timer t3;
-  t4 = t3;
-  t5.restart();
-
-  cout << "\nburn about " << time << " seconds again" << endl;
-  pd.restart( loops );
-  for ( i = loops; i--; )
-    { time_waster = loop_timer.elapsed() < time; ++pd; }
-
-  if ( time_waster ) cout << ' ';  // using time_waster quiets compiler warnings
-  progress_display pd2( 50, cout, "\nLead string 1 ", "Lead string 2 ", "Lead string 3 " );
-  for ( ; pd2.count() < 50; ++pd2 ) {}
-
-  cout << "\nt1 elapsed: " << t1.elapsed() << '\n';
-  cout << "t2 elapsed: " << t2.elapsed() << '\n';
-  cout << "t3 elapsed: " << t3.elapsed() << '\n';
-  cout << "t4 elapsed: " << t4.elapsed() << '\n';
-  cout << "t5 elapsed: " << t5.elapsed() << '\n';
-  cout << "t1 and t2 should report the same times (very approximately "
-       << 2*time << " seconds).\n";
-  cout << "t3, t4 and t5 should report about the same times,\n";
-  cout << "and these should be about half the t1 and t2 times.\n";
-  cout << "The following elapsed time should be slightly greater than t1."
-       << endl; 
-  return 0;
-  } // main
-
-
-
-
Deleted: branches/release/libs/timer/timer.htm
==============================================================================
--- branches/release/libs/timer/timer.htm	2011-10-09 08:17:51 EDT (Sun, 09 Oct 2011)
+++ (empty file)
@@ -1,213 +0,0 @@
-<html>
-
-<head>
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
-<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<title>Boost Timer Documentation</title>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000">
-
-<h1>
-<img src="../../boost.png" alt="boost.png (6897 bytes)" align="center" width="277" height="86">
- Timer Library</h1>
-<p>The timer library provides two headers and three classes: </p>
-
-<blockquote>
-  <table border="1" cellpadding="5">
-    <tr>
-      <td><b>Header</b></td>
-      <td><b>Class</b></td>
-      <td><b>Functionality</b></td>
-    </tr>
-    <tr>
-      <td>timer.hpp</td>
-      <td>timer</td>
-      <td>Measure elapsed time.</td>
-    </tr>
-    <tr>
-      <td>progress.hpp</td>
-      <td>progress_timer</td>
-      <td>Measure elapsed time (using timer), display on destruction.</td>
-    </tr>
-    <tr>
-      <td>progress.hpp</td>
-      <td>progress_display</td>
-      <td>Display an indication of progress toward a known goal.</td>
-    </tr>
-  </table>
-</blockquote>
-<p>The objective in designing these classes was fairly limited - they are
-intended for simple uses like timing and reporting progress for programmer's
-tests or batch job streams. The specifications of the progress classes are
-worded in very general terms to permit alternate implementations such as for
-graphical user interfaces.</p>
-<h2><a name="Class timer">Class timer</a></h2>
-<p>Class timer measures elapsed time.  It is generally useful for minor
-timing tasks.  Its supplied implementation offers moderate portability at
-the cost of depending on the unknown accuracy and precision of the C Standard
-Library clock() function.  The maximum measurable elapsed time may be as
-low as 596.5 hours (or even less) for the supplied implementation. Because of
-these limitations, this timer cannot be depended upon to
-be robust, and should not be used if that is of any concern.</p>
-<h3>Synopsis</h3>
-<pre>#include <boost/timer.hpp>
-namespace boost {
-class timer {
- public:
-         timer();                        // postcondition: elapsed()==0
-  // compiler generated copy constructor, copy assignment, and dtor apply
-  void   restart();                      // post: elapsed()==0
-  double elapsed() const;                // return elapsed time in seconds
-
-  double elapsed_max() const;  // return estimated maximum value for elapsed()
-  // Portability warning: elapsed_max() may return too high a value on systems
-  // where std::clock_t overflows or resets at surprising values.
-
-  double elapsed_min() const;            // return minimum value for elapsed()
-  }; // timer
-} // namespace boost</pre>
-<h3>Exception safety</h3>
-<p>The constructors may throw <code>std::bad_alloc</code>.  No other member
-functions throw exceptions.</p>
-<h3>Future directions</h3>
-<p>There was a very reasonable request from Ed Brey for a method of determining
-the maximum value which may be returned by elapsed(), but there isn't a way to do so
-portably.  The issue has been raised with the group working on extended time functionality for the C language.  A solution
-may be years in the future. In the meantime, elapsed_max() provides an
-approximation.</p>
-<h2><a name="Class progress_timer">Class progress_timer</a></h2>
-<p>Class progress_timer automatically measures elapsed time, and then on
-destruction displays an elapsed time message at an appropriate place in an appropriate form. 
-The supplied implementation defaults to a character display on std::cout.</p>
-<p>Class progress_timer is often used to time program execution.  Its use is as simple as:</p>
-<blockquote>
-  <pre>#include <boost/progress.hpp>
-int main()
-{
-   progress_timer t;  // start timing
-   // do something ...
-   return 0;
-}</pre>
-</blockquote>
-<p>Which will produce some appropriate output, for example:</p>
-<blockquote>
-  <pre>1.23 s</pre>
-</blockquote>
-<p>Note that "s" is the official System International d'Unités
-abbreviation for seconds.</p>
-<h3>Synopsis</h3>
-<pre>#include <boost/progress.hpp>
-namespace boost {
-class progress_timer : public timer, noncopyable  {
- public:
-   progress_timer();
-   progress_timer( std::ostream& os ); // os is hint; implementation may ignore
-   ~progress_timer();
-   }; // progress_display
-} // namespace boost</pre>
-<h3>Exception safety</h3>
-<p>The constructors may throw <code>std::bad_alloc</code>.  No other member
-functions throw exceptions.</p>
-<h2><a name="Class progress_display">Class progress_display</a></h2>
-<p>Class progress_display displays an appropriate indication of progress toward
-a predefined goal at an appropriate place in an appropriate form.  This
-meets a human need to know if a program is progressing.</p>
-<p>For example, if a lengthy computation must be done on a std::map<>
-named big_map, the follow code would display an indication of progress:</p>
-<pre>  progress_display show_progress( big_map.size() );
-  for ( big_map_t::iterator itr = big_map:begin();
-        itr != big_map.end(); ++itr )
-  {
-     // do the computation
-     ...
-     ++show_progress;
-  }</pre>
-<p>After 70% of the elements have been processed, the display might look
-something like this:</p>
-<blockquote>
-  <pre>0%   10   20   30   40   50   60   70   80   90   100%
-|----|----|----|----|----|----|----|----|----|----|
-************************************</pre>
-</blockquote>
-
-<h2>Synopsis</h2>
-<pre>#include <boost/progress.hpp>
-namespace boost {
-class progress_display : noncopyable {
- public:
-   progress_display( unsigned long expected_count );
-   // Effects: restart(expected_count)
-
-   progress_display( unsigned long expected_count,
-                     std::ostream& os,  // os is hint; implementation may ignore
-                     const std::string & s1 = "\n", //leading strings
-                     const std::string & s2 = "",
-                     const std::string & s3 = "" )
-   // Effects: save copy of leading strings, restart(expected_count)
-
-   void           restart( unsigned long expected_count );
-   //  Effects: display appropriate scale on three lines,
-   //  prefaced by stored copy of s1, s2, s3, respectively, from constructor
-   //  Postconditions: count()==0, expected_count()==expected_count
-
-   unsigned long  operator+=( unsigned long increment )
-   //  Effects: Display appropriate progress tic if needed.
-   //  Postconditions: count()== original count() + increment
-   //  Returns: count().
-
-   unsigned long  operator++()
-   //  Returns: operator+=( 1 ).
-
-   unsigned long  count() const
-   //  Returns: The internal count.
-
-   unsigned long  expected_count() const
-   //  Returns: The expected_count from the constructor.
-
-   }; // progress_display
-} // namespace boost</pre>
-<h3>Exception safety</h3>
-<p>All member functions except count() and expected_count() do output, and so in
-theory may throw exceptions.  In practice it seems an exception being
-thrown is pretty unlikely, and probably implies such serious problems that an
-exception is warranted.  Note that there is no explicit destructor, so the
-destructor throwing is not an issue.</p>
-<h2>History</h2>
-<p>These classes are descended from older C++ and C functionality found useful
-by programmers for many years. Via the Boost mailing list, Reid Sweatman
-suggested separating the more widely useful timer class from the more targeted
-progress classes. Sean Corfield suggested allowing output to any ostream. 
-Dave Abrahams, Valentin Bonnard, Ed Brey, Andy Glew, and Dietmar Kühl also
-provided useful comments.  Ed Brey suggested timer::elapsed_max(). John
-Maddock suggested timer::elapsed_min(). Toon Knapen suggested the optional 
-leading strings, to allow for labeling the progress display</p>
-<h2>Rationale</h2>
-<p>The early versions of the timer classes had separate implementation
-files.  This caused problems for users not wishing to build libraries,
-caused difficulties building DLL's (because of cascaded use of other libraries
-which in turn brought illuminated compiler deficiencies), and caused the classes
-not to be used even when clearly applicable.  Thus the implementation was
-changed to all inline code.</p>
-<p>There have been several requests for platform specific implementations to use
-supposedly high-performance timers from the operating system API.  John
-Maddock submitted an implementation using the Win32 API.  Tests showed that
-while the precision of these timers was high, the latency was sometimes very
-much higher than for the std::clock() function, and that is very bad. 
-Furthermore, results using the Win32 API were very dependent on both the
-compiler (Microsoft and Borland were tested) and the operating system version
-(Windows NT, Windows 95, etc.)  Thus the std::clock() function was much
-more reliable, and so was retained even on this platform with its own timer API.</p>
-<hr>
-<p>© Copyright Beman Dawes 1999.<br>
-Distributed under the Boost Software License, Version 1.0. See
-www.boost.org/LICENSE_1_0.txt</p>
-
-<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%B %d, %Y" startspan -->November 07, 2007<!--webbot bot="Timestamp" i-checksum="39599" endspan -->
-</p>
-
-</body>
-
-</html>
\ No newline at end of file