Boost logo

Boost-Commit :

From: eric_at_[hidden]
Date: 2008-08-04 15:15:32


Author: eric_niebler
Date: 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
New Revision: 47974
URL: http://svn.boost.org/trac/boost/changeset/47974

Log:
latest and greatest
Text files modified:
   branches/proto/v4/doc/Jamfile.v2 | 3
   branches/proto/v4/doc/html/CopyConstructible.html | 118 +
   branches/proto/v4/doc/html/any.html | 118 +
   branches/proto/v4/doc/html/array.html | 131 +
   branches/proto/v4/doc/html/bbv2.html | 165 ++
   branches/proto/v4/doc/html/bbv2/installation.html | 216 +++
   branches/proto/v4/doc/html/boost_asio.html | 93 +
   branches/proto/v4/doc/html/boost_staticassert.html | 270 ++++
   branches/proto/v4/doc/html/boost_tr1.html | 137 +
   branches/proto/v4/doc/html/boostbook.html | 142 ++
   branches/proto/v4/doc/html/date_time.html | 248 +++
   branches/proto/v4/doc/html/date_time/date_time_io.html | 2518 +++++++++++++++++++++++++++++++++++++++
   branches/proto/v4/doc/html/date_time/details.html | 1355 +++++++++++++++++++++
   branches/proto/v4/doc/html/date_time/local_time.html | 1668 ++++++++++++++++++++++++++
   branches/proto/v4/doc/html/foreach.html | 315 ++++
   branches/proto/v4/doc/html/function.html | 116 +
   branches/proto/v4/doc/html/hash.html | 148 ++
   branches/proto/v4/doc/html/hash/custom.html | 137 +
   branches/proto/v4/doc/html/interprocess.html | 409 ++++++
   branches/proto/v4/doc/html/intrusive.html | 341 +++++
   branches/proto/v4/doc/html/jam.html | 156 ++
   branches/proto/v4/doc/html/jam/building.html | 977 +++++++++++++++
   branches/proto/v4/doc/html/lambda.html | 207 +++
   branches/proto/v4/doc/html/mpi.html | 191 ++
   branches/proto/v4/doc/html/program_options.html | 140 ++
   branches/proto/v4/doc/html/ref.html | 123 +
   branches/proto/v4/doc/html/signals.html | 128 +
   branches/proto/v4/doc/html/string_algo.html | 186 ++
   branches/proto/v4/doc/html/thread.html | 115 +
   branches/proto/v4/doc/html/tribool.html | 92 +
   branches/proto/v4/doc/html/typeof.html | 207 +++
   branches/proto/v4/doc/html/unordered.html | 228 +++
   branches/proto/v4/doc/html/variant.html | 230 +++
   branches/proto/v4/doc/html/xpressive.html | 222 +++
   branches/proto/v4/doc/src/boost.xml | 2
   branches/proto/v4/libs/proto/doc/Jamfile.v2 | 2
   branches/proto/v4/libs/proto/doc/transforms.qbk | 273 ++-
   37 files changed, 11572 insertions(+), 555 deletions(-)

Modified: branches/proto/v4/doc/Jamfile.v2
==============================================================================
--- branches/proto/v4/doc/Jamfile.v2 (original)
+++ branches/proto/v4/doc/Jamfile.v2 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -26,6 +26,8 @@
     <dependency>../libs/foreach/doc//foreach
     <dependency>../libs/mpi/doc//mpi
     <dependency>../libs/mpi/doc//mpi_autodoc.xml
+ <dependency>../libs/proto/doc//protodoc.xml
+ <dependency>../libs/proto/doc//proto
     <dependency>../libs/typeof/doc//typeof
     <dependency>../libs/xpressive/doc//autodoc.xml
     <dependency>../libs/xpressive/doc//xpressive
@@ -51,6 +53,7 @@
     <implicit-dependency>../libs/static_assert/doc//static_assert
     <implicit-dependency>../libs/tr1/doc//tr1
     <implicit-dependency>../libs/foreach/doc//foreach
+ <implicit-dependency>../libs/proto/doc//proto
     <implicit-dependency>../libs/typeof/doc//typeof
     <implicit-dependency>../libs/xpressive/doc//xpressive
     <implicit-dependency>../tools/jam/doc//bjam

Modified: branches/proto/v4/doc/html/CopyConstructible.html
==============================================================================
--- branches/proto/v4/doc/html/CopyConstructible.html (original)
+++ branches/proto/v4/doc/html/CopyConstructible.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,106 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/CopyConstructible.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/CopyConstructible.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Concept CopyConstructible</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="id354907-bb.html#concepts.reference" title="Concept reference">
+<link rel="prev" href="DefaultConstructible.html" title="Concept DefaultConstructible">
+<link rel="next" href="EqualityComparable.html" title="Concept EqualityComparable">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="DefaultConstructible.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="id354907-bb.html#concepts.reference"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="EqualityComparable.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="CopyConstructible"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Concept CopyConstructible</span></h2>
+<p>CopyConstructible</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id891129"></a><h2>Description</h2>
+<p>Copy constructible types must be able to be constructed from another
+ member of the type.</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id891138"></a><h2>Notation</h2>
+<div class="variablelist"><dl>
+<dt><span class="term">X</span></dt>
+<dd>A type playing the role of copy-constructible-type in the <a class="link" href="CopyConstructible.html" title="Concept CopyConstructible">CopyConstructible</a> concept.</dd>
+<dt>
+<span class="term"><code class="varname">x</code>, </span><span class="term"><code class="varname">y</code></span>
+</dt>
+<dd>Objects of type X</dd>
+</dl></div>
+</div>
+<div class="refsect1" lang="en">
+<a name="id891168"></a><h2>Valid expressions</h2>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Name</th>
+<th>Expression</th>
+<th>Type</th>
+<th>Semantics</th>
+</tr></thead>
+<tbody><tr>
+<td><p>Copy construction</p></td>
+<td><p>X(x)</p></td>
+<td><p><span class="type">X</span></p></td>
+<td><p>Require copy constructor.</p></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1" lang="en">
+<a name="id891205"></a><h2>Models</h2>
+<div class="itemizedlist"><ul type="disc"><li><span class="simplelist"><span class="type">int</span></span></li></ul></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001, 2002 Indiana University<br>Copyright © 2000, 2001 University of Notre Dame du Lac<br>Copyright © 2000 Jeremy Siek, Lie-Quan Lee, Andrew Lumsdaine<br>Copyright © 1996-1999 Silicon Graphics Computer Systems, Inc.<br>Copyright © 1994 Hewlett-Packard Company<p>This product includes software developed at the University
+ of Notre Dame and the Pervasive Technology Labs at Indiana
+ University. For technical information contact Andrew Lumsdaine
+ at the Pervasive Technology Labs at Indiana University. For
+ administrative and license questions contact the Advanced
+ Research and Technology Institute at 351 West 10th Street.
+ Indianapolis, Indiana 46202, phone 317-278-4100, fax
+ 317-274-5902.</p>
+<p>Some concepts based on versions from the MTL draft manual
+ and Boost Graph and Property Map documentation, the SGI Standard
+ Template Library documentation and the Hewlett-Packard STL,
+ under the following license:
+ </p>
+<div class="blockquote"><blockquote class="blockquote">Permission to use, copy, modify, distribute and
+ sell this software and its documentation for any purpose is
+ hereby granted without fee, provided that the above copyright
+ notice appears in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation. Silicon Graphics makes no representations
+ about the suitability of this software for any purpose. It is
+ provided "as is" without express or implied
+ warranty.</blockquote></div>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="DefaultConstructible.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="id354907-bb.html#concepts.reference"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="EqualityComparable.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/any.html
==============================================================================
--- branches/proto/v4/doc/html/any.html (original)
+++ branches/proto/v4/doc/html/any.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,106 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/any.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/any.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 2. Boost.Any</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="boost/numeric/functional/as_one_T,_std_vector_tag__id606838.html" title="Struct template as_one&lt;T, std_vector_tag&gt;">
+<link rel="next" href="any/s02.html" title="Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost/numeric/functional/as_one_T,_std_vector_tag__id606838.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="any/s02.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="any"></a>Chapter 2. Boost.Any</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Kevlin</span> <span class="surname">Henney</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2001 Kevlin Henney</p></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Examples</span></dt>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">ValueType requirements</span></dt>
+<dt><span class="section">Header <boost/any.hpp></span></dt>
+</dl></dd>
+<dt><span class="section">Acknowledgements</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="id881064"></a>Introduction</h2></div></div></div>
+<p>There are times when a generic (in the sense of
+ <span class="emphasis"><em>general</em></span> as opposed to
+ <span class="emphasis"><em>template-based programming</em></span>) type is needed:
+ variables that are truly variable, accommodating values of many
+ other more specific types rather than C++'s normal strict and
+ static types. We can distinguish three basic kinds of generic
+ type:</p>
+<div class="itemizedlist"><ul type="disc">
+<li><p>Converting types that can hold one of a number of
+ possible value types, e.g. <code class="computeroutput">int</code> and
+ <code class="computeroutput">string</code>, and freely convert between them, for
+ instance interpreting <code class="computeroutput">5</code> as <code class="computeroutput">"5"</code> or
+ vice-versa. Such types are common in scripting and other
+ interpreted
+ languages.
+ <code class="computeroutput">boost::lexical_cast</code>
+ supports such conversion functionality.</p></li>
+<li><p>
+ Discriminated types that contain values of different types but
+ do not attempt conversion between them, i.e. <code class="computeroutput">5</code> is
+ held strictly as an <code class="computeroutput">int</code> and is not implicitly
+ convertible either to <code class="computeroutput">"5"</code> or to
+ <code class="computeroutput">5.0</code>. Their indifference to interpretation but
+ awareness of type effectively makes them safe, generic
+ containers of single values, with no scope for surprises from
+ ambiguous conversions.</p></li>
+<li><p>
+ Indiscriminate types that can refer to anything but are
+ oblivious to the actual underlying type, entrusting all forms
+ of access and interpretation to the programmer. This niche is
+ dominated by <code class="computeroutput">void *</code>, which offers plenty of scope
+ for surprising, undefined behavior.</p></li>
+</ul></div>
+<p>The <code class="computeroutput"><a class="link" href="boost/any.html" title="Class any">boost::any</a></code> class
+ (based on the class of the same name described in <a href="http://www.two-sdg.demon.co.uk/curbralan/papers/ValuedConversions.pdf" target="_top">"Valued
+ Conversions"</a> by Kevlin Henney, <span class="emphasis"><em>C++
+ Report</em></span> 12(7), July/August 2000) is a variant value type
+ based on the second category. It supports copying of any value
+ type and safe checked extraction of that value strictly against
+ its type. A similar design, offering more appropriate operators,
+ can be used for a generalized function adaptor,
+ <code class="computeroutput">any_function</code>, a generalized iterator adaptor,
+ <code class="computeroutput">any_iterator</code>, and other object types that need
+ uniform runtime treatment but support only compile-time template
+ parameter conformance.</p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: November 04, 2005 at 01:34:36 -0800</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost/numeric/functional/as_one_T,_std_vector_tag__id606838.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="any/s02.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/array.html
==============================================================================
--- branches/proto/v4/doc/html/array.html (original)
+++ branches/proto/v4/doc/html/array.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,119 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/array.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/array.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 3. Boost.Array</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="any/s04.html" title="Acknowledgements">
+<link rel="next" href="array/reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="any/s04.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="array/reference.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="array"></a>Chapter 3. Boost.Array</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Nicolai</span> <span class="surname">Josuttis</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2001-2004 Nicolai M. Josuttis</p></div>
+<div><div class="legalnotice">
+<a name="id883809"></a><p>Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file <code class="filename">LICENSE_1_0.txt</code> or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Reference</span></dt>
+<dd><dl><dt><span class="section">Header <boost/array.hpp></span></dt></dl></dd>
+<dt><span class="section">Design Rationale</span></dt>
+<dt><span class="section">For more information...</span></dt>
+<dt><span class="section">Acknowledgements</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="array.intro"></a>Introduction</h2></div></div></div>
+<p>The C++ Standard Template Library STL as part of the C++
+ Standard Library provides a framework for processing algorithms on
+ different kind of containers. However, ordinary arrays don't
+ provide the interface of STL containers (although, they provide
+ the iterator interface of STL containers).</p>
+<p>As replacement for ordinary arrays, the STL provides class
+ <code class="computeroutput">std::vector</code>. However,
+ <code class="computeroutput">std::vector&lt;&gt;</code> provides
+ the semantics of dynamic arrays. Thus, it manages data to be able
+ to change the number of elements. This results in some overhead in
+ case only arrays with static size are needed.</p>
+<p>In his book, <span class="emphasis"><em>Generic Programming and the
+ STL</em></span>, Matthew H. Austern introduces a useful wrapper
+ class for ordinary arrays with static size, called
+ <code class="computeroutput">block</code>. It is safer and has no worse performance than
+ ordinary arrays. In <span class="emphasis"><em>The C++ Programming
+ Language</em></span>, 3rd edition, Bjarne Stroustrup introduces a
+ similar class, called <code class="computeroutput">c_array</code>, which I (Nicolai Josuttis) present
+ slightly modified in my book <span class="emphasis"><em>The C++ Standard Library -
+ A Tutorial and Reference</em></span>, called
+ <code class="computeroutput">carray</code>. This is the essence of these approaches
+ spiced with many feedback from boost.</p>
+<p>After considering different names, we decided to name this
+ class simply <code class="computeroutput"><a class="link" href="boost/array.html" title="Class template array">array</a></code>.</p>
+<p>Note that this class is suggested to be part of the next
+ Technical Report, which will extend the C++ Standard (see
+ http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1548.htm).</p>
+<p>Class <code class="computeroutput"><a class="link" href="boost/array.html" title="Class template array">array</a></code> fulfills most
+ but not all of the requirements of "reversible containers" (see
+ Section 23.1, [lib.container.requirements] of the C++
+ Standard). The reasons array is not an reversible STL container is
+ because:
+ </p>
+<div class="itemizedlist"><ul type="disc" compact>
+<li>No constructors are provided.</li>
+<li>Elements may have an undetermined initial value (see <a class="xref" href="array/rationale.html" title="Design Rationale">the section called &#8220;Design Rationale&#8221;</a>).</li>
+<li>
+<code class="computeroutput"><a class="link" href="boost/array.html#boost.swap_id411271">swap</a></code>() has no constant complexity.</li>
+<li>
+<code class="computeroutput"><a class="link" href="boost/array.html#id410902-bb">size</a></code>() is always constant, based on the second template argument of the type.</li>
+<li>The container provides no allocator support.</li>
+</ul></div>
+<p>
+ </p>
+<p>It doesn't fulfill the requirements of a "sequence" (see Section 23.1.1, [lib.sequence.reqmts] of the C++ Standard), except that:
+ </p>
+<div class="itemizedlist"><ul type="disc" compact>
+<li>
+<code class="computeroutput"><a class="link" href="boost/array.html#id411070-bb">front</a></code>() and <code class="computeroutput"><a class="link" href="boost/array.html#id411106-bb">back</a></code>() are provided.</li>
+<li>
+<code class="computeroutput"><a class="link" href="boost/array.html#id410959-bb">operator[]</a></code> and <code class="computeroutput"><a class="link" href="boost/array.html#id411014-bb">at</a></code>() are provided.</li>
+</ul></div>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: December 01, 2006 at 02:29:49 -0800</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="any/s04.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="array/reference.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/bbv2.html
==============================================================================
--- branches/proto/v4/doc/html/bbv2.html (original)
+++ branches/proto/v4/doc/html/bbv2.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,153 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/bbv2.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/bbv2.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 29. Boost.Build V2 User Manual</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="tools.html" title="Part II. Boost Tools">
+<link rel="prev" href="jam/history.html" title="History">
+<link rel="next" href="bbv2/installation.html" title="Installation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="jam/history.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="tools.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bbv2/installation.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="bbv2"></a>Chapter 29. Boost.Build V2 User Manual</h2></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">How to use this document</span></dt>
+<dt><span class="section">Installation</span></dt>
+<dt><span class="section">Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section">Hello, world</span></dt>
+<dt><span class="section">Properties</span></dt>
+<dt><span class="section">Project Hierarchies</span></dt>
+<dt><span class="section">Dependent Targets</span></dt>
+<dt><span class="section">Testing</span></dt>
+<dt><span class="section">Static and shared libaries</span></dt>
+<dt><span class="section">Conditions and alternatives</span></dt>
+<dt><span class="section">Prebuilt targets</span></dt>
+</dl></dd>
+<dt><span class="section">Overview</span></dt>
+<dd><dl>
+<dt><span class="section">Boost.Jam Language</span></dt>
+<dt><span class="section">Configuration</span></dt>
+<dt><span class="section">Invocation</span></dt>
+<dt><span class="section">Declaring Targets</span></dt>
+<dt><span class="section">Projects</span></dt>
+<dt><span class="section">The Build Process</span></dt>
+</dl></dd>
+<dt><span class="section">Common tasks</span></dt>
+<dd><dl>
+<dt><span class="section">Programs</span></dt>
+<dt><span class="section">Libraries</span></dt>
+<dt><span class="section">Alias</span></dt>
+<dt><span class="section">Installing</span></dt>
+<dt><span class="section">Testing</span></dt>
+<dt><span class="section">Custom commands</span></dt>
+<dt><span class="section">Precompiled Headers</span></dt>
+<dt><span class="section">Generated headers</span></dt>
+</dl></dd>
+<dt><span class="section">Extender Manual</span></dt>
+<dd><dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Target types</span></dt>
+<dt><span class="section">Tools and generators</span></dt>
+<dt><span class="section">Features</span></dt>
+<dt><span class="section">Main target rules</span></dt>
+<dt><span class="section">Toolset modules</span></dt>
+</dl></dd>
+<dt><span class="section">Detailed reference</span></dt>
+<dd><dl>
+<dt><span class="section">General information</span></dt>
+<dt><span class="section">Builtin rules</span></dt>
+<dt><span class="section">Builtin features</span></dt>
+<dt><span class="section">Builtin tools</span></dt>
+<dt><span class="section">Build process</span></dt>
+<dt><span class="section">Definitions</span></dt>
+<dt><span class="section">Generators</span></dt>
+</dl></dd>
+<dt><span class="section">Frequently Asked Questions</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="bbv2/faq.html#id2329810">
+ How do I get the current value of feature in Jamfile?
+ </a></span></dt>
+<dt><span class="section"><a href="bbv2/faq.html#id2329851">
+ I'm getting "Duplicate name of actual target" error. What
+ does it mean?
+ </a></span></dt>
+<dt><span class="section"><a href="bbv2/faq.html#bbv2.faq.envar">
+ Accessing environment variables
+ </a></span></dt>
+<dt><span class="section"><a href="bbv2/faq.html#id2329935">
+ How to control properties order?
+ </a></span></dt>
+<dt><span class="section"><a href="bbv2/faq.html#id2329963">
+ How to control the library order on Unix?
+ </a></span></dt>
+<dt><span class="section"><a href="bbv2/faq.html#bbv2.faq.external">Can I get output of external program as a variable in a Jamfile?
+ </a></span></dt>
+<dt><span class="section"><a href="bbv2/faq.html#id2331540">How to get the project root (a.k.a. Jamroot.jam) location?
+ </a></span></dt>
+<dt><span class="section"><a href="bbv2/faq.html#id2331562">How to change compilation flags for one file?
+ </a></span></dt>
+<dt><span class="section"><a href="bbv2/faq.html#bbv2.faq.dll-path">Why are the <code class="computeroutput">dll-path</code> and
+ <code class="computeroutput">hardcode-dll-paths</code> properties useful?
+ </a></span></dt>
+<dt><span class="section">Targets in site-config.jam</span></dt>
+<dt><span class="section">Header-only libraries</span></dt>
+</dl></dd>
+<dt><span class="section">Differences to Boost.Build V1</span></dt>
+<dd><dl>
+<dt><span class="section">Configuration</span></dt>
+<dt><span class="section">Writing Jamfiles</span></dt>
+<dt><span class="section">Build process</span></dt>
+</dl></dd>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="bbv2.howto"></a>How to use this document</h2></div></div></div>
+<p>
+ If you've just found out about Boost.Build V2 and want to know
+ if it will work for you, start with <a class="xref" href="bbv2/tutorial.html" title="Tutorial">the section called &#8220;Tutorial&#8221;</a>. You can continue with <a class="xref" href="bbv2/advanced.html" title="Overview">the section called &#8220;Overview&#8221;</a>. When you're ready to try Boost.Build
+ in practice, go to <a class="xref" href="bbv2/installation.html" title="Installation">the section called &#8220;Installation&#8221;</a>.
+ </p>
+<p>
+ If you are about to use Boost.Build on your project, or already
+ using it and have a problem, look at <a class="xref" href="bbv2/advanced.html" title="Overview">the section called &#8220;Overview&#8221;</a>.
+ </p>
+<p>
+ If you're trying to build a project which uses Boost.Build,
+ see <a class="xref" href="bbv2/installation.html" title="Installation">the section called &#8220;Installation&#8221;</a> and then read about
+ <a class="xref" href="bbv2/reference.html#bbv2.reference.commandline" title="Command line">the section called &#8220;Command line&#8221;</a>.
+ </p>
+<p>
+ If you have questions, please post them to our mailing list (http://boost.org/more/mailing_lists.htm#jamboost). The mailing list is
+ also mirrowed to newsgroup news://news.gmane.org/gmane.comp.lib.boost.build.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="jam/history.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="tools.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bbv2/installation.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/bbv2/installation.html
==============================================================================
--- branches/proto/v4/doc/html/bbv2/installation.html (original)
+++ branches/proto/v4/doc/html/bbv2/installation.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,18 +1,206 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Installation</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="../bbv2.html" title="Chapter 29. Boost.Build V2 User Manual">
+<link rel="prev" href="../bbv2.html" title="Chapter 29. Boost.Build V2 User Manual">
+<link rel="next" href="tutorial.html" title="Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../bbv2.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../bbv2.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="bbv2.installation"></a>Installation</h2></div></div></div>
+<p>
+ This section describes how to install Boost.Build from a
+ released <a href="http://sourceforge.net/project/showfiles.php?group_id=7586&amp;package_id=8041" target="_top">Boost
+ source distribution</a>
+ or <a href="http://sourceforge.net/cvs/?group_id=7586" target="_top">CVS
+ image</a>.
+ <sup>[<a name="id2315310" href="#ftn.id2315310" class="footnote">10</a>]</sup>
+All paths are given relative to
+ the <em class="firstterm">Boost.Build v2 root directory</em>, which is
 
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/bbv2/installation.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/bbv2/installation.html
- </body>
-</html>
+
+
+
+
+ located in the <code class="filename">tools/build/v2</code> subdirectory
+ of a full Boost distribution.
+ <sup>[<a name="id2315336" href="#ftn.id2315336" class="footnote">11</a>]</sup>
+ </p>
+<div class="orderedlist"><ol type="1">
+<li>
+ Boost.Build uses Boost.Jam, an
+ extension of the <a href="http://www.perforce.com/jam/jam.html" target="_top">Perforce
+ Jam</a> portable <span class="command"><strong>make</strong></span> replacement. The
+ recommended way to get Boost.Jam is to <span class="bold"><strong><a href="http://sourceforge.net/project/showfiles.php?group_id=7586&amp;package_id=72941" target="_top">download
+ a prebuilt executable</a></strong></span> from SourceForge.
+ If a prebuilt executable is not provided for your platform
+ or you are using Boost's sources in an unreleased state, it
+ may be necessary to
+ <a class="link" href="../jam/building.html" title="Building BJam">build <span class="command"><strong>bjam</strong></span>
+ from sources</a> included in the Boost source tree.
+ </li>
+<li>
+<p>
+
+ To install Boost.Jam, copy the executable,
+ called <span class="command"><strong>bjam</strong></span>
+ or <span class="command"><strong>bjam.exe</strong></span> to a location accessible in
+ your <code class="envar">PATH</code>. Go to the Boost.Build root
+ directory and
+ run <span class="command"><strong>bjam <code class="option">--version</code></strong></span>. You
+ should see:
 
+ </p>
+<pre class="screen">
+ Boost.Build V2 (Milestone N)
+ Boost.Jam xx.xx.xx
+ </pre>
+<p>
 
+ where N is the version of Boost.Build you're using.
+ </p>
+</li>
+<li>
+ Configure Boost.Build to recognize the build resources (such
+ as compilers and libraries) you have installed on your
+ system. Open the
+ <code class="filename">user-config.jam</code> file in the Boost.Build
+ root directory and follow the instructions there to describe
+ your toolsets and libraries, and, if necessary, where they
+ are located.
+ </li>
+<li>
+ You should now be able to go to the
+ <code class="filename">example/hello/</code> directory and run
+ <span class="command"><strong>bjam</strong></span> there. A simple application will be
+ built. You can also play with other projects in the
+ <code class="filename">example/</code> directory.
+
+ </li>
+</ol></div>
+<p>
+ If you are using Boost's CVS state, be sure to
+ rebuild <span class="command"><strong>bjam</strong></span> even if you have a previous
+ version. The CVS version of Boost.Build requires the CVS
+ version of Boost.Jam.
+ </p>
+<p>
+ When <span class="command"><strong>bjam</strong></span> is invoked, it always needs to be
+ able to find the Boost.Build root directory, where the
+ interpreted source code of Boost.Build is located. There are
+ two ways to tell <span class="command"><strong>bjam</strong></span> about the root directory:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Set the environment variable <code class="envar">BOOST_BUILD_PATH</code>
+ to the absolute path of the Boost.Build root directory.
+ </li>
+<li>
+<p>
+ At the root directory of your project or in any of its
+ parent directories, create a file called
+ <code class="filename">boost-build.jam</code>, with a single line:
+
+</p>
+<pre class="programlisting">
+boost-build <em class="replaceable"><code>/path/to/boost.build</code></em> ;
+</pre>
+<p>
+
+ </p>
+</li>
+</ul></div>
+<h3>
+<a name="id2315526"></a>Information for distributors</h3>
+<p>
+ If you're planning to package Boost.Build for a Linux distribution,
+ please follow these guidelines:
+
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li><p>Create a separate package for Boost.Jam.</p></li>
+<li>
+<p>Create another package for Boost.Build, and make
+ this package install all Boost.Build files to
+ <code class="filename">/usr/share/boost-build</code> directory. After
+ install, that directory should contain everything you see in
+ Boost.Build release package, except for
+ <code class="filename">jam_src</code> directory. If you're using Boost CVS
+ to obtain Boost.Build, as opposed to release package, take
+ everything from the <code class="filename">tools/build/v2</code> directory.
+ For a check, make sure that
+ <code class="filename">/usr/share/boost-build/boost-build.jam</code> is installed.
+ </p>
+<p>Placing Boost.Build into <code class="filename">/usr/share/boost-build</code>
+ will make sure that <span class="command"><strong>bjam</strong></span> will find Boost.Build
+ without any additional setup.</p>
+</li>
+<li>
+<p>Provide a
+ <code class="filename">/etc/site-config.jam</code> configuration file that will
+ contain:
+</p>
+<pre class="programlisting">
+using gcc ;
+</pre>
+<p>
+ You might want to add dependency from Boost.Build package to gcc,
+ to make sure that users can always build Boost.Build examples.
+ </p>
+</li>
+</ul></div>
+<p>
+ </p>
+<p>If those guidelines are met, users will be able to invoke
+ <span class="command"><strong>bjam</strong></span> without any explicit configuration.
+ </p>
+<div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a name="ftn.id2315310" href="#id2315310" class="para">10</a>] </sup>Note that packages prepared for
+ Unix/Linux systems usually make their own choices about where to
+ put things and even which parts of Boost to include. When we
+ say &#8220;released source distribution&#8221; we mean a
+ distribution of Boost as released on its SourceForge
+ <a href="http://sourceforge.net/project/showfiles.php?group_id=7586&amp;package_id=8041" target="_top">project
+ page</a>.
+ </p></div>
+<div class="footnote"><p><sup>[<a name="ftn.id2315336" href="#id2315336" class="para">11</a>] </sup>The Boost.Build subset of boost is also distributed
+ separately, for those who are only interested in getting a
+ build tool. The top-level directory of a <a href="http://sourceforge.net/project/showfiles.php?group_id=7586&amp;package_id=80982" target="_top">Boost.Build
+ distribution</a> contains all the subdirectories of the
+ <code class="filename">tools/build/v2</code> subdirectory from a full
+ Boost distribution, so it is itself a valid Boost.Build root
+ directory. It also contains the
+ <code class="filename">tools/jam/src</code> subdirectory of a
+ full Boost distribution, so you can rebuild Boost.Jam from
+ source.
+ </p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../bbv2.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../bbv2.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: branches/proto/v4/doc/html/boost_asio.html
==============================================================================
--- branches/proto/v4/doc/html/boost_asio.html (original)
+++ branches/proto/v4/doc/html/boost_asio.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,17 +1,80 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/boost_asio.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/boost_asio.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Boost.Asio</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="boost_asio.html" title="Boost.Asio">
+<link rel="next" href="boost_asio/using.html" title="Using Boost.Asio">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_asio/using.html"><img src="../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="boost_asio"></a>Boost.Asio</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Christopher</span> <span class="surname">Kohlhoff</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2003 - 2008 Christopher M. Kohlhoff</p></div>
+<div><div class="legalnotice">
+<a name="id692096"></a><p>
+ 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)
+ </p>
+</div></div>
+</div></div>
+<p>
+ Boost.Asio is a cross-platform C++ library for network programming that provides
+ developers with a consistent asynchronous I/O model using a modern C++ approach.
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"> <a class="link" href="boost_asio/using.html" title="Using Boost.Asio">Using Boost.Asio</a>
+ </span></dt>
+<dd><p>
+ How to use Boost.Asio in your applications. Includes information on library
+ dependencies and supported platforms.
+ </p></dd>
+<dt><span class="term"> <a class="link" href="boost_asio/tutorial.html" title="Tutorial">Tutorial</a>
+ </span></dt>
+<dd><p>
+ A tutorial that introduces the fundamental concepts required to use Boost.Asio,
+ and shows how to use Boost.Asio to develop simple client and server programs.
+ </p></dd>
+<dt><span class="term"> <a class="link" href="boost_asio/examples.html" title="Examples">Examples</a>
+ </span></dt>
+<dd><p>
+ Examples that illustrate the use of Boost.Asio in more complex applications.
+ </p></dd>
+<dt><span class="term"> <a class="link" href="boost_asio/reference.html" title="Reference">Reference</a>
+ </span></dt>
+<dd><p>
+ Detailed class and function reference.
+ </p></dd>
+<dt><span class="term"> <a class="link" href="boost_asio/design.html" title="Design Notes">Design</a>
+ </span></dt>
+<dd><p>
+ Rationale and design information for Boost.Asio.
+ </p></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: July 19, 2008 at 22:13:05 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_asio/using.html"><img src="../../doc/html/images/next.png" alt="Next"></a></div>
+</body>
 </html>
-

Modified: branches/proto/v4/doc/html/boost_staticassert.html
==============================================================================
--- branches/proto/v4/doc/html/boost_staticassert.html (original)
+++ branches/proto/v4/doc/html/boost_staticassert.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,17 +1,259 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 17. Boost.StaticAssert</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="signals/tests.html" title="Testsuite">
+<link rel="next" href="boost_staticassert/how.html" title="How it works">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="signals/tests.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boost_staticassert/how.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="boost_staticassert"></a>Chapter 17. Boost.StaticAssert</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">John</span> <span class="surname">Maddock</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Steve</span> <span class="surname">Cleary</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2000, 2005 Steve Cleary and John Maddock</p></div>
+<div><div class="legalnotice">
+<a name="id1989599"></a><p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">
+ http://www.boost.org/LICENSE_1_0.txt </a>)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"> Overview and Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section"> Use at namespace scope.</span></dt>
+<dt><span class="section"> Use at function scope</span></dt>
+<dt><span class="section"> Use at class scope</span></dt>
+<dt><span class="section"> Use in templates</span></dt>
+</dl></dd>
+<dt><span class="section"> How it works</span></dt>
+<dt><span class="section"> Test Programs</span></dt>
+</dl>
+</div>
+<p>
+ This manual is also available in <a href="http:svn.boost.org/svn/boost/sandbox/pdf/static_assert/release/static_assert.pdf" target="_top">printer
+ friendly PDF format</a>.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_staticassert.intro"></a> Overview and Tutorial</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> Use at namespace scope.</span></dt>
+<dt><span class="section"> Use at function scope</span></dt>
+<dt><span class="section"> Use at class scope</span></dt>
+<dt><span class="section"> Use in templates</span></dt>
+</dl></div>
+<p>
+ The header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">static_assert</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ supplies a single macro <code class="computeroutput"><span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code>,
+ which generates a compile time error message if the integral-constant-expression
+ <code class="computeroutput"><span class="identifier">x</span></code> is not true. In other words
+ it is the compile time equivalent of the assert macro; this is sometimes known
+ as a "compile-time-assertion", but will be called a "static
+ assertion" throughout these docs. Note that if the condition is <code class="computeroutput"><span class="keyword">true</span></code>, then the macro will generate neither code
+ nor data - and the macro can also be used at either namespace, class or function
+ scope. When used in a template, the static assertion will be evaluated at the
+ time the template is instantiated; this is particularly useful for validating
+ template parameters.
+ </p>
+<p>
+ One of the aims of <code class="computeroutput"><span class="identifier">BOOST_STATIC_ASSERT</span></code>
+ is to generate readable error messages. These immediately tell the user that
+ a library is being used in a manner that is not supported. While error messages
+ obviously differ from compiler to compiler, but you should see something like:
+ </p>
+<pre class="programlisting">
+<span class="identifier">Illegal</span> <span class="identifier">use</span> <span class="identifier">of</span> <span class="identifier">STATIC_ASSERTION_FAILURE</span><span class="special">&lt;</span><span class="keyword">false</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Which is intended to at least catch the eye!
+ </p>
+<p>
+ You can use <code class="computeroutput"><span class="identifier">BOOST_STATIC_ASSERT</span></code>
+ at any place where you can place a declaration, that is at class, function
+ or namespace scope, this is illustrated by the following examples:
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_staticassert.namespace"></a> Use at namespace scope.</h3></div></div></div>
+<p>
+ The macro can be used at namespace scope, if there is some requirement must
+ always be true; generally this means some platform specific requirement.
+ Suppose we require that <code class="computeroutput"><span class="keyword">int</span></code>
+ be at least a 32-bit integral type, and that <code class="computeroutput"><span class="keyword">wchar_t</span></code>
+ be an unsigned type. We can verify this at compile time as follows:
+ </p>
+<pre class="programlisting">
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">climits</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cwchar</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">limits</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">static_assert</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/boost_staticassert.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/boost_staticassert.html
- </body>
-</html>
+<span class="keyword">namespace</span> <span class="identifier">my_conditions</span> <span class="special">{</span>
+
+ <span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">digits</span> <span class="special">&gt;=</span> <span class="number">32</span><span class="special">);</span>
+ <span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">(</span><span class="identifier">WCHAR_MIN</span> <span class="special">&gt;=</span> <span class="number">0</span><span class="special">);</span>
+
+<span class="special">}</span> <span class="comment">// namespace my_conditions
+</span></pre>
+<p>
+ The use of the namespace my_conditions here requires some comment. The macro
+ <code class="computeroutput"><span class="identifier">BOOST_STATIC_ASSERT</span></code> works
+ by generating an typedef declaration, and since the typedef must have a name,
+ the macro generates one automatically by mangling a stub name with the value
+ of <code class="computeroutput"><span class="identifier">__LINE__</span></code>. When <code class="computeroutput"><span class="identifier">BOOST_STATIC_ASSERT</span></code> is used at either class
+ or function scope then each use of <code class="computeroutput"><span class="identifier">BOOST_STATIC_ASSERT</span></code>
+ is guaranteed to produce a name unique to that scope (provided you only use
+ the macro once on each line). However when used in a header at namespace
+ scope, that namespace can be continued over multiple headers, each of which
+ may have their own static assertions, and on the "same" lines,
+ thereby generating duplicate declarations. In theory the compiler should
+ silently ignore duplicate typedef declarations, however many do not do so
+ (and even if they do they are entitled to emit warnings in such cases). To
+ avoid potential problems, if you use <code class="computeroutput"><span class="identifier">BOOST_STATIC_ASSERT</span></code>
+ in a header and at namespace scope, then enclose them in a namespace unique
+ to that header.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_staticassert.function"></a> Use at function scope</h3></div></div></div>
+<p>
+ The macro is typically used at function scope inside template functions,
+ when the template arguments need checking. Imagine that we have an iterator-based
+ algorithm that requires random access iterators. If the algorithm is instantiated
+ with iterators that do not meet our requirements then an error will be generated
+ eventually, but this may be nested deep inside several templates, making
+ it hard for the user to determine what went wrong. One option is to add a
+ static assertion at the top level of the template, in that case if the condition
+ is not met, then an error will be generated in a way that makes it reasonably
+ obvious to the user that the template is being misused.
+ </p>
+<pre class="programlisting">
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iterator</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">static_assert</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RandomAccessIterator</span> <span class="special">&gt;</span>
+<span class="identifier">RandomAccessIterator</span> <span class="identifier">foo</span><span class="special">(</span><span class="identifier">RandomAccessIterator</span> <span class="identifier">from</span><span class="special">,</span>
+ <span class="identifier">RandomAccessIterator</span> <span class="identifier">to</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// this template can only be used with
+</span> <span class="comment">// random access iterators...
+</span> <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span>
+ <span class="identifier">RandomAccessIterator</span> <span class="special">&gt;::</span><span class="identifier">iterator_category</span> <span class="identifier">cat</span><span class="special">;</span>
+ <span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">(</span>
+ <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special">&lt;</span>
+ <span class="identifier">cat</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">random_access_iterator_tag</span><span class="special">&amp;&gt;::</span><span class="identifier">value</span><span class="special">));</span>
+ <span class="comment">//
+</span> <span class="comment">// detail goes here...
+</span> <span class="keyword">return</span> <span class="identifier">from</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ A couple of footnotes are in order here: the extra set of parenthesis around
+ the assert, is to prevent the comma inside the <code class="computeroutput"><span class="identifier">is_convertible</span></code>
+ template being interpreted by the preprocessor as a macro argument separator;
+ the target type for <code class="computeroutput"><span class="identifier">is_convertible</span></code>
+ is a reference type, as some compilers have problems using <code class="computeroutput"><span class="identifier">is_convertible</span></code> when the conversion is via
+ a user defined constructor (in any case there is no guarantee that the iterator
+ tag classes are copy-constructible).
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_staticassert.class"></a> Use at class scope</h3></div></div></div>
+<p>
+ The macro is typically used inside classes that are templates. Suppose we
+ have a template-class that requires an unsigned integral type with at least
+ 16-bits of precision as a template argument, we can achieve this using something
+ like this:
+ </p>
+<pre class="programlisting">
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">climits</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">static_assert</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">UnsignedInt</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">myclass</span>
+<span class="special">{</span>
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">((</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">UnsignedInt</span><span class="special">&gt;::</span><span class="identifier">digits</span> <span class="special">&gt;=</span> <span class="number">16</span><span class="special">)</span>
+ <span class="special">&amp;&amp;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">UnsignedInt</span><span class="special">&gt;::</span><span class="identifier">is_specialized</span>
+ <span class="special">&amp;&amp;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">UnsignedInt</span><span class="special">&gt;::</span><span class="identifier">is_integer</span>
+ <span class="special">&amp;&amp;</span> <span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">UnsignedInt</span><span class="special">&gt;::</span><span class="identifier">is_signed</span><span class="special">);</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">/* details here */</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_staticassert.templates"></a> Use in templates</h3></div></div></div>
+<p>
+ Normally static assertions when used inside a class or function template,
+ will not be instantiated until the template in which it is used is instantiated.
+ However, there is one potential problem to watch out for: if the static assertion
+ is not dependent upon one or more template parameters, then the compiler
+ is permitted to evaluate the static assertion at the point it is first seen,
+ irrespective of whether the template is ever instantiated, for example:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">must_not_be_instantiated</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">(</span><span class="keyword">false</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Will produce a compiler error with some compilers (for example Intel 8.1
+ or gcc 3.4), regardless of whether the template is ever instantiated. A workaround
+ in cases like this is to force the assertion to be dependent upon a template
+ parameter:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">must_not_be_instantiated</span>
+<span class="special">{</span>
+ <span class="comment">// this will be triggered if this type is instantiated
+</span> <span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">(</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span> <span class="special">==</span> <span class="number">0</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: February 21, 2008 at 08:49:59 -0800</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="signals/tests.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boost_staticassert/how.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: branches/proto/v4/doc/html/boost_tr1.html
==============================================================================
--- branches/proto/v4/doc/html/boost_tr1.html (original)
+++ branches/proto/v4/doc/html/boost_tr1.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,17 +1,124 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/boost_tr1.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/boost_tr1.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 20. Boost.TR1</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="thread/acknowledgements.html" title="Acknowledgments">
+<link rel="next" href="boost_tr1/usage.html" title="Usage">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="thread/acknowledgements.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boost_tr1/usage.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="boost_tr1"></a>Chapter 20. Boost.TR1</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">John</span> <span class="surname">Maddock</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2005 John Maddock</p></div>
+<div><div class="legalnotice">
+<a name="id2080352"></a><p>
+ 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)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"> Introduction</span></dt>
+<dt><span class="section"> Usage</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_tr1/usage.html#boost_tr1.usage.native"> Whether to use Your Native TR1
+ Library</a></span></dt>
+<dt><span class="section"> Header Include Style</span></dt>
+<dt><span class="section"> Writing Code</span></dt>
+</dl></dd>
+<dt><span class="section"> Configuration</span></dt>
+<dt><span class="section"> TR1 By Subject</span></dt>
+<dd><dl>
+<dt><span class="section"> Reference Wrappers.</span></dt>
+<dt><span class="section"> Smart Pointers.</span></dt>
+<dt><span class="section"> Class template result_of.</span></dt>
+<dt><span class="section"> Function template mem_fn.</span></dt>
+<dt><span class="section"> Function Object Binders.</span></dt>
+<dt><span class="section"><a href="boost_tr1/subject_list.html#boost_tr1.subject_list.function"> Polymorphic function
+ wrappers.</a></span></dt>
+<dt><span class="section"> Type Traits.</span></dt>
+<dt><span class="section"><a href="boost_tr1/subject_list.html#boost_tr1.subject_list.random"> Random Number Generators
+ and Distributions.</a></span></dt>
+<dt><span class="section"> Tuples.</span></dt>
+<dt><span class="section"> Tuple Interface to std::pair.</span></dt>
+<dt><span class="section"> Fixed Size Array.</span></dt>
+<dt><span class="section"> Hash Function Objects.</span></dt>
+<dt><span class="section"> Regular Expressions.</span></dt>
+<dt><span class="section"><a href="boost_tr1/subject_list.html#boost_tr1.subject_list.complex"> Complex Number Algorithm
+ Overloads.</a></span></dt>
+<dt><span class="section"><a href="boost_tr1/subject_list.html#boost_tr1.subject_list.complex_trig"> Complex Number
+ Additional Algorithms.</a></span></dt>
+</dl></dd>
+<dt><span class="section"> TR By Subject: Unsupported Features</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_tr1/unsupported.html#boost_tr1.unsupported.special"> Mathematical Special
+ Functions.</a></span></dt>
+<dt><span class="section"><a href="boost_tr1/unsupported.html#boost_tr1.unsupported.unordered_set"> Unordered Associative
+ Set (Hash Table).</a></span></dt>
+<dt><span class="section"><a href="boost_tr1/unsupported.html#boost_tr1.unsupported.unordered_map"> Unordered Associative
+ Map (Hash Table).</a></span></dt>
+</dl></dd>
+<dt><span class="section"> TR1 By Header</span></dt>
+<dd><dl>
+<dt><span class="section"> <array></span></dt>
+<dt><span class="section"> <cmath></span></dt>
+<dt><span class="section"> <complex></span></dt>
+<dt><span class="section"> <functional></span></dt>
+<dt><span class="section"> <memory></span></dt>
+<dt><span class="section"> <random></span></dt>
+<dt><span class="section"> <regex></span></dt>
+<dt><span class="section"> <tuple></span></dt>
+<dt><span class="section"> <type_traits></span></dt>
+<dt><span class="section"> <unordered_map></span></dt>
+<dt><span class="section"> <unordered_set></span></dt>
+<dt><span class="section"> <utility></span></dt>
+</dl></dd>
+<dt><span class="section"> Implementation</span></dt>
+<dt><span class="section"> Testing</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_tr1.intro"></a><a class="link" href="boost_tr1.html#boost_tr1.intro" title="Introduction"> Introduction</a>
+</h2></div></div></div>
+<p>
+ The TR1 library provides an implementation of the C++ Technical Report on Standard
+ Library Extensions. This library does not itself implement the TR1 components,
+ rather it's a thin wrapper that will include your standard library's TR1 implementation
+ (if it has one), otherwise it will include the Boost Library equivalents, and
+ import them into namespace <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span></code>.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: May 31, 2008 at 12:31:01 -0700</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="thread/acknowledgements.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boost_tr1/usage.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>
-

Modified: branches/proto/v4/doc/html/boostbook.html
==============================================================================
--- branches/proto/v4/doc/html/boostbook.html (original)
+++ branches/proto/v4/doc/html/boostbook.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,130 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/boostbook.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/boostbook.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 26. The BoostBook Documentation Format</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="tools.html" title="Part II. Boost Tools">
+<link rel="prev" href="tools.html" title="Part II. Boost Tools">
+<link rel="next" href="boostbook/getting/started.html" title="Getting Started">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tools.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="tools.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boostbook/getting/started.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="boostbook"></a>Chapter 26. The BoostBook Documentation Format</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Douglas</span> <span class="surname">Gregor</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2003-2005 Douglas Gregor</p></div>
+<div><div class="legalnotice">
+<a name="id2273474"></a><p>Permission to copy, use, sell and distribute this software
+ is granted provided this copyright notice appears in all copies.
+ Permission to modify the code and to distribute modified code is
+ granted provided this copyright notice appears in all copies,
+ and a notice that the code was modified is included with the
+ copyright notice. </p>
+<p> This software is provided "as is" without express or
+ implied warranty, and with no claim as to its suitability for
+ any purpose. </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Getting Started</span></dt>
+<dd><dl>
+<dt><span class="section">Automatic setup for Unix-like systems</span></dt>
+<dt><span class="section">Manual setup for all systems</span></dt>
+<dt><span class="section">Running BoostBook</span></dt>
+<dt><span class="section">Troubleshooting</span></dt>
+</dl></dd>
+<dt><span class="section">Documenting libraries</span></dt>
+<dd><dl>
+<dt><span class="section">Defining a BoostBook library</span></dt>
+<dt><span class="section">From HTML to BoostBook</span></dt>
+<dt><span class="section">Sectioning in BoostBook</span></dt>
+</dl></dd>
+<dt><span class="section">Bringing Together a BoostBook Document</span></dt>
+<dd><dl><dt><span class="section">Linking in BoostBook</span></dt></dl></dd>
+<dt><span class="section">Reference</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boostbook.introduction"></a>Introduction</h2></div></div></div>
+<p>The BoostBook documentation format is an extension of DocBook, an SGML- or
+ XML-based format for describing documentation. BoostBook augments
+ DocBook with semantic markup that aids in the documentation of C++
+ libraries, specifically the Boost C++ libraries, by
+ providing the ability to express and refer to C++ constructs such
+ as namespaces, classes, overloaded functions, templates, and
+ specializations.</p>
+<p>
+ BoostBook offers additional features more specific to its use for
+ documenting the <a href="http://www.boost.org" target="_top">Boost C++
+ libraries</a>. These features are intended to eliminate or
+ reduce the need for duplication of information and to aid in
+ documenting portions of Boost that might otherwise not be
+ documented. Examples of Boost-centric features include:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li><p><span class="bold"><strong>Testsuites</strong></span>:
+ Testsuites in Boost are created by writing an appropriate
+ Jamfile and including that Jamfile in
+ <code class="filename">status/Jamfile</code>. If the testsuites are
+ documented (<a href="http://www.boost.org/libs/multi_array/doc/test_cases.html" target="_top">as
+ in the MultiArray library</a>), the documentation is
+ maintained separately from the testcase Jamfile, leading to
+ duplication of information and the possibility of having the
+ documentation out of sync with the Jamfile. BoostBook
+ contains elements that describe a testsuite for both
+ purposes: the BoostBook stylesheets can generate
+ documentation for the testcases and also generate an
+ appropriate Jamfile to integrate the testcases with the
+ regression testing system.</p></li>
+<li>
+<p><span class="bold"><strong>Example programs</strong></span>:
+ Example programs in documentation need to be duplicated in
+ testcases to ensure that the examples compile and execute
+ correctly. Keeping the two copies in sync is a tedious and
+ error-prone task. For instance, the following code snippet
+ persisted for six months:</p>
+<pre class="programlisting">
+std::cout &lt;&lt; f(5, 3) &gt;&gt; std::endl;
+</pre>
+<p>The BoostBook format allows testcases to be generated
+ by weaving together program fragments from example programs
+ in the documentation. This capability is integrated with
+ testsuite generation so that example programs are normal
+ tests in BoostBook.</p>
+</li>
+</ul></div>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tools.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="tools.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boostbook/getting/started.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/date_time.html
==============================================================================
--- branches/proto/v4/doc/html/date_time.html (original)
+++ branches/proto/v4/doc/html/date_time.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,236 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/date_time.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/date_time.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 5. Boost.Date_Time</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="SignedInteger.html" title="Concept SignedInteger">
+<link rel="next" href="date_time/examples/general_usage_examples.html" title="General Usage Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="SignedInteger.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="date_time/examples/general_usage_examples.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="date_time"></a>Chapter 5. Boost.Date_Time</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Jeff</span> <span class="surname">Garland</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2001-2005 CrystalClear Software, Inc</p></div>
+<div><div class="legalnotice">
+<a name="id893362"></a><p>Subject to the Boost Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)</p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Conceptual</span></dt>
+<dd><dl>
+<dt><span class="section">Motivation</span></dt>
+<dt><span class="section">Domain Concepts</span></dt>
+<dt><span class="section">Design Concepts</span></dt>
+</dl></dd>
+<dt><span class="section">General Usage Examples</span></dt>
+<dt><span class="section">Gregorian</span></dt>
+<dd><dl>
+<dt><span class="section">Date</span></dt>
+<dt><span class="section">Date Duration (aka Days)</span></dt>
+<dt><span class="section">Date Period</span></dt>
+<dt><span class="section">Date Iterators</span></dt>
+<dt><span class="section">Date Generators/Algorithms</span></dt>
+<dt><span class="section">Gregorian Calendar</span></dt>
+</dl></dd>
+<dt><span class="section">Posix Time</span></dt>
+<dd><dl>
+<dt><span class="section">Ptime</span></dt>
+<dt><span class="section">Time Duration</span></dt>
+<dt><span class="section">Time Period</span></dt>
+<dt><span class="section">Time Iterators</span></dt>
+</dl></dd>
+<dt><span class="section">Local Time</span></dt>
+<dd><dl>
+<dt><span class="section">Time Zone (abstract)</span></dt>
+<dt><span class="section">Posix Time Zone</span></dt>
+<dt><span class="section">Time Zone Database</span></dt>
+<dt><span class="section">Custom Time Zone</span></dt>
+<dt><span class="section">Local Date Time</span></dt>
+<dt><span class="section">Local Time Period</span></dt>
+</dl></dd>
+<dt><span class="section">Date Time Input/Output</span></dt>
+<dd><dl>
+<dt><span class="section">Format Flags</span></dt>
+<dt><span class="section">Date Facet</span></dt>
+<dt><span class="section">Date Input Facet</span></dt>
+<dt><span class="section">Time Facet</span></dt>
+<dt><span class="section">Time Input Facet</span></dt>
+<dt><span class="section">Date Time Formatter/Parser Objects</span></dt>
+<dt><span class="section">Date Time IO Tutorial</span></dt>
+</dl></dd>
+<dt><span class="section">Serialization</span></dt>
+<dt><span class="section">Details</span></dt>
+<dd><dl>
+<dt><span class="section">Calculations</span></dt>
+<dt><span class="section">Design Goals</span></dt>
+<dt><span class="section">Tradeoffs: Stability, Predictability, and Approximations</span></dt>
+<dt><span class="section">Terminology</span></dt>
+<dt><span class="section">References</span></dt>
+<dt><span class="section">Build-Compiler Information</span></dt>
+<dt><span class="section">Tests</span></dt>
+<dt><span class="section">Change History</span></dt>
+<dt><span class="section">Acknowledgements</span></dt>
+</dl></dd>
+<dt><span class="section">Examples</span></dt>
+<dd><dl>
+<dt><span class="section">Dates as Strings</span></dt>
+<dt><span class="section">Days Alive</span></dt>
+<dt><span class="section">Days Between New Years</span></dt>
+<dt><span class="section">Last Day of the Months</span></dt>
+<dt><span class="section">Localization Demonstration</span></dt>
+<dt><span class="section">Date Period Calculations</span></dt>
+<dt><span class="section">Print Holidays</span></dt>
+<dt><span class="section">Print Month</span></dt>
+<dt><span class="section">Month Adding</span></dt>
+<dt><span class="section">Time Math</span></dt>
+<dt><span class="section">Print Hours</span></dt>
+<dt><span class="section">Local to UTC Conversion</span></dt>
+<dt><span class="section">Time Periods</span></dt>
+<dt><span class="section">Simple Time Zones</span></dt>
+<dt><span class="section">Daylight Savings Calc Rules</span></dt>
+<dt><span class="section">Flight Time Example</span></dt>
+<dt><span class="section">Seconds Since Epoch</span></dt>
+</dl></dd>
+<dt><span class="section">Library Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Date Time Reference</span></dt>
+<dt><span class="section">Gregorian Reference</span></dt>
+<dt><span class="section">Posix Time Reference</span></dt>
+<dt><span class="section">Local Time Reference</span></dt>
+</dl></dd>
+</dl>
+</div>
+<h3>
+<a name="id893383"></a>Introduction</h3>
+<p>
+ A set of date-time libraries based on generic programming concepts.
+ </p>
+<p>This documentation is also available in PDF format. It can be found at:
+ </p>
+<table class="simplelist" border="0" summary="Simple list"><tr><td>http://www.crystalclearsoftware.com/libraries/date_time/date_time.pdf</td></tr></table>
+<p>
+ In addition, a full doxygen reference can be found at:
+ </p>
+<table class="simplelist" border="0" summary="Simple list"><tr><td>http://www.crystalclearsoftware.com/libraries/date_time/ref_guide/index.html</td></tr></table>
+<p>
+ The most current version of the documentation can be found at:
+ </p>
+<table class="simplelist" border="0" summary="Simple list"><tr><td>http://www.crystalclearsoftware.com/libraries/date_time/index.html</td></tr></table>
+<p>
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="date_time.conceptual"></a>Conceptual</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Motivation</span></dt>
+<dt><span class="section">Domain Concepts</span></dt>
+<dt><span class="section">Design Concepts</span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="Motivation"></a>Motivation</h3></div></div></div>
+<p>
+ The motivation for this library comes from working with and helping build several date-time libraries on several projects. Date-time libraries provide fundamental infrastructure for most development projects. However, most of them have limitations in their ability to calculate, format, convert, or perform some other functionality. For example, most libraries do not correctly handle leap seconds, provide concepts such as infinity, or provide the ability to use high resolution or network time sources. These libraries also tend to be rigid in their representation of dates and times. Thus customized policies for a project or subproject are not possible.
+ </p>
+<p>
+ Programming with dates and times should be almost as simple and natural as programming with strings and integers. Applications with lots of temporal logic can be radically simplified by having a robust set of operators and calculation capabilities. Classes should provide the ability to compare dates and times, add lengths or time durations, retrieve dates and times from clocks, and work naturally with date and time intervals.
+ </p>
+<p>
+ Another motivation for development of the library was to apply modern C++ library design techniques to the date-time domain. Really to build a framework for the construction of building temporal types. For example, by providing iterators and traits classes to control fundamental properties of the library. To the authors knowledge this library is the only substantial attempt to apply modern C++ to a date-time library.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.domain_concepts"></a>Domain Concepts</h3></div></div></div>
+<p>
+ The date time domain is rich in terminology and problems.
+ The following is a brief introduction to the concepts you
+ will find reflected in the library.
+ </p>
+<p>
+ The library supports 3 basic temporal types:
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">
+<span class="strong"><strong>Time Point</strong></span> -- Specifier
+ for a location in the time continuum.
+ </li>
+<li style="list-style-type: disc">
+<span class="strong"><strong>Time Duration</strong></span> -- A
+ length of time unattached to any point on the time continuum.
+ </li>
+<li style="list-style-type: disc">
+<span class="strong"><strong>Time Interval</strong></span> -- A duration
+ of time attached to a specific point in the time continuum.
+ Also known as a time period.
+ </li>
+</ul></div>
+<p>
+ </p>
+<p>
+ Each of these temporal types has a <span class="strong"><strong>Resolution</strong></span> which is defined by the smallest representable duration. A <span class="strong"><strong>Time system</strong></span> provides all these categories of temporal types as well as the rules for labeling and calculating with time points. <span class="strong"><strong>Calendar Systems</strong></span> are simply time systems with a maximum resolution of one day. The <span class="strong"><strong>Gregorian</strong></span> system is the most widely used calendar system today (the ISO system is basically a derivative of this). However, there are many other calendar systems as well. <span class="strong"><strong>UTC (Coordinated Universal Time)</strong></span> is a widely used civil time system. UTC is adjusted for earth rotation at longitude 0 by the use of leap seconds (This is not predictable, only as necessary). Most <span class="strong"><strong>local time</strong></span> systems are based on UTC but are also adjusted for ea
rth rotation so that daylight hours are similar everywhere. In addition, some local times include <span class="strong"><strong>daylight savings time (DST)</strong></span> adjustments to shift the daylight hours during the summer.
+ </p>
+<p>
+ A <span class="strong"><strong>Clock Device</strong></span> is software component (tied to some hardware) that provides the current date or time with respect to a time system. A clock can measure the current time to a known resolution which may be higher or lower than a particular time representation.
+ </p>
+<p>
+ The library provides support for calculating with dates and times. However, time calculations are not quite the same as calculating with integers. If you are serious about the accuracy of your time calculations need to read about <a class="link" href="date_time/details.html#date_time.tradeoffs" title="Tradeoffs: Stability, Predictability, and Approximations">Stability, Predictability, and Approximations</a>.
+ </p>
+<p>
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc"><a class="link" href="date_time/details.html#date_time.terminology" title="Terminology">Basic Terminology</a></li>
+<li style="list-style-type: disc"><a class="link" href="date_time/details.html#date_time.calculations" title="Calculations">Calculations</a></li>
+<li style="list-style-type: disc"><a class="link" href="date_time/details.html#date_time.tradeoffs" title="Tradeoffs: Stability, Predictability, and Approximations">Stability, Predictability, and Approximations</a></li>
+<li style="list-style-type: disc"><a class="link" href="date_time/details.html#date_time.references" title="References">References</a></li>
+</ul></div>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.design_concepts"></a>Design Concepts</h3></div></div></div>
+<p>
+ A large part of the genesis of this library has been the observation that few date-time libraries are built in a fashion that allows customization and extension. A typical example, the calendar logic is built directly into the date class. Or the clock retrieval functions are built directly into the time class. These design decisions usually make it impossible to extend or change the library behavior. At a more fundamental level, there are usually assumptions about the resolution of time representation or the gregorian calendar.
+ </p>
+<p>
+ Often times, the result is that a project must settle for a less than complete library because of a requirement for high resolution time representation or other assumptions that do not match the implementation of the library. This is extremely unfortunate because development of a library of this sort is far from a trivial task.
+ </p>
+<p>
+ While the design is far from perfect the current design is far more flexible than any date-time library the author is aware of. It is expected that the various aspects of extensibility will be better documented in future versions. Information about the design goals of the library is <a class="link" href="date_time/details.html#date_time.design_goals" title="Design Goals">summarized here</a>.
+ </p>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: June 12, 2005 at 13:53:10 -0700</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="SignedInteger.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="date_time/examples/general_usage_examples.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/date_time/date_time_io.html
==============================================================================
--- branches/proto/v4/doc/html/date_time/date_time_io.html (original)
+++ branches/proto/v4/doc/html/date_time/date_time_io.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,17 +1,2507 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Date Time Input/Output</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="../date_time.html" title="Chapter 5. Boost.Date_Time">
+<link rel="prev" href="local_time.html" title="Local Time">
+<link rel="next" href="serialization.html" title="Serialization">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="local_time.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../date_time.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="serialization.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="date_time.date_time_io"></a>Date Time Input/Output</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Format Flags</span></dt>
+<dt><span class="section">Date Facet</span></dt>
+<dt><span class="section">Date Input Facet</span></dt>
+<dt><span class="section">Time Facet</span></dt>
+<dt><span class="section">Time Input Facet</span></dt>
+<dt><span class="section">Date Time Formatter/Parser Objects</span></dt>
+<dt><span class="section">Date Time IO Tutorial</span></dt>
+</dl></div>
+<h3>
+<a name="id911575"></a>Date Time IO System</h3>
+<p>
+ <a class="link" href="date_time_io.html#streaming_exceptions">Exception Handling on Streams</a>
+ </p>
+<p>As of version 1.33, the date_time library utilizes a new IO streaming system. This new system gives the user great control over how dates and times can be represented. The customization options can be broken down into two groups: format flags and string elements. Format flags provide flexibility in the order of the date elements as well as the type. Customizing the string elements allows the replacement of built in strings from month names, weekday names, and other strings used in the IO.</p>
+<p>The output system is based on a date_facet (derived from std::facet), while the input system is based on a date_input_facet (also derived from std::facet). The time and local_time facets are derived from these base types. The output system utilizes three formatter objects, whereas the input system uses four parser objects. These formatter and parser objetcs are also customizable.</p>
+<p>It is important to note, that while all the examples shown here use narrow streams, there are wide stream facets available as well (see <a class="link" href="date_time_io.html#io_objects_table">IO Objects</a> for a complete list).</p>
+<p>It should be further noted that not all compilers are capable of using this IO system. For those compilers the IO system used in previous <code class="computeroutput">date_time</code> versions is still available. The "legacy IO" is automatically selected for these compilers, however, the legacy IO system can be manually selected by defining <code class="computeroutput">USE_DATE_TIME_PRE_1_33_FACET_IO</code>. See the <a class="link" href="details.html#date_time.buildinfo" title="Build-Compiler Information">Build-Compiler Information</a> for more information.</p>
+<a name="streaming_exceptions"></a><h6>
+<a name="id911626"></a>Exception Handling on Streams</h6>
+<p>When an error occurs during the input streaming process, the <code class="computeroutput">std::ios_base::failbit</code> will (always) be set on the stream. It is also possible to have exceptions thrown when an error occurs. To "turn on" these exceptions, call the stream's <code class="computeroutput">exceptions</code> function with a parameter of <code class="computeroutput">std::ios_base::failbit</code>.</p>
+<pre class="screen">// "Turning on" exceptions
+date d(not_a_date_time);
+std::stringstream ss;
+ss.exceptions(std::ios_base::failbit);
+ss.str("204-Jan-01");
+ss &gt;&gt; d; // throws bad_year exception AND sets failbit on stream</pre>
+<h6>
+<a name="id911654"></a>A simple example of this new system:</h6>
+<pre class="screen">//example to customize output to be "LongWeekday LongMonthname day, year"
+// "%A %b %d, %Y"
+date d(2005,Jun,25);
+date_facet* facet(new date_facet("%A %B %d, %Y"));
+std::cout.imbue(std::locale(std::cout.getloc(), facet));
+std::cout &lt;&lt; d &lt;&lt; std::endl;
+// "Saturday June 25, 2005"</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.format_flags"></a>Format Flags</h3></div></div></div>
+<p>Many of the format flags this new system uses for output are those used by <code class="computeroutput">strftime(...)</code>, but not all. Some new flags have been added, and others overridden. The input system supports only specific flags, therefore, not all flags that work for output will work with input (we are currently working to correct this situation).</p>
+<p>The following tables list the all the flags available for both date_time IO as well as strftime. Format flags marked with a single asterisk (*) have a behavior unique to date_time. Those flags marked with an exclamation point (!) are not usable for input (at this time). The first table is for dates, and the second table is for times.
+ </p>
+<p>
+ <a name="date_time_io.date_format_flags"></a>
+ Date Facet Format Flags
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Format Specifier</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%a</pre></td>
+<td>Abbreviated weekday name</td>
+</tr>
+<tr><td><pre class="screen">"Mon" =&gt; Monday</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%A</pre></td>
+<td>Long weekday name</td>
+</tr>
+<tr><td><pre class="screen">"Monday"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%b</pre></td>
+<td>Abbreviated month name</td>
+</tr>
+<tr><td><pre class="screen">"Feb" =&gt; February</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%B</pre></td>
+<td>Full month name</td>
+</tr>
+<tr><td><pre class="screen">"February"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%c !</pre></td>
+<td>The preferred date and time representation for the current locale.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%C !</pre></td>
+<td>The century number (year/100) as a 2-digit integer.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%d</pre></td>
+<td>Day of the month as decimal 01 to 31</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%D !</pre></td>
+<td>Equivalent to %m/%d/%y</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%e</pre></td>
+<td>Like %d, the day of the month as a decimal number, but a leading zero is replaced by a space</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%G !</pre></td>
+<td>This has the same format and value as %y, except that if the ISO week number belongs to the previous or next year, that year is used instead.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%g !</pre></td>
+<td>Like %G, but without century.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%h !</pre></td>
+<td> Equivalent to %b</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%j</pre></td>
+<td>Day of year as decimal from 001 to 366 for leap years, 001 - 365 for non-leap years.</td>
+</tr>
+<tr><td><pre class="screen">"060" =&gt; Feb-29</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%m</pre></td>
+<td>Month name as a decimal 01 to 12</td>
+</tr>
+<tr><td><pre class="screen">"01" =&gt; January</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%u !</pre></td>
+<td>The day of the week as a decimal, range 1 to 7, Monday being 1.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%U</pre></td>
+<td>The week number of the current year as a decimal number, range 00 to 53, starting with the first Sunday as the first day of week 01. In 2005, Jan 1st falls on a Saturday, so therefore it falls within week 00 of 2005 (week 00 spans 2004-Dec-26 to 2005-Jan-01. This also happens to be week 53 of 2004).</td>
+</tr>
+<tr><td><pre class="screen">date d(2005, Jan, 1); // Saturday
+ // with format %U
+ ss &lt;&lt; d; // "00"
+ d += day(1); // Sunday
+ ss &lt;&lt; d; // "01" beginning of week 1</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%V !</pre></td>
+<td>The ISO 8601:1988 week number of the current year as a decimal number, range 01 to 53, where week 1 is the first week that has at least 4 days in the current year, and with Monday as the first day of the week.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%w</pre></td>
+<td>Weekday as decimal number 0 to 6</td>
+</tr>
+<tr><td><pre class="screen">"0" =&gt; Sunday</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%W</pre></td>
+<td>Week number 00 to 53 where Monday is first day of week 1</td>
+</tr>
+<tr><td><pre class="screen">date d(2005, Jan, 2); // Sunday
+ // with format %W
+ ss &lt;&lt; d; // "00"
+ d += day(1); // Monday
+ ss &lt;&lt; d; // "01" beginning of week 1</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%x</pre></td>
+<td>Implementation defined date format from the locale.</td>
+</tr>
+<tr><td><pre class="screen">date d(2005,Oct,31);
+ date_facet* f = new date_facet("%x");
+
+ locale loc = locale(locale("en_US"), f);
+ cout.imbue(loc);
+ cout &lt;&lt; d; // "10/31/2005"
+
+ loc = locale(locale("de_DE"), f);
+ cout.imbue(loc);
+ cout &lt;&lt; d; // "31.10.2005"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%y</pre></td>
+<td>Two digit year</td>
+</tr>
+<tr><td><pre class="screen">"05" =&gt; 2005</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%Y</pre></td>
+<td>Four digit year</td>
+</tr>
+<tr><td><pre class="screen">"2005"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%Y-%b-%d</pre></td>
+<td>Default date format</td>
+</tr>
+<tr><td><pre class="screen">"2005-Apr-01"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%Y%m%d</pre></td>
+<td>ISO format</td>
+</tr>
+<tr><td><pre class="screen">"20050401"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%Y-%m-%d</pre></td>
+<td>ISO extended format</td>
+</tr>
+<tr><td><pre class="screen">"2005-04-01"</pre></td></tr>
+</tbody>
+</table></div>
+<p>
 
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/date_time/date_time_io.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/date_time/date_time_io.html
- </body>
-</html>
 
+ <a name="date_time_io.time_format_flags"></a>
+ Time Facet Format Flags
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Format Specifier</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%- *!</pre></td>
+<td>Placeholder for the sign of a duration. Only displays when the duration is negative.</td>
+</tr>
+<tr><td><pre class="screen">"-13:15:16"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%+ *!</pre></td>
+<td>Placeholder for the sign of a duration. Always displays for both positive and negative.</td>
+</tr>
+<tr><td><pre class="screen">"+13:15:16"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%f</pre></td>
+<td>Fractional seconds are always used, even when their value is zero</td>
+</tr>
+<tr><td><pre class="screen">"13:15:16.000000"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%F *</pre></td>
+<td>Fractional seconds are used only when their value is not zero.</td>
+</tr>
+<tr><td><pre class="screen">"13:15:16"
+ "05:04:03.001234"
+ </pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%I !</pre></td>
+<td>The hour as a decimal number using a 12-hour clock</td>
+</tr>
+<tr><td> </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%k !</pre></td>
+<td>The hour (24-hour clock) as a decimal number (range 0 to 23); single digits are preceded by a blank.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%l !</pre></td>
+<td>The hour (12-hour clock) as a decimal number (range 1 to 12); single digits are preceded by a blank.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%p !</pre></td>
+<td>Either `AM' or `PM' according to the given time value, or the corresponding strings for the current locale.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%P !</pre></td>
+<td>Like %p but in lowercase: `am' or `pm' or a corresponding string for the current locale.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%r !</pre></td>
+<td>The time in a.m. or p.m. notation. In the POSIX locale this is equivalent to `%I:%M:%S %p'</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%R !</pre></td>
+<td>The time in 24-hour notation (%H:%M)</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%s *</pre></td>
+<td>Seconds with fractional seconds.</td>
+</tr>
+<tr><td><pre class="screen">"59.000000"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%S</pre></td>
+<td>Seconds only</td>
+</tr>
+<tr><td><pre class="screen">"59"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%T !</pre></td>
+<td>The time in 24-hour notation (%H:%M:%S)</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%q</pre></td>
+<td>ISO time zone (output only). This flag is ignored when using the time_facet with a ptime.</td>
+</tr>
+<tr><td><pre class="screen">"-0700" // Mountain Standard Time</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%Q</pre></td>
+<td>ISO extended time zone (output only). This flag is ignored when using the time_facet with a ptime.</td>
+</tr>
+<tr><td><pre class="screen">"-05:00" // Eastern Standard Time</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%z *!</pre></td>
+<td>Abbreviated time zone (output only). This flag is ignored when using the time_facet with a ptime.</td>
+</tr>
+<tr><td><pre class="screen">"MST" // Mountain Standard Time</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%Z *!</pre></td>
+<td>Full time zone name (output only). This flag is ignored when using the time_facet with a ptime.</td>
+</tr>
+<tr><td><pre class="screen">"EDT" // Eastern Daylight Time</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%ZP *</pre></td>
+<td>Posix time zone string (available to both input and output). This flag is ignored when using the time_facet with a ptime. For complete details on posix time zone strings, see <a class="link" href="local_time.html#date_time.local_time.posix_time_zone" title="Posix Time Zone">posix_time_zone class</a>.</td>
+</tr>
+<tr><td><pre class="screen">"EST-05EDT+01,M4.1.0/02:00,M10.5.0/02:00"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%x %X</pre></td>
+<td>Implementation defined date/time format from the locale.</td>
+</tr>
+<tr><td><pre class="screen">date d(2005,Oct,31);
+ ptime pt(d, hours(20));
+ time_facet* f = new time_facet("%x %X");
+
+ locale loc = locale(locale("en_US"), f);
+ cout.imbue(loc);
+ cout &lt;&lt; pt; // "10/31/2005 08:00:00 PM"
+
+ loc = locale(locale("de_DE"), f);
+ cout.imbue(loc);
+ cout &lt;&lt; pt; // "31.10.2005 20:00:00"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%Y%m%dT%H%M%S%F%q</pre></td>
+<td>ISO format</td>
+</tr>
+<tr><td><pre class="screen">"20051015T131211-0700"
+ // Oct 15, 2005 13:12:11 MST
+ </pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%Y-%m-%d %H:%M:%S%F%Q</pre></td>
+<td>Extended ISO format</td>
+</tr>
+<tr><td><pre class="screen">"2005-10-15 13:12:11-07:00"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%Y-%b-%d %H:%M:%S%F %z</pre></td>
+<td>Default format used when outputting ptime and local_date_time.</td>
+</tr>
+<tr><td><pre class="screen">"2005-Oct-15 13:12:11 MST"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%Y-%b-%d %H:%M:%S%F %ZP</pre></td>
+<td>Default format used when inputting ptime and local_date_time.</td>
+</tr>
+<tr><td><pre class="screen">"2005-Oct-15 13:12:11 MST-07"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%-%H:%M:%S%F !</pre></td>
+<td>Default time_duration format for output. Sign will only be displayed for negative durations.</td>
+</tr>
+<tr><td><pre class="screen">"-13:14:15.003400"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">%H:%M:%S%F</pre></td>
+<td>Default time_duration format for input.</td>
+</tr>
+<tr><td><pre class="screen">"13:14:15.003400"</pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<p>* Signifies flags that have a behavior unique to <code class="computeroutput">date_time</code>.</p>
+<p>! Signifies flags that currently do not work for input.</p>
+</div>
+<p>The following table lists the available facets.</p>
+<a name="io_objects_table"></a><h4>
+<a name="id913213"></a>IO Objects</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Output</th>
+<th>Input</th>
+</tr></thead>
+<tbody>
+<tr>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/date_facet.html" title="Class template date_facet">date_facet</a></code></td>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/date_input_facet.html" title="Class template date_input_facet">date_input_facet</a></code></td>
+</tr>
+<tr>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/date_facet.html" title="Class template date_facet">wdate_facet</a></code></td>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/date_input_facet.html" title="Class template date_input_facet">wdate_input_facet</a></code></td>
+</tr>
+<tr>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/time_facet.html" title="Class template time_facet">time_facet</a></code></td>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/time_input_facet.html" title="Class template time_input_facet">time_input_facet</a></code></td>
+</tr>
+<tr>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/time_facet.html" title="Class template time_facet">wtime_facet</a></code></td>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/time_input_facet.html" title="Class template time_input_facet">wtime_input_facet</a></code></td>
+</tr>
+<tr>
+<td>
+<code class="computeroutput"><a class="link" href="../boost/date_time/time_facet.html" title="Class template time_facet">local_time_facet</a></code>*</td>
+<td>
+<code class="computeroutput"><a class="link" href="../boost/date_time/time_input_facet.html" title="Class template time_input_facet">local_time_input_facet</a></code>*</td>
+</tr>
+<tr>
+<td>
+<code class="computeroutput"><a class="link" href="../boost/date_time/time_facet.html" title="Class template time_facet">wlocal_time_facet</a></code>*</td>
+<td>
+<code class="computeroutput"><a class="link" href="../boost/date_time/time_input_facet.html" title="Class template time_input_facet">wlocal_time_input_facet</a></code>*</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ * These links lead to the <code class="computeroutput">time_facet</code> and <code class="computeroutput">time_input_facet</code> reference sections. They are not actual classes but typedefs.
+ </p>
+<h4>
+<a name="id913386"></a>Formatter/Parser Objects</h4>
+<p>To implement the new i/o facets the date-time library uses a number of new parsers and formatters. These classes are available for users that want to implement specialized input/output routines.</p>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Output</th>
+<th>Input</th>
+</tr></thead>
+<tbody>
+<tr>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/period_formatter.html" title="Class template period_formatter">period_formatter</a></code></td>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/period_parser.html" title="Class template period_parser">period_parser</a></code></td>
+</tr>
+<tr>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/date_generator_formatter.html" title="Class template date_generator_formatter">date_generator_formatter</a></code></td>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/date_generator_parser.html" title="Class template date_generator_parser">date_generator_parser</a></code></td>
+</tr>
+<tr>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/special_values_formatter.html" title="Class template special_values_formatter">special_values_formatter</a></code></td>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/special_values_parser.html" title="Class template special_values_parser">special_values_parser</a></code></td>
+</tr>
+<tr>
+<td> </td>
+<td><code class="computeroutput"><a class="link" href="../boost/date_time/format_date_parser.html" title="Class template format_date_parser">format_date_parser</a></code></td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.date_facet"></a>Date Facet</h3></div></div></div>
+<a class="link" href="date_time_io.html#date_facet_intro">Introduction</a> -
+ <a class="link" href="date_time_io.html#date_facet_constr">Construction</a> -
+ <a class="link" href="date_time_io.html#date_facet_accessors">Accessors</a><a name="date_facet_intro"></a><h4>
+<a name="id913526"></a>Introduction</h4>
+<p>The <code class="computeroutput">boost::date_time::date_facet</code> enables users to have significant control over the output streaming of dates (and other gregorian objects). The date_facet is typedef'd in the <code class="computeroutput">gregorian</code> namespace as <code class="computeroutput">date_facet</code> and <code class="computeroutput">wdate_facet</code>.
+ </p>
+<a name="date_facet_constr"></a><h4>
+<a name="id913557"></a>Construction</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td valign="top"><pre class="screen">date_facet()</pre></td>
+<td>Default constructor</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">date_facet(...)
+ Parameters:
+ char_type* format
+ input_collection_type</pre></td>
+<td>Format given will be used for date output. All other formats will use their defaults. Collection is the set of short names to be used for months. All other name collections will use their defaults.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">date_facet(...)
+ Parameters:
+ char_type* format
+ period_formatter_type
+ special_values_formatter_type
+ date_gen_formatter_type</pre></td>
+<td>Format given will be used for date output. The remaining parameters are formatter objects. Further details on these objects can be found <a class="link" href="date_time_io.html#date_time.io_objects" title="Date Time Formatter/Parser Objects">here</a>. This constructor also provides default arguments for all parameters except the format. Therefore, <code class="computeroutput">date_facet("%m %d %Y")</code> will work.</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="date_facet_accessors"></a><h4>
+<a name="id913650"></a>Accessors</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void format(char_type*)</pre></td>
+<td>Set the format for dates.</td>
+</tr>
+<tr><td><pre class="screen">date_facet* f = new date_facet();
+f-&gt;format("%m %d %Y");</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void set_iso_format()</pre></td>
+<td>Sets the date format to ISO</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;set_iso_format();
+// "%Y%m%d"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void set_iso_extended_format()</pre></td>
+<td>Sets the date format to ISO Extended</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;set_iso_extended_format();
+// "%Y-%m-%d"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void month_format(char_type*)</pre></td>
+<td>Set the format for months when they are 'put' individually.</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;month_format("%B");
+ss &lt;&lt; greg_month(12); // "December"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void weekday_format(char_type*)</pre></td>
+<td>Set the format for weekdays when they are 'put' individually.</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;weekday_format("%a");
+ss &lt;&lt; greg_weekday(2); // "Tue"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void period_formatter(...)
+ Parameter:
+ period_formatter_type</pre></td>
+<td>Replaces the period formatter object with a user created one.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void special_values_formatter(...)
+ Parameter:
+ special_values_formatter_type</pre></td>
+<td>Replaces the special_values formatter object with a user created one.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void date_gen_phrase_strings(...)
+ Parameters:
+ input_collection_type
+ date_gen_formatter_type::
+ phrase_elements</pre></td>
+<td>Sets new date generator phrase strings in date_gen_formatter. The input collection is a vector of strings (for details on these strings see <a class="link" href="date_time_io.html#io_objects.date_generators">date generator formatter/parser documentation</a>). The phrase_elements parameter is an enum, defined in the date_generator_formatter object, that has a default value of 'first'. It is used to indicate what the position of the first string in the collection will be.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void short_weekday_names(...)
+ Parameter:
+ input_collection_type</pre></td>
+<td>Replace strings used when 'putting' short weekdays.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void long_weekday_names(...)
+ Parameter:
+ input_collection_type</pre></td>
+<td>Replace strings used when 'putting' long weekdays.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void short_month_names(...)
+ Parameter:
+ input_collection_type</pre></td>
+<td>Replace strings used when 'putting' short months.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void long_month_names(...)
+ Parameter:
+ input_collection_type</pre></td>
+<td>Replace strings used when 'putting' long months.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(...)
+ Common parameters for all
+ 'put' functions:
+ OutItrT
+ ios_base
+ char_type
+ Unique parameter for 'put' funcs:
+ gregorian object</pre></td>
+<td>There are 12 put functions in the date_facet. The common paraeters are: an iterator pointing to the next item in the stream, an ios_base object, and the fill character. Each unique gregorian object has it's own put function. Each unique put function is described below.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., date)</pre></td>
+<td>Puts a date object into the stream using the format set by <code class="computeroutput">format(...)</code> or the default.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., days)</pre></td>
+<td>Puts a days object into the stream as a number.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., month)</pre></td>
+<td>Puts a month object into the stream using the format set by <code class="computeroutput">month_format(...)</code> or the default.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., day)</pre></td>
+<td>Puts a day of month object into the stream as a two digit number.</td>
+</tr>
+<tr><td><pre class="screen">"01" // January 1st</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., day_of_week)</pre></td>
+<td>Puts a day of week object into the stream using the format set by <code class="computeroutput">weekday_format(...)</code> or the default.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., date_period)</pre></td>
+<td>Puts a date_period into the stream. The format of the dates will use the format set by <code class="computeroutput">format(..)</code> or the default date format. The type of period (open or closed range) and the delimiters used are those used by the period_formatter.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., partial_date)</pre></td>
+<td>Puts a partial_date date_generator object into the stream. The month format used is set by <code class="computeroutput">month_format(..)</code> or the default. The day of month is represented as a two digit number.</td>
+</tr>
+<tr><td><pre class="screen">"01 Jan" // default formats
+"01 January" // long month format</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., date_generator)
+ Date Generator Type:
+ nth_day_of_the_week_in_month</pre></td>
+<td>Puts a nth_day_of_the_week_in_month object into the stream. The month format is set by <code class="computeroutput">month_format(...)</code> or the default. The weekday format is set by <code class="computeroutput">weekday_format(...)</code> or the default. The remaining phrase elements are set in the <a class="link" href="date_time_io.html#io_objects.date_generators">date_generator_formatter</a>.</td>
+</tr>
+<tr><td><pre class="screen">"third Fri in May" // defaults</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., date_generator)
+ Date Generator Type:
+ first_day_of_the_week_in_month</pre></td>
+<td>Puts a first_day_of_the_week_in_month object into the stream. The month format is set by <code class="computeroutput">month_format(...)</code> or the default. The weekday format is set by <code class="computeroutput">weekday_format(...)</code> or the default. The remaining phrase elements are set in the <a class="link" href="date_time_io.html#io_objects.date_generators">date_generator_formatter</a>.</td>
+</tr>
+<tr><td><pre class="screen">"first Wed of Jun" // defaults</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., date_generator)
+ Date Generator Type:
+ last_day_of_the_week_in_month</pre></td>
+<td>Puts a last_day_of_the_week_in_month object into the stream. The month format is set by <code class="computeroutput">month_format(...)</code> or the default. The weekday format is set by <code class="computeroutput">weekday_format(...)</code> or the default. The remaining phrase elements are set in the <a class="link" href="date_time_io.html#io_objects.date_generators">date_generator_formatter</a>.</td>
+</tr>
+<tr><td><pre class="screen">"last Tue of Mar" // defaults</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., date_generator)
+ Date Generator Type:
+ first_day_of_the_week_after</pre></td>
+<td>Puts a first_day_of_the_week_after object into the stream. The weekday format is set by <code class="computeroutput">weekday_format(...)</code> or the default. The remaining phrase elements are set in the <a class="link" href="date_time_io.html#io_objects.date_generators">date_generator_formatter</a>.</td>
+</tr>
+<tr><td><pre class="screen">"first Sat after" // defaults</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., date_generator)
+ Date Generator Type:
+ first_day_of_the_week_before</pre></td>
+<td>Puts a first_day_of_the_week_before object into the stream. The weekday format is set by <code class="computeroutput">weekday_format(...)</code> or the default. The remaining phrase elements are set in the <a class="link" href="date_time_io.html#io_objects.date_generators">date_generator_formatter</a>.</td>
+</tr>
+<tr><td><pre class="screen">"first Mon before" // defaults</pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.date_input_facet"></a>Date Input Facet</h3></div></div></div>
+<a class="link" href="date_time_io.html#date_input_facet_intro">Introduction</a> -
+ <a class="link" href="date_time_io.html#date_input_facet_constr">Construction</a> -
+ <a class="link" href="date_time_io.html#date_input_facet_accessors">Accessors</a><a name="date_input_facet_intro"></a><h4>
+<a name="id914463"></a>Introduction</h4>
+<p>The <code class="computeroutput">boost::date_time::date_input_facet</code> enables users to have significant control how dates (and other gregorian objects) are streamed in. The date_input_facet is typedef'd in the <code class="computeroutput">gregorian</code> namespace as <code class="computeroutput">date_input_facet</code> and <code class="computeroutput">wdate_input_facet</code>.
+ </p>
+<a name="date_input_facet_constr"></a><h4>
+<a name="id914494"></a>Construction</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td valign="top"><pre class="screen">date_input_facet()</pre></td>
+<td>Default constructor</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">date_input_facet(string_type format)</pre></td>
+<td>Format given will be used for date input. All other formats will use their defaults.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">date_input_facet(...)
+ Parameters:
+ string_type format
+ format_date_parser_type
+ special_values_parser_type
+ period_parser_type
+ date_gen_parser_type</pre></td>
+<td>Format given will be used for date input. The remaining parameters are parser objects. Further details on these objects can be found <a class="link" href="date_time_io.html#date_time.io_objects" title="Date Time Formatter/Parser Objects">here</a>.</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="date_input_facet_accessors"></a><h4>
+<a name="id914582"></a>Accessors</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void format(char_type*)</pre></td>
+<td>Set the format for dates.</td>
+</tr>
+<tr><td><pre class="screen">date_input_facet* f =
+ new date_input_facet();
+f-&gt;format("%m %d %Y");</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void set_iso_format()</pre></td>
+<td>Sets the date format to ISO</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;set_iso_format();
+// "%Y%m%d"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void set_iso_extended_format()</pre></td>
+<td>Sets the date format to ISO Extended</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;set_iso_extended_format();
+// "%Y-%m-%d"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void month_format(char_type*)</pre></td>
+<td>Set the format when 'get'ing months individually.</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;month_format("%B");
+ss.str("March");
+ss &gt;&gt; m; // March</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void weekday_format(char_type*)</pre></td>
+<td>Set the format when 'get'ing weekdays individually.</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;weekday_format("%a");
+ss.str("Sun");
+ss &gt;&gt; wd; // Sunday</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void year_format(char_type*)</pre></td>
+<td>Set the format when 'get'ing years individually.</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;weekday_format("%y");
+ss.str("04");
+ss &gt;&gt; year; // 2004</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void period_parser(...)
+ Parameter:
+ period_parser_type</pre></td>
+<td>Replaces the period parser object with a user created one.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void special_values_parser(...)
+ Parameter:
+ special_values_parser_type</pre></td>
+<td>Replaces the special_values parser object with a user created one.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void date_gen_phrase_strings(...)
+ Parameters:
+ input_collection_type</pre></td>
+<td>Sets new date generator phrase strings in date_gen_parser. The input collection is a vector of strings (for details on these strings see <a class="link" href="date_time_io.html#io_objects.date_generators">date generator formatter/parser documentation</a>).</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void short_weekday_names(...)
+ Parameter:
+ input_collection_type</pre></td>
+<td>Replace strings used when 'getting' short weekdays.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void long_weekday_names(...)
+ Parameter:
+ input_collection_type</pre></td>
+<td>Replace strings used when 'getting' long weekdays.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void short_month_names(...)
+ Parameter:
+ input_collection_type</pre></td>
+<td>Replace strings used when 'getting' short months.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void long_month_names(...)
+ Parameter:
+ input_collection_type</pre></td>
+<td>Replace strings used when 'getting' long months.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(...)
+ Common parameters for all
+ 'get' functions:
+ InItrT from
+ InItrT to
+ ios_base
+ Unique parameter for 'get' funcs:
+ gregorian object</pre></td>
+<td>There are 13 get functions in the date_input_facet. The common parameters are: an iterator pointing to the begining of the stream, an iterator pointing to the end of the stream, and an ios_base object. Each unique gregorian object has it's own get function. Each unique get function is described below.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., date)</pre></td>
+<td>Gets a date object from the stream using the format set by <code class="computeroutput">format(...)</code> or the default.</td>
+</tr>
+<tr><td><pre class="screen">ss.str("2005-Jan-01");
+ss &gt;&gt; d; // default format</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., month)</pre></td>
+<td>Gets a month object from the stream using the format set by <code class="computeroutput">month_format(...)</code> or the default.</td>
+</tr>
+<tr><td><pre class="screen">ss.str("Feb");
+ss &gt;&gt; m; // default format</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., day_of_week)</pre></td>
+<td>Gets a day of week object from the stream using the format set by <code class="computeroutput">weekday_format(...)</code> or the default.</td>
+</tr>
+<tr><td><pre class="screen">ss.str("Sun");
+ss &gt;&gt; dow; // default format</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., day)</pre></td>
+<td>Gets a day of month object from the stream as a two digit number.</td>
+</tr>
+<tr><td><pre class="screen">"01" // January 1st</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., year)</pre></td>
+<td>Gets a year object from the stream as a number. The number of expected digits depends on the year format.</td>
+</tr>
+<tr><td><pre class="screen">ss/str("2005");
+ss &gt;&gt; y; // default format</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., days)</pre></td>
+<td>Gets a days object from the stream as a number.</td>
+</tr>
+<tr><td><pre class="screen">ss.str("356");
+ss &gt;&gt; dys; // a full year</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., date_period)</pre></td>
+<td>Gets a date_period from the stream. The format of the dates will use the format set by <code class="computeroutput">format(..)</code> or the default date format. The type of period (open or closed range) and the delimiters used are those used by the period_parser.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., partial_date)</pre></td>
+<td>Gets a partial_date date_generator object from the stream. The month format used is set by <code class="computeroutput">month_format(..)</code> or the default. The day of month is represented as a two digit number.</td>
+</tr>
+<tr><td><pre class="screen">"01 Jan" // default formats
+"01 January" // long month format</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., date_generator)
+ Date Generator Type:
+ nth_day_of_the_week_in_month</pre></td>
+<td>Gets a nth_day_of_the_week_in_month object from the stream. The month format is set by <code class="computeroutput">month_format(...)</code> or the default. The weekday format is set by <code class="computeroutput">weekday_format(...)</code> or the default. The remaining phrase elements are set in the <a class="link" href="date_time_io.html#io_objects.date_generators">date_generator_parser</a>.</td>
+</tr>
+<tr><td><pre class="screen">"third Fri in May" // defaults</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., date_generator)
+ Date Generator Type:
+ first_day_of_the_week_in_month</pre></td>
+<td>Gets a first_day_of_the_week_in_month object from the stream. The month format is set by <code class="computeroutput">month_format(...)</code> or the default. The weekday format is set by <code class="computeroutput">weekday_format(...)</code> or the default. The remaining phrase elements are set in the <a class="link" href="date_time_io.html#io_objects.date_generators">date_generator_parser</a>.</td>
+</tr>
+<tr><td><pre class="screen">"first Wed of Jun" // defaults</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., date_generator)
+ Date Generator Type:
+ last_day_of_the_week_in_month</pre></td>
+<td>Gets a last_day_of_the_week_in_month object from the stream. The month format is set by <code class="computeroutput">month_format(...)</code> or the default. The weekday format is set by <code class="computeroutput">weekday_format(...)</code> or the default. The remaining phrase elements are set in the <a class="link" href="date_time_io.html#io_objects.date_generators">date_generator_parser</a>.</td>
+</tr>
+<tr><td><pre class="screen">"last Tue of Mar" // defaults</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., date_generator)
+ Date Generator Type:
+ first_day_of_the_week_after</pre></td>
+<td>Gets a first_day_of_the_week_after object from the stream. The weekday format is set by <code class="computeroutput">weekday_format(...)</code> or the default. The remaining phrase elements are set in the <a class="link" href="date_time_io.html#io_objects.date_generators">date_generator_parser</a>.</td>
+</tr>
+<tr><td><pre class="screen">"first Sat after" // defaults</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., date_generator)
+ Date Generator Type:
+ first_day_of_the_week_before</pre></td>
+<td>Gets a first_day_of_the_week_before object from the stream. The weekday format is set by <code class="computeroutput">weekday_format(...)</code> or the default. The remaining phrase elements are set in the <a class="link" href="date_time_io.html#io_objects.date_generators">date_generator_parser</a>.</td>
+</tr>
+<tr><td><pre class="screen">"first Mon before" // defaults</pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.time_facet"></a>Time Facet</h3></div></div></div>
+<a class="link" href="date_time_io.html#time_facet_intro">Introduction</a> -
+ <a class="link" href="date_time_io.html#time_facet_constr">Construction</a> -
+ <a class="link" href="date_time_io.html#time_facet_accessors">Accessors</a><a name="time_facet_intro"></a><h4>
+<a name="id916624"></a>Introduction</h4>
+<p>The <code class="computeroutput">boost::date_time::time_facet</code> is an extension of the <code class="computeroutput">boost::date_time::date_facet</code>. The time_facet is typedef'ed in the <code class="computeroutput">posix_time</code> namespace as <code class="computeroutput">time_facet</code> and <code class="computeroutput">wtime_facet</code>. It is typedef'd in the <code class="computeroutput">local_time</code> namespace as <code class="computeroutput">local_time_facet</code> and <code class="computeroutput">wlocal_time_facet</code>.
+ </p>
+<a name="time_facet_constr"></a><h4>
+<a name="id916674"></a>Construction</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td valign="top"><pre class="screen">time_facet()</pre></td>
+<td>Default constructor</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">time_facet(...)
+ Parameters:
+ char_type* format
+ period_formatter_type
+ special_values_formatter_type
+ date_gen_formatter_type</pre></td>
+<td>Format given will be used for time output. The remaining parameters are formatter objects. Further details on these objects can be found <a class="link" href="date_time_io.html#date_time.io_objects" title="Date Time Formatter/Parser Objects">here</a>. This constructor also provides default arguments for all parameters except the format. Therefore, <code class="computeroutput">time_facet("%H:%M:S %m %d %Y")</code> will work.</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="time_facet_accessors"></a><h4>
+<a name="id916752"></a>Accessors</h4>
+<p>
+ The time_facet inherits all the public date_facet methods. Therefore, the date_facet methods are not listed here. Instead, they can be found by following <a class="link" href="date_time_io.html#date_time.date_facet" title="Date Facet">this</a> link.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void time_duration_format(...)
+ Parameter:
+ char_type*</pre></td>
+<td>Sets the time_duration format. The time_duration format has the ability to display the sign of the duration. The <code class="computeroutput">'%+'</code> flag will always display the sign. The <code class="computeroutput">'%-'</code> will only display if the sign is negative. Currently the '-' and '+' characters are used to denote the sign.</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;time_duration_format("%+%H:%M");
+// hours and minutes only w/ sign always displayed
+time_duration td1(3, 15, 56);
+time_duration td2(-12, 25, 32);
+ss &lt;&lt; td1; // "+03:15:56"
+ss &lt;&lt; td2; // "-12:25:56"
+ </pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void set_iso_format()</pre></td>
+<td>Sets the date and time format to ISO.</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;set_iso_format();
+// "%Y%m%dT%H%M%S%F%q"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void set_iso_extended_format()</pre></td>
+<td>Sets the date and time format to ISO Extended</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;set_iso_extended_format();
+// "%Y-%m-%d %H:%M:%S%F%Q"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(...)
+ Common parameters for all
+ 'put' functions:
+ OutItrT
+ ios_base
+ char_type
+ Unique parameter for 'put' funcs:
+ posix_time object</pre></td>
+<td>There are 3 put functions in the time_facet. The common parameters are: an iterator pointing to the next item in the stream, an ios_base object, and the fill character. Each unique posix_time object has it's own put function. Each unique put function is described below.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., ptime)</pre></td>
+<td>Puts a ptime object into the stream using the format set by <code class="computeroutput">format(...)</code> or the default.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., time_duration)</pre></td>
+<td>Puts a time_duration object into the stream using the format set by <code class="computeroutput">time_duration_format(...)</code> or the default.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put(..., time_period)</pre></td>
+<td>Puts a time_period into the stream. The format of the dates and times will use the format set by <code class="computeroutput">format(..)</code> or the default date/time format. The type of period (open or closed range) and the delimiters used are those used by the period_formatter.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.time_input_facet"></a>Time Input Facet</h3></div></div></div>
+<a class="link" href="date_time_io.html#time_input_facet_intro">Introduction</a> -
+ <a class="link" href="date_time_io.html#time_input_facet_constr">Construction</a> -
+ <a class="link" href="date_time_io.html#time_input_facet_accessors">Accessors</a><a name="time_input_facet_intro"></a><h4>
+<a name="id917027"></a>Introduction</h4>
+<p>The <code class="computeroutput">boost::date_time::time_input_facet</code> is an extension of the <code class="computeroutput">date_input_facet</code>. It is typedef'ed in the <code class="computeroutput">boost::posix_time</code> namespace as <code class="computeroutput">time_input_facet</code> and <code class="computeroutput">wtime_input_facet</code>. It is typedef'ed in the <code class="computeroutput">boost::local_time</code> namespace as <code class="computeroutput">local_time_input_facet</code> and <code class="computeroutput">wlocal_time_input_facet</code>.
+ </p>
+<a name="time_input_facet_constr"></a><h4>
+<a name="id917077"></a>Construction</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td valign="top"><pre class="screen">time_input_facet()</pre></td>
+<td>Default constructor</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">time_input_facet(string_type)</pre></td>
+<td>Format given will be used for date/time input. All other formats will use their defaults.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">time_input_facet(...)
+ Parameters:
+ string_type format
+ format_date_parser_type
+ special_values_parser_type
+ period_parser_type
+ date_gen_parser_type</pre></td>
+<td>Format given will be used for date/time input. The remaining parameters are parser objects. Further details on these objects can be found <a class="link" href="date_time_io.html#date_time.io_objects" title="Date Time Formatter/Parser Objects">here</a>.</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="time_input_facet_accessors"></a><h4>
+<a name="id917165"></a>Accessors</h4>
+<p>
+ The time_input_facet inherits all the public date_input_facet methods. Therefore, the date_input_facet methods are not listed here. Instead, they can be found by following <a class="link" href="date_time_io.html#date_time.date_input_facet" title="Date Input Facet">this</a> link.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void set_iso_format()</pre></td>
+<td>Sets the time format to ISO</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;set_iso_format();
+// "%Y%m%dT%H%M%S%F%q"
+"20051225T132536.789-0700"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void set_iso_extended_format()</pre></td>
+<td>Sets the date format to ISO Extended</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;set_iso_extended_format();
+// "%Y-%m-%d %H:%M:%S%F %Q"
+"2005-12-25 13:25:36.789 -07:00"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void time_duration_format(...)
+ Parameter:
+ char_type*</pre></td>
+<td>Sets the time_duration format.</td>
+</tr>
+<tr><td><pre class="screen">f-&gt;time_duration_format("%H:%M");
+// hours and minutes only</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(...)
+ Common parameters for all
+ 'get' functions:
+ InItrT from
+ InItrT to
+ ios_base
+ Unique parameter for 'get' funcs:
+ gregorian object</pre></td>
+<td>There are 3 get functions in the time_input_facet. The common parameters are: an iterator pointing to the begining of the stream, an iterator pointing to the end of the stream, and an ios_base object. Each unique gregorian object has it's own get function. Each unique get function is described below.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., ptime)</pre></td>
+<td>Gets a ptime object from the stream using the format set by <code class="computeroutput">format(...)</code> or the default.</td>
+</tr>
+<tr><td><pre class="screen">ss.str("2005-Jan-01 13:12:01");
+ss &gt;&gt; pt; // default format</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., time_duration)</pre></td>
+<td>Gets a time_duration object from the stream using the format set by <code class="computeroutput">time_duration_format(...)</code> or the default.</td>
+</tr>
+<tr><td><pre class="screen">ss.str("01:25:15.000123000");
+ss &gt;&gt; td; // default format</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">InItrT get(..., time_period)</pre></td>
+<td>Gets a time_period from the stream. The format of the dates/times will use the format set by <code class="computeroutput">format(..)</code> or the default date and time format. The type of period (open or closed range) and the delimiters used are those used by the period_parser.</td>
+</tr>
+<tr><td>see the <a class="link" href="date_time_io.html#date_time.io_tutorial" title="Date Time IO Tutorial">tutorial</a> for a complete example.</td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.io_objects"></a>Date Time Formatter/Parser Objects</h3></div></div></div>
+<h3>
+<a name="id917418"></a>Date Time Formatter/Parser Objects</h3>
+<a class="link" href="date_time_io.html#io_objects.periods">Periods</a> |
+ <a class="link" href="date_time_io.html#io_objects.date_generators">Date Generators</a> |
+ <a class="link" href="date_time_io.html#io_objects.special_values">Special Values</a> |
+ <a class="link" href="date_time_io.html#io_objects.format_date_parser">Format Date Parser</a><a name="io_objects.periods"></a><h4>
+<a name="id917446"></a>Periods</h4>
+<p>The period_formatter and period_parser provide a uniform interface for the input and output of date_periods, time_periods, and in a future release, local_date_time_periods. The user has control over the delimiters, formats of the date/time components, and the form the period takes. The format of the date/time components is controlled via the date_time input and output facets.</p>
+<h5>
+<a name="id917454"></a>Period Form</h5>
+<p>Periods are constructed with open ranged parameters. The first value is the starting point, and is included in the period. The end value is not included but immediately follows the last value: [begin/end). However, a period can be streamed as either an open range or a closed range.</p>
+<pre class="screen">[2003-Jan-01/2003-Dec-31] &lt;-- period holding 365 days
+[2003-Jan-01/2004-Jan-01) &lt;-- period holding 365 days</pre>
+<h5>
+<a name="id917467"></a>Delimiters</h5>
+<p>There are four delimiters. The default values are</p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>"\" - separator</td></tr>
+<tr><td>"[" - start delimiter</td></tr>
+<tr><td>")" - open range end delimiter</td></tr>
+<tr><td>"]" - closed range end delimiter</td></tr>
+</table>
+<p>A user can provide a custom set of delimiters. Custom delimiters may contain spaces.</p>
+<h5>
+<a name="id917496"></a>Customization</h5>
+<p>The period form and delimiters can be set as construction parameters or by means of accessor functions. A custom period parser/formatter can then be used as a construction parameter to a new facet, or can be set in an existing facet via an accessor function.</p>
+<h5>
+<a name="id917504"></a>Period Formatter/Parser Reference</h5>
+ The complete class reference can be found here: <code class="computeroutput"><a class="link" href="../boost/date_time/period_formatter.html" title="Class template period_formatter">Period Formatter Doxygen Reference</a></code> and here: <code class="computeroutput"><a class="link" href="../boost/date_time/period_parser.html" title="Class template period_parser">Period Parser Doxygen Reference</a></code><p>
+ </p>
+<h5>
+<a name="id917526"></a>Period Formatter Construction</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th valign="top">Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody><tr>
+<td valign="top"><pre class="screen">period_formatter(...)
+ Parameters:
+ range_display_options
+ char_type*
+ char_type*
+ char_type*
+ char_type*</pre></td>
+<td>NOTE: All five construction parameters have default values so this constructor also doubles as the default constructor. The <code class="computeroutput">range_display_options</code> is a public type enum of the <code class="computeroutput">period_formatter</code> class. The possible choices are AS_OPEN_RANGE or AS_CLOSED_RANGE. The closed range is the default. A period has three significant points: the begining, the last, and the end. A closed range period takes the form [begin,end), where an open range period takes the form [begin,last]. The four char_type* parameters are: the period separator, the start delimiter, the open range end delimiter, and the closed range end delimiter.</td>
+</tr></tbody>
+</table></div>
+<p>
+ </p>
+<h5>
+<a name="id917584"></a>Period Formatter Accessors</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">range_display_options range_option()</pre></td>
+<td>Returns the current setting for the range display (either AS_OPEN_RANGE or AS_CLOSED_RANGE).</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void range_option(...)
+ Parameter:
+ range_display_options</pre></td>
+<td>Sets the option for range display (either AS_OPEN_RANGE or AS_CLOSED_RANGE).</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void delimiter_strings(...)
+ Parameters:
+ string_type
+ string_type
+ string_type
+ string_type</pre></td>
+<td>Set new delimiter strings in the formatter.</td>
+</tr>
+<tr><td><pre class="screen">string beg("-&gt;| ");
+string sep(" || ");
+string opn(" -&gt;|");
+string clo(" |&lt;-");
+pf.delimiter_strings(beg, sep,
+ opn, clo);</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">put_period_start_delimeter(...)
+ Return Type:
+ OutItrT
+ Parameter:
+ OutItrT</pre></td>
+<td>Puts the start delimiter into the stream at position pointed to by OutItrT parameter.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">put_period_sepatator(...)
+ Return Type:
+ OutItrT
+ Parameter:
+ OutItrT</pre></td>
+<td>Puts the separator into the stream at position pointed to by OutItrT parameter.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">put_period_end_delimeter(...)
+ Return Type:
+ OutItrT
+ Parameter:
+ OutItrT</pre></td>
+<td>Puts the end delimiter into the stream at position pointed to by OutItrT parameter.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put_period(...)
+ Parameters:
+ OutItrT
+ ios_base
+ char_type
+ period_type
+ facet_type</pre></td>
+<td>Puts a period into the stream using the set values for delimiters, separator, and range display. The facet parameter is used to put the date (or time) objects of the period.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<p>
+ </p>
+<h5>
+<a name="id917800"></a>Period Parser Construction</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th valign="top">Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td valign="top"><pre class="screen">period_parser(...)
+ Parameters:
+ period_range_option
+ char_type*
+ char_type*
+ char_type*
+ char_type*</pre></td>
+<td>NOTE: All five construction parameters have default values so this constructor also doubles as the default constructor. The <code class="computeroutput">period_range_option</code> is a public type enum of the <code class="computeroutput">period_parser</code> class. The possible choices are AS_OPEN_RANGE or AS_CLOSED_RANGE. The closed range is the default. A period has three significant points: the begining, the last, and the end. A closed range period takes the form [begin,end), where an open range period takes the form [begin,last]. The four char_type* parameters are: the period separator, the start delimiter, the open range end delimiter, and the closed range end delimiter.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">period_parser(period_parser)</pre></td>
+<td>Copy constructor</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<h5>
+<a name="id917872"></a>Period Parser Accessors</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">period_range_option range_option()</pre></td>
+<td>Returns the current setting for the period range (either AS_OPEN_RANGE or AS_CLOSED_RANGE).</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void range_option(...)
+ Parameter:
+ period_range_option </pre></td>
+<td>Sets the option for period range (either AS_OPEN_RANGE or AS_CLOSED_RANGE).</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void delimiter_strings(...)
+ Parameters:
+ string_type
+ string_type
+ string_type
+ string_type</pre></td>
+<td>Set new delimiter strings in the parser.</td>
+</tr>
+<tr><td><pre class="screen">string beg("-&gt;| ");
+string sep(" || ");
+string opn(" -&gt;|");
+string clo(" |&lt;-");
+pp.delimiter_strings(beg, sep,
+ opn, clo);</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">collection_type delimiter_strings()</pre></td>
+<td>Returns the set of delimiter strings currently held in the parser.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">period_type get_period(...)
+ Parameters:
+ stream_itr_type
+ stream_itr_type
+ ios_base
+ period_type
+ duration_type
+ facet_type</pre></td>
+<td>Parses a period from the stream. The iterator parameters point to the begining and end of the stream. The duration_type is relevant to the period type, for example: A <code class="computeroutput">date_period</code> would use <code class="computeroutput">days</code> as a duration_type. The period will be parsed according to the formats and strings found in the facet parameter.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<p>_____________________________________________________</p>
+<a name="io_objects.date_generators"></a><h4>
+<a name="id918054"></a>Date Generators</h4>
+<p>The date_generator formatter and parser provide flexibility by allowing the user to use custom "phrase elements". These phrase elements are the "in-between" words in the date_generators. For example, in the date_generator "Second Monday of March", "Second" and "of" are the phrase elements, where "Monday" and "March" are the date elements. Customization of the date elements is done with the facet. The order of the date and phrase elements cannot be changed. When parsing, all elements of the date_generator phrase must parse correctly or an ios_base::failure exception will be thrown.</p>
+<h5>
+<a name="id918062"></a>Customization</h5>
+<p>The default "phrase_strings" are:
+ </p>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td>"first"</td>
+<td>"second"</td>
+<td>"third"</td>
+<td>"fourth"</td>
+<td>"fifth"</td>
+<td>"last"</td>
+<td>"before"</td>
+<td>"after"</td>
+<td>"of"</td>
+</tr></table>
+<p>
+ A custom set of phrase_strings must maintain this order of occurance (Ex: "1st", "2nd", "3rd", "4th", "5th", "last", "prior", "past", "in").</p>
+<p> Examples using default phrase_strings and default facet formats for weekday &amp; month: </p>
+<pre class="screen">"first Tue of Mar"</pre>
+<p>And using custom phrase_strings: </p>
+<pre class="screen">"1st Tue in Mar"</pre>
+<p>
+ </p>
+<p>The custom set of phrase elements can be set as construction parameters or through an accessor function.A custom date_generator parser/formatter can then be used as a construction parameter to a new facet, or can be set in an existing facet via an accessor function.</p>
+<p>IMPORTANT NOTE: Prior to 1.33, partial_date was output as "1 Jan" with a single *or* double digit number for the day. The new behavior is to *always* place a double digit number for the day - "01 Jan".</p>
+<h5>
+<a name="id918130"></a>Date Generator Reference</h5>
+ The complete class references can be found here: <code class="computeroutput"><a class="link" href="../boost/date_time/date_generator_formatter.html" title="Class template date_generator_formatter">Date Generator Formatter Doxygen Reference</a></code> and here: <code class="computeroutput"><a class="link" href="../boost/date_time/date_generator_parser.html" title="Class template date_generator_parser">Date Generator Parser Doxygen Reference</a></code><p>
+ </p>
+<h5>
+<a name="id918151"></a>Date Generator Formatter Construction</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th valign="top">Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td valign="top"><pre class="screen">date_generator_formatter()</pre></td>
+<td>Uses the default date generator elements.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">date_generator_formatter(...)
+ Parameters:
+ string_type first_element
+ string_type second_element
+ string_type third_element
+ string_type fourth_element
+ string_type fifth_element
+ string_type last_element
+ string_type before_element
+ string_type after_element
+ string_type of_element</pre></td>
+<td>Constructs a date_generator_formatter using the given element strings.</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<h5>
+<a name="id918420"></a>Date Generator Formatter Accessors</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void elements(...)
+ Parameters:
+ collection_type
+ phrase_elements</pre></td>
+<td>Replace the current phrase elements with a collection of new ones. The <code class="computeroutput">phrase_elements</code> parameter is an enum that indicates what the first element in the new collection is (defaults to first).</td>
+</tr>
+<tr><td><pre class="screen">// col is a collection holding
+// "final", "prior", "following",
+// and "in"
+typedef date_generator_formatter dgf;
+dgf formatter();
+formatter.elements(col, dgf::last);
+// complete elements in dgf are now:
+"first", "second", "third",
+"fourth", "fifth", "final",
+"prior", "following", and "in"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">put_partial_date(...)
+ Return Type:
+ facet_type::OutItrT
+ Parameters:
+ OutItrT next
+ ios_base
+ char_type fill
+ partial_date
+ facet_type</pre></td>
+<td>A put function for partial_date. This is a templated function that takes a facet_type as a parameter.</td>
+</tr>
+<tr><td>Put a partial_date =&gt; "dd Month".</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">put_nth_kday(...)
+ Return Type:
+ facet_type::OutItrT
+ Parameters:
+ OutItrT next
+ ios_base
+ char_type fill
+ nth_kday_type
+ facet_type</pre></td>
+<td>A put function for nth_kday_type. This is a templated function that takes a facet_type as a parameter.</td>
+</tr>
+<tr><td>Put an nth_day_of_the_week_in_month =&gt; "nth weekday of month".</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">put_first_kday(...)
+ Return Type:
+ facet_type::OutItrT
+ Parameters:
+ OutItrT next
+ ios_base
+ char_type fill
+ first_kday_type
+ facet_type</pre></td>
+<td>A put function for first_kday_type. This is a templated function that takes a facet_type as a parameter.</td>
+</tr>
+<tr><td>Put a first_day_of_the_week_in_month =&gt; "first weekday of month".</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">put_last_kday(...)
+ Return Type:
+ facet_type::OutItrT
+ Parameters:
+ OutItrT next
+ ios_base
+ char_type fill
+ last_kday_type
+ facet_type</pre></td>
+<td>A put function for last_kday_type. This is a templated function that takes a facet_type as a parameter.</td>
+</tr>
+<tr><td>Put a last_day_of_the_week_in_month =&gt; "last weekday of month".</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">put_kday_before(...)
+ Return Type:
+ facet_type::OutItrT
+ Parameters:
+ OutItrT next
+ ios_base
+ char_type fill
+ kday_before_type
+ facet_type</pre></td>
+<td>A put function for kday_before_type. This is a templated function that takes a facet_type as a parameter.</td>
+</tr>
+<tr><td>Put a first_day_of_the_week_before =&gt; "weekday before"</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">put_kday_after(...)
+ Return Type:
+ facet_type::OutItrT
+ Parameters:
+ OutItrT next
+ ios_base
+ char_type fill
+ kday_after_type
+ facet_type</pre></td>
+<td>A put function for kday_after_type. This is a templated function that takes a facet_type as a parameter.</td>
+</tr>
+<tr><td>Put a first_day_of_the_week_after =&gt; "weekday after".</td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<p>
+ </p>
+<h5>
+<a name="id918633"></a>Date Generator Parser Construction</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th valign="top">Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td valign="top"><pre class="screen">date_generator_parser()</pre></td>
+<td>Uses the default date generator elements.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">date_generator_parser(...)
+ Parameter:
+ date_generator_parser</pre></td>
+<td>Copy Constructor</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">date_generator_parser(...)
+ Parameters:
+ string_type first_element
+ string_type second_element
+ string_type third_element
+ string_type fourth_element
+ string_type fifth_element
+ string_type last_element
+ string_type before_element
+ string_type after_element
+ string_type of_element</pre></td>
+<td>Constructs a date_generator_parser using the given element strings.</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<h5>
+<a name="id918709"></a>Date Generator Parser Accessors</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void element_strings(...)
+ Parameter:
+ collection_type</pre></td>
+<td>Replace the set of date generator element string with a new set.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void element_strings(...)
+ Parameters:
+ string_type first
+ string_type second
+ string_type third
+ string_type fourth
+ string_type fifth
+ string_type last
+ string_type before
+ string_type after
+ string_type of</pre></td>
+<td>Replace the set of date generator elements with new values.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">get_partial_date_type(...)
+ Return Type:
+ facet_type::partial_date_type
+ Parameters:
+ stream_itr_type next
+ stream_itr_type str_end
+ ios_base
+ facet_type</pre></td>
+<td>A templated function that parses a date_generator from the stream.</td>
+</tr>
+<tr><td>Parses a partial_date =&gt; "dd Month".</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">get_nth_kday_type(...)
+ Return Type:
+ facet_type::nth_kday_type
+ Parameters:
+ stream_itr_type next
+ stream_itr_type str_end
+ ios_base
+ facet_type</pre></td>
+<td>A templated function that parses a date_generator from the stream.</td>
+</tr>
+<tr><td>Parses an nth_day_of_the_week_in_month =&gt; "nth weekday of month".</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">get_first_kday_type(...)
+ Return Type:
+ facet_type::firat_kday_type
+ Parameters:
+ stream_itr_type next
+ stream_itr_type str_end
+ ios_base
+ facet_type</pre></td>
+<td>A templated function that parses a date_generator from the stream.</td>
+</tr>
+<tr><td>Parses a first_day_of_the_week_in_month =&gt; "first weekday of month".</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">get_last_kday_type(...)
+ Return Type:
+ facet_type::last_kday_type
+ Parameters:
+ stream_itr_type next
+ stream_itr_type str_end
+ ios_base
+ facet_type</pre></td>
+<td>A templated function that parses a date_generator from the stream.</td>
+</tr>
+<tr><td>Parses a last_day_of_the_week_in_month =&gt; "last weekday of month".</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">get_kday_before_type(...)
+ Return Type:
+ facet_type::kday_before_type
+ Parameters:
+ stream_itr_type next
+ stream_itr_type str_end
+ ios_base
+ facet_type</pre></td>
+<td>A templated function that parses a date_generator from the stream.</td>
+</tr>
+<tr><td>Parses a first_day_of_the_week_before =&gt; "weekday before"</td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">get_kday_after_type(...)
+ Return Type:
+ facet_type::kday_after_type
+ Parameters:
+ stream_itr_type next
+ stream_itr_type str_end
+ ios_base
+ facet_type</pre></td>
+<td>A templated function that parses a date_generator from the stream.</td>
+</tr>
+<tr><td>Parses a first_day_of_the_week_after =&gt; "weekday after".</td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<p>_____________________________________________________</p>
+<a name="io_objects.special_values"></a><h4>
+<a name="id918947"></a>Special Values</h4>
+<p>The date_time library uses five special_values. They are:
+ </p>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td>not_a_date_time</td>
+<td>neg_infin</td>
+<td>pos_infin</td>
+<td>min_date_time</td>
+<td>max_date_time</td>
+</tr></table>
+<p>
+ </p>
+<p>The default set of strings used to represent these types are: "not-a-date-time", "-infinity", "+infinity", "minimum-date-time", "maximum-date-time". When output, the min_date-time and max_date_time appear as normal date/time representations: "1400-Jan-01" and "9999-Dec-31" repectively.</p>
+<h5>
+<a name="id918984"></a>Customization</h5>
+<p>The special values parser/formatter allows the user to set custom strings for these special values. These strings can be set as construction parameters to a new facet, or can be set in an existing facet via an accessor function.</p>
+<h5>
+<a name="id918993"></a>Special Values Formatter/Parser Reference</h5>
+ The complete class references can be found here: <code class="computeroutput"><a class="link" href="../boost/date_time/special_values_formatter.html" title="Class template special_values_formatter">Special Values Formatter Doxygen Reference</a></code> and here: <code class="computeroutput"><a class="link" href="../boost/date_time/special_values_parser.html" title="Class template special_values_parser">Special Values Parser Doxygen Reference</a></code><p>
+ </p>
+<h5>
+<a name="id919014"></a>Special Values Formatter Constructor</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th valign="top">Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td valign="top"><pre class="screen">special_values_formatter()</pre></td>
+<td>Constructor uses defaults for special value strings.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">special_values_formatter(...)
+ Parameters:
+ collection_type::iterator
+ collection_type::iterator</pre></td>
+<td>Constructs using values in collection. NOTE: Only the first three strings of the collection will be used. Strings for minimum_date_time and maximum_date_time are ignored as those special values are output as normal dates/times.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">special_values_formatter(...)
+ Parameters:
+ char_type*
+ char_type*</pre></td>
+<td>Constructs special values formatter from an array of strings.</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<p>
+ </p>
+<h5>
+<a name="id919096"></a>Special Values Formatter Accessors</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">OutItrT put_special(...)
+ Parameters:
+ OutItrT next
+ special_values value</pre></td>
+<td>Puts the given special value into the stream.</td>
+</tr>
+<tr><td><pre class="screen">date d1(not_a_date_time);
+date d2(minimum_date_time);
+special_values_formatter formatter;
+formatter.put_special(itr, d1);
+// Puts: "not-a-date-time"
+formatter.put_special(itr, d2);
+// Puts: "1400-Jan-01"</pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<p>
+ </p>
+<h5>
+<a name="id919167"></a>Special Values Parser Constructor</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th valign="top">Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td valign="top"><pre class="screen">special_values_parser()</pre></td>
+<td> </td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">special_values_parser(...)
+ Parameters:
+ collection_type::iterator
+ collection_type::iterator</pre></td>
+<td>Constructs a special values parser using the strings in the collection.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">special_values_parser(...)
+ Parameter:
+ scpecial_values_parser</pre></td>
+<td>Copy constructor.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">special_values_parser(...)
+ Parameters:
+ string_type nadt_str
+ string_type neg_inf_str
+ string_type pos_inf_str
+ string_type min_dt_str
+ string_type max_dt_str</pre></td>
+<td>Constructs a special values parser using the supplied strings.</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<p>
+ </p>
+<h5>
+<a name="id919261"></a>Special Values Parser Accessors</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void sv_strings(...)
+ Parameters:
+ string_type nadt_str
+ string_type neg_inf_str
+ string_type pos_inf_str
+ string_type min_dt_str
+ string_type max_dt_str</pre></td>
+<td>Replace the set of special value strings with the given ones.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool match(...)
+ Parameters:
+ stream_itr_type beg
+ stream_itr_type end
+ match_results</pre></td>
+<td>Returns true if parse was successful. Upon a successful parse, <code class="computeroutput">mr.current_match</code> will be set an int values corresponding to the equivalent special_value.</td>
+</tr>
+<tr><td><pre class="screen">// stream holds "maximum_date_time"
+typedef special_values_parser svp;
+svp parser;
+svp::match_results mr;
+if(parser.match(itr, str_end, mr)) {
+ d = date(static_cast&lt;special_values&gt;(
+ mr.match_results))
+} else {
+ // error, failed parse
+}
+// d == "9999-Dec-31"</pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<p>_____________________________________________________</p>
+<a name="io_objects.format_date_parser"></a><h4>
+<a name="id919368"></a>Format Date Parser</h4>
+<p>The format date parser is the object that holds the strings for months and weekday names, as well as their abbreviations. Custom sets of strings can be set at construction time, or, the strings in an existing format_date_parser can be replaced through accessor functions. Both the constructor and the accessor functions take a vector of strings as their arguments.</p>
+<h5>
+<a name="id919377"></a>Format Date Parser Reference</h5>
+ The complete class reference can be found here: <code class="computeroutput"><a class="link" href="../boost/date_time/format_date_parser.html" title="Class template format_date_parser">Doxygen Reference</a></code><p>
+ </p>
+<h5>
+<a name="id919391"></a>Format Date Parser Constructor</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th valign="top">Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td valign="top"><pre class="screen">format_date_parser(...)
+ Parameters:
+ string_type format
+ std::locale</pre></td>
+<td>Creates a parser that uses the given format for parsing dates (in those functions where there is no format parameter). The names and abbreviations used are extracted from the given locale.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">format_date_parser(...)
+ Parameters:
+ string_type format
+ input_collection_type
+ input_collection_type
+ input_collection_type
+ input_collection_type</pre></td>
+<td>Creates a parser from using the given components. The input_collection_type parameters are for: short month names, long month names, short weekday names, and long weekday names (in that order). These collections must contain values for every month and every weekday (begining with January and Sunday).</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">format_date_parser(...)
+ Parameters:
+ format_date_parser</pre></td>
+<td>Copy Constructor</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<p>
+ </p>
+<h5>
+<a name="id919473"></a>Format Date Parser Accessors</h5>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">string_type format()</pre></td>
+<td>Returns the format that will be used when parsing dates in those functions where there is no format parameter.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void format(string_type)</pre></td>
+<td>Sets the format that will be used when parsing dates in those functions where there is no format parameter.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void short_month_names(...)
+ Parameter:
+ input_collection_type names</pre></td>
+<td>Replace the short month names used by the parser. The collection must contain values for each month, starting with January.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void long_month_names(...)
+ Parameter:
+ input_collection_type names</pre></td>
+<td>Replace the long month names used by the parser. The collection must contain values for each month, starting with January.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void short_weekday_names(...)
+ Parameter:
+ input_collection_type names</pre></td>
+<td>Replace the short weekday names used by the parser. The collection must contain values for each weekday, starting with Sunday.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void long_weekday_names(...)
+ Parameter:
+ input_collection_type names</pre></td>
+<td>Replace the long weekday names used by the parser. The collection must contain values for each weekday, starting with Sunday.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">date_type parse_date(...)
+ Parameters:
+ string_type input
+ string_type format
+ special_values_parser</pre></td>
+<td>Parse a date from the given input using the given format.</td>
+</tr>
+<tr><td><pre class="screen">string inp("2005-Apr-15");
+string format("%Y-%b-%d");
+date d;
+d = parser.parse_date(inp,
+ format,
+ svp);
+// d == 2005-Apr-15</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">date_type parse_date(...)
+ Parameters:
+ istreambuf_iterator input
+ istreambuf_iterator str_end
+ special_values_parser</pre></td>
+<td>Parse a date from stream using the parser's format.</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">date_type parse_date(...)
+ Parameters:
+ istreambuf_iterator input
+ istreambuf_iterator str_end
+ string_type format
+ special_values_parser</pre></td>
+<td>Parse a date from stream using the given format.</td>
+</tr>
+<tr><td><pre class="screen">// stream holds "2005-04-15"
+string format("%Y-%m-%d");
+date d;
+d = parser.parse_date(itr,
+ str_end,
+ format,
+ svp);
+// d == 2005-Apr-15</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">month_type parse_month(...)
+ Parameters:
+ istreambuf_iterator input
+ istreambuf_iterator str_end
+ string_type format</pre></td>
+<td>Parses a month from stream using given format. Throws bad_month if unable to parse.</td>
+</tr>
+<tr><td><pre class="screen">// stream holds "March"
+string format("%B");
+greg_month m;
+m = parser.parse_month(itr,
+ str_end,
+ format);
+// m == March</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">day_type parse_day_of_month(...)
+ Parameters:
+ istreambuf_iterator input
+ istreambuf_iterator str_end</pre></td>
+<td>Parses a day_of_month from stream. The day must appear as a two digit number (01-31), or a bad_day_of_month will be thrown.</td>
+</tr>
+<tr><td><pre class="screen">// stream holds "01"
+greg_day d;
+d = parser.parse_day_of_month(itr,
+ str_end);
+// d == 1st</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">day_type parse_var_day_of_month(...)
+ Parameters:
+ istreambuf_iterator input
+ istreambuf_iterator str_end</pre></td>
+<td>Parses a day_of_month from stream. The day must appear as a one or two digit number (1-31), or a bad_day_of_month will be thrown.</td>
+</tr>
+<tr><td><pre class="screen">// stream holds "1"
+greg_day d;
+d = parser.parse_var_day_of_month(itr,
+ str_end);
+// d == 1st</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">day_of_week_type parse_weekday(...)
+ Parameters:
+ istreambuf_iterator input
+ istreambuf_iterator str_end
+ string_type format</pre></td>
+<td>Parse a weekday from stream according to the given format. Throws a bad_weekday if unable to parse.</td>
+</tr>
+<tr><td><pre class="screen">// stream holds "Tue"
+string format("%a");
+greg_weekday wd;
+wd = parser.parse_weekday(itr,
+ str_end,
+ format);
+// wd == Tuesday</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">year_type parse_year(...)
+ Parameters:
+ istreambuf_iterator input
+ istreambuf_iterator str_end
+ string_type format</pre></td>
+<td>Parse a year from stream according to given format. Throws bad year if unable to parse.</td>
+</tr>
+<tr><td><pre class="screen">// stream holds "98"
+string format("%y");
+greg_year y;
+y = parser.parse_year(itr,
+ str_end,
+ format);
+// y == 1998</pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.io_tutorial"></a>Date Time IO Tutorial</h3></div></div></div>
+<h3>
+<a name="id919870"></a>Date Time IO Tutorial</h3>
+<a class="link" href="date_time_io.html#basic_use">Basic Use</a> |
+ <a class="link" href="date_time_io.html#format_strings">Format Strings</a> |
+ <a class="link" href="date_time_io.html#content_strings">Content Strings</a> |
+ <a class="link" href="date_time_io.html#tut_sv">Special Values</a> |
+ <a class="link" href="date_time_io.html#tut_dper">Date/Time Periods</a> |
+ <a class="link" href="date_time_io.html#tut_dgen">Date Generators</a><a name="basic_use"></a><h5>
+<a name="id919907"></a>Basic Use</h5>
+<p>Facets are automatically imbued when operators '&gt;&gt;' and '&lt;&lt;' are called. The list of date_time objects that can be streamed are:</p>
+<h6>
+<a name="id919915"></a>Gregorian</h6>
+<p>
+ <code class="computeroutput">date</code>,
+ <code class="computeroutput">days</code>,
+ <code class="computeroutput">date_period</code>,
+ <code class="computeroutput">greg_month</code>,
+ <code class="computeroutput">greg_weekday</code>,
+ <code class="computeroutput">greg_year</code>,
+ <code class="computeroutput">partial_date</code>,
+ <code class="computeroutput">nth_day_of_the_week_in_month</code>,
+ <code class="computeroutput">first_day_of_the_week_in_month</code>,
+ <code class="computeroutput">last_day_of_the_week_in_month</code>,
+ <code class="computeroutput">first_day_of_the_week_after</code>,
+ <code class="computeroutput">first_day_of_the_week_before</code>
+ </p>
+<h6>
+<a name="id919981"></a>Posix_time</h6>
+<p>
+ <code class="computeroutput">ptime</code>,
+ <code class="computeroutput">time_period</code>,
+ <code class="computeroutput">time_duration</code>
+ </p>
+<h6>
+<a name="id920004"></a>Local_time</h6>
+<p>
+ <code class="computeroutput">local_date_time</code>
+ </p>
+<p>
+ The following example is of the basic use of the new IO code, utilizing all the defaults. (this example can be found in the <code class="computeroutput">libs/date_time/examples/tutorial</code> directory)
+ </p>
+<pre class="programlisting">
+
+ date d(2004, Feb, 29);
+ time_duration td(12,34,56,789);
+ stringstream ss;
+ ss &lt;&lt; d &lt;&lt; ' ' &lt;&lt; td;
+ ptime pt(not_a_date_time);
+ cout &lt;&lt; pt &lt;&lt; endl; // "not-a-date-time"
+ ss &gt;&gt; pt;
+ cout &lt;&lt; pt &lt;&lt; endl; // "2004-Feb-29 12:34:56.000789"
+ ss.str("");
+ ss &lt;&lt; pt &lt;&lt; " EDT-05EDT,M4.1.0,M10.5.0";
+ local_date_time ldt(not_a_date_time);
+ ss &gt;&gt; ldt;
+ cout &lt;&lt; ldt &lt;&lt; endl; // "2004-Feb-29 12:34:56.000789 EDT"
+
+ </pre>
+<p>This example used the default settings for the input and output facets. The default formats are such that interoperability like that shown in the example is possible. NOTE: Input streaming of local_date_time can only be done with a <a class="link" href="local_time.html#date_time.local_time.posix_time_zone" title="Posix Time Zone">posix time zone string</a>. The default output format uses a time zone abbreviation. The format can be changed so out and in match (as we will see later in this tutorial).</p>
+<a name="format_strings"></a><h5>
+<a name="id920043"></a>Format Strings</h5>
+<p>The format strings control the order, type, and style of the date/time elements used. The facets provide some predefined formats (iso_format_specifier, iso_format_extended_specifier, and default_date_format) but the user can easily create their own.</p>
+ (continued from previous example)
+ <pre class="programlisting">
+
+ local_time_facet* output_facet = new local_time_facet();
+ local_time_input_facet* input_facet = new local_time_input_facet();
+ ss.imbue(locale(locale::classic(), output_facet));
+ ss.imbue(locale(ss.getloc(), input_facet));
+
+ output_facet-&gt;format("%a %b %d, %H:%M %z");
+ ss.str("");
+ ss &lt;&lt; ldt;
+ cout &lt;&lt; ss.str() &lt;&lt; endl; // "Sun Feb 29, 12:34 EDT"
+
+ output_facet-&gt;format(local_time_facet::iso_time_format_specifier);
+ ss.str("");
+ ss &lt;&lt; ldt;
+ cout &lt;&lt; ss.str() &lt;&lt; endl; // "20040229T123456.000789-0500"
+
+ output_facet-&gt;format(local_time_facet::iso_time_format_extended_specifier);
+ ss.str("");
+ ss &lt;&lt; ldt;
+ cout &lt;&lt; ss.str() &lt;&lt; endl; // "2004-02-29 12:34:56.000789-05:00"
+
+ </pre>
+<p>Format strings are not limited to date/time elements. Extra verbiage can be placed in a format string. NOTE: When extra verbiage is present in an input format, the data being input must also contain the exact verbiage.</p>
+ (continued from previous example)
+ <pre class="programlisting">
+
+ // extra words in format
+ string my_format("The extended ordinal time %Y-%jT%H:%M can also be \
+ represented as %A %B %d, %Y");
+ output_facet-&gt;format(my_format.c_str());
+ input_facet-&gt;format(my_format.c_str());
+ ss.str("");
+ ss &lt;&lt; ldt;
+ cout &lt;&lt; ss.str() &lt;&lt; endl;
+
+ // matching extra words in input
+ ss.str("The extended ordinal time 2005-128T12:15 can also be \
+ represented as Sunday May 08, 2005");
+ ss &gt;&gt; ldt;
+ cout &lt;&lt; ldt &lt;&lt; endl;
+
+ </pre>
+<a name="content_strings"></a><h5>
+<a name="id920068"></a>Content Strings</h5>
+<p>So far we've shown how a user can achieve a great deal of customization with very little effort by using formats. Further customization can be achieved through user defined elements (ie strings). The elements that can be customized are: Special value names, month names, month abbreviations, weekday names, weekday abbreviations, delimiters of the date/time periods, and the phrase elements of the date_generators.</p>
+<p>The default values for these are as follows:</p>
+<h6>
+<a name="id920080"></a>Special values</h6>
+<p>
+ <code class="computeroutput">not-a-date-time</code>,
+ <code class="computeroutput">-infinity</code>,
+ <code class="computeroutput">+infinity</code>,
+ <code class="computeroutput">minimum-date-time</code>,
+ <code class="computeroutput">maximum-date-time</code>
+ </p>
+<h6>
+<a name="id920112"></a>Months</h6>
+<p>
+ <code class="computeroutput">English calendar and three letter abbreviations</code>
+ </p>
+<h6>
+<a name="id920125"></a>Weekdays</h6>
+<p>
+ <code class="computeroutput">English calendar and three letter abbreviations</code>
+ </p>
+<h6>
+<a name="id920139"></a>Date generator phrase elements</h6>
+<p>
+ <code class="computeroutput">first</code>,
+ <code class="computeroutput">second</code>,
+ <code class="computeroutput">third</code>,
+ <code class="computeroutput">fourth</code>,
+ <code class="computeroutput">fifth</code>,
+ <code class="computeroutput">last</code>,
+ <code class="computeroutput">before</code>,
+ <code class="computeroutput">after</code>,
+ <code class="computeroutput">of</code>
+ </p>
+<p>NOTE: We've shown earlier that the components of a date/time representation can be re-ordered via the format string. This is not the case with date_generators. The elements themselves can be customized but their order cannot be changed.</p>
+<h5>
+<a name="id920194"></a>Content Strings</h5>
+<p>To illustrate the customization possibilities we will use custom strings for months and weekdays (we will only use long names, is all lowercase, for this example).</p>
+ (continued from previous example)
+ <pre class="programlisting">
+
+ // set up the collections of custom strings.
+ // only the full names are altered for the sake of brevity
+ string month_names[12] = { "january", "february", "march",
+ "april", "may", "june",
+ "july", "august", "september",
+ "october", "november", "december" };
+ vector&lt;string&gt; long_months(&amp;month_names[0], &amp;month_names[12]);
+ string day_names[7] = { "sunday", "monday", "tuesday", "wednesday",
+ "thursday", "friday", "saturday" };
+ vector&lt;string&gt; long_days(&amp;day_names[0], &amp;day_names[7]);
+
+ // create date_facet and date_input_facet using all defaults
+ date_facet* date_output = new date_facet();
+ date_input_facet* date_input = new date_input_facet();
+ ss.imbue(locale(ss.getloc(), date_output));
+ ss.imbue(locale(ss.getloc(), date_input));
+
+ // replace names in the output facet
+ date_output-&gt;long_month_names(long_months);
+ date_output-&gt;long_weekday_names(long_days);
+
+ // replace names in the input facet
+ date_input-&gt;long_month_names(long_months);
+ date_input-&gt;long_weekday_names(long_days);
+
+ // customize month, weekday and date formats
+ date_output-&gt;format("%Y-%B-%d");
+ date_input-&gt;format("%Y-%B-%d");
+ date_output-&gt;month_format("%B"); // full name
+ date_input-&gt;month_format("%B"); // full name
+ date_output-&gt;weekday_format("%A"); // full name
+ date_input-&gt;weekday_format("%A"); // full name
+
+ ss.str("");
+ ss &lt;&lt; greg_month(3);
+ cout &lt;&lt; ss.str() &lt;&lt; endl; // "march"
+ ss.str("");
+ ss &lt;&lt; greg_weekday(3);
+ cout &lt;&lt; ss.str() &lt;&lt; endl; // "tuesday"
+ ss.str("");
+ ss &lt;&lt; date(2005,Jul,4);
+ cout &lt;&lt; ss.str() &lt;&lt; endl; // "2005-july-04"
+
+ </pre>
+<a name="tut_sv"></a><h5>
+<a name="id920211"></a>Special Values</h5>
+<p>Customizing the input and output of special values is best done by creating a new special_values_parser and special_values_formatter. The new strings can be set at construction time (as in the example below).</p>
+ (continued from previous example)
+ <pre class="programlisting">
+
+ // reset the formats to defaults
+ output_facet-&gt;format(local_time_facet::default_time_format);
+ input_facet-&gt;format(local_time_input_facet::default_time_input_format);
+
+ // create custom special_values parser and formatter objects
+ // and add them to the facets
+ string sv[5] = {"nadt","neg_inf", "pos_inf", "min_dt", "max_dt" };
+ vector&lt;string&gt; sv_names(&amp;sv[0], &amp;sv[5]);
+ special_values_parser sv_parser(sv_names.begin(), sv_names.end());
+ special_values_formatter sv_formatter(sv_names.begin(), sv_names.end());
+ output_facet-&gt;special_values_formatter(sv_formatter);
+ input_facet-&gt;special_values_parser(sv_parser);
+
+ ss.str("");
+ ldt = local_date_time(not_a_date_time);
+ ss &lt;&lt; ldt;
+ cout &lt;&lt; ss.str() &lt;&lt; endl; // "nadt"
+
+ ss.str("min_dt");
+ ss &gt;&gt; ldt;
+ ss.str("");
+ ss &lt;&lt; ldt;
+ cout &lt;&lt; ss.str() &lt;&lt; endl; // "1400-Jan-01 00:00:00 UTC"
+
+ </pre>
+<p>NOTE: even though we sent in strings for min and max to the formatter, they are ignored because those special values construct to actual dates (as shown above).</p>
+<a name="tut_dper"></a><h5>
+<a name="id920231"></a>Date/Time Periods</h5>
+<p>Customizing the input and output of periods is best done by creating a new period_parser and period_formatter. The new strings can be set at construction time (as in the example below).</p>
+ (continued from previous example)
+ <pre class="programlisting">
+
+ // all formats set back to defaults (not shown for brevity)
+
+ // create our date_period
+ date_period dp(date(2005,Mar,1), days(31)); // month of march
+
+ // custom period formatter and parser
+ period_formatter per_formatter(period_formatter::AS_OPEN_RANGE,
+ " to ", "from ", " exclusive", " inclusive" );
+ period_parser per_parser(period_parser::AS_OPEN_RANGE,
+ " to ", "from ", " exclusive" , "inclusive" );
+
+ // default output
+ ss.str("");
+ ss &lt;&lt; dp;
+ cout &lt;&lt; ss.str() &lt;&lt; endl; // "[2005-Mar-01/2005-Mar-31]"
+
+ // add out custom parser and formatter to the facets
+ date_output-&gt;period_formatter(per_formatter);
+ date_input-&gt;period_parser(per_parser);
+
+ // custom output
+ ss.str("");
+ ss &lt;&lt; dp;
+ cout &lt;&lt; ss.str() &lt;&lt; endl; // "from 2005-Feb-01 to 2005-Apr-01 exclusive"
+
+ </pre>
+<a name="tut_dgen"></a><h5>
+<a name="id920248"></a>Date Generators</h5>
+<p>Customizing the input and output of date_generators is done by replacing the existing strings (in the facet) with new strings.</p>
+<p>NOTE: We've shown earlier that the components of a date/time representation can be re-ordered via the format string. This is not the case with date_generators. The elements themselves can be customized but their order cannot be changed.</p>
+ (continued from previous example)
+ <pre class="programlisting">
+
+ // custom date_generator phrases
+ string dg_phrases[9] = { "1st", "2nd", "3rd", "4th", "5th",
+ "final", "prior to", "following", "in" };
+ vector&lt;string&gt; phrases(&amp;dg_phrases[0], &amp;dg_phrases[9]);
+
+ // create our date_generator
+ first_day_of_the_week_before d_gen(Monday);
+
+ // default output
+ ss.str("");
+ ss &lt;&lt; d_gen;
+ cout &lt;&lt; ss.str() &lt;&lt; endl; // "Mon before"
+
+ // add our custom strings to the date facets
+ date_output-&gt;date_gen_phrase_strings(phrases);
+ date_input-&gt;date_gen_element_strings(phrases);
+
+ // custom output
+ ss.str("");
+ ss &lt;&lt; d_gen;
+ cout &lt;&lt; ss.str() &lt;&lt; endl; // "Mon prior to"
+
+ </pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2005 CrystalClear Software, Inc<p>Subject to the Boost Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)</p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="local_time.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../date_time.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="serialization.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: branches/proto/v4/doc/html/date_time/details.html
==============================================================================
--- branches/proto/v4/doc/html/date_time/details.html (original)
+++ branches/proto/v4/doc/html/date_time/details.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,17 +1,1344 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Details</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="../date_time.html" title="Chapter 5. Boost.Date_Time">
+<link rel="prev" href="serialization.html" title="Serialization">
+<link rel="next" href="examples.html" title="Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="serialization.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../date_time.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="examples.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="date_time.details"></a>Details</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Calculations</span></dt>
+<dt><span class="section">Design Goals</span></dt>
+<dt><span class="section">Tradeoffs: Stability, Predictability, and Approximations</span></dt>
+<dt><span class="section">Terminology</span></dt>
+<dt><span class="section">References</span></dt>
+<dt><span class="section">Build-Compiler Information</span></dt>
+<dt><span class="section">Tests</span></dt>
+<dt><span class="section">Change History</span></dt>
+<dt><span class="section">Acknowledgements</span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.calculations"></a>Calculations</h3></div></div></div>
+<p>
+ <a class="link" href="details.html#timepoints">Timepoints</a> --
+ <a class="link" href="details.html#durations">Durations</a> --
+ <a class="link" href="details.html#intervals">Intervals (Periods)</a> --
+ <a class="link" href="details.html#special_value_handling">Special Value Handling</a>
+ </p>
+<a name="timepoints"></a><h4>
+<a name="id920501"></a>Timepoints</h4>
+<p>
+ This section describes some of basic arithmetic rules that can be performed with timepoints. In general, Timepoints support basic arithmetic in conjunction with Durations as follows:
+ </p>
+<pre class="programlisting">
+ Timepoint + Duration --&gt; Timepoint
+ Timepoint - Duration --&gt; Timepoint
+ Timepoint - Timepoint --&gt; Duration
+ </pre>
+<p>
+ Unlike regular numeric types, the following operations are undefined:
+ </p>
+<pre class="programlisting">
+ Duration + Timepoint --&gt; Undefined
+ Duration - Timepoint --&gt; Undefined
+ Timepoint + Timepoint --&gt; Undefined
+ </pre>
+<p>
+ </p>
+<a name="durations"></a><h4>
+<a name="id920523"></a>Durations</h4>
+<p>
+ Durations represent a length of time and can have positive and negative values. It is frequently useful to be able to perform calculations with other durations and with simple integral values. The following describes these calculations:
+ </p>
+<pre class="programlisting">
+ Duration + Duration --&gt; Duration
+ Duration - Duration --&gt; Duration
+
+ Duration * Integer --&gt; Duration
+ Integer * Duration --&gt; Duration
+ Duration / Integer --&gt; Duration (Integer Division rules)
+ </pre>
+<p>
+ </p>
+<a name="intervals"></a><h4>
+<a name="id920539"></a>Intervals (Periods)</h4>
+<p>
+ Interval logic is extremely useful for simplifying many 'calculations' for dates and times. The following describes the operations provided by periods which are based on half-open range. The following operations calculate new time periods based on two input time periods:
+ </p>
+<pre class="programlisting">
+Timeperiod intersection Timeperiod --&gt; Timeperiod
+ (null interval if no intersection)
+Timeperiod merge Timeperiod --&gt; Timeperiod
+ (null interval if no intersection)
+Timeperiod shift Duration --&gt; Timeperiod
+ (shift start and end by duration amount)
+ </pre>
+<p>
+ In addition, periods support various queries that calculate boolean results. The first set is caluculations with other time periods:
+ </p>
+<pre class="programlisting">
+ Timeperiod == Timeperiod --&gt; bool
+ Timeperiod &lt; Timeperiod --&gt; bool (true if lhs.last &lt;= rhs.begin)
+ Timeperiod intersects Timeperiod --&gt; bool
+ Timeperiod contains Timeperiod --&gt; bool
+ Timeperiod is_adjacent Timeperiod --&gt; bool
+ </pre>
+<p>
+ The following calculations are performed versus the Timepoint.
+ </p>
+<pre class="programlisting">
+ Timeperiod contains Timepoint --&gt; bool
+ Timeperiod is_before Timepoint --&gt; bool
+ Timeperiod is_after Timepoint --&gt; bool
+ </pre>
+<p>
+ </p>
+<a name="special_value_handling"></a><h4>
+<a name="id922860"></a>Special Value Handling</h4>
+<p>
+ For many temporal problems it is useful for Duration and Timepoint types to support special values such as Not A Date Time (NADT) and infinity. In general special values such as Not A Date Time (NADT) and infinity should follow rules like floating point values. Note that it should be possible to configure NADT based systems to throw an exception instead of result in NADT.
+ </p>
+<pre class="programlisting">
+ Timepoint(NADT) + Duration --&gt; Timepoint(NADT)
+ Timepoint(&#8734;) + Duration --&gt; Timepoint(&#8734;)
+ Timepoint + Duration(&#8734;) --&gt; Timepoint(&#8734;)
+ Timepoint - Duration(&#8734;) --&gt; Timepoint(-&#8734;)
+ </pre>
+<p>
+ When performing operations on both positive and negative infinities, the library will produce results consistent with the following.
+ </p>
+<pre class="programlisting">
+ Timepoint(+&#8734;) + Duration(-&#8734;) --&gt; NADT
+ Duration(+&#8734;) + Duration(-&#8734;) --&gt; NADT
+ Duration(±&#8734;) * Zero --&gt; NADT
+
+ Duration(&#8734;) * Integer(Not Zero) --&gt; Duration(&#8734;)
+ Duration(+&#8734;) * -Integer --&gt; Duration(-&#8734;)
+ Duration(&#8734;) / Integer --&gt; Duration(&#8734;)
+ </pre>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.design_goals"></a>Design Goals</h3></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Category</th>
+<th>Description</th>
+</tr>
+<tr><th>Functions</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top">Interfaces</td>
+<td>Provide concrete classes for manipulation of dates and times</td>
+</tr>
+<tr><td>
+ <div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">date, time, date_duration, time_duration, date_period, time_period, etc</li>
+<li style="list-style-type: disc">support for infinity - positive infinity, negative infinity</li>
+<li style="list-style-type: disc">iterators over time and date ranges</li>
+<li style="list-style-type: disc">allow date and time implementations to be separate as much as possible</li>
+</ul></div>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top">Calculation</td>
+<td>Provide a basis for performing efficient time calculations </td>
+</tr>
+<tr><td>
+ <div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">days between dates </li>
+<li style="list-style-type: disc">durations of times </li>
+<li style="list-style-type: disc">durations of dates and times together </li>
+</ul></div>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top">Representation Flexibility</td>
+<td>Provide the maximum possible reusability and flexibility</td>
+</tr>
+<tr><td>
+ <div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">traits based customization of internal representations for size versus resolution control</li>
+<li style="list-style-type: disc">Allowing the use of different epochs and resolution (eg: seconds versus microseconds, dates starting at the year 2000 versus dates starting in 1700)</li>
+<li style="list-style-type: disc">Options for configuring unique calendar representations (Gregorian + others)</li>
+<li style="list-style-type: disc">the use of Julian Day number and the conversion between this and the Gregorian/Julian calendar date</li>
+<li style="list-style-type: disc">Allow for flexible adjustments including leap seconds</li>
+</ul></div>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top">Date Calculations</td>
+<td>Provide tools for date calculations</td>
+</tr>
+<tr><td>
+ <div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">provide basis for calculation of complex event specs like holidays</li>
+<li style="list-style-type: disc">calendar to calendar conversions</li>
+<li style="list-style-type: disc">provide for ability to extend to new calendar systems</li>
+</ul></div>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top">Time Calculations</td>
+<td>Provide concrete classes for manipulation of time</td>
+</tr>
+<tr><td>
+ <div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">provide the ability to handle cross time-zone issues</li>
+<li style="list-style-type: disc">provide adjustments for daylight savings time (summer time)</li>
+</ul></div>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top">Clock Interfaces</td>
+<td>Provide classes for retrieving time current time</td>
+</tr>
+<tr><td>
+ <div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">access to a network / high resolution time sources </li>
+<li style="list-style-type: disc">retrieving the current date time information to populate classes </li>
+</ul></div>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top">I/O Interfaces</td>
+<td>Provide input and output for time including</td>
+</tr>
+<tr><td>
+ <div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">multi-lingual support </li>
+<li style="list-style-type: disc">provide ISO8601 compliant time facet </li>
+<li style="list-style-type: disc">use I/O facets for different local behavior </li>
+</ul></div>
+ </td></tr>
+</tbody>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.tradeoffs"></a>Tradeoffs: Stability, Predictability, and Approximations</h3></div></div></div>
+<h3>
+<a name="id923195"></a>
+ Unavoidable Trade-offs
+ </h3>
+<p>
+ The library does its best to provide everything a user could want, but there are certain inherent constraints that limit what <span class="emphasis"><em>any</em></span> temporal library can do. Specifically, a user must choose which two of the following three capabilities are desired in any particular application:
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">exact agreement with wall-clock time</li>
+<li style="list-style-type: disc">accurate math, e.g. duration calculations</li>
+<li style="list-style-type: disc">ability to handle timepoints in the future</li>
+</ul></div>
+<p>
+ Some libraries may implicitly promise to deliver all three, but if you actually put them to the test, only two can be true at once. This limitation is not a deficiency in the design or implementation of any particular library; rather it is a consequence of the way different time systems are defined by international standards. Let's look at each of the three cases:
+ </p>
+<p>
+ If you want exact agreement with wall-clock time, you must use either UTC or local time. If you compute a duration by subtracting one UTC time from another and you want an answer accurate to the second, the two times must not be too far in the future because leap seconds affect the count but are only determined about 6 months in advance. With local times a future duration calculation could be off by an entire hour, since legislatures can and do change DST rules at will.
+ </p>
+<p>
+ If you want to handle wall-clock times in the future, you won't be able (in the general case) to calculate exact durations, for the same reasons described above.
+ </p>
+<p>
+ If you want accurate calculations with future times, you will have to use TAI or an equivalent, but the mapping from TAI to UTC or local time depends on leap seconds, so you will not have exact agreement with wall-clock time.
+ </p>
+<h3>
+<a name="id923234"></a>
+ Stability, Predictability, and Approximations
+ </h3>
+<p>
+ Here is some underlying theory that helps to explain what's going on. Remember that a temporal type, like any abstract data type (ADT), is a set of values together with operations on those values.
+ </p>
+<h4>
+<a name="id923242"></a>
+ Stability
+ </h4>
+<p>
+ The representation of a type is <span class="emphasis"><em>stable</em></span> if the bit pattern associated with a given value does not change over time. A type with an unstable representation is unlikely to be of much use to anyone, so we will insist that any temporal library use only stable representations.
+ </p>
+<p>
+ An operation on a type is stable if the result of applying the operation to a particular operand(s) does not change over time.
+ </p>
+<h4>
+<a name="id923258"></a>
+ Predictability
+ </h4>
+<p>
+ Sets are most often classified into two categories: well-defined and ill-defined. Since a type is a set, we can extend these definitions to cover types. For any type T, there must be a predicate <span class="emphasis"><em>is_member( x )</em></span> which determines whether a value x is a member of type T. This predicate must return <span class="emphasis"><em>true, false,</em></span> or <span class="emphasis"><em>dont_know</em></span>.
+ </p>
+<p>
+ If for all x, is_member( x ) returns either true or false, we say the set T is <span class="emphasis"><em>well-defined</em></span>.
+ </p>
+<p>
+ If for any x, is_member( x ) returns dont_know, we say the set T is <span class="emphasis"><em>ill-defined</em></span>.
+ </p>
+<p>
+ Those are the rules normally used in math. However, because of the special characteristics of temporal types, it is useful to refine this view and create a third category as follows:
+ </p>
+<p>
+ For any temporal type T, there must be a predicate <span class="emphasis"><em>is_member( x, t )</em></span> which determines whether a value x is a member of T. The parameter t represents the time when the predicate is evaluated. For each x<sub>i</sub>, there must be a time t<sub>i</sub> and a value v such that:
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">v = true or v = false, and</li>
+<li style="list-style-type: disc">for all t &lt; t<sub>i</sub>, is_member( x<sub>i</sub>, t ) returns dont_know, and</li>
+<li style="list-style-type: disc">for all t &gt;= t<sub>i</sub>, is_member( x<sub>i</sub>, t ) returns v.</li>
+</ul></div>
+<p>
+ t<sub>i</sub> is thus the time when we "find out" whether x<sub>i</sub> is a member of T. Now we can define three categories of temporal types:
+ </p>
+<p>
+ If for all x<sub>i</sub>, t<sub>i</sub> = negative infinity, we say the type T is <span class="emphasis"><em>predictable</em></span>.
+ </p>
+<p>
+ If for some x<sub>i</sub>, t<sub>i</sub> = positive infinity, we say the type T is <span class="emphasis"><em>ill-formed</em></span>.
+ </p>
+<p>
+ Otherwise we say the type T is <span class="emphasis"><em>unpredictable</em></span> (this implies that for some x<sub>i</sub>, t<sub>i</sub> is finite).
+ </p>
+<p>
+ Ill-formed sets are not of much practical use, so we will not discuss them further. In plain english the above simply says that all the values of a predictable type are known ahead of time, but some values of an unpredictable type are not known until some particular time.
+ </p>
+<h4>
+<a name="id923394"></a>
+ Stability of Operations
+ </h4>
+<p>
+ Predictable types have a couple of important properties:
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">there is an order-preserving mapping from their elements onto a set of consecutive integers, and</li>
+<li style="list-style-type: disc">duration operations on their values are stable</li>
+</ul></div>
+<p>
+ </p>
+<p>
+ The practical effect of this is that duration calculations can be implemented with simple integer subtraction. Examples of predictable types are TAI timepoints and Gregorian dates.
+ </p>
+<p>
+ Unpredictable types have exactly the opposite properties:
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">there is no order-preserving mapping from their elements onto a set of consecutive integers, and</li>
+<li style="list-style-type: disc">duration operations on their values are not stable. </li>
+</ul></div>
+<p>
+ </p>
+<p>
+ Examples of unpredictable types are UTC timepoints and Local Time timepoints.
+ </p>
+<p>
+ We can refine this a little by saying that a range within an unpredicatable type can be predictable, and operations performed entirely on values within that range will be stable. For example, the range of UTC timepoints from 1970-01-01 through the present is predictable, so calculations of durations within that range will be stable.
+ </p>
+<h4>
+<a name="id923441"></a>
+ Approximations
+ </h4>
+<p>
+ These limitations are problematical, because important temporal types like UTC and Local Time are in fact unpredictable, and therefore operations on them are sometimes unstable. Yet as a practical matter we often want to perform this kind of operation, such as computing the duration between two timepoints in the future that are specified in Local Time.
+ </p>
+<p>
+ The best the library can do is to provide an approximation, which is generally possible and for most purposes will be good enough. Of course the documentation must specify when an answer will be approximate (and thus unstable) and how big the error may be. In many respects calculating with unpredictable sets is analogous to the use of floating point numbers, for which results are expected to only be approximately correct. Calculating with predictable sets would then be analogous to the user of integers, where results are expected to be exact.
+ </p>
+<p>
+ For situations where exact answers are required or instability cannot be tolerated, the user must be able to specify this, and then the library should throw an exception if the user requests a computation for which an exact, stable answer is not possible.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.terminology"></a>Terminology</h3></div></div></div>
+<p>
+ The following are a number of terms relevant to the date-time domain.
+ </p>
+<p>
+ A taxonomy of temporal types:
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">Timepoint -- Specifier for a location in the time continuum. Similar to a number on a ruler.</li>
+<li style="list-style-type: disc">Timelength -- A duration of time unattached to any point on the time continuum.</li>
+<li style="list-style-type: disc">Timeinterval -- A duration of time attached to a specific point in the time continuum.</li>
+</ul></div>
+<p>
+ </p>
+<p>
+ And some other terms:
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">Accuracy -- A measure of error, the difference between the reading of a clock and the true time.</li>
+<li style="list-style-type: disc">Calendar System -- A system for labeling time points with day level resolution.</li>
+<li style="list-style-type: disc">Clock Device -- A software component (tied to some hardware) that provides the current date or time with respect to a calendar or clock system.</li>
+<li style="list-style-type: disc">Precision -- A measure of repeatability of a clock.</li>
+<li style="list-style-type: disc">Resolution -- A specification of the smallest representable duration (eg: 1 second, 1 century) for a clock/calendar system or temporal type.</li>
+<li style="list-style-type: disc">Stability -- The property of a class which says that the underlying representation (implementation) associated with a particular (abstract) value will never change.</li>
+<li style="list-style-type: disc">Time System -- A system for labeling time points with higher resolution than day-level. </li>
+</ul></div>
+<p>
+ </p>
+<p>
+ Some standard date-time terminology:
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">Epoch -- Starting time point of a calendar or clock system.</li>
+<li style="list-style-type: disc">DST -- Daylight savings time - a local time adjustment made in some regions during the summer to shift the clock time of the daylight hours</li>
+<li style="list-style-type: disc">Time zone -- A region of the earth that provides for a 'local time' defined by DST rules and UT offset.</li>
+<li style="list-style-type: disc">UTC Time -- Coordinated Universal Time - Civil time system as measured at longitude zero. Kept adjusted to earth rotation by use of leap seconds. Also known as Zulu Time. Replaced the similar system known as Greenwich Mean Time. For more see http://aa.usno.navy.mil/faq/docs/UT.html
+</li>
+<li style="list-style-type: disc">TAI Time -- A high-accuracy monotonic (need better term) time system measured to .1 microsecond resolution by atomic clocks around the world. Not adjusted to earth rotation. For more see http://www.bipm.fr/enus/5_Scientific/c_time/time_server.html
+</li>
+</ul></div>
+<p>
+ </p>
+<p>
+ Some more experimental ones:
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">Local Time -- A time measured in a specific location of the universe.</li>
+<li style="list-style-type: disc">Time Label -- A tuple that either completely or partially specifies a specific date-time with respect to a calendar or clock system. This is the year-month-day representation.</li>
+<li style="list-style-type: disc">Adjusting Time Length -- A duration that represents varying physical durations depending on the moment in time. For example, a 1 month duration is typically not a fixed number of days and it depends on the date it is measured from to determine the actual length. </li>
+</ul></div>
+<p>
+ </p>
+<p>
+ These are design sorts of terms:
+ </p>
+<div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc">Generation function -- A function that generates a specific set of time points, lengths, or intervals based on one or more parameters. </li></ul></div>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.references"></a>References</h3></div></div></div>
+<p>The design of the library is currently being evolved using Wiki and email discussions. You can find more information at: Boost Wiki GDTL Start Page.
+ </p>
+<p>
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc"><a class="link" href="details.html#date_ref">Date References</a></li>
+<li style="list-style-type: disc"><a class="link" href="details.html#time_ref">Time References</a></li>
+<li style="list-style-type: disc"><a class="link" href="details.html#other_c_libs">Other C/C++ Libraries</a></li>
+<li style="list-style-type: disc"><a class="link" href="details.html#java_libs">JAVA Date-Time Libraries</a></li>
+<li style="list-style-type: disc"><a class="link" href="details.html#script_libs">Scripting Language Libraries</a></li>
+<li style="list-style-type: disc"><a class="link" href="details.html#related">Related Commercial and Fanciful Pages</a></li>
+<li style="list-style-type: disc"><a class="link" href="details.html#resolution">Resolution, Precision, and Accuracy</a></li>
+</ul></div>
+<p>
+ </p>
+<a name="date_ref"></a><h4>
+<a name="id923657"></a>Date Calendar References</h4>
+<p>
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">ISO 8601 date time standard -- Summary by Markus Kuhn
+</li>
+<li style="list-style-type: disc">
+Calendrical Calculations book by Reingold &amp; Dershowitz</li>
+<li style="list-style-type: disc">Calendar FAQ by Claus Tøndering</li>
+<li style="list-style-type: disc">Calendar zone http://www.calendarzone.com
+</li>
+<li style="list-style-type: disc">XML schema for date time</li>
+<li style="list-style-type: disc">Will Linden's Calendar Links
+</li>
+<li style="list-style-type: disc">XMAS calendar melt</li>
+</ul></div>
+<p>
+ </p>
+<a name="time_ref"></a><h4>
+<a name="id923726"></a>Time</h4>
+<p>
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">Martin Folwer on time patterns
+ <div class="itemizedlist"><ul type="opencircle">
+<li>Recurring Events for Calendars</li>
+<li>Patterns for things that Change with time
+</li>
+</ul></div>
+</li>
+<li style="list-style-type: disc">US National Institute of Standards and Technology Time Exhibits
+</li>
+<li style="list-style-type: disc">Network Time Protocol at NTP.org
+</li>
+<li style="list-style-type: disc">US Navy Systems of Time
+</li>
+<li style="list-style-type: disc">International Atomic Time</li>
+<li style="list-style-type: disc">
+Date-Time type PostgreSQL User Guide </li>
+</ul></div>
+<p>
+ </p>
+<a name="other_c_libs"></a><h4>
+<a name="id923807"></a>Other C/C++ Libraries</h4>
+<p>
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">
+ctime C Standard library reference at cplusplus.com</li>
+<li style="list-style-type: disc">
+XTime C extension proposal</li>
+<li style="list-style-type: disc">
+Another C library extension proposal by David Tribble</li>
+<li style="list-style-type: disc">
+libTAI is a C based time library</li>
+<li style="list-style-type: disc">
+Time Zone Database C library for managing timezones/places</li>
+<li style="list-style-type: disc">International Components for Unicode by IBM (open source)
+ <div class="itemizedlist"><ul type="opencircle">
+<li>Calendar Class</li>
+<li>Date Time Services</li>
+<li>Time Zone Class</li>
+<li>Date-Time Formatting</li>
+</ul></div>
+</li>
+<li style="list-style-type: disc">Julian Library in C by Mark Showalter -- NASA</li>
+</ul></div>
+<p>
+ </p>
+<a name="java_libs"></a><h4>
+<a name="id923902"></a>JAVA Date &amp; Time Library Quick Reference</h4>
+<p>
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">Calendar class</li>
+<li style="list-style-type: disc">Gregorian calendar</li>
+<li style="list-style-type: disc">Date class</li>
+<li style="list-style-type: disc">sql.time class</li>
+<li style="list-style-type: disc">Date format symbols</li>
+<li style="list-style-type: disc">Date format</li>
+<li style="list-style-type: disc">Simple Date Format</li>
+<li style="list-style-type: disc">Simple Time Zone</li>
+</ul></div>
+<p>
+ </p>
+<a name="script_libs"></a><h4>
+<a name="id923970"></a>Scripting Language Libraries</h4>
+<p>
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">A python date library MX Date Time
+</li>
+<li style="list-style-type: disc">Perl date-time
+ <div class="itemizedlist"><ul type="opencircle">
+<li>Date-Time packages at CPAN</li>
+<li>
+Date::Calc at CPAN</li>
+<li>
+Date::Convert calendar conversions at CPAN</li>
+</ul></div>
+</li>
+</ul></div>
+<p>
+ </p>
+<a name="related"></a><h4>
+<a name="id924027"></a>Related Commercial and Fanciful Pages</h4>
+<p>
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">
+Eastern Standard Tribe -- Cory Doctorow science fiction novel with time themes.</li>
+<li style="list-style-type: disc">
+Leapsecond.com time page</li>
+<li style="list-style-type: disc">World Time Server / TZ database</li>
+<li style="list-style-type: disc">
+10000 year clock at Long Now Foundation</li>
+<li style="list-style-type: disc">Timezones for PCs</li>
+</ul></div>
+<p>
+ </p>
+<a name="resolution"></a><h4>
+<a name="id924078"></a>Resolution, Precision, and Accuracy</h4>
+<p>
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">Definitions with pictures from Agilent Technologies
+</li>
+<li style="list-style-type: disc">Definitions from Southampton Institute
+</li>
+</ul></div>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.buildinfo"></a>Build-Compiler Information</h3></div></div></div>
+<p>
+ <a class="link" href="details.html#overview">Overview</a> --
+ <a class="link" href="details.html#compile_options">Compilation Options</a> --
+ <a class="link" href="details.html#portability">Compiler/Portability Notes</a> --
+ <a class="link" href="details.html#dir_structure">Directory Structure</a> --
+ <a class="link" href="details.html#other_boost_libs">Required Boost Libraries</a>
+ </p>
+<a name="overview"></a><h4>
+<a name="id924147"></a>Overview</h4>
+<p>
+ The library has a few functions that require the creation of a library file (mostly to_string, from_string functions). Most library users can make effective use of the library WITHOUT building the library, but simply including the required headers. If the library is needed, the Jamfile in the build directory will produce a "static" library (libboost_date_time) and a "dynamic/shared" library (boost_date_time) that contains these functions.
+ </p>
+<a name="compile_options"></a><h4>
+<a name="id924159"></a>Compilation Options</h4>
+<p>
+ By default the posix_time system uses a single 64 bit integer internally to provide a microsecond level resolution. As an alternative, a combination of a 64 bit integer and a 32 bit integer (96 bit resolution) can be used to provide nano-second level resolutions. The default implementation may provide better performance and more compact memory usage for many applications that do not require nano-second resolutions.
+ </p>
+<p>
+ To use the alternate resolution (96 bit nanosecond) the variable <code class="computeroutput">BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG</code> must be defined in the library users project files (ie Makefile, Jamfile, etc). This macro is not used by the Gregorian system and therefore has no effect when building the library.
+ </p>
+<p>As of version 1.33, the date_time library introduced a new IO streaming system. Some compilers are not capable of utilizing this new system. For those compilers the earlier ("legacy") IO system is still available. Non-supported compilers will select the legacy system automatically but the user can force the usage of the legacy system by defining <code class="computeroutput">USE_DATE_TIME_PRE_1_33_FACET_IO</code>.</p>
+<p>As a convenience, <code class="computeroutput">date_time</code> has provided some <a class="link" href="gregorian.html#additional_duration_types">additional duration types</a>. Use of these types may have unexpected results due to the snap-to-end-of-month behavior (see <a class="link" href="gregorian.html#snap_to_details">Reversibility of Operations Pitfall</a> for complete details and examples). These types are enabled by default. To disable these types, simply undefine <code class="computeroutput">BOOST_DATE_TIME_OPTIONAL_GREGORIAN_TYPES</code> in your project file.</p>
+<p>Another convenience is the default constructors for <code class="computeroutput"><a class="link" href="gregorian.html#date_time.gregorian.date_class" title="Date">date</a></code>, and <code class="computeroutput"><a class="link" href="posix_time.html#date_time.posix_time.ptime_class" title="Ptime">ptime</a></code>. These constructors are enabled by default. To disable them, simply define <code class="computeroutput">DATE_TIME_NO_DEFAULT_CONSTRUCTOR</code> in your project file.</p>
+<a name="portability"></a><h4>
+<a name="id924233"></a>Compiler/Portability Notes</h4>
+<p>
+ The Boost Date-Time library has been built and tested with many compilers and platforms. However, some compilers and standard libraries have issues. While some of these issues can be worked around, others are difficult to work around. The following compilers are known to fully support all aspects of the library:
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">Codewarrior 9.4 Windows</li>
+<li style="list-style-type: disc">GCC 3.2 - 3.4, 4.x on Linux</li>
+<li style="list-style-type: disc">GCC 3.3, 4.x on Darwin</li>
+<li style="list-style-type: disc">GCC 3.3 - 3.4, 4.x on Solaris</li>
+<li style="list-style-type: disc">GCC 3.3, 4.x on HP-UX</li>
+<li style="list-style-type: disc">QCC 3.3.5 on QNX</li>
+<li style="list-style-type: disc">MSVC 7.1 Windows </li>
+<li style="list-style-type: disc">Intel 8.1-9.x Linux and Windows</li>
+</ul></div>
+<p>
+ </p>
+<p>
+ Unfortunately, the VC8 compiler has some issues with date-time code.
+ The most serious issue is a memory leak which was introduced into the
+ VC8 standard library basic_stream code. Date-time has code has been changed
+ to avoid this as much as possible, but if you are using the legacy IO option
+ (NOT the default with VC8) then the issue can still arise. See the
 
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/date_time/details.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/date_time/details.html
- </body>
-</html>
+ mailing list archive for more details.
+ </p>
+<p>
+ In addition to the problem above, some versions of the VC8 library have limited
+ the range of allowed
+ values in the <code class="computeroutput">std::tm</code> structure to positive values. This was a new
+ restriction added in the VC8. The effect is that dates prior to the year
+ 1900 will cause exceptions. There is, unfortunately, no easy workaround for
+ this issue. Note that the new 64bit version of the VC8 compiler
+ does not appear to have this limitation.
+ </p>
+<p>
+ These compilers support all aspects of the library except <code class="computeroutput">wstring/wstream</code>
+ output.
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">MinGW 3.2, 3.4, 3.5 *</li>
+<li style="list-style-type: disc">GCC 3.2 (cygwin) *</li>
+</ul></div>
+<p>
+ </p>
+<p>
+ In particular, a lack of support for standard locales limits the ability of the library to support iostream based input output. For these compilers a set of more limited string based input-output is provided. Some compilers/standard libraries with this limitation include:
+ </p>
+<div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc">Borland 5.6</li></ul></div>
+<p>
+ </p>
+<p>
+ Official support for some older compilers has now been dropped. This includes:
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">GCC 2.9x</li>
+<li style="list-style-type: disc">Borland 5.1.1</li>
+<li style="list-style-type: disc">MSVC 7.0 and 6 SP5 </li>
+</ul></div>
+<p>
+ </p>
+<h6>
+<a name="id924346"></a>Visual Studio &amp; STLPort</h6>
+<p>There is a known issue with Visual Studio (7.0 &amp; 7.1) and STLPort. The build errors typically make reference to a type issue or 'no acceptable conversion' and are attempting to instantiate a template with <code class="computeroutput">wchar_t</code>. The default build of STLPort does not support <code class="computeroutput">wchar_t</code>. There are two possible workarounds for this issue. The simplest is the user can build date_time with no wide stream/string etc. The other is to rebuild STLPort with wchar_t support.
+ </p>
+<p>To build date_time with no wide stream/string etc, execute the following command from <code class="computeroutput">$BOOST_ROOT</code>:
+ </p>
+<pre class="screen">bjam -a "-sTOOLS=vc-7_1-stlport" "-sSTLPORT_PATH=..." \
+ "-sBUILD=&lt;define&gt;BOOST_NO_STD_WSTRING" \
+ --stagedir=... --with-date_time stage</pre>
+<p>
+ (replace the ellipsis with the correct paths for the build system and adjust the <code class="computeroutput">TOOLS</code> to the proper toolset if necessary)
+ </p>
+<p>Rebuilding STLPort with <code class="computeroutput">wchar_t</code> support involves placing <code class="computeroutput">/Zc:wchar_t</code> in the STLPort makefile. Date_time should then be built with the following command from <code class="computeroutput">$BOOST_ROOT</code>:
+ </p>
+<pre class="screen">bjam -a "-sTOOLS=vc-7_1-stlport" "-sSTLPORT_PATH=..." \
+ "-sBUILD=&amp;native-wchar_t&gt;on" \
+ --stagedir=... --with-date_time stage</pre>
+<p>
+ (replace the ellipsis with the correct paths for the build system and adjust the <code class="computeroutput">TOOLS</code> to the proper toolset if necessary)
+ </p>
+<a name="dir_structure"></a><h4>
+<a name="id924413"></a>Directory Structure</h4>
+<p>
+ The directory tree has the following structure:
+ </p>
+<pre class="programlisting">/boost/date_time -- common headers and template code
+/boost/date_time/gregorian -- Gregorian date system header files
+/boost/date_time/posix_time -- Posix time system headers
+/boost/date_time/local_time -- Local time system headers
+/libs/date_time/build -- build files and output directory
+/libs/date_time/test -- test battery for generic code
+/libs/date_time/test/gregorian -- test battery for the Gregorian system
+/libs/date_time/test/posix_time -- test battery for the posix_time system
+/libs/date_time/test/local_time -- test battery for the local_time system
+/libs/date_time/examples/gregorian -- example programs for dates
+/libs/date_time/examples/posix_time -- time example programs
+/libs/date_time/examples/local_time -- nifty example programs
+/libs/date_time/src/gregorian -- cpp files for libboost_date_time
+/libs/date_time/src/posix_time -- empty (one file, but no source code...)</pre>
+<p>
+ </p>
+<a name="other_boost_libs"></a><h4>
+<a name="id924431"></a>Required Boost Libraries</h4>
+<p>
+ Various parts of date-time depend on other boost libraries. These include:
+ </p>
+<div class="itemizedlist"><ul type="bullet">
+<li style="list-style-type: disc">boost.tokenizer</li>
+<li style="list-style-type: disc">boost.integer(cstdint)</li>
+<li style="list-style-type: disc">boost.operators</li>
+<li style="list-style-type: disc">boost.lexical_cast </li>
+<li style="list-style-type: disc">boost.smart_ptr (local time only)</li>
+<li style="list-style-type: disc">boost::string_algorithms </li>
+<li style="list-style-type: disc">boost::serialize (serialization code only) </li>
+</ul></div>
+<p>
+ so these libraries need to be installed.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.tests"></a>Tests</h3></div></div></div>
+<p>
+ The library provides a large number of tests in the
+ </p>
+<pre class="programlisting">
+ libs/date_time/test
+ libs/date_time/test/gregorian
+ libs/date_time/test/posix_time
+ libs/date_time/test/local_time
+ </pre>
+<p>
+ directories. Building and executing these tests assures that the installation is correct and that the library is functioning correctly. In addition, these tests facilitate the porting to new compilers. Finally, the tests provide examples of many functions not explicitly described in the usage examples.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.changes"></a>Change History</h3></div></div></div>
+<h4>
+<a name="id924521"></a>Changes from Boost 1.33 to 1.34 (date_time 1.04 to 1.05)</h4>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Type</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td>Feature</td>
+<td>
+ Updated the data in the date_time_zonespec.csv file to reflect new US/Canada
+ daylight savings time rules for 2007. If you upgrade to the new file, be aware
+ that the library will only give correct answers for current/future date
+ conversions. So if you are converting dates from earlier years the answers
+ will reflect current time zone rules not past rules. The library doesn't support
+ historic timezone rules presently.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>
+ Two other dst calculation features have also been update to reflect the new
+ US/Canada timzone rules. This is the boost::date_time::us_dst_rules and
+ dst_calc_engine. While the us_dst_rules is officially deprecated, a patch
+ by Graham Bennett has been applied which allows this class to work correctly
+ for both historical and future dates. The dst_calc_engine was updated to also
+ work for historical and future times. This allows the various local_adjustor
+ classes to work correctly. There was an interface change for classes using the
+ dst_calc_engine with custom dst traits classes. The traits classes signatures
+ changed to take a 'year' parameter on most of the methods such as end_month.
+ In addition, 2 new functions are needed on the traits classes:
+ <code class="computeroutput">static date_type local_dst_start_day(year_type year)</code> and
+ <code class="computeroutput">static date_type local_dst_end_day(year_type year)</code>.
+ Implementers should see <code class="computeroutput">date_time/local_timezone_defs.hpp</code> for
+ examples.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Fix DST traits for Austrialia (sf# 1672139) to set end of DST at 3:00 am instead of 2:00 am.
+
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Fix a problem with potential linking error with multiple definitions due
+ to I/O code.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Changed serialization code in both greg_serialize.hpp and time_serialize.hpp
+ to eliminate warnings due to unused variables for version and file_version.
+ Thanks to Caleb Epstein for the patch suggestion.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Fix regression errors that showed up under FreeBSD with GCC and the
+ LANG environment set to russian -- changed parser to use classic
+ locale instead of blank locale.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Changes for tracker issue 1178092 -- change in convert_to_lower to make
+ local a const static and speed up parsing.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Patches from Ulrich Eckhardt to fix support for EVC++ 4.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Reduce the usage of basic_stringstream as much a possible to work around
+ a bug in the VC8 standard library. See
+ mailing list archive
+ for more information.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h4>
+<a name="id924683"></a>Changes from Boost 1.32 to 1.33 (date_time 1.03 to 1.04)</h4>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Type</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td>Bug Fix</td>
+<td>Period lengths, when beginning and end points are the same, or are consecutive, were being incorrectly calculated. The corrected behavior, where end and beginning points are equal, or a period is created with a zero duration, now return a length of zero. A period where beginning and end points are consecutive will return a length of one.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Time_input_facet was missing functions to set iso formats. It also failed to parse time values that did not use a separator (%H%M%S). Both these bugs have been corrected.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Preliminary names of ptime_facet and ptime_input_facet changed to simply time_facet and time_input_facet. The ptime_* versions have been removed all together.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>The from_iso_string function failed to parse fractional digits. We added code that correctly parses when input has more digits, or too few digits, that the compiled library precision. Ptimes with only a decimal are also correctly parsed.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>The parsing mechanism in the new IO would consume the next character after a match was made. This bug presented itself when attempting to parse a period that had special value for it's beginning point.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>The new IO system failed to provide the ability for the user to "turn on" exceptions on the stream. The failbit was also not set when parsing failed. Both of these problems have been fixed.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Parsing of special values, by means of from_*_string functions, has been fixed. This also effects the libraries ability to serialize special values. Time_duration now serializes as either a string or individual fields (depending on is_special()).
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Previously, output streaming of <code class="computeroutput">partial_date</code> would display the day as either a single or double digit integer (ie '1', or '12'). This has been corrected to always display a double digit integer (ie '01').
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Major new features related to management of local times.
+ This includes the introduction of a series of new classes to
+ represent time zones and local times (see <a class="link" href="local_time.html" title="Local Time">Date Time Local Time</a> for complete details).
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Input and output facets have been re-written to support format-based
+ redefinition of formats (see <a class="link" href="date_time_io.html" title="Date Time Input/Output">Date Time IO</a> for complete details).
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Functions have been added to facilitate conversions between <code class="computeroutput">tm</code> structs for <code class="computeroutput">date</code>, <code class="computeroutput">ptime</code>, <code class="computeroutput">time_duration</code>, and <code class="computeroutput">local_date_time</code>. Functions for converting <code class="computeroutput">FILETIME</code>, and <code class="computeroutput">time_t</code> to <code class="computeroutput">ptime</code> are also provided. See the individual sections for details.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>A <code class="computeroutput">universal_time</code> function has been added to the <code class="computeroutput">microsec_time_clock</code> (full details of this function can be found <a class="link" href="posix_time.html#ptime_from_clock">here</a>).
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Functions have been added to facilitate conversions between <code class="computeroutput">tm</code> structs for <code class="computeroutput">date</code>, <code class="computeroutput">ptime</code>, <code class="computeroutput">time_duration</code>, and <code class="computeroutput">local_date_time</code>. Functions for converting <code class="computeroutput">FILETIME</code>, and <code class="computeroutput">time_t</code> to <code class="computeroutput">ptime</code> are also provided. See the individual sections for details.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>A <code class="computeroutput">universal_time</code> function has been added to the <code class="computeroutput">microsec_time_clock</code> (full details of this function can be found <a class="link" href="posix_time.html#ptime_from_clock">here</a>).
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Date-time now uses reentrant POSIX functions on those platforms that
+ support them when BOOST_HAS_THREADS is defined.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Fixed a bug in serialization code where special values
+ (not-a-date-time, infinities, etc) for
+ ptime, time_duration would not read back correctly from an archive.
+ The output serialization code wrote subfields such
+ as time_duration.seconds() which are invalid for special values and
+ thus undefined values. Thus when read back the values could cause
+ strange behavior including execeptions on construction.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Fixed multiple warnings generated with various platforms/compilers.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Construction of a ptime with a time_duration beyond the range of 00:00 to 23:59:59.9... now adjusts the date and time to make the time_duration fall within this range (ie <code class="computeroutput">ptime(date(2005,2,1), hours(-5))</code> -&gt; "2005-Jan-31 19:00:00" &amp; <code class="computeroutput">ptime(date(2005,2,1), hours(35))</code> -&gt; "2005-Feb-02 11:00:00").
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Time parsing now correctly handles excessive digits for fractional seconds. Leading zeros are dropped ("000100" -&gt; 100 frac_sec), and excessive digits are truncated at the proper place ("123456789876" -&gt; 123456 or 123456789 depending on what precision the library was compiled with).
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Changes to the <code class="computeroutput">boost::serialization</code> interface broke serialization compatibility for <code class="computeroutput">date_time</code>. The user must provide a function to insure <code class="computeroutput">date_time</code> objects are <code class="computeroutput">const</code> before they are serialized. The function should be similar to:
+ <pre class="screen">template&lt;class archive_type, class temporal_type&gt;
+void save_to(archive_type&amp; ar,
+ const temporal_type&amp; tt)
+{
+ ar &lt;&lt; tt;
+}</pre>
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Use of the depricated <code class="computeroutput">boost::tokenizer</code> interface has been updated to the current interface. This fixes compiler errors on some older compilers.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Templatized formatters in the legacy IO system to accept char type. Also removed calls to <code class="computeroutput">boost::lexical_cast</code>.
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h4>
+<a name="id925717"></a>Changes from Boost 1.31 to 1.32 (date_time 1.02 to 1.03)</h4>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Type</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td>Bug Fix</td>
+<td>Snap to end of month behavior corrected for year_functor. Previously, starting
+ from 2000-Feb-28 (leap year and not end of month) and iterating through the next
+ leap year would result in 2004-Feb-29 instead of 2004-Feb-28. This behavior has
+ been corrected to produce the correct result of 2004-Feb-28. Thanks to Bart Garst
+ for this change.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Free function for creating a ptime object from a FILETIME struct. This function
+ is only available on platforms that define BOOST_HAS_FTIME.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Microsecond time clock is now available on most windows compilers as well as
+ Unix.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Use of the boost::serialization library is now available with most of the
+ date_time classes. Classes capable of serialization are: date_generator classes,
+ date, days, date_period, greg_month, greg_weekday, greg_day, ptime, time_duration,
+ and time_period. Thanks to Bart Garst for this change.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Functions added to convert date and time classes to wstring. The library now
+ provides to_*_wstring as well as to_*_string functions for: simple, iso,
+ iso_extended, and sql for dates and compilers that support wstrings. Thanks to
+ Bart Garst for this change.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Period classes now handle zero length and NULL periods correctly. A NULL period
+ is a period with a negative length. Thanks to Frank Wolf and Bart Garst for this
+ change.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Added end_of_month function to gregorian::date to return the last day of
+ the current month represented by the date. Result is undefined for
+ not_a_date_time or infinities.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Removed incorrect usage of BOOST_NO_CWCHAR macro throughout library.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>New names added for some date classes. Original names are still valid but may
+ some day be deprecated. Changes are:
+ <table class="simplelist" border="0" summary="Simple list">
+<tr>
+<td>date_duration</td>
+<td>is now</td>
+<td>days</td>
+</tr>
+<tr>
+<td>nth_kday_of_month</td>
+<td>is now</td>
+<td>nth_day_of_the_week_in_month</td>
+</tr>
+<tr>
+<td>first_kday_of_month</td>
+<td>is now</td>
+<td>first_day_of_the_week_in_month</td>
+</tr>
+<tr>
+<td>last_kday_of_month</td>
+<td>is now</td>
+<td>last_day_of_the_week_in_month</td>
+</tr>
+<tr>
+<td>first_kday_after</td>
+<td>is now</td>
+<td>first_day_of_the_week_after</td>
+</tr>
+<tr>
+<td>first_kday_before</td>
+<td>is now</td>
+<td>first_day_of_the_week_before</td>
+</tr>
+</table>
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Free functions for date generators added. Functions are: days_until_weekday, days_before_weekday, next_weekday, and previous_weekday.
+ <pre class="screen">days days_until_weekday(date, greg_weekday);
+days days_before_weekday(date, greg_weekday);
+date next_weekday(date, greg_weekday);
+date previous_weekday(date, greg_weekday);</pre>
+ Thanks to Bart Garst for this change.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>New experimental duration types added for months, years, and weeks. These classes
+ also provide mathematical operators for use with date and time classes. Be aware
+ that adding of months or years a time or date past the 28th of a month may show
+ non-normal mathematical properties. This is a result of 'end-of-month'
+ snapping used in the calculation. The last example below illustrates the
+ issue.
+
+ <pre class="screen">months m(12);
+years y(1);
+m == y; // true
+days d(7);
+weeks w(1);
+d == w; // true
+ptime t(...);
+t += months(3);
+date d(2004,Jan,30);
+d += months(1); //2004-Feb-29
+d -= months(1); //2004-Jan-29</pre>
+ Input streaming is not yet implemented for these types.
+ Thanks to Bart Garst for this change.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Unifying base class for date_generators brought in to gregorian namespace. See <a class="link" href="examples.html#date_time.examples.print_holidays" title="Print Holidays">Print Holidays Example</a>.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Added constructors for date and ptime that allow for default construction (both)
+ and special values construction (ptime, both now support this). Default
+ constructors initialize the objects to not_a_date_time (NADT).
+ <pre class="screen">ptime p_nadt(not_a_date_time);
+ptime p_posinf(pos_infin);
+ptime p; // p == NADT
+date d; // d == NADT</pre>
+ Thanks to Bart Garst for this change.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Output streaming now supports wide stream output on compiler / standard library combinations that support wide streams. This allows code like:
+ <pre class="screen">std::wstringstream wss;
+date d(2003,Aug,21);
+wss &lt;&lt; d;</pre>
+ Thanks to Bart Garst for this change.
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Input streaming for date and time types is now supported on both wide and narrow streams:
+ <pre class="screen">date d(not_a_date_time);
+std::stringstream ss("2000-FEB-29");
+ss &gt;&gt; d; //Feb 29th, 2000
+std::wstringstream ws("2000-FEB-29");
+ws &gt;&gt; d; //Feb 29th, 2000</pre>
+ Thanks to Bart Garst for this change.
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td> Fixed bug in duration_from_string() where a string formatted with
+ less than full amount of fractional digits created an incorrect
+ time_duration. With microsecond resolution for time durations
+ the string "1:01:01.010" created a time duration of
+ 01:01:01.000010 instead of 01:01:01.010000
+ </td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Fixed the special value constructor for gregorian::date and posix_time::ptime
+ when constructing with min_date_time or max_date_time. The wrong value was
+ constructed for these.
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h4>
+<a name="id926033"></a>Changes from Boost 1.30 to 1.31 (date_time 1.01 to 1.02)</h4>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Type</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td>Bug Fix</td>
+<td>Build configuration updated so dll, statically, and dynamically linkable library files are now produced with MSVC compilers. See <a class="link" href="details.html#date_time.buildinfo" title="Build-Compiler Information">Build/Compiler Information</a> for more details.</td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Time_duration from_string is now correctly constructed from a negative value. (ie "-0:39:00.000") Code provided by Bart Garst.</td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Fixed many MSVC compiler warnings when compiled with warning level 4.</td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Added prefix decrement operator (--) for date and time iterators. See <a class="link" href="posix_time.html#date_time.posix_time.time_iterators" title="Time Iterators">Time Iterators</a> and <a class="link" href="gregorian.html#date_time.gregorian.date_iterators" title="Date Iterators">Date Iterators</a> for more details. Code provided by Bart Garst.</td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Special_values functionality added for date_duration, time_duration and time classes. Code provided by Bart Garst.</td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Fixed time_duration_traits calculation bug which was causing time duration to be limited to 32bit range even when 64 bits were available. Thanks to Joe de Guzman for tracking this down.</td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Provided additional operators for duration types (eg: date_duration, time_duration). This includes dividable by integer and fixes to allow +=, -= operators. Thanks to Bart Garst for writing this code. Also, the documentation of <a class="link" href="details.html#date_time.calculations" title="Calculations">Calculations</a> has been improved.</td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Added typedefs to boost::gregorian gregorian_types.hpp various date_generator function classes.</td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Added from_time_t function to convert time_t to a ptime.</td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Added a span function for combining periods. See <a class="link" href="gregorian.html#date_time.gregorian.date_period" title="Date Period">date period</a> and <a class="link" href="posix_time.html#date_time.posix_time.time_period" title="Time Period">time period</a> docs.</td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Added a function to time_duration to get the total number of seconds in a
+ duration truncating any fractional seconds. In addition, other resolutions
+ were added to allow for easy conversions. For example
+ <pre class="screen">seconds(1).total_milliseconds() == 1000
+seconds(1).total_microseconds() == 1000000
+hours(1).total_milliseconds() == 3600*1000 //3600 sec/hour
+seconds(1).total_nanoseconds() == 1000000000</pre>
 
+ </td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Added output streaming operators for the <a class="link" href="gregorian.html#date_time.gregorian.date_algorithms" title="Date Generators/Algorithms">date generator</a> classes - partial_date, first_kday_after, first_kday_before, etc. Thanks to Bart Garst for this work.</td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Added unary- operators for durations for reversing the sign of a time duration. For example:
+ <pre class="screen">time_duration td(5,0,0); //5 hours
+td = -td; //-5 hours</pre>
+ Thanks to Bart Garst for this work.</td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Added support for parsing strings with 'month names'. Thus creating a date object from string now accepts multiple formats ("2003-10-31","2003-Oct-31", and "2003-October-31"). Thus, date d = from_simple_string("2003-Feb-27") is now allowed. A bad month name string ( from_simple_string("2003-SomeBogusMonthName-27")) will cause a bad_month exception. On most compilers the string compare is case insensitive. Thanks to Bart Garst for this work.</td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>In addition to support for month names or numbers, functions have been added to create date objects from multi-ordered date strings. Ex: "January-21-2002", "2002-Jan-21", and "21-Jan-2003". See <a class="link" href="gregorian.html#date_time.gregorian.date_class" title="Date">Date Class</a> for more details.</td>
+</tr>
+<tr>
+<td>Bug-Fix</td>
+<td>Various documentation fixes. Thanks to Bart Garst for updates.</td>
+</tr>
+</tbody>
+</table></div>
+<h4>
+<a name="id926290"></a>Changes from Boost 1.29 to 1.30 (date_time 1.00 to 1.01)</h4>
+<p>
+ Notice: The interface to the partial_date class (see <a class="link" href="gregorian.html#date_time.gregorian.date_algorithms" title="Date Generators/Algorithms">date_algorithms</a>) was changed. The order of construction parameters was changed which will cause some code to fail execution. This change was made to facilitate more generic local time adjustment code. Thus instead of specifying partial_date pd(Dec,25) the code needs to be changed to partial_date pd(25, Dec);
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Type</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td>Bug Fix</td>
+<td>Added new experimental feature for Daylight Savings Time calculations. This allows traits based specification of dst rules.</td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Added new interfaces to calculate julian day and modified julian day to the gregorian date class. See <a class="link" href="gregorian.html#date_time.gregorian.date_class" title="Date">boost::gregorian::date</a>.</td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Add new interface to calculate iso 8601 week number for a date. See <a class="link" href="gregorian.html#date_time.gregorian.date_class" title="Date">boost::gregorian::date</a>.</td>
+</tr>
+<tr>
+<td>Feature</td>
+<td>Add an iso 8601 time date-time format (eg: YYYYMMDDTHHHMMSS) parsing function. See <a class="link" href="posix_time.html#date_time.posix_time.ptime_class" title="Ptime">Class ptime</a> for more information.</td>
+</tr>
+<tr>
+<td>Feature</td>
+<td> Added a length function to the period template so that both date_periods and time_periods will now support this function.</td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Split Jamfiles so that libs/date_time/build/Jamfile only builds library and /libs/date_time/libs/test/Jamfile which runs tests.</td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Fixed many minor documentation issues.</td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Removed the DATE_TIME_INLINE macro which was causing link errors. This macro is no longer needed in projects using the library.</td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Added missing typedef for year_iterator to gregorian_types.hpp</td>
+</tr>
+<tr>
+<td>Bug Fix</td>
+<td>Fixed problem with gregorian ostream operators that prevented the use of wide streams.</td>
+</tr>
+<tr>
+<td>Bug-Fix</td>
+<td>Tighten error handling for dates so that date(2002, 2, 29) will throw a bad_day_of_month exception. Previously the date would be incorrectly constructed. Reported by sourceforge bug: 628054 among others.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.acknowledgements"></a>Acknowledgements</h3></div></div></div>
+<p>
+ Many people have contributed to the development of this library. In particular Hugo Duncan and Joel de Guzman for help with porting to various compilers. For initial development of concepts and design Corwin Joy and Michael Kenniston deserve special thanks. Also extra thanks to Michael for writing up the theory and tradeoffs part of the documentation. Dave Zumbro for initial inspiration and sage thoughts. Many thanks to boost reviewers and users including: William Seymour, Kjell Elster, Beman Dawes, Gary Powell, Andrew Maclean, William Kempf, Peter Dimov, Chris Little, David Moore, Darin Adler, Gennadiy Rozental, Joachim Achtzehnter, Paul Bristow, Jan Langer, Mark Rodgers, Glen Knowles, Matthew Denman, and George Heintzelman.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2005 CrystalClear Software, Inc<p>Subject to the Boost Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)</p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="serialization.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../date_time.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="examples.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: branches/proto/v4/doc/html/date_time/local_time.html
==============================================================================
--- branches/proto/v4/doc/html/date_time/local_time.html (original)
+++ branches/proto/v4/doc/html/date_time/local_time.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,17 +1,1657 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Local Time</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="../date_time.html" title="Chapter 5. Boost.Date_Time">
+<link rel="prev" href="posix_time.html" title="Posix Time">
+<link rel="next" href="date_time_io.html" title="Date Time Input/Output">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="posix_time.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../date_time.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="date_time_io.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="date_time.local_time"></a>Local Time</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Time Zone (abstract)</span></dt>
+<dt><span class="section">Posix Time Zone</span></dt>
+<dt><span class="section">Time Zone Database</span></dt>
+<dt><span class="section">Custom Time Zone</span></dt>
+<dt><span class="section">Local Date Time</span></dt>
+<dt><span class="section">Local Time Period</span></dt>
+</dl></div>
+<h3>
+<a name="id905630"></a>Local Time System</h3>
+<p>
+ <a class="link" href="local_time.html#local_intro">Introduction</a> --
+ <a class="link" href="local_time.html#local_ex">Usage Examples</a>
+ </p>
+<a name="local_intro"></a><h4>
+<a name="id905652"></a>Introduction</h4>
+<p>
+ The library supports 4 main extensions for the management of local times. This includes
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>local_date_time -- locally adjusted time point</td></tr>
+<tr><td>posix_time_zone -- time zone defined by posix string (eg: "EST10EDT,M10.5.0,M3.5.0/03")</td></tr>
+<tr><td>time_zone_database -- get time zones by region from .csv file (eg: America/New York)</td></tr>
+<tr><td>time_zone -- abstract time zone interface</td></tr>
+</table>
+<p>
+ </p>
+<p>
+ Together, these extensions define a time system adjusted for recording times related to a specific earth location. This time system utilizes all the features and benefits of the posix_time system (see <a class="link" href="posix_time.html" title="Posix Time">posix_time</a> for full details). It uses a time_zone object which contains all the necessary data/rules to enable adjustments to and from various time zones. The time_zone objects used in date_time are handled via a boost::shared_ptr&lt;boost::local_time::time_zone&gt;.
+ </p>
+<p>
+ The phrase "wall-clock" refers to the time that would be shown on a wall clock in a particular time zone at any point in time. Local_time uses a time zone object to account for differences in time zones and daylight savings adjustments. For example: While 5:00 pm, October 10, 2004 in Sydney Australia occurs at exactly the same instant as 3:00 am, October 10, 2004 in New York USA, it is a 14 hour difference in wall-clock times. However, a point in time just one day later will result in a 16 hour difference in wall-clock time due to daylight savings adjustments in both time zones. The local_time system tracks these by means of a time point, stored as UTC, and time_zone objects that contain all the necessary data to correctly calculate wall-clock times.
+ </p>
+<a name="local_ex"></a><h4>
+<a name="id905695"></a>Usage Examples</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Example</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td><a class="link" href="examples.html#date_time.examples.simple_time_zone" title="Simple Time Zones">Simple Time Zone</a></td>
+<td>Side by side examples of Time Zone usage. Both <span class="type">custom_time_zone</span> and <span class="type">posix_time_zone</span> are shown.</td>
+</tr>
+<tr>
+<td><a class="link" href="examples.html#date_time.examples.calc_rules" title="Daylight Savings Calc Rules">Daylight Savings Calc Rules</a></td>
+<td>Simple example showing the creation of all five <span class="type">dst_calc_rule</span> types.</td>
+</tr>
+<tr>
+<td><a class="link" href="examples.html#date_time.examples.seconds_since_epoch" title="Seconds Since Epoch">Seconds Since Epoch</a></td>
+<td>Example that calculates the total seconds elapsed since the epoch (1970-Jan-01) utilizing local_date_time.</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.local_time.time_zone_base"></a>Time Zone (abstract)</h3></div></div></div>
+<a class="link" href="local_time.html#time_zone_base_intro">Introduction</a> --
+ <a class="link" href="local_time.html#time_zone_base_header">Header</a> --
+ <a class="link" href="local_time.html#time_zone_base_constr">Construction</a> --
+ <a class="link" href="local_time.html#time_zone_base_accessors">Accessors</a><a name="time_zone_base_intro"></a><h4>
+<a name="id905811"></a>Introduction</h4>
+<p>
+ The time_zone_base class is an abstract base class template for representing time zones. Time zones are a set of data and rules that provide information about a time zone. The date_time library handles time_zones by means of a boost::shared_ptr&lt;time_zone_base&gt;. A user's custom time zone class will work in the date_time library by means of this shared_ptr.
+ </p>
+<p>
+ For convienience, the time_zone_base class is typedef'd as time_zone. All references in the documentation to time_zone, are referring to this typedef.
+ </p>
+<a name="time_zone_base_header"></a><h4>
+<a name="id905827"></a>Header</h4>
+<p>
+ The time_zone_base class is defined in the header:
+ </p>
+<pre class="programlisting">#include "boost/date_time/time_zone_base.hpp"
+ </pre>
+<p>
+ </p>
+<a name="time_zone_base_constr"></a><h4>
+<a name="id905845"></a>Construction</h4>
+<p>
+ A default constructor is provided in the time_zone_base class. There are no private data members in this base class to initialize.
+ </p>
+<p>
+ Template parameters are time_type (typically posix_time::ptime) and CharT (defaults to char).
+ </p>
+<a name="time_zone_base_accessors"></a><h4>
+<a name="id905860"></a>Accessors</h4>
+<p>
+ All of the accessors listed here are pure virtual functions.
+ </p>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td valign="top"><pre class="screen">
+string_type dst_zone_abbrev();</pre></td>
+<td>Returns the daylight savings abbreviation for the represented time zone.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">
+string_type std_zone_abbrev();</pre></td>
+<td>Returns the standard abbreviation for the represented time zone.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">
+string_type dst_zone_name();</pre></td>
+<td>Returns the daylight savings name for the represented time zone.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">
+string_type std_zone_name();</pre></td>
+<td>Returns the standard name for the represented time zone.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">bool has_dst();</pre></td>
+<td>Returns true if this time zone does not make a daylight savings shift.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">
+time_type dst_local_start_time(year_type);</pre></td>
+<td>The date and time daylight savings time begins in given year.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">
+time_type dst_local_end_time(year_type);</pre></td>
+<td valign="top">The date and time daylight savings time ends in given year.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">
+time_duration_type base_utc_offset();</pre></td>
+<td>The amount of time offset from UTC (typically in hours).</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">
+time_duration_type dst_offset();</pre></td>
+<td>The amount of time shifted during daylight savings.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">
+std::string to_posix_string();</pre></td>
+<td>Returns a posix time zone string representation of this time_zone_base object. For a detailed description of a posix time zone string see <a class="link" href="local_time.html#date_time.local_time.posix_time_zone" title="Posix Time Zone">posix_time_zone</a>.</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.local_time.posix_time_zone"></a>Posix Time Zone</h3></div></div></div>
+<a class="link" href="local_time.html#posix_time_zone_intro">Introduction</a> --
+ <a class="link" href="local_time.html#posix_time_zone_notes">Important Notes</a> --
+ <a class="link" href="local_time.html#posix_time_zone_header">Header</a> --
+ <a class="link" href="local_time.html#posix_time_zone_constr">Construction</a> --
+ <a class="link" href="local_time.html#posix_time_zone_accessors">Accessors</a><a name="posix_time_zone_intro"></a><h4>
+<a name="id906091"></a>Introduction</h4>
+<p>
+ A posix_time_zone object is a set of data and rules that provide information about a time zone. Information such as the offset from UTC, it's name and abbreviation, as well as daylight savings rules, called <a class="link" href="local_time.html#date_time.local_time.dst_calc_rules">dst_calc_rules</a>. These rules are stored as a boost::shared_ptr&lt;dst_calc_rules&gt;.
+ </p>
+<p>
+ As a convenience, a typedef for shared_ptr&lt;dst_calc_rules&gt; is provided.
+ </p>
+<pre class="programlisting">typedef boost::shared_ptr&lt;dst_calc_rules&gt; local_time::dst_calc_rule_ptr;</pre>
+<p>
+ </p>
+<p>
+ A posix_time_zone is unique in that the object is created from a Posix time zone string (IEEE Std 1003.1). A POSIX time zone string takes the form of:
+ </p>
+<div class="literallayout"><p><br>
+      "std offset dst [offset],start[/time],end[/time]" (w/no spaces).</p></div>
+<p>'std' specifies the abbrev of the time zone. 'offset' is the offset from UTC. 'dst' specifies the abbrev of the time zone during daylight savings time. The second offset is how many hours changed during DST. 'start' and 'end' are the dates when DST goes into (and out of) effect. 'offset' takes the form of:
+ </p>
+<div class="literallayout"><p><br>
+      [+|-]hh[:mm[:ss]] {h=0-23, m/s=0-59}</p></div>
+<p>'time' and 'offset' take the same form. 'start' and 'end' can be one of three forms:
+ </p>
+<div class="literallayout"><p><br>
+      Mm.w.d {month=1-12, week=1-5 (5 is always last), day=0-6} <br>
+      Jn {n=1-365 Feb29 is never counted} <br>
+      n {n=0-365 Feb29 is counted in leap years}</p></div>
+<p>
+ </p>
+<p>
+ Exceptions will be thrown under the following conditions:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>An exception will be thrown for an invalid date spec (see <a class="link" href="gregorian.html#date_time.gregorian.date_class" title="Date">date class</a>).</li>
+<li>A boost::local_time::bad_offset exception will be thrown for:</li>
+<li>A DST start or end offset that is negative or more than 24 hours.</li>
+<li>A UTC zone that is greater than +12 or less than -12 hours.</li>
+<li>A boost::local_time::bad_adjustment exception will be thrown for a DST adjustment that is 24 hours or more (positive or negative)</li>
+</ul></div>
+<p>
+ </p>
+<p>As stated above, the 'offset' and '/time' portions of the string are not required. If they are not given they default to 01:00 for 'offset', and 02:00 for both occurrences of '/time'.
+ </p>
+<p>
+ Some examples are:
+ </p>
+<div class="literallayout"><p><br>
+      "PST-8PDT01:00:00,M4.1.0/02:00:00,M10.1.0/02:00:00"<br>
+      "PST-8PDT,M4.1.0,M10.1.0"</p></div>
+<p>These two are actually the same specification (defaults were used in the second string). This zone lies eight hours west of GMT and makes a one hour shift forward during daylight savings time. Daylight savings for this zone starts on the first Sunday of April at 2am, and ends on the first Sunday of October at 2am.
+ </p>
+<div class="literallayout"><p><br>
+      "MST-7"</p></div>
+<p>This zone is as simple as it gets. This zone lies seven hours west of GMT and has no daylight savings.
+ </p>
+<div class="literallayout"><p><br>
+      "EST10EDT,M10.5.0,M3.5.0/03"</p></div>
+<p>This string describes the time zone for Sydney Australia. It lies ten hours east of GMT and makes a one hour shift forward during daylight savings. Being located in the southern hemisphere, daylight savings begins on the last Sunday in October at 2am and ends on the last Sunday in March at 3am.
+ </p>
+<div class="literallayout"><p><br>
+      "FST+3FDT02:00,J60/00,J304/02"</p></div>
+<p>This specification describes a fictitious zone that lies three hours east of GMT. It makes a two hour shift forward for daylight savings which begins on March 1st at midnight, and ends on October 31st at 2am. The 'J' designation in the start/end specs signifies that counting starts at one and February 29th is never counted.
+ </p>
+<div class="literallayout"><p><br>
+      "FST+3FDT,59,304"</p></div>
+<p>This specification is significant because of the '59'. The lack of 'J' for the start and end dates, indicates that the Julian day-count begins at zero and ends at 365. If you do the math, you'll see that allows for a total of 366 days. This is fine in leap years, but in non-leap years '59' (Feb-29) does not exist. This will construct a valid posix_time_zone object but an exception will be thrown if the date of '59' is accessed in a non-leap year. Ex:
+ </p>
+<pre class="programlisting">posix_time_zone leap_day(std::string("FST+3FDT,59,304"));
+leap_day.dst_local_start_time(2004); // ok
+leap_day.dst_local_start_time(2003); // Exception thrown</pre>
+<p>
+ </p>
+<p>
+ The posix_time_zone objects are used via a boost::shared_ptr&lt;local_time::time_zone_base&gt;. As a convenience, a typedef for boost::shared_ptr&lt;local_time::time_zone_base&gt; is provided:
+ </p>
+<pre class="programlisting">typedef boost::shared_ptr&lt;time_zone_base&gt; local_time::time_zone_ptr;</pre>
+<p>
+ </p>
+<p>
+ See <a class="link" href="examples.html#date_time.examples.simple_time_zone" title="Simple Time Zones">Simple time zone</a> for a side by side example of time_zone and posix_time_zone usage.
+ </p>
+<a name="posix_time_zone_notes"></a><h4>
+<a name="id906230"></a>Important Notes</h4>
+<div class="itemizedlist"><ul type="disc">
+<li>posix_time_zone objects use the standard and daylight savings abbreviations in place of the full names (see <a class="link" href="local_time.html#posix_time_zone_accessors">Accessors</a> below).</li>
+<li>'Jn' and 'n' date specifications can not be mixed in a specification string. Ex: "FST+3FDT,59,J304" </li>
+<li>'n' date specification of 59 represents Feb-29. Do not attempt to access in a non-leap year or an exception will be thrown.</li>
+</ul></div>
+<a name="posix_time_zone_header"></a><h4>
+<a name="id906258"></a>Header</h4>
+<p>
+ The inclusion of a single header will bring in all boost::local_time types, functions, and IO operators.
+ </p>
+<pre class="programlisting">#include "boost/date_time/local_time/local_time.hpp"</pre>
+<p>
+ </p>
+<a name="posix_time_zone_constr"></a><h4>
+<a name="id906274"></a>Construction</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Syntax</th>
+<th>Example</th>
+</tr></thead>
+<tbody><tr>
+<td valign="top"><pre class="screen">posix_time_zone(std::string)</pre></td>
+<td>
+<pre class="screen">std::string nyc("EST-5EDT,M4.1.0,M10.5.0");
+time_zone_ptr zone(new posix_time_zone(nyc));</pre>
+ </td>
+</tr></tbody>
+</table></div>
+<p>
+ </p>
+<a name="posix_time_zone_accessors"></a><h4>
+<a name="id906600"></a>Accessors</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string dst_zone_abbrev()</pre></td>
+<td>Returns the daylight savings abbreviation for the represented time zone.</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;dst_zone_abbrev(); // "EDT"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string std_zone_abbrev()</pre></td>
+<td>Returns the standard abbreviation for the represented time zone.</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;std_zone_abbrev(); // "EST"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string dst_zone_name()</pre></td>
+<td>Returns the daylight savings ABBREVIATION for the represented time zone.</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;dst_zone_name(); // "EDT"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string std_zone_name()</pre></td>
+<td>Returns the standard ABBREVIATION for the represented time zone.</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;std_zone_name(); // "EST"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool has_dst()</pre></td>
+<td>Returns true when time_zone's shared_ptr to dst_calc_rules is not NULL.</td>
+</tr>
+<tr><td>
+<pre class="screen">nyc_zone_sh_ptr-&gt;has_dst(); // true
+phx_zone_sh_ptr-&gt;has_dst(); // false</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">
+ptime dst_local_start_time(greg_year)</pre></td>
+<td>The date and time daylight savings time begins in given year. Returns not_a_date_time if this zone has no daylight savings.</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;dst_local_start_time(2004);
+// 2004-Apr-04 02:00</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">
+ptime dst_local_end_time(greg_year)</pre></td>
+<td>The date and time daylight savings time ends in given year. Returns not_a_date_time if this zone has no daylight savings.</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;dst_local_end_time(2004);
+// 2004-Oct-31 02:00</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">
+time_duration base_utc_offset()</pre></td>
+<td>The amount of time offset from UTC (typically in hours).</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;base_utc_offset(); // -05:00</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">posix_time::time_duration dst_offset()</pre></td>
+<td>The amount of time shifted during daylight savings.</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;dst_offset(); // 01:00</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string to_posix_string()</pre></td>
+<td>Returns a posix time zone string representation of this time_zone_base object. Depending on how the time_zone object was created, the date-spec format of the string will be in either 'M' notation or 'n' notation. Every possible date-spec that can be represented in 'J' notation can also be represented in 'n' notation. The reverse is not true so only 'n' notation is used for these types of date-specs. For a detailed description of a posix time zone string see <a class="link" href="local_time.html#date_time.local_time.posix_time_zone" title="Posix Time Zone">posix_time_zone</a>.</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;to_posix_string();
+// "EST-05EDT+01,M4.1.0/02:00,M10.5.0/02:00"
+phx_zone_sh_ptr-&gt;to_posix_string();
+// "MST-07"
+ </pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.local_time.tz_database"></a>Time Zone Database</h3></div></div></div>
+<a class="link" href="local_time.html#tz_database_intro">Introduction</a> --
+ <a class="link" href="local_time.html#tz_database_header">Header</a> --
+ <a class="link" href="local_time.html#tz_database_constr">Construction</a> --
+ <a class="link" href="local_time.html#tz_database_accessors">Accessors</a> --
+ <a class="link" href="local_time.html#tz_database_datafile">Data File Details</a><a name="tz_database_intro"></a><h4>
+<a name="id906941"></a>Introduction</h4>
+<p>
+ The local_time system depends on the ability to store time zone information. Our Time Zone Database (tz_database) is a means of permanently storing that data. The specifications for many time zones (377 at this time) are provided. These specifications are based on data found in the zoneinfo datebase. The specifications are stored in the file:</p>
+<pre class="screen">libs/date_time/data/date_time_zonespec.csv</pre>
+<p>. While this file already contains specifications for many time zones, it's real intent is for the user to modify it by adding (or removing) time zones to fit their application. See <a class="link" href="local_time.html#tz_database_datafile">Data File Details</a> to learn how this is accomplished.
+ </p>
+<a name="tz_database_header"></a><h4>
+<a name="id906967"></a>Header</h4>
+<p>
+ The inclusion of a single header will bring in all boost::local_time types, functions, and IO operators.
+ </p>
+<pre class="programlisting">#include "boost/date_time/local_time/local_time.hpp"
+ </pre>
+<p>
+ </p>
+<a name="tz_database_constr"></a><h4>
+<a name="id906985"></a>Construction</h4>
+<p>
+ The only constructor takes no arguments and creates an empty database. It is up to the user to populate the database. This is typically achieved by loading the desired datafile, but can also be accomplished by means of the <code class="computeroutput">add_record(...)</code> function (see the <a class="link" href="local_time.html#tz_database_accessors">Accessors table</a>). A <code class="computeroutput">local_time::data_not_accessible</code> exception will be thrown if given zonespec file cannot be found. <code class="computeroutput">local_time::bad_field_count</code> exception will be thrown if the number of fields in given zonespec file is incorrect.
+ </p>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">tz_database()</pre></td>
+<td>Constructor creates an empty database.</td>
+</tr>
+<tr><td><pre class="screen">tz_database tz_db;</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool load_from_file(std::string)</pre></td>
+<td>Parameter is path to a time zone spec csv file (see <a class="link" href="local_time.html#tz_database_datafile">Data File Details</a> for details on the contents of this file). This function populates the database with time zone records found in the zone spec file. A <code class="computeroutput">local_time::data_not_accessible</code> exception will be thrown if given zonespec file cannot be found. <code class="computeroutput">local_time::bad_field_count</code> exception will be thrown if the number of fields in given zonespec file is incorrect.</td>
+</tr>
+<tr><td>
+<pre class="screen">tz_database tz_db;
+tz_db.load_from_file("./date_time_zonespec.csv");</pre>
+ </td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="tz_database_accessors"></a><h4>
+<a name="id907116"></a>Accessors</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool tz_db.add_record(std::string id,
+ <a class="link" href="local_time.html#date_time.local_time.custom_time_zone_ptr">time_zone_ptr</a> tz);</pre></td>
+<td>Adds a time_zone, or a posix_time_zone, to the database. ID is the region name for this zone (Ex: "America/Phoenix").</td>
+</tr>
+<tr><td>
+<pre class="screen">time_zone_ptr zone(
+ new posix_time_zone("PST-8PDT,M4.1.0,M10.1.0")
+);
+std::string id("America/West_Coast");
+tz_db.add_record(id, zone);</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">time_zone_ptr
+ tz_db.time_zone_from_region(string id);</pre></td>
+<td>Returns a time_zone, via a time_zone_ptr, that matches the region listed in the data file. A null pointer is returned if no match is found.
+ </td>
+</tr>
+<tr><td>
+<pre class="screen">time_zone_ptr nyc =
+ tz_db.time_zone_from_region("America/New_York");</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">vector&lt;string&gt; tz_db.region_list();</pre></td>
+<td>Returns a vector of strings that holds all the region ID strings from the database.</td>
+</tr>
+<tr><td>
+<pre class="screen">std::vector&lt;std::string&gt; regions;
+regions = tz_db.region_list();</pre>
+ </td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="tz_database_datafile"></a><h4>
+<a name="id907252"></a>Data File Details</h4>
+<a class="link" href="local_time.html#tz_database_fields">Field Description/Details</a><p>
+ The csv file containing the zone_specs used by the boost::local_time::tz_database is intended to be customized by the library user. When customizing this file (or creating your own) the file must follow a specific format.
+ </p>
+<p>
+ This first line is expected to contain column headings and is therefore
+not processed by the tz_database.
+ </p>
+<p>
+ Each record (line) must have eleven fields. Some of those fields can be empty. Every field (even empty ones) must be enclosed in double-quotes.
+ </p>
+<div class="literallayout"><p><br>
+      Ex:<br>
+      "America/Phoenix" &lt;- string enclosed in quotes<br>
+      ""                &lt;- empty field<br>
+    </p></div>
+<p>
+ </p>
+<p>
+ Some fields represent a length of time. The format of these fields must be:
+ </p>
+<div class="literallayout"><p><br>
+      "{+|-}hh:mm[:ss]" &lt;- length-of-time format<br>
+    </p></div>
+<p>
+ Where the plus or minus is mandatory and the seconds are optional.
+ </p>
+<p>
+ Since some time zones do not use daylight savings it is not always necessary for every field in a zone_spec to contain a value. All zone_specs must have at least ID and GMT offset. Zones that use daylight savings must have all fields filled except: STD ABBR, STD NAME, DST NAME. You should take note that DST ABBR is mandatory for zones that use daylight savings (see field descriptions for further details).
+ </p>
+<a name="tz_database_fields"></a><h4>
+<a name="id907295"></a>Field Description/Details</h4>
+<p>
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ ID
+ <p>
+ Contains the identifying string for the zone_spec. Any string will do as long as it's unique. No two ID's can be the same.
+ </p>
+</li>
+<li>
+ STD ABBR
+ </li>
+<li>
+ STD NAME
+ </li>
+<li>
+ DST ABBR
+ </li>
+<li>
+ DST NAME
+ <p>
+ These four are all the names and abbreviations used by the time zone being described. While any string will do in these fields, care should be taken. These fields hold the strings that will be used in the output of many of the local_time classes.
+ </p>
+</li>
+<li>
+ GMT offset
+ <p>
+ This is the number of hours added to utc to get the local time before any daylight savings adjustments are made. Some examples are: America/New_York offset -5 hours, and Africa/Cairo offset +2 hours. The format must follow the length-of-time format described above.
+ </p>
+</li>
+<li>
+ DST adjustment
+ <p>
+ The amount of time added to gmt_offset when daylight savings is in effect. The format must follow the length-of-time format described above.
+ </p>
+<p>
+ NOTE: more rule capabilities are needed - this portion of the tz_database is incomplete
+ </p>
+</li>
+<li>
+ DST Start Date rule
+ <p>
+ This is a specially formatted string that describes the day of year in which the transition take place. It holds three fields of it's own, separated by semicolons.
+ </p>
+<div class="orderedlist"><ol type="1">
+<li>
+ The first field indicates the "nth" weekday of the month. The possible values are: 1 (first), 2 (second), 3 (third), 4 (fourth), 5 (fifth), and -1 (last).
+ </li>
+<li>
+ The second field indicates the day-of-week from 0-6 (Sun=0).
+ </li>
+<li>
+ The third field indicates the month from 1-12 (Jan=1).
+ </li>
+</ol></div>
+<p>
+ Examples are: "-1;5;9"="Last Friday of September", "2;1;3"="Second Monday of March"
+ </p>
+</li>
+<li>
+ Start time
+ <p>
+ Start time is the number of hours past midnight, on the day of the start transition, the transition takes place. More simply put, the time of day the transition is made (in 24 hours format). The format must follow the length-of-time format described above with the exception that it must always be positive.
+ </p>
+</li>
+<li>
+ DST End date rule
+ <p>
+ See DST Start date rule. The difference here is this is the day daylight savings ends (transition to STD).
+ </p>
+</li>
+<li>
+ End time
+ <p>
+ Same as Start time.
+ </p>
+</li>
+</ul></div>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.local_time.custom_time_zone"></a>Custom Time Zone</h3></div></div></div>
+<a class="link" href="local_time.html#custom_time_zone_intro">Introduction</a> --
+ <a class="link" href="local_time.html#custom_time_zone_header">Header</a> --
+ <a class="link" href="local_time.html#custom_time_zone_constr">Construction</a> --
+ <a class="link" href="local_time.html#custom_time_zone_accessors">Accessors</a> --
+ <a class="link" href="local_time.html#custom_time_zone_dependents">Dependent Types</a><a name="custom_time_zone_intro"></a><h4>
+<a name="id907432"></a>Introduction</h4>
+<p>
+ A custom_time_zone object is a set of data and rules that provide information about a time zone. Information such as the offset from UTC, it's name and abbreviation, as well as daylight savings rules, called <a class="link" href="local_time.html#date_time.local_time.dst_calc_rules">dst_calc_rules</a>. These rules are handled via a boost::shared_ptr&lt;dst_calc_rules&gt;. Not all time zones utilize daylight savings, therefore, time_zone objects can be used with a NULL-assigned shared_ptr.
+ </p>
+<p>
+ As a convenience, a typedef for shared_ptr&lt;dst_calc_rules&gt; is provided.
+ </p>
+<pre class="programlisting">typedef boost::shared_ptr&lt;dst_calc_rules&gt; local_time::dst_calc_rule_ptr;</pre>
+<p>
+ </p>
+<a name="date_time.local_time.custom_time_zone_ptr"></a><p>
+ The time_zone objects are used via a boost::shared_ptr&lt;local_time::time_zone&gt;. As a convenience, a typedef for boost::shared_ptr&lt;local_time::time_zone&gt; is provided:
+ </p>
+<pre class="programlisting">typedef boost::shared_ptr&lt;time_zone&gt; local_time::time_zone_ptr;</pre>
+<p>
+ </p>
+<a name="custom_time_zone_header"></a><h4>
+<a name="id907469"></a>Header</h4>
+<p>
+ The inclusion of a single header will bring in all boost::local_time types, functions, and IO operators.
+ </p>
+<pre class="programlisting">#include "boost/date_time/local_time/local_time.hpp"</pre>
+<p>
+ </p>
+<a name="custom_time_zone_constr"></a><h4>
+<a name="id907486"></a>Construction</h4>
+<p>
+ Construction of a custom_time_zone is dependent on four objects: a
+ <a class="link" href="posix_time.html#date_time.posix_time.time_duration" title="Time Duration">time_duration</a>, a <a class="link" href="local_time.html#time_zone_names">time_zone_names</a>, a <a class="link" href="local_time.html#dst_adjustment_offsets">dst_adjustment_offsets</a>, and a shared_ptr to a <a class="link" href="local_time.html#date_time.local_time.dst_calc_rules">dst_calc_rule</a>.
+ </p>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Syntax</th>
+<th>Example</th>
+</tr></thead>
+<tbody><tr>
+<td valign="top"><pre class="screen">custom_time_zone(...)
+ Parameters:
+ <a class="link" href="local_time.html#time_zone_names">names</a>,
+ <a class="link" href="posix_time.html#date_time.posix_time.time_duration" title="Time Duration">gmt_offset</a>,
+ <a class="link" href="local_time.html#dst_adjustment_offsets">dst_offsets</a>,
+ <a class="link" href="local_time.html#date_time.local_time.dst_calc_rules">dst_rules</a> </pre></td>
+<td>See <a class="link" href="examples.html#date_time.examples.simple_time_zone" title="Simple Time Zones">simple_time_zone</a> example for time_zone usage</td>
+</tr></tbody>
+</table></div>
+<p>
+ </p>
+<a name="custom_time_zone_accessors"></a><h4>
+<a name="id907587"></a>Accessors</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string dst_zone_abbrev()</pre></td>
+<td>Returns the daylight savings abbreviation for the represented time zone.</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;dst_zone_abbrev();
+// "EDT"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string std_zone_abbrev()</pre></td>
+<td>Returns the standard abbreviation for the represented time zone.</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;std_zone_abbrev();
+// "EST"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string dst_zone_name()</pre></td>
+<td>Returns the daylight savings name for the represented time zone.</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;dst_zone_name();
+// "Eastern Daylight Time"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string std_zone_name()</pre></td>
+<td>Returns the standard name for the represented time zone.</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;std_zone_name();
+// "Eastern Standard Time"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool has_dst()</pre></td>
+<td>Returns true when custom_time_zone's shared_ptr to dst_calc_rules is not NULL.</td>
+</tr>
+<tr><td>
+<pre class="screen">nyc_zone_sh_ptr-&gt;has_dst();
+// true
+phx_zone_sh_ptr-&gt;has_dst();
+// false</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">dst_local_start_time(...)
+ Return Type:
+ ptime
+ Parameter:
+ greg_year</pre></td>
+<td>The date and time daylight savings time begins in given year. Returns not_a_date_time if this zone has no daylight savings.</td>
+</tr>
+<tr><td><pre class="screen">nyc_ptr-&gt;dst_local_start_time(2004);
+// 2004-Apr-04 02:00</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">dst_local_end_time(...)
+ Return Type:
+ ptime
+ Parameter:
+ greg_year</pre></td>
+<td>The date and time daylight savings time ends in given year. Returns not_a_date_time if this zone has no daylight savings.</td>
+</tr>
+<tr><td><pre class="screen">nyc_ptr-&gt;dst_local_end_time(2004);
+// 2004-Oct-31 02:00</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">time_duration base_utc_offset()</pre></td>
+<td>The amount of time offset from UTC (typically in hours).</td>
+</tr>
+<tr><td><pre class="screen">nyc_ptr-&gt;base_utc_offset();
+// -05:00</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">time_duration dst_offset()</pre></td>
+<td>The amount of time shifted during daylight savings.</td>
+</tr>
+<tr><td><pre class="screen">nyc_zone_sh_ptr-&gt;dst_offset();
+// 01:00</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string to_posix_string()</pre></td>
+<td>Returns a posix time zone string representation of this time_zone object. Depending on how the time_zone object was created, the date-spec format of the string will be in either 'M' notation or 'n' notation. Every possible date-spec that can be represented in 'J' notation can also be represented in 'n' notation. The reverse is not true so only 'n' notation is used for these types of date-specs. For a detailed description of a posix time zone string see <a class="link" href="local_time.html#date_time.local_time.posix_time_zone" title="Posix Time Zone">posix_time_zone</a>.</td>
+</tr>
+<tr><td><pre class="screen">nyc_ptr-&gt;to_posix_string();
+// "EST-05EDT+01,M4.1.0/02:00,M10.5.0/02:00"
+phx_ptr-&gt;to_posix_string();
+// "MST-07"
+ </pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="custom_time_zone_dependents"></a><h4>
+<a name="id907896"></a>Dependent Types</h4>
+<a class="link" href="local_time.html#time_zone_names">Time Zone Names</a> --
+ <a class="link" href="local_time.html#dst_adjustment_offsets">Dst Adjustment Offsets</a> --
+ <a class="link" href="local_time.html#date_time.local_time.dst_calc_rules">Daylight Savings Calc Rules</a><a name="time_zone_names"></a><h4>
+<a name="id907919"></a>Time Zone Names</h4>
+<p>
+ The time_zone_names_base type is an immutable template class of four strings. One each for the name and abbreviation in standard time and daylight savings time. The time_zone_names type is a typedef of time_zone_names_base&lt;char&gt;.
+ </p>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">time_zone_names(...)
+ Parameters:
+ string std_name
+ string std_abbrev
+ string dst_name
+ string dst_abbrev</pre></td>
+<td>The only constructor, all four strings must be provided.</td>
+</tr>
+<tr><td>
+<pre class="screen">string sn("Eastern Standard Time");
+string sa("EST");
+string dn("Eastern Daylight Time");
+string da("EDT");
+time_zone_names nyc_names(sn, sa,
+ dn, da);</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string std_zone_name()</pre></td>
+<td>Returns the standard zone name</td>
+</tr>
+<tr><td><pre class="screen">nyc_names.std_zone_name();
+// "Eastern Standard Time"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string std_zone_abbrev()</pre></td>
+<td>Returns the standard zone abbreviation</td>
+</tr>
+<tr><td><pre class="screen">nyc_names.std_zone_abbrev();
+// "EST"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string dst_zone_name()</pre></td>
+<td>Returns the daylight savings zone name</td>
+</tr>
+<tr><td><pre class="screen">nyc_names.std_zone_name();
+// "Eastern Daylight Time"</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">std::string dst_zone_abbrev()</pre></td>
+<td>Returns the daylight savings zone abbreviation</td>
+</tr>
+<tr><td><pre class="screen">nyc_names.std_zone_abbrev();
+// "EDT"</pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="dst_adjustment_offsets"></a><h4>
+<a name="id908100"></a>Dst Adjustment Offsets</h4>
+<p>
+ The dst_adjustment_offsets type is a collection of three <a class="link" href="posix_time.html#date_time.posix_time.time_duration" title="Time Duration">time_duration</a> objects.
+ </p>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">dst_adjustment_offsets(...)
+ Parameters:
+ time_duration dst_adjust
+ time_duration start_offset
+ time_duration end_offset</pre></td>
+<td>The first time_duration is the daylight savings adjustment. The second is the time which daylight savings starts on the start day. The third is the time daylight savings ends on the ending day.</td>
+</tr>
+<tr><td><pre class="screen">
+dst_adjustment_offsets(hours(1),
+ hours(2),
+ hours(2));</pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="date_time.local_time.dst_calc_rules"></a><h4>
+<a name="id908184"></a>Daylight Savings Calc Rules</h4>
+<p>
+ Daylight savings calc rules, named dst_calc_rules, are a series of objects that group appropriate <a class="link" href="gregorian.html#date_time.gregorian.date_algorithms" title="Date Generators/Algorithms">date_generators</a> together to form rule sets. The individual rules objects are used via dst_calc_rule_ptr.
+ </p>
+<p>
+ For a complete example of all five dst_calc_rule types, see: <a class="link" href="examples.html#date_time.examples.calc_rules" title="Daylight Savings Calc Rules">calc_rules example</a>.
+ </p>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Syntax</th>
+<th>Description</th>
+</tr></thead>
+<tbody>
+<tr>
+<td valign="top"><pre class="screen">partial_date_dst_rule(...)
+ Parameters:
+ start_rule
+ end_rule</pre></td>
+<td>Both the start and end rules are of type gregorian::partial_date.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">first_last_dst_rule(...)
+ Parameters:
+ start_rule
+ end_rule</pre></td>
+<td>The DST start rule is of type gregorian::first_day_of_the_week_in_month and the end rule is of type gregorian::last_day_of_the_week_in_month.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">last_last_dst_rule(...)
+ Parameters:
+ start_rule
+ end_rule</pre></td>
+<td>Both the start and end rules are of type gregorian::last_day_of_the_week_in_month.</td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">nth_last_dst_rule(...)
+ Parameters:
+ start_rule
+ end_rule</pre></td>
+<td>The DST start rule is of type gregorian::nth_day_of_the_week_in_month and the end rule is of type gregorian::last_day_of_the_week_in_month.</td>
+</tr>
+<tr>
+<td valign="top">
+<pre class="screen">nth_kday_dst_rule(...)
+ Parameters:
+ start_rule
+ end_rule)
+(see note* below)</pre>
+ </td>
+<td>Both rules are of type gregorian::nth_day_of_the_week_in_month.</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<p>
+ * Note: The name "nth_kday_dst_rule" is a bit cryptic. Therefore, a more descriptive name, "nth_day_of_the_week_in_month_dst_rule", is also provided.
+ </p>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.local_time.local_date_time"></a>Local Date Time</h3></div></div></div>
+<a class="link" href="local_time.html#local_date_time_intro">Introduction</a> --
+ <a class="link" href="local_time.html#local_date_time_header">Header</a> --
+ <a class="link" href="local_time.html#local_date_time_clock_constr">Construct From Clock</a> --
+ <a class="link" href="local_time.html#local_date_time_constr">Construction</a> --
+ <a class="link" href="local_time.html#local_date_time_accessors">Accessors</a> --
+ <a class="link" href="local_time.html#local_date_time_operators">Operators</a> --
+ <a class="link" href="local_time.html#local_date_time_tm_func">Struct tm Functions</a><a name="local_date_time_intro"></a><h4>
+<a name="id908361"></a>Introduction</h4>
+<p>
+ A local_date_time object is a point in time and an associated time zone. The time is represented internally as UTC.
+ </p>
+<a name="local_date_time_header"></a><h4>
+<a name="id908373"></a>Header</h4>
+<p>
+ The inclusion of a single header will bring in all boost::local_time types,
+functions, and IO operators.
+ </p>
+<pre class="programlisting">
+ #include "boost/date_time/local_time/local_time.hpp"
+ </pre>
+<p>
+ </p>
+<a name="local_date_time_clock_constr"></a><h4>
+<a name="id908389"></a>Construct From Clock</h4>
+<p>
+ Creation of a local_date_time object from clock is possible with either second, or sub second resolution.
+ </p>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Syntax</th>
+<th>Example</th>
+</tr></thead>
+<tbody>
+<tr>
+<td valign="top"><pre class="screen">local_microsec_clock(...)
+ Return Type:
+ local_date_time
+ Parameter:
+ time_zone_ptr</pre></td>
+<td>
+<pre class="screen">time_zone_ptr zone(
+ new posix_time_zone("MST-07")
+);
+local_date_time ldt =
+ local_microsec_clock::local_time(
+ zone);</pre>
+ </td>
+</tr>
+<tr>
+<td valign="top"><pre class="screen">local_sec_clock(...)
+ Return Type:
+ local_date_time
+ Parameter:
+ time_zone_ptr</pre></td>
+<td>
+<pre class="screen">time_zone_ptr zone(
+ new posix_time_zone("MST-07")
+);
+local_date_time ldt =
+ local_sec_clock::local_time(zone);</pre>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="local_date_time_constr"></a><h4>
+<a name="id908469"></a>Construction</h4>
+<p>
+ Construction of a local_date_time object can be done with a ptime and a time_zone_ptr where the ptime represents UTC time. Construction with a wall-clock representation takes the form of a date, a time_duration, a time_zone_ptr, and a fourth parameter that addresses the following complication.
+ </p>
+<p>
+ Construction from a wall-clock rep may result in differing shifts for a particular time zone, depending on daylight savings rules for that zone. This means it is also possible to create a local_date_time with a non-existent, or duplicated, UTC representation. These cases occur during the forward shift in time that is the transition into daylight savings and during the backward shift that is the transition out of daylight savings. The user has two options for handling these cases: a bool flag that states if the time is daylight savings, or an enum that states what to do when either of these cases are encountered.
+ </p>
+<p>
+ The bool flag is ignored when the given time_zone has no daylight savings specification. When the daylight savings status of a given time label is calculated and it does not match the flag, a <code class="computeroutput">local_time::dst_not_valid</code> exception is thrown. If a time label is invalid (does not exist), a <code class="computeroutput">local_time::time_label_invalid</code> exception is thrown.
+ </p>
+<p>
+ There are two elements in the <code class="computeroutput">local_date_time::DST_CALC_OPTIONS</code> enum: <code class="computeroutput">EXCEPTION_ON_ERROR</code> and <code class="computeroutput">NOT_DATE_TIME_ON_ERROR</code>. The possible exceptions thrown are a <code class="computeroutput">local_time::ambiguous_result</code> or a <code class="computeroutput">local_time::time_label_invalid</code>. The <code class="computeroutput">NOT_DATE_TIME_ON_ERROR</code> sets the time value to the special value <code class="computeroutput">local_time::not_a_date_time</code> in the event of either a invalid or an ambiguous time label.
+ </p>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_date_time(...)
+ Parameters:
+ posix_time::ptime
+ time_zone_ptr</pre></td>
+<td>The given time is expected to be UTC. Therefore, the given time will be adjusted according to the offset described in the time zone.</td>
+</tr>
+<tr><td>
+<pre class="screen">
+// 3am, 2004-Nov-05 local time
+ptime pt(date(2004,Nov,5),
+ hours(10));
+time_zone_ptr zone(
+ new posix_time_zone("MST-07"));
+local_date_time az(pt, zone);</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_date_time(...)
+ Parameters:
+ date
+ time_duration
+ time_zone_ptr
+ bool</pre></td>
+<td>The passed time information understood to be in the passed tz. The DST flag must be passed to indicate whether the time is in daylight savings or not. May throw a <code class="computeroutput">dst_not_valid</code> or <code class="computeroutput">time_label_invalid</code> exception.</td>
+</tr>
+<tr><td>
+<pre class="screen">date d(2004,Nov,5);
+time_duration td(5,0,0,0);
+string z("PST-8PDT,M4.1.0,M10.1.0")
+time_zone_ptr zone(
+ new posix_time_zone(z));
+local_date_time nyc(d, td,
+ zone, false);</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_date_time(...)
+ Parameters:
+ date
+ time_duration
+ time_zone_ptr
+ DST_CALC_OPTIONS</pre></td>
+<td>The passed time information understood to be in the passed tz. The DST flag is calculated according to the specified rule. May throw a <code class="computeroutput">ambiguous_result</code> or <code class="computeroutput">time_label_invalid</code> exception.</td>
+</tr>
+<tr><td>
+<pre class="screen">date d(2004,Nov,5);
+time_duration td(5,0,0,0);
+string z("PST-8PDT,M4.1.0,M10.1.0")
+time_zone_ptr zone(
+ new posix_time_zone(z));
+local_date_time nyc(d, td, zone,
+ NOT_DATE_TIME_ON_ERROR);</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_date_time(local_date_time);</pre></td>
+<td>Copy Constructor.</td>
+</tr>
+<tr><td><pre class="screen">local_date_time az_2(az);</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_date_time(...)
+ Parameters:
+ special_values
+ time_zone_ptr</pre></td>
+<td>Special Values constructor.</td>
+</tr>
+<tr><td>
+<pre class="screen">time_zone_ptr zone(
+ new posix_time_zone("MST-07")
+);
+local_date_time nadt(not_a_date_time,
+ zone);
+// default NULL time_zone_ptr
+local_date_time nadt(pos_infin);</pre>
+ </td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="local_date_time_accessors"></a><h4>
+<a name="id908724"></a>Accessors</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">time_zone_ptr zone()</pre></td>
+<td>Returns associated time_zone object via a time_zone_ptr</td>
+</tr>
+<tr><td><pre class="screen"></pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool is_dst()</pre></td>
+<td>Determines if time value is in DST for associated zone.</td>
+</tr>
+<tr><td> </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">ptime utc_time()</pre></td>
+<td>Converts the local time value to a UTC value.</td>
+</tr>
+<tr><td>
+<pre class="screen">ptime pt(date(2004,Nov,5),
+ hours(10));
+time_zone_ptr zone(
+ new posix_time_zone("MST-07"));
+local_date_time az(pt, zone);
+az.utc_time(); // 10am 2004-Nov-5</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">ptime local_time()</pre></td>
+<td>Returns the local time for this object (Wall-clock).</td>
+</tr>
+<tr><td><pre class="screen">ptime pt(date(2004,Nov,5),
+ hours(10));
+time_zone_ptr zone(
+ new posix_time_zone("MST-07"));
+local_date_time az(pt, zone);
+az.utc_time(); // 10am 2004-Nov-5
+az.local_time(); // 3am 2004-Nov-5</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_time_in(...)
+ Return Type:
+ local_date_time
+ Parameters:
+ time_zone_ptr
+ time_duration</pre></td>
+<td>Returns a local_date_time representing the same UTC time as calling object, plus optional time_duration, with given time zone.</td>
+</tr>
+<tr><td>
+<pre class="screen">local_date_time nyc = az.local_time_in(nyc_zone);
+// nyc == 7am 2004-Nov-5</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool is_infinity() const</pre></td>
+<td>Returns true if local_date_time is either positive or negative infinity</td>
+</tr>
+<tr><td><pre class="screen">local_date_time ldt(pos_infin);
+ldt.is_infinity(); // --&gt; true</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool is_neg_infinity() const</pre></td>
+<td>Returns true if local_date_time is negative infinity</td>
+</tr>
+<tr><td><pre class="screen">local_date_time ldt(neg_infin);
+ldt.is_neg_infinity(); // --&gt; true</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool is_pos_infinity() const</pre></td>
+<td>Returns true if local_date_time is positive infinity</td>
+</tr>
+<tr><td><pre class="screen">local_date_time ldt(neg_infin);
+ldt.is_pos_infinity(); // --&gt; true</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool is_not_a_date_time() const</pre></td>
+<td>Returns true if value is not a date</td>
+</tr>
+<tr><td><pre class="screen">local_date_time ldt(not_a_date_time);
+ldt.is_not_a_date_time(); // --&gt; true</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool is_special() const</pre></td>
+<td>Returns true if local_date_time is any <code class="computeroutput">special_value</code>
+</td>
+</tr>
+<tr><td><pre class="screen">local_date_time ldt(pos_infin);
+local_date_time ldt2(not_a_date_time);
+time_zone_ptr
+ mst(new posix_time_zone("MST-07"));
+local_date_time
+ ldt3(local_sec_clock::local_time(mst));
+ldt.is_special(); // --&gt; true
+ldt2.is_special(); // --&gt; true
+ldt3.is_special(); // --&gt; false</pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="local_date_time_operators"></a><h4>
+<a name="id910543"></a>Operators</h4>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">operator&lt;&lt;</pre></td>
+<td>Output streaming operator. This operator is part of the v1.33 IO addition to date_time. For complete details on this feature see <a class="link" href="date_time_io.html" title="Date Time Input/Output">Date Time IO</a>. The default output is shown in this example.</td>
+</tr>
+<tr><td><pre class="screen">
+time_zone_ptr zone(new posix_time_zone("MST-07");
+local_date_time ldt(date(2005,Jul,4),
+ hours(20),
+ false);
+std::cout &lt;&lt; ldt &lt;&lt; std::endl;
+// "2005-Jul-04 20:00:00 MST"
+ </pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">operator&gt;&gt;</pre></td>
+<td>Input streaming operator. This operator is part of the v1.33 IO addition to date_time. For complete details on this feature see <a class="link" href="date_time_io.html" title="Date Time Input/Output">Date Time IO</a>. At this time, <code class="computeroutput">local_date_time</code> objects can only be streamed in with a Posix Time Zone string. A complete description of a Posix Time Zone string can be found in the documentation for the <a class="link" href="local_time.html#posix_time_zone_intro">posix_time_zone</a> class.</td>
+</tr>
+<tr><td><pre class="screen">stringstream ss;
+ss.str("2005-Jul-04 20:00:00 MST-07");
+ss &gt;&gt; ldt;
+ </pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">operator==, operator!=,
+operator&gt;, operator&lt;,
+operator&gt;=, operator&lt;=</pre></td>
+<td>A full complement of comparison operators</td>
+</tr>
+<tr><td><pre class="screen">ldt1 == ldt2, etc</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">operator+, operator+=,
+operator-, operator-=</pre></td>
+<td>Addition, subtraction, and shortcut operators for <code class="computeroutput">local_date_time</code> and date duration types. These include: <code class="computeroutput">days</code>, <code class="computeroutput">months</code>, and <code class="computeroutput">years</code>.</td>
+</tr>
+<tr><td><pre class="screen">ldt + days(5), etc</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">operator+, operator+=,
+operator-, operator-=</pre></td>
+<td>Addition, subtraction, and shortcut operators for <code class="computeroutput">local_date_time</code> and <code class="computeroutput">time_duration</code>.</td>
+</tr>
+<tr><td><pre class="screen">ldt + hours(5), etc</pre></td></tr>
+</tbody>
+</table></div>
+<a name="local_date_time_tm_func"></a><h4>
+<a name="id910763"></a>Struct tm Functions</h4>
+<p>Function for converting a <code class="computeroutput">local_date_time</code> object to a <code class="computeroutput">tm</code> struct is provided.</p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">tm to_tm(local_date_time)</pre></td>
+<td>A function for converting a <code class="computeroutput">local_date_time</code> object to a <code class="computeroutput">tm</code> struct.</td>
+</tr>
+<tr><td>
+<pre class="screen">
+// 6am, 2005-Jul-05 local time
+std::string z("EST-05EDT,M4.1.0,M10.1.0");
+ptime pt(date(2005,Jul,5),
+ hours(10));
+time_zone_ptr zone( new posix_time_zone(z));
+local_date_time ldt(pt, zone);
+tm ldt_tm = to_tm(ldt);
+/* tm_year =&gt; 105
+ tm_mon =&gt; 6
+ tm_mday =&gt; 5
+ tm_wday =&gt; 2 (Tuesday)
+ tm_yday =&gt; 185
+ tm_hour =&gt; 6
+ tm_min =&gt; 0
+ tm_sec =&gt; 0
+ tm_isddst =&gt; 1 */</pre>
+ </td></tr>
+</tbody>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="date_time.local_time.local_time_period"></a>Local Time Period</h3></div></div></div>
+<a class="link" href="local_time.html#local_time_period_intro">Introduction</a> --
+ <a class="link" href="local_time.html#local_time_period_header">Header</a> --
+ <a class="link" href="local_time.html#local_time_period_constr">Construction</a> --
+ <a class="link" href="local_time.html#local_time_period_accessors">Accessors</a> --
+ <a class="link" href="local_time.html#local_time_period_operators">Operators</a><a name="local_time_period_intro"></a><h4>
+<a name="id910890"></a>Introduction</h4>
+<p>
+ The class <code class="computeroutput">boost::local_time::local_time_period</code> provides direct representation for ranges between two local times. Periods provide the ability to simplify some types of calculations by simplifying the conditional logic of the program.
+ </p>
+<p>
+ A period that is created with beginning and end points being equal, or with a duration of zero, is known as a zero length period. Zero length periods are considered invalid (it is perfectly legal to construct an invalid period). For these periods, the <code class="computeroutput">last</code> point will always be one unit less that the <code class="computeroutput">begin</code> point.
+ </p>
+<a name="local_time_period_header"></a><h4>
+<a name="id910920"></a>Header</h4>
+<p>
+ </p>
+<pre class="programlisting">#include "boost/date_time/local_time/local_time.hpp" //include all types plus i/o
+or
+#include "boost/date_time/local_time/local_time_types.hpp" //no i/o just types</pre>
+<p>
+ </p>
+<a name="local_time_period_constr"></a><h4>
+<a name="id910937"></a>Construction</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_time_period(...)
+ Parameters:
+ local_date_time beginning
+ local_date_time end</pre></td>
+<td> Create a period as [begin, end). If end is &lt;= begin then the period will be defined as invalid.</td>
+</tr>
+<tr><td>
+<pre class="screen">time_zone_ptr
+ zone(new posix_time_zone("MST-07"));
+local_date_time
+ beg(ptime(date(2005,Jan,1),hours(0)), zone);
+local_date_time
+ end(ptime(date(2005,Feb,1),hours(0)), zone);
+// period for the entire month of Jan 2005
+local_time_period ltp(beg, end);</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_time_period(...)
+ Parameters:
+ local_date_time beginning
+ time_duration length</pre></td>
+<td>Create a period as [begin, begin+len) where end would be begin+len. If len is &lt;= zero then the period will be defined as invalid.</td>
+</tr>
+<tr><td>
+<pre class="screen">time_zone_ptr
+ zone(new posix_time_zone("MST-07"));
+local_date_time
+ beg(ptime(date(2005,Jan,1),hours(0)), zone);
+// period for the whole day of 2005-Jan-01
+local_time_period ltp(beg, hours(24));</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_time_period(local_time_period rhs)</pre></td>
+<td>Copy constructor</td>
+</tr>
+<tr><td><pre class="screen">local_time_period ltp1(ltp);</pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="local_time_period_accessors"></a><h4>
+<a name="id911064"></a>Accessors</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_date_time begin()</pre></td>
+<td>Return first local_date_time of the period.</td>
+</tr>
+<tr><td>
+<pre class="screen">time_zone_ptr
+ zone(new posix_time_zone("MST-07"));
+local_date_time
+ ldt((ptime(date(2005,Jan,1)),hours(0)), zone);
+local_time_period ltp(ldt, hours(2));
+ltp.begin(); // =&gt; 2005-Jan-01 00:00:00</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_date_time last()</pre></td>
+<td>Return last local_date_time in the period</td>
+</tr>
+<tr><td>
+<pre class="screen">time_zone_ptr
+ zone(new posix_time_zone("MST-07"));
+local_date_time
+ ldt((ptime(date(2005,Jan,1),hours(0))), zone);
+local_time_period ltp(ldt, hours(2));
+ltp.last(); // =&gt; 2005-Jan-01 01:59:59.999999999</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_date_time end()</pre></td>
+<td>Return one past the last in period</td>
+</tr>
+<tr><td>
+<pre class="screen">time_zone_ptr
+ zone(new posix_time_zone("MST-07"));
+local_date_time
+ ldt((ptime(date(2005,Jan,1),hours(0))), zone);
+local_time_period ltp(ldt, hours(2));
+ltp.end(); // =&gt; 2005-Jan-01 02:00:00</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">time_duration length()</pre></td>
+<td>Return the length of the local_time period.</td>
+</tr>
+<tr><td>
+<pre class="screen">time_zone_ptr
+ zone(new posix_time_zone("MST-07"));
+local_date_time
+ ldt((ptime(date(2005,Jan,1),hours(0))), zone);
+local_time_period ltp(ldt, hours(2));
+ltp.length(); // =&gt; 02:00:00</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool is_null()</pre></td>
+<td>True if period is not well formed. eg: end less than or equal to begin.</td>
+</tr>
+<tr><td>
+<pre class="screen">time_zone_ptr
+ zone(new posix_time_zone("MST-07"));
+local_date_time
+ beg((ptime(date(2005,Feb,1),hours(0))), zone);
+local_date_time
+ end((ptime(date(2005,Jan,1),hours(0))), zone);
+local_time_period ltp(beg, end);
+ltp.is_null(); // =&gt; true</pre>
+ </td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool contains(local_date_time)</pre></td>
+<td>True if local_date_time is within the period. Zero length periods cannot contain any points</td>
+</tr>
+<tr><td><pre class="screen">time_zone_ptr
+ zone(new posix_time_zone("MST-07"));
+local_date_time
+ beg((ptime(date(2005,Jan,1),hours(0))), zone);
+local_date_time
+ end((ptime(date(2005,Feb,1),hours(0))), zone);
+local_time_period jan_mst(beg, end);
 
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/date_time/local_time.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/date_time/local_time.html
- </body>
-</html>
+local_date_time
+ldt((ptime(date(2005,Jan,15),hours(12))), zone);
+jan_mst.contains(ldt); // =&gt; true
+
+local_time_period zero(beg, beg);
+zero.contains(beg); // false</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool contains(local_time_period)</pre></td>
+<td>True if period is within the period</td>
+</tr>
+<tr><td><pre class="screen">// using jan_mst period from previous example
+
+local_date_time
+ beg((ptime(date(2005,Jan,7),hours(0))), zone);
+local_time_period ltp(beg, hours(24));
+
+jan_mst.contains(ltp); // =&gt; true</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">bool intersects(local_time_period)</pre></td>
+<td> True if periods overlap</td>
+</tr>
+<tr><td><pre class="screen">// using jan_mst period from previous example
+
+local_date_time
+ beg((ptime(date(2005,Jan,7),hours(0))), zone);
+local_date_time
+ end((ptime(date(2005,Feb,7),hours(0))), zone);
+local_time_period ltp(beg, end);
+
+jan_mst.intersects(ltp); // =&gt; true</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_time_period intersection(local_time_period)</pre></td>
+<td>Calculate the intersection of 2 periods. Null if no intersection.</td>
+</tr>
+<tr><td><pre class="screen">// using jan_mst period from previous example
+
+local_date_time
+ beg((ptime(date(2005,Jan,7),hours(0))), zone);
+local_date_time
+ end((ptime(date(2005,Feb,7),hours(0))), zone);
+local_time_period ltp(beg, end);
 
+local_time_period res(jan_mst.intersection(ltp));
+// res =&gt; 2005-Jan-07 00:00:00 through
+// 2005-Jan-31 23:59:59.999999999 (inclusive)</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_time_period merge(local_time_period)</pre></td>
+<td>Returns union of two periods. Null if no intersection.</td>
+</tr>
+<tr><td><pre class="screen">// using jan_mst period from previous example
+
+local_date_time
+ beg((ptime(date(2005,Jan,7),hours(0))), zone);
+local_date_time
+ end((ptime(date(2005,Feb,7),hours(0))), zone);
+local_time_period ltp(beg, end);
+
+local_time_period res(jan_mst.merge(ltp));
+// res =&gt; 2005-Jan-07 00:00:00 through
+// 2005-Feb-06 23:59:59.999999999 (inclusive)</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">local_time_period span(local_time_period)</pre></td>
+<td>Combines two periods and any gap between them such that begin = min(p1.begin, p2.begin) and end = max(p1.end , p2.end).</td>
+</tr>
+<tr><td><pre class="screen">// using jan_mst period from previous example
+
+local_date_time
+ beg((ptime(date(2005,Mar,1),hours(0))), zone);
+local_date_time
+ end((ptime(date(2005,Apr,1),hours(0))), zone);
+local_time_period mar_mst(beg, end);
+
+local_time_period res(jan_mst.span(mar_mst));
+// res =&gt; 2005-Jan-01 00:00:00 through
+// 2005-Mar-31 23:59:59.999999999 (inclusive)</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">void shift(time_duration)</pre></td>
+<td>Add duration to both begin and end.</td>
+</tr>
+<tr><td><pre class="screen">local_date_time
+ beg((ptime(date(2005,Mar,1),hours(0))), zone);
+local_date_time
+ end((ptime(date(2005,Apr,1),hours(0))), zone);
+local_time_period mar_mst(beg, end);
+
+mar_mst.shift(hours(48));
+// mar_mst =&gt; 2005-Mar-03 00:00:00 through
+// 2005-Apr-02 23:59:59.999999999 (inclusive)</pre></td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+<a name="local_time_period_operators"></a><h4>
+<a name="id911422"></a>Operators</h4>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead>
+<tr>
+<th rowspan="2" valign="top">Syntax</th>
+<th>Description</th>
+</tr>
+<tr><th>Example</th></tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">operator==, operator!=</pre></td>
+<td>Equality operators. Periods are equal if ltp1.begin == ltp2.begin &amp;&amp; ltp1.last == ltp2.last</td>
+</tr>
+<tr><td><pre class="screen">if (ltp1 == ltp2) {...</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">operator&lt;</pre></td>
+<td>Ordering with no overlap. True if ltp1.end() less than ltp2.begin()</td>
+</tr>
+<tr><td><pre class="screen">if (ltp1 &lt; ltp2) {...</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">operator&gt;</pre></td>
+<td>Ordering with no overlap. True if ltp1.begin() greater than ltp2.end()</td>
+</tr>
+<tr><td><pre class="screen">if (ltp1 &gt; ltp2) {... etc</pre></td></tr>
+<tr>
+<td rowspan="2" valign="top"><pre class="screen">operator&lt;=, operator&gt;=</pre></td>
+<td>Defined in terms of the other operators.</td>
+</tr>
+<tr><td> </td></tr>
+</tbody>
+</table></div>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2005 CrystalClear Software, Inc<p>Subject to the Boost Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)</p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="posix_time.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../date_time.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="date_time_io.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: branches/proto/v4/doc/html/foreach.html
==============================================================================
--- branches/proto/v4/doc/html/foreach.html (original)
+++ branches/proto/v4/doc/html/foreach.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,17 +1,304 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 6. Boost.Foreach</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="boost/local_time/tz_database.html" title="Type definition tz_database">
+<link rel="next" href="foreach/extensibility.html" title="Extensibility">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost/local_time/tz_database.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="foreach/extensibility.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="foreach"></a>Chapter 6. Boost.Foreach</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Eric</span> <span class="surname">Niebler</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2004 Eric Niebler</p></div>
+<div><div class="legalnotice">
+<a name="id1028193"></a><p>
+ 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)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Extensibility</span></dt>
+<dt><span class="section">Portability</span></dt>
+<dt><span class="section">Pitfalls</span></dt>
+<dt><span class="section">History and Acknowledgements</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="foreach.introduction"></a><a class="link" href="foreach.html#foreach.introduction" title="Introduction">Introduction</a>
+</h2></div></div></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ &#8220;<span class="quote">Make simple things easy.</span>&#8221;<br> <span class="bold"><strong><span class="emphasis"><em>--
+ Larry Wall</em></span></strong></span>
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<a name="foreach.introduction.what_is__literal_boost_foreach__literal__"></a><h3>
+<a name="id1028246"></a>
+ <a class="link" href="foreach.html#foreach.introduction.what_is__literal_boost_foreach__literal__">What
+ is <code class="literal">BOOST_FOREACH</code>?</a>
+ </h3>
+<p>
+ In C++, writing a loop that iterates over a sequence is tedious. We can either
+ use iterators, which requires a considerable amount of boiler-plate, or we
+ can use the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">()</span></code>
+ algorithm and move our loop body into a predicate, which requires no less boiler-plate
+ and forces us to move our logic far from where it will be used. In contrast,
+ some other languages, like Perl, provide a dedicated "foreach" construct
+ that automates this process. <code class="literal">BOOST_FOREACH</code> is just such
+ a construct for C++. It iterates over sequences for us, freeing us from having
+ to deal directly with iterators or write predicates.
+ </p>
+<p>
+ <code class="literal">BOOST_FOREACH</code> is designed for ease-of-use and efficiency.
+ It does no dynamic allocations, makes no virtual function calls or calls through
+ function pointers, and makes no calls that are not transparent to the compiler's
+ optimizer. This results in near-optimal code generation; the performance of
+ <code class="literal">BOOST_FOREACH</code> is usually within a few percent of the equivalent
+ hand-coded loop. And although <code class="literal">BOOST_FOREACH</code> is a macro,
+ it is a remarkably well-behaved one. It evaluates its arguments exactly once,
+ leading to no nasty surprises.
+ </p>
+<a name="foreach.introduction.hello__world_"></a><h3>
+<a name="id1028311"></a>
+ <a class="link" href="foreach.html#foreach.introduction.hello__world_">Hello, world!</a>
+ </h3>
+<p>
+ Below is a sample program that uses <code class="literal">BOOST_FOREACH</code> to loop
+ over the contents of a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>.
+ </p>
+<pre class="programlisting">
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/foreach.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/foreach.html
- </body>
-</html>
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">hello</span><span class="special">(</span> <span class="string">"Hello, world!"</span> <span class="special">);</span>
+
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span> <span class="keyword">char</span> <span class="identifier">ch</span><span class="special">,</span> <span class="identifier">hello</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">ch</span><span class="special">;</span>
+ <span class="special">}</span>
 
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This program outputs the following:
+ </p>
+<pre class="programlisting">Hello, world!
+</pre>
+<a name="foreach.introduction.supported_sequence_types"></a><h3>
+<a name="id1028557"></a>
+ <a class="link" href="foreach.html#foreach.introduction.supported_sequence_types">Supported Sequence
+ Types</a>
+ </h3>
+<p>
+ <code class="literal">BOOST_FOREACH</code> iterates over sequences. But what qualifies
+ as a sequence, exactly? Since <code class="literal">BOOST_FOREACH</code> is built on
+ top of Boost.Range, it automatically
+ supports those types which Boost.Range
+ recognizes as sequences. Specifically, <code class="literal">BOOST_FOREACH</code> works
+ with types that satisfy the <a href="../../libs/range/doc/range.html#single_pass_range" target="_top">Single
+ Pass Range Concept</a>. For example, we can use <code class="literal">BOOST_FOREACH</code>
+ with:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ STL containers
+ </li>
+<li>
+ arrays
+ </li>
+<li>
+ Null-terminated strings (<code class="computeroutput"><span class="keyword">char</span></code>
+ and <code class="computeroutput"><span class="keyword">wchar_t</span></code>)
+ </li>
+<li>
+ std::pair of iterators
+ </li>
+</ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The support for STL containers is very general; anything that looks like
+ an STL container counts. If it has nested <code class="computeroutput"><span class="identifier">iterator</span></code>
+ and <code class="computeroutput"><span class="identifier">const_iterator</span></code> types
+ and <code class="computeroutput"><span class="identifier">begin</span><span class="special">()</span></code>
+ and <code class="computeroutput"><span class="identifier">end</span><span class="special">()</span></code>
+ member functions, <code class="literal">BOOST_FOREACH</code> will automatically know
+ how to iterate over it. It is in this way that boost::iterator_range<>
+ and boost::sub_range<>
+ work with <code class="literal">BOOST_FOREACH</code>.
+ </p></td></tr>
+</table></div>
+<p>
+ See the section on <a class="link" href="foreach/extensibility.html" title="Extensibility">Extensibility</a>
+ to find out how to make <code class="literal">BOOST_FOREACH</code> work with other types.
+ </p>
+<a name="foreach.introduction.examples"></a><h3>
+<a name="id1028746"></a>
+ <a class="link" href="foreach.html#foreach.introduction.examples">Examples</a>
+ </h3>
+<p>
+ Below are some examples that demonstrate all the different ways we can use
+ <code class="literal">BOOST_FOREACH</code>.
+ </p>
+<p>
+ Iterate over an STL container:
+ </p>
+<pre class="programlisting">
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">list_int</span><span class="special">(</span> <span class="comment">/*...*/</span> <span class="special">);</span>
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">list_int</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// do something with i
+</span><span class="special">}</span>
+</pre>
+<p>
+ Iterate over an array, with covariance (i.e., the type of the iteration variable
+ is not exactly the same as the element type of the container):
+ </p>
+<pre class="programlisting">
+<span class="keyword">short</span> <span class="identifier">array_short</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span><span class="number">1</span><span class="special">,</span><span class="number">2</span><span class="special">,</span><span class="number">3</span><span class="special">};</span>
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">array_short</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// The short was implicitly converted to an int
+</span><span class="special">}</span>
+</pre>
+<p>
+ Predeclare the loop variable, and use <code class="computeroutput"><span class="keyword">break</span></code>,
+ <code class="computeroutput"><span class="keyword">continue</span></code>, and <code class="computeroutput"><span class="keyword">return</span></code>
+ in the loop body:
+ </p>
+<pre class="programlisting">
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">deque</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">deque_int</span><span class="special">(</span> <span class="comment">/*...*/</span> <span class="special">);</span>
+<span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">deque_int</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">if</span><span class="special">(</span> <span class="identifier">i</span> <span class="special">==</span> <span class="number">0</span> <span class="special">)</span> <span class="keyword">return</span><span class="special">;</span>
+ <span class="keyword">if</span><span class="special">(</span> <span class="identifier">i</span> <span class="special">==</span> <span class="number">1</span> <span class="special">)</span> <span class="keyword">continue</span><span class="special">;</span>
+ <span class="keyword">if</span><span class="special">(</span> <span class="identifier">i</span> <span class="special">==</span> <span class="number">2</span> <span class="special">)</span> <span class="keyword">break</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Iterate over a sequence by reference, and modify the underlying sequence:
+ </p>
+<pre class="programlisting">
+<span class="keyword">short</span> <span class="identifier">array_short</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="number">3</span> <span class="special">};</span>
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span> <span class="keyword">short</span> <span class="special">&amp;</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">array_short</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="special">++</span><span class="identifier">i</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="comment">// array_short contains {2,3,4} here
+</span></pre>
+<p>
+ Iterate over a vector of vectors with nested <code class="literal">BOOST_FOREACH</code>
+ loops. In this example, notice that braces around the loop body are not necessary:
+ </p>
+<pre class="programlisting">
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">matrix_int</span><span class="special">;</span>
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">row</span><span class="special">,</span> <span class="identifier">matrix_int</span> <span class="special">)</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span> <span class="keyword">int</span> <span class="special">&amp;</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">row</span> <span class="special">)</span>
+ <span class="special">++</span><span class="identifier">i</span><span class="special">;</span>
+</pre>
+<p>
+ Iterate over an expression that returns a sequence by value (i.e. an rvalue):
+ </p>
+<pre class="programlisting">
+<span class="keyword">extern</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="identifier">get_vector_float</span><span class="special">();</span>
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span> <span class="keyword">float</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">get_vector_float</span><span class="special">()</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// Note: get_vector_float() will be called exactly once
+</span><span class="special">}</span>
+</pre>
+<p>
+ Iterate in reverse:
+ </p>
+<pre class="programlisting">
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">list_int</span><span class="special">(</span> <span class="comment">/*...*/</span> <span class="special">);</span>
+<span class="identifier">BOOST_REVERSE_FOREACH</span><span class="special">(</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">list_int</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// do something with i
+</span><span class="special">}</span>
+</pre>
+<p>
+ Iterating over rvalues doesn't work on some older compilers. Check the <a class="link" href="foreach/portability.html" title="Portability">Portability</a> section to see whether your
+ compiler supports this.
+ </p>
+<a name="foreach.introduction.making__literal_boost_foreach__literal__prettier"></a><h3>
+<a name="id1029678"></a>
+ <a class="link" href="foreach.html#foreach.introduction.making__literal_boost_foreach__literal__prettier">Making
+ <code class="literal">BOOST_FOREACH</code> Prettier</a>
+ </h3>
+<p>
+ People have complained about the name <code class="literal">BOOST_FOREACH</code>. It's
+ too long. <code class="computeroutput"><span class="identifier">ALL</span> <span class="identifier">CAPS</span></code>
+ can get tiresome to look at. That may be true, but <code class="literal">BOOST_FOREACH</code>
+ is merely following the <a href="http://www.boost.org/more/lib_guide.htm" target="_top">Boost
+ Naming Convention</a>. That doesn't mean you're stuck with it, though.
+ If you would like to use a different identifier (<code class="computeroutput"><span class="identifier">foreach</span></code>,
+ perhaps), you can simply do:
+ </p>
+<pre class="programlisting">
+<span class="preprocessor">#define</span> <span class="identifier">foreach</span> <span class="identifier">BOOST_FOREACH</span>
+<span class="preprocessor">#define</span> <span class="identifier">reverse_foreach</span> <span class="identifier">BOOST_REVERSE_FOREACH</span>
+</pre>
+<p>
+ Only do this if you are sure that the identifier you choose will not cause
+ name conflicts in your code.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Do not use <code class="computeroutput"><span class="preprocessor">#define</span> <span class="identifier">foreach</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">)</span> <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">)</span></code>. This
+ can be problematic if the arguments are macros themselves. This would result
+ in an additional expansion of these macros. Instead, use the form shown above.
+ </p></td></tr>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: July 19, 2008 at 22:20:02 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost/local_time/tz_database.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="foreach/extensibility.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: branches/proto/v4/doc/html/function.html
==============================================================================
--- branches/proto/v4/doc/html/function.html (original)
+++ branches/proto/v4/doc/html/function.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,104 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/function.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/function.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 7. Boost.Function</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="foreach/history_and_acknowledgements.html" title="History and Acknowledgements">
+<link rel="next" href="function/history.html" title="History &amp; Compatibility Notes">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="foreach/history_and_acknowledgements.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="function/history.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="function"></a>Chapter 7. Boost.Function</h2></div>
+<div><div class="author">
+<h3 class="author">
+<span class="firstname">Douglas</span> <span class="surname">Gregor</span>
+</h3>
+<code class="email">&lt;<a class="email" href="mailto:dgregor%20-at-%20cs.indiana.edu">dgregor -at- cs.indiana.edu</a>&gt;</code>
+</div></div>
+<div><p class="copyright">Copyright © 2001-2004 Douglas Gregor</p></div>
+<div><div class="legalnotice">
+<a name="id1034155"></a><p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)</p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">History & Compatibility Notes</span></dt>
+<dt><span class="section">Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section">Basic Usage</span></dt>
+<dt><span class="section">Free functions</span></dt>
+<dt><span class="section">Member functions</span></dt>
+<dt><span class="section">References to Function Objects</span></dt>
+<dt><span class="section">Comparing Boost.Function function objects</span></dt>
+</dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Definitions</span></dt>
+<dt><span class="section">Header <boost/function.hpp></span></dt>
+<dt><span class="section">Header <boost/function_equal.hpp></span></dt>
+</dl></dd>
+<dt><span class="section">Frequently Asked Questions</span></dt>
+<dt><span class="section">Miscellaneous Notes</span></dt>
+<dd><dl>
+<dt><span class="section">Boost.Function vs. Function Pointers</span></dt>
+<dt><span class="section">Performance</span></dt>
+<dt><span class="section">Combatting virtual function "bloat"</span></dt>
+<dt><span class="section">Acknowledgements</span></dt>
+</dl></dd>
+<dt><span class="section">Testsuite</span></dt>
+<dd><dl>
+<dt><span class="section">Acceptance tests</span></dt>
+<dt><span class="section">Negative tests</span></dt>
+</dl></dd>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="function.intro"></a>Introduction</h2></div></div></div>
+<p>The Boost.Function library contains a family of class templates
+that are function object wrappers. The notion is similar to a
+generalized callback. It shares features with function pointers in
+that both define a call interface (e.g., a function taking two integer
+arguments and returning a floating-point value) through which some
+implementation can be called, and the implementation that is invoked
+may change throughout the course of the program.</p>
+<p> Generally, any place in which a function pointer would be used
+to defer a call or make a callback, Boost.Function can be used instead
+to allow the user greater flexibility in the implementation of the
+target. Targets can be any 'compatible' function object (or function
+pointer), meaning that the arguments to the interface designated by
+Boost.Function can be converted to the arguments of the target
+function object.</p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: July 24, 2004 at 19:59:30 -0700</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="foreach/history_and_acknowledgements.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="function/history.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/hash.html
==============================================================================
--- branches/proto/v4/doc/html/hash.html (original)
+++ branches/proto/v4/doc/html/hash.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,136 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/hash.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/hash.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 8. Boost.Functional/Hash</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="function/testsuite.html" title="Testsuite">
+<link rel="next" href="hash/tutorial.html" title="Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="function/testsuite.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="hash/tutorial.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="hash"></a>Chapter 8. Boost.Functional/Hash</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Daniel</span> <span class="surname">James</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2005-2008 Daniel
+ James</p></div>
+<div><div class="legalnotice">
+<a name="id1049981"></a><p>
+ 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)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"> Introduction</span></dt>
+<dt><span class="section"> Tutorial</span></dt>
+<dt><span class="section"> Extending boost::hash for a custom data type</span></dt>
+<dt><span class="section"> Combining hash values</span></dt>
+<dt><span class="section"> Portability</span></dt>
+<dt><span class="section"> Disabling The Extensions</span></dt>
+<dt><span class="section"> Change Log</span></dt>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section"></span></dt>
+<dt><span class="section">Header <boost/functional/hash.hpp></span></dt>
+</dl></dd>
+<dt><span class="section"> Links</span></dt>
+<dt><span class="section"> Acknowledgements</span></dt>
+</dl>
+</div>
+<p>
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="hash.intro"></a><a class="link" href="hash.html#hash.intro" title="Introduction"> Introduction</a>
+</h2></div></div></div>
+<p>
+ <code class="computeroutput"><a class="link" href="boost/hash.html" title="Struct template hash">boost::hash</a></code> is an implementation of
+ the hash function
+ object specified by the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Draft
+ Technical Report on C++ Library Extensions</a> (TR1). It is the default
+ hash function for <a class="link" href="unordered.html" title="Chapter 23. Boost.Unordered">Boost.Unordered</a>, <a class="link" href="intrusive/unordered_set_unordered_multiset.html" title="Semi-Intrusive unordered associative containers: unordered_set, unordered_multiset">Boost.Intrusive</a>'s
+ unordered associative containers, and Boost.MultiIndex's
+ hash indicies and Boost.Bimap's
+ <code class="computeroutput"><span class="identifier">unordered_set_of</span></code>.
+ </p>
+<p>
+ As it is compliant with TR1,
+ it will work with:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ integers
+ </li>
+<li>
+ floats
+ </li>
+<li>
+ pointers
+ </li>
+<li>
+ strings
+ </li>
+</ul></div>
+<p>
+ It also implements the extension proposed by Peter Dimov in issue 6.18 of the
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1837.pdf" target="_top">Library
+ Extension Technical Report Issues List</a> (page 63), this adds support
+ for:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ arrays
+ </li>
+<li><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code></li>
+<li>
+ the standard containers.
+ </li>
+<li>
+ extending <code class="computeroutput"><a class="link" href="boost/hash.html" title="Struct template hash">boost::hash</a></code> for custom
+ types.
+ </li>
+</ul></div>
+</div>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: July 19, 2008 at 22:20:02 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="function/testsuite.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="hash/tutorial.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/hash/custom.html
==============================================================================
--- branches/proto/v4/doc/html/hash/custom.html (original)
+++ branches/proto/v4/doc/html/hash/custom.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,127 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Extending boost::hash for a custom data type</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="../hash.html" title="Chapter 8. Boost.Functional/Hash">
+<link rel="prev" href="tutorial.html" title="Tutorial">
+<link rel="next" href="combine.html" title="Combining hash values">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorial.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../hash.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="combine.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="hash.custom"></a><a class="link" href="custom.html" title="Extending boost::hash for a custom data type"> Extending boost::hash for a custom data type</a>
+</h2></div></div></div>
+<p>
+ <code class="computeroutput"><a class="link" href="../boost/hash.html" title="Struct template hash">boost::hash</a></code> is implemented by calling
+ the function <code class="computeroutput"><a class="link" href="reference.html#boost.hash_value_id689700">hash_value</a></code>.
+ The namespace isn't specified so that it can detect overloads via argument
+ dependant lookup. So if there is a free function <code class="computeroutput"><span class="identifier">hash_value</span></code>
+ in the same namespace as a custom type, it will get called.
+ </p>
+<p>
+ If you have a structure <code class="computeroutput"><span class="identifier">library</span><span class="special">::</span><span class="identifier">book</span></code>, where
+ each <code class="computeroutput"><span class="identifier">book</span></code> is uniquely defined
+ by it's member <code class="computeroutput"><span class="identifier">id</span></code>:
+ </p>
+<pre class="programlisting">
+<span class="keyword">namespace</span> <span class="identifier">library</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">book</span>
+ <span class="special">{</span>
+ <span class="keyword">int</span> <span class="identifier">id</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">author</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">title</span><span class="special">;</span>
 
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/hash/custom.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/hash/custom.html
- </body>
+ <span class="comment">// ....
+</span> <span class="special">};</span>
+
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="identifier">book</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">book</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">b</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">a</span><span class="special">.</span><span class="identifier">id</span> <span class="special">==</span> <span class="identifier">b</span><span class="special">.</span><span class="identifier">id</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Then all you would need to do is write the function <code class="computeroutput"><span class="identifier">library</span><span class="special">::</span><span class="identifier">hash_value</span></code>:
+ </p>
+<pre class="programlisting">
+<span class="keyword">namespace</span> <span class="identifier">library</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">hash_value</span><span class="special">(</span><span class="identifier">book</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">b</span><span class="special">)</span>
+ <span class="special">{</span>
+ <code class="computeroutput"><a class="link" href="../boost/hash.html" title="Struct template hash">boost::hash</a></code><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">hasher</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">hasher</span><span class="special">(</span><span class="identifier">b</span><span class="special">.</span><span class="identifier">id</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+ And you can now use <code class="computeroutput"><a class="link" href="../boost/hash.html" title="Struct template hash">boost::hash</a></code> with
+ book:
+ </p>
+<pre class="programlisting">
+<span class="identifier">library</span><span class="special">::</span><span class="identifier">book</span> <span class="identifier">knife</span><span class="special">(</span><span class="number">3458</span><span class="special">,</span> <span class="string">"Zane Grey"</span><span class="special">,</span> <span class="string">"The Hash Knife Outfit"</span><span class="special">);</span>
+<span class="identifier">library</span><span class="special">::</span><span class="identifier">book</span> <span class="identifier">dandelion</span><span class="special">(</span><span class="number">1354</span><span class="special">,</span> <span class="string">"Paul J. Shanley"</span><span class="special">,</span>
+ <span class="string">"Hash &amp; Dandelion Greens"</span><span class="special">);</span>
+
+<code class="computeroutput"><a class="link" href="../boost/hash.html" title="Struct template hash">boost::hash</a></code><span class="special">&lt;</span><span class="identifier">library</span><span class="special">::</span><span class="identifier">book</span><span class="special">&gt;</span> <span class="identifier">book_hasher</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">knife_hash_value</span> <span class="special">=</span> <span class="identifier">book_hasher</span><span class="special">(</span><span class="identifier">knife</span><span class="special">);</span>
+
+<span class="comment">// If std::unordered_set is available:
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">unordered_set</span><span class="special">&lt;</span><span class="identifier">library</span><span class="special">::</span><span class="identifier">book</span><span class="special">,</span> <code class="computeroutput"><a class="link" href="../boost/hash.html" title="Struct template hash">boost::hash</a></code><span class="special">&lt;</span><span class="identifier">library</span><span class="special">::</span><span class="identifier">book</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">books</span><span class="special">;</span>
+<span class="identifier">books</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">knife</span><span class="special">);</span>
+<span class="identifier">books</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">library</span><span class="special">::</span><span class="identifier">book</span><span class="special">(</span><span class="number">2443</span><span class="special">,</span> <span class="string">"Lindgren, Torgny"</span><span class="special">,</span> <span class="string">"Hash"</span><span class="special">));</span>
+<span class="identifier">books</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">library</span><span class="special">::</span><span class="identifier">book</span><span class="special">(</span><span class="number">1953</span><span class="special">,</span> <span class="string">"Snyder, Bernadette M."</span><span class="special">,</span>
+ <span class="string">"Heavenly Hash: A Tasty Mix of a Mother's Meditations"</span><span class="special">));</span>
+
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">books</span><span class="special">.</span><span class="identifier">find</span><span class="special">(</span><span class="identifier">knife</span><span class="special">)</span> <span class="special">!=</span> <span class="identifier">books</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">books</span><span class="special">.</span><span class="identifier">find</span><span class="special">(</span><span class="identifier">dandelion</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">books</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+</pre>
+<p>
+ The full example can be found in: /libs/functional/hash/examples/books.hpp
+ and /libs/functional/hash/examples/books.cpp.
+ </p>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../doc/html/images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ When writing a hash function, first look at how the equality function works.
+ Objects that are equal must generate the same hash value. When objects are
+ not equal they should generate different hash values. In this object equality
+ was based just on the id so the hash function only hashes the id. If it was
+ based on the object's name and author then the hash function should take
+ them into account (how to do this is discussed in the next section).
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2005-2008 Daniel
+ James<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorial.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../hash.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="combine.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/interprocess.html
==============================================================================
--- branches/proto/v4/doc/html/interprocess.html (original)
+++ branches/proto/v4/doc/html/interprocess.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,17 +1,396 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/interprocess.html">
- <title>Redirect to generated documentation</title>
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/interprocess.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 9. Boost.Interprocess</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="hash/acknowledgements.html" title="Acknowledgements">
+<link rel="next" href="interprocess/quick_guide.html" title="Quick Guide for the Impatient">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="hash/acknowledgements.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="interprocess/quick_guide.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="interprocess"></a>Chapter 9. Boost.Interprocess</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Ion</span> <span class="surname">Gaztañaga</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2005 - 2007 Ion Gaztañaga</p></div>
+<div><div class="legalnotice">
+<a name="id1061294"></a><p>
+ 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)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"> Introduction</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="interprocess.html#interprocess.intro.introduction_building_interprocess">
+ Building Boost.Interprocess</a></span></dt>
+<dt><span class="section"> Tested compilers</span></dt>
+</dl></dd>
+<dt><span class="section"> Quick Guide for the Impatient</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="interprocess/quick_guide.html#interprocess.quick_guide.qg_memory_pool"> Using shared
+ memory as a pool of unnamed memory blocks</a></span></dt>
+<dt><span class="section"><a href="interprocess/quick_guide.html#interprocess.quick_guide.qg_named_interprocess"> Creating
+ named shared memory objects</a></span></dt>
+<dt><span class="section"><a href="interprocess/quick_guide.html#interprocess.quick_guide.qg_offset_ptr"> Using an offset
+ smart pointer for shared memory</a></span></dt>
+<dt><span class="section"><a href="interprocess/quick_guide.html#interprocess.quick_guide.qg_interprocess_container">
+ Creating vectors in shared memory</a></span></dt>
+<dt><span class="section"><a href="interprocess/quick_guide.html#interprocess.quick_guide.qg_interprocess_map"> Creating
+ maps in shared memory</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Some basic explanations</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="interprocess/some_basic_explanations.html#interprocess.some_basic_explanations.processes_and_threads">
+ Processes And Threads</a></span></dt>
+<dt><span class="section"><a href="interprocess/some_basic_explanations.html#interprocess.some_basic_explanations.sharing_information">
+ Sharing information between processes</a></span></dt>
+<dt><span class="section"><a href="interprocess/some_basic_explanations.html#interprocess.some_basic_explanations.persistence"> Persistence
+ Of Interprocess Mechanisms</a></span></dt>
+<dt><span class="section"><a href="interprocess/some_basic_explanations.html#interprocess.some_basic_explanations.names"> Names Of
+ Interprocess Mechanisms</a></span></dt>
+<dt><span class="section"><a href="interprocess/some_basic_explanations.html#interprocess.some_basic_explanations.constructors_destructors_and_resource_lifetime">
+ Constructors, destructors and lifetime of Interprocess named resources</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="interprocess/sharedmemorybetweenprocesses.html"> Sharing memory
+ between processes</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.sharedmemory">
+ Shared memory</a></span></dt>
+<dt><span class="section"><a href="interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.mapped_file">
+ Memory Mapped Files</a></span></dt>
+<dt><span class="section"><a href="interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.mapped_region">
+ More About Mapped Regions</a></span></dt>
+<dt><span class="section"><a href="interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.mapped_region_object_limitations">
+ Limitations When Constructing Objects In Mapped Regions</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="interprocess/offset_ptr.html"> Mapping Address Independent Pointer:
+ offset_ptr</a></span></dt>
+<dt><span class="section"><a href="interprocess/synchronization_mechanisms.html"> Synchronization
+ mechanisms</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.synchronization_mechanisms_overview">
+ Synchronization mechanisms overview</a></span></dt>
+<dt><span class="section"> Mutexes</span></dt>
+<dt><span class="section"><a href="interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.conditions">
+ Conditions</a></span></dt>
+<dt><span class="section"><a href="interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.semaphores">
+ Semaphores</a></span></dt>
+<dt><span class="section"><a href="interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.upgradable_mutexes">
+ Upgradable Mutexes</a></span></dt>
+<dt><span class="section"><a href="interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.lock_conversions">
+ Lock Transfers Through Move Semantics</a></span></dt>
+<dt><span class="section"><a href="interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.file_lock"> File
+ Locks</a></span></dt>
+<dt><span class="section"><a href="interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.message_queue">
+ Message Queue</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Managed Memory Segments</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="interprocess/managed_memory_segments.html#interprocess.managed_memory_segments.making_ipc_easy">
+ Making Interprocess Data Communication Easy</a></span></dt>
+<dt><span class="section"><a href="interprocess/managed_memory_segments.html#interprocess.managed_memory_segments.managed_shared_memory">
+ Managed Shared Memory</a></span></dt>
+<dt><span class="section"><a href="interprocess/managed_memory_segments.html#interprocess.managed_memory_segments.managed_mapped_files">
+ Managed Mapped File</a></span></dt>
+<dt><span class="section"><a href="interprocess/managed_memory_segments.html#interprocess.managed_memory_segments.managed_memory_segment_features">
+ Managed Memory Segment Features</a></span></dt>
+<dt><span class="section"><a href="interprocess/managed_memory_segments.html#interprocess.managed_memory_segments.managed_memory_segment_advanced_features">
+ Managed Memory Segment Advanced Features</a></span></dt>
+<dt><span class="section"><a href="interprocess/managed_memory_segments.html#interprocess.managed_memory_segments.managed_heap_memory_external_buffer">
+ Managed Heap Memory And Managed External Buffer</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="interprocess/allocators_containers.html"> Allocators, containers
+ and memory allocation algorithms</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="interprocess/allocators_containers.html#interprocess.allocators_containers.allocator_introduction">
+ Introduction to Interprocess allocators</a></span></dt>
+<dt><span class="section"><a href="interprocess/allocators_containers.html#interprocess.allocators_containers.stl_allocators_segregated_storage">
+ Segregated storage node allocators</a></span></dt>
+<dt><span class="section"><a href="interprocess/allocators_containers.html#interprocess.allocators_containers.stl_allocators_adaptive">
+ Adaptive pool node allocators</a></span></dt>
+<dt><span class="section"><a href="interprocess/allocators_containers.html#interprocess.allocators_containers.containers_explained">
+ Interprocess and containers in managed memory segments</a></span></dt>
+<dt><span class="section"><a href="interprocess/allocators_containers.html#interprocess.allocators_containers.additional_containers">
+ Boost containers compatible with Boost.Interprocess</a></span></dt>
+<dt><span class="section"><a href="interprocess/allocators_containers.html#interprocess.allocators_containers.memory_algorithms">
+ Memory allocation algorithms</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="interprocess/streams.html"> Direct iostream formatting: vectorstream
+ and bufferstream</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="interprocess/streams.html#interprocess.streams.vectorstream"> Formatting directly
+ in your character vector: vectorstream</a></span></dt>
+<dt><span class="section"><a href="interprocess/streams.html#interprocess.streams.bufferstream"> Formatting directly
+ in your character buffer: bufferstream</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Ownership smart pointers</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="interprocess/interprocess_smart_ptr.html#interprocess.interprocess_smart_ptr.intrusive_ptr"> Intrusive
+ pointer</a></span></dt>
+<dt><span class="section"><a href="interprocess/interprocess_smart_ptr.html#interprocess.interprocess_smart_ptr.scoped_ptr"> Scoped
+ pointer</a></span></dt>
+<dt><span class="section"><a href="interprocess/interprocess_smart_ptr.html#interprocess.interprocess_smart_ptr.shared_ptr"> Shared
+ pointer and weak pointer</a></span></dt>
+<dt><span class="section"><a href="interprocess/interprocess_smart_ptr.html#interprocess.interprocess_smart_ptr.unique_ptr"> Unique
+ pointer</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Architecture and internals</span></dt>
+<dd><dl>
+<dt><span class="section"> Basic guidelines</span></dt>
+<dt><span class="section"><a href="interprocess/architecture.html#interprocess.architecture.architecture_algorithm_to_managed">
+ From the memory algorithm to the managed segment</a></span></dt>
+<dt><span class="section"><a href="interprocess/architecture.html#interprocess.architecture.allocators_containers"> Allocators
+ and containers</a></span></dt>
+<dt><span class="section"><a href="interprocess/architecture.html#interprocess.architecture.performance"> Performance of
+ Boost.Interprocess</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Customizing Boost.Interprocess</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="interprocess/customizing_interprocess.html#interprocess.customizing_interprocess.custom_interprocess_alloc">
+ Writing a new shared memory allocation algorithm</a></span></dt>
+<dt><span class="section"><a href="interprocess/customizing_interprocess.html#interprocess.customizing_interprocess.custom_allocators">
+ Building custom STL compatible allocators for Boost.Interprocess</a></span></dt>
+<dt><span class="section"><a href="interprocess/customizing_interprocess.html#interprocess.customizing_interprocess.custom_indexes">
+ Building custom indexes</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="interprocess/acknowledgements_notes.html"> Acknowledgements,
+ notes and links</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="interprocess/acknowledgements_notes.html#interprocess.acknowledgements_notes.thanks_to"> Thanks
+ to...</a></span></dt>
+<dt><span class="section"><a href="interprocess/acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes"> Release
+ Notes</a></span></dt>
+<dt><span class="section"><a href="interprocess/acknowledgements_notes.html#interprocess.acknowledgements_notes.books_and_links">
+ Books and interesting links</a></span></dt>
+<dt><span class="section"><a href="interprocess/acknowledgements_notes.html#interprocess.acknowledgements_notes.future_improvements">
+ Future improvements...</a></span></dt>
+</dl></dd>
+<dt><span class="section">Boost.Interprocess Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Header <boost/interprocess/allocators/adaptive_pool.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/allocators/allocation_type.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/allocators/allocator.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/allocators/cached_adaptive_pool.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/allocators/cached_node_allocator.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/allocators/node_allocator.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/allocators/private_adaptive_pool.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/allocators/private_node_allocator.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/anonymous_shared_memory.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/containers/deque.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/containers/flat_map.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/containers/flat_set.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/containers/list.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/containers/map.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/containers/set.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/containers/slist.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/containers/string.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/containers/vector.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/creation_tags.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/errors.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/exceptions.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/file_mapping.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/indexes/flat_map_index.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/indexes/iset_index.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/indexes/iunordered_set_index.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/indexes/map_index.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/indexes/null_index.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/indexes/unordered_map_index.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/interprocess_fwd.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/ipc/message_queue.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/managed_external_buffer.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/managed_heap_memory.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/managed_mapped_file.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/managed_shared_memory.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/managed_windows_shared_memory.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/mapped_region.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/mem_algo/rbtree_best_fit.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/mem_algo/simple_seq_fit.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/offset_ptr.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/segment_manager.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/shared_memory_object.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/smart_ptr/deleter.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/smart_ptr/enable_shared_from_this.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/smart_ptr/intrusive_ptr.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/smart_ptr/scoped_ptr.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/smart_ptr/shared_ptr.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/smart_ptr/unique_ptr.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/smart_ptr/weak_ptr.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/streams/bufferstream.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/streams/vectorstream.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/file_lock.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/interprocess_barrier.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/interprocess_condition.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/interprocess_mutex.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/interprocess_recursive_mutex.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/interprocess_semaphore.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/interprocess_upgradable_mutex.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/lock_options.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/mutex_family.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/named_condition.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/named_mutex.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/named_recursive_mutex.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/named_semaphore.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/named_upgradable_mutex.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/null_mutex.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/scoped_lock.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/sharable_lock.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/sync/upgradable_lock.hpp></span></dt>
+<dt><span class="section">Header <boost/interprocess/windows_shared_memory.hpp></span></dt>
+</dl></dd>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="interprocess.intro"></a><a class="link" href="interprocess.html#interprocess.intro" title="Introduction"> Introduction</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="interprocess.html#interprocess.intro.introduction_building_interprocess">
+ Building Boost.Interprocess</a></span></dt>
+<dt><span class="section"> Tested compilers</span></dt>
+</dl></div>
+<p>
+ <span class="bold"><strong>Boost.Interprocess</strong></span> simplifies the use of common
+ interprocess communication and synchronization mechanisms and offers a wide
+ range of them:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Shared memory.
+ </li>
+<li>
+ Memory-mapped files.
+ </li>
+<li>
+ Semaphores, mutexes, condition variables and upgradable mutex types to place
+ them in shared memory and memory mapped files.
+ </li>
+<li>
+ Named versions of those synchronization objects, similar to UNIX/Windows
+ sem_open/CreateSemaphore API.
+ </li>
+<li>
+ File locking.
+ </li>
+<li>
+ Relative pointers.
+ </li>
+<li>
+ Message queues.
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Boost.Interprocess</strong></span> also offers higher-level
+ interprocess mechanisms to allocate dynamically portions of a shared memory
+ or a memory mapped file (in general, to allocate portions of a fixed size memory
+ segment). Using these mechanisms, <span class="bold"><strong>Boost.Interprocess</strong></span>
+ offers useful tools to construct C++ objects, including STL-like containers,
+ in shared memory and memory mapped files:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Dynamic creation of anonymous and named objects in a shared memory or memory
+ mapped file.
+ </li>
+<li>
+ STL-like containers compatible with shared memory/memory-mapped files.
+ </li>
+<li>
+ STL-like allocators ready for shared memory/memory-mapped files implementing
+ several memory allocation patterns (like pooling).
+ </li>
+</ul></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="interprocess.intro.introduction_building_interprocess"></a><a class="link" href="interprocess.html#interprocess.intro.introduction_building_interprocess" title="Building Boost.Interprocess">
+ Building Boost.Interprocess</a>
+</h3></div></div></div>
+<p>
+ There is no need to compile <span class="bold"><strong>Boost.Interprocess</strong></span>,
+ since it's a header only library. Just include your Boost header directory
+ in your compiler include path.
+ </p>
+<p>
+ <span class="bold"><strong>Boost.Interprocess</strong></span> depends on Boost.DateTime, which needs separate compilation.
+ However, the subset used by <span class="bold"><strong>Boost.Interprocess</strong></span>
+ does not need any separate compilation so the user can define <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_NO_LIB</span></code> to avoid Boost from
+ trying to automatically link the <span class="bold"><strong>Boost.DateTime</strong></span>.
+ </p>
+<p>
+ In POSIX systems, <span class="bold"><strong>Boost.Interprocess</strong></span> uses
+ pthread system calls to implement classes like mutexes, condition variables,
+ etc... In some operating systems, these POSIX calls are implemented in separate
+ libraries that are not automatically linked by the compiler. For example,
+ in some Linux systems POSIX pthread functions are implemented in <code class="computeroutput"><span class="identifier">librt</span><span class="special">.</span><span class="identifier">a</span></code> library, so you might need to add that
+ library when linking an executable or shared library that uses <span class="bold"><strong>Boost.Interprocess</strong></span>. If you obtain linking errors related
+ to those pthread functions, please revise your system's documentation to
+ know which library implements them.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="interprocess.intro.tested_compilers"></a><a class="link" href="interprocess.html#interprocess.intro.tested_compilers" title="Tested compilers"> Tested compilers</a>
+</h3></div></div></div>
+<p>
+ <span class="bold"><strong>Boost.Interprocess</strong></span> has been tested in the
+ following compilers/platforms:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Visual 7.1 Windows XP
+ </li>
+<li>
+ Visual 8.0 Windows XP
+ </li>
+<li>
+ GCC 4.1.1 MinGW
+ </li>
+<li>
+ GCC 3.4.4 Cygwin
+ </li>
+<li>
+ Intel 9.1 Windows XP
+ </li>
+<li>
+ GCC 4.1.2 Linux
+ </li>
+<li>
+ GCC 3.4.3 Solaris 11
+ </li>
+<li>
+ GCC 4.0 MacOs 10.4.1
+ </li>
+</ul></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: July 19, 2008 at 22:20:21 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="hash/acknowledgements.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="interprocess/quick_guide.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>
-

Modified: branches/proto/v4/doc/html/intrusive.html
==============================================================================
--- branches/proto/v4/doc/html/intrusive.html (original)
+++ branches/proto/v4/doc/html/intrusive.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,17 +1,328 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/intrusive.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/intrusive.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 10. Boost.Intrusive</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="boost/interprocess/windows_shared_memory.html" title="Class windows_shared_memory">
+<link rel="next" href="intrusive/intrusive_vs_nontrusive.html" title="Intrusive and non-intrusive containers">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost/interprocess/windows_shared_memory.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="intrusive/intrusive_vs_nontrusive.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="intrusive"></a>Chapter 10. Boost.Intrusive</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Olaf</span> <span class="surname">Krzikalla</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Ion</span> <span class="surname">Gaztañaga</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2005 Olaf Krzikalla, 2006-2007 Ion Gaztañaga</p></div>
+<div><div class="legalnotice">
+<a name="id1329069"></a><p>
+ 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)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"> Introduction</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="intrusive.html#intrusive.introduction.introduction_presenting"> Presenting
+ Boost.Intrusive</a></span></dt>
+<dt><span class="section"><a href="intrusive.html#intrusive.introduction.introduction_building_intrusive">
+ Building Boost.Intrusive</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="intrusive/intrusive_vs_nontrusive.html"> Intrusive and non-intrusive
+ containers</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="intrusive/intrusive_vs_nontrusive.html#intrusive.intrusive_vs_nontrusive.differences_intrusive_vs_nontrusive">
+ Differences between intrusive and non-intrusive containers</a></span></dt>
+<dt><span class="section"><a href="intrusive/intrusive_vs_nontrusive.html#intrusive.intrusive_vs_nontrusive.properties_of_intrusive">
+ Properties of Boost.Intrusive containers</a></span></dt>
+</dl></dd>
+<dt><span class="section"> How to use Boost.Intrusive</span></dt>
+<dd><dl>
+<dt><span class="section"> Using base hooks</span></dt>
+<dt><span class="section"> Using member hooks</span></dt>
+<dt><span class="section"> Using both hooks</span></dt>
+<dt><span class="section"> Object lifetime</span></dt>
+</dl></dd>
+<dt><span class="section"> When to use?</span></dt>
+<dt><span class="section"> Concept summary</span></dt>
+<dt><span class="section"><a href="intrusive/presenting_containers.html"> Presenting Boost.Intrusive
+ containers</a></span></dt>
+<dt><span class="section"> Safe hooks</span></dt>
+<dd><dl>
+<dt><span class="section"> Features of the safe mode</span></dt>
+<dt><span class="section"><a href="intrusive/safe_hook.html#intrusive.safe_hook.configuring"> Configuring safe-mode
+ assertions</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Auto-unlink hooks</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="intrusive/auto_unlink_hooks.html#intrusive.auto_unlink_hooks.auto_unlink_hooks_what">
+ What's an auto-unlink hook?</a></span></dt>
+<dt><span class="section"><a href="intrusive/auto_unlink_hooks.html#intrusive.auto_unlink_hooks.auto_unlink_hooks_example">
+ Auto-unlink hook example</a></span></dt>
+<dt><span class="section"><a href="intrusive/auto_unlink_hooks.html#intrusive.auto_unlink_hooks.auto_unlink_and_constant_time">
+ Auto-unlink hooks and containers with constant-time <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"> Intrusive singly linked list: slist</span></dt>
+<dd><dl>
+<dt><span class="section"> slist hooks</span></dt>
+<dt><span class="section"> slist container</span></dt>
+<dt><span class="section"> Example</span></dt>
+</dl></dd>
+<dt><span class="section"> Intrusive doubly linked list: list</span></dt>
+<dd><dl>
+<dt><span class="section"> list hooks</span></dt>
+<dt><span class="section"> list container</span></dt>
+<dt><span class="section"> Example</span></dt>
+</dl></dd>
+<dt><span class="section"><a href="intrusive/set_multiset.html"> Intrusive associative containers:
+ set, multiset, rbtree</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="intrusive/set_multiset.html#intrusive.set_multiset.set_multiset_hooks"> set, multiset
+ and rbtree hooks</a></span></dt>
+<dt><span class="section"><a href="intrusive/set_multiset.html#intrusive.set_multiset.set_multiset_containers"> set,
+ multiset and rbtree containers</a></span></dt>
+<dt><span class="section"> Example</span></dt>
+</dl></dd>
+<dt><span class="section"><a href="intrusive/unordered_set_unordered_multiset.html"> Semi-Intrusive
+ unordered associative containers: unordered_set, unordered_multiset</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="intrusive/unordered_set_unordered_multiset.html#intrusive.unordered_set_unordered_multiset.unordered_set_unordered_multiset_performance">
+ unordered_set and unordered_multiset performance notes</a></span></dt>
+<dt><span class="section"><a href="intrusive/unordered_set_unordered_multiset.html#intrusive.unordered_set_unordered_multiset.unordered_set_unordered_multiset_hooks">
+ unordered_set and unordered_multiset hooks</a></span></dt>
+<dt><span class="section"><a href="intrusive/unordered_set_unordered_multiset.html#intrusive.unordered_set_unordered_multiset.unordered_set_unordered_multiset_containers">
+ unordered_set and unordered_multiset containers</a></span></dt>
+<dt><span class="section"><a href="intrusive/unordered_set_unordered_multiset.html#intrusive.unordered_set_unordered_multiset.unordered_set_unordered_multiset_example">
+ Example</a></span></dt>
+<dt><span class="section"><a href="intrusive/unordered_set_unordered_multiset.html#intrusive.unordered_set_unordered_multiset.custom_bucket_traits">
+ Custom bucket traits</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="intrusive/splay_set_multiset.html"> Intrusive splay tree based
+ associative containers: splay_set, splay_multiset and , splay_tree</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="intrusive/splay_set_multiset.html#intrusive.splay_set_multiset.splay_set_multiset_disadvantages">
+ Advantages and disadvantages of splay tree based containers</a></span></dt>
+<dt><span class="section"><a href="intrusive/splay_set_multiset.html#intrusive.splay_set_multiset.splay_set_multiset_hooks">
+ splay_set, splay_multiset and splaytree hooks</a></span></dt>
+<dt><span class="section"><a href="intrusive/splay_set_multiset.html#intrusive.splay_set_multiset.set_multiset_containers">
+ splay_set, splay_multiset and splaytree containers</a></span></dt>
+<dt><span class="section"><a href="intrusive/splay_set_multiset.html#intrusive.splay_set_multiset.splay_set_bst_hook"> Splay
+ trees with BST hooks</a></span></dt>
+<dt><span class="section"><a href="intrusive/splay_set_multiset.html#intrusive.splay_set_multiset.splay_set_multiset_example">
+ Example</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="intrusive/avl_set_multiset.html"> Intrusive avl tree based associative
+ containers: avl_set, avl_multiset and avltree</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="intrusive/avl_set_multiset.html#intrusive.avl_set_multiset.avl_set_multiset_hooks"> avl_set,
+ avl_multiset and avltree hooks</a></span></dt>
+<dt><span class="section"><a href="intrusive/avl_set_multiset.html#intrusive.avl_set_multiset.set_multiset_containers">
+ avl_set, avl_multiset and avltree containers</a></span></dt>
+<dt><span class="section"><a href="intrusive/avl_set_multiset.html#intrusive.avl_set_multiset.avl_set_multiset_example">
+ Example</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="intrusive/sg_set_multiset.html"> Intrusive scapegoat tree based
+ associative containers: sg_set, sg_multiset and sgtree</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="intrusive/sg_set_multiset.html#intrusive.sg_set_multiset.sg_set_multiset_hooks"> Using
+ binary search tree hooks: bs_set_base_hook and bs_set_member_hook</a></span></dt>
+<dt><span class="section"><a href="intrusive/sg_set_multiset.html#intrusive.sg_set_multiset.sg_set_multiset_containers">
+ sg_set, sg_multiset and sgtree containers</a></span></dt>
+<dt><span class="section"> Example</span></dt>
+</dl></dd>
+<dt><span class="section"><a href="intrusive/advanced_lookups_insertions.html"> Advanced lookup
+ and insertion functions for associative containers</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="intrusive/advanced_lookups_insertions.html#intrusive.advanced_lookups_insertions.advanced_lookups">
+ Advanced lookups</a></span></dt>
+<dt><span class="section"><a href="intrusive/advanced_lookups_insertions.html#intrusive.advanced_lookups_insertions.advanced_insertions">
+ Advanced insertions</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="intrusive/erasing_and_disposing.html"> Erasing and disposing
+ values from Boost.Intrusive containers</a></span></dt>
+<dt><span class="section"><a href="intrusive/clone_from.html"> Cloning <span class="bold"><strong>Boost.Intrusive</strong></span>
+ containers</a></span></dt>
+<dt><span class="section"><a href="intrusive/using_smart_pointers.html"> Using smart pointers with
+ Boost.Intrusive containers</a></span></dt>
+<dd><dl><dt><span class="section"><a href="intrusive/using_smart_pointers.html#intrusive.using_smart_pointers.smart_pointers_requirements">
+ Requirements for smart pointers compatible with Boost.Intrusive</a></span></dt></dl></dd>
+<dt><span class="section"><a href="intrusive/obtaining_iterators_from_values.html"> Obtaining iterators
+ from values</a></span></dt>
+<dt><span class="section"> Concepts explained</span></dt>
+<dt><span class="section"><a href="intrusive/node_algorithms.html"> Node algorithms with custom
+ NodeTraits</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="intrusive/node_algorithms.html#intrusive.node_algorithms.circular_slist_algorithms">
+ Intrusive singly linked list algorithms</a></span></dt>
+<dt><span class="section"><a href="intrusive/node_algorithms.html#intrusive.node_algorithms.circular_list_algorithms">
+ Intrusive doubly linked list algorithms</a></span></dt>
+<dt><span class="section"><a href="intrusive/node_algorithms.html#intrusive.node_algorithms.rbtree_algorithms"> Intrusive
+ red-black tree algorithms</a></span></dt>
+<dt><span class="section"><a href="intrusive/node_algorithms.html#intrusive.node_algorithms.splaytree_algorithms"> Intrusive
+ splay tree algorithms</a></span></dt>
+<dt><span class="section"><a href="intrusive/node_algorithms.html#intrusive.node_algorithms.avltree_algorithms"> Intrusive
+ avl tree algorithms</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Containers with custom ValueTraits</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="intrusive/value_traits.html#intrusive.value_traits.value_traits_interface"> ValueTraits
+ interface</a></span></dt>
+<dt><span class="section"><a href="intrusive/value_traits.html#intrusive.value_traits.value_traits_example"> Custom
+ ValueTraits example</a></span></dt>
+<dt><span class="section"><a href="intrusive/value_traits.html#intrusive.value_traits.reusing_node_algorithms"> Reusing
+ node algorithms for different values</a></span></dt>
+<dt><span class="section"><a href="intrusive/value_traits.html#intrusive.value_traits.simplifying_value_traits"> Simplifying
+ value traits definition</a></span></dt>
+<dt><span class="section"><a href="intrusive/value_traits.html#intrusive.value_traits.stateful_value_traits"> Stateful
+ value traits</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Thread safety guarantees</span></dt>
+<dt><span class="section"><a href="intrusive/obtaining_same_type_reducing_space.html"> Obtaining
+ the same types and reducing symbol length</a></span></dt>
+<dt><span class="section"> Design Notes</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="intrusive/design_notes.html#intrusive.design_notes._boost_intrusive_in_performance_sensitive_environments">
+ Boost.Intrusive in performance sensitive environments</a></span></dt>
+<dt><span class="section"><a href="intrusive/design_notes.html#intrusive.design_notes._boost_intrusive_in_space_constrained_environments">
+ Boost.Intrusive in space constrained environments</a></span></dt>
+<dt><span class="section"><a href="intrusive/design_notes.html#intrusive.design_notes._boost_intrusive_as_a_basic_building_block">
+ Boost.Intrusive as a basic building block</a></span></dt>
+<dt><span class="section"><a href="intrusive/design_notes.html#intrusive.design_notes._extending_boost_intrusive"> Extending
+ Boost.Intrusive</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Performance</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="intrusive/performance.html#intrusive.performance.performance_results_push_back">
+ Back insertion and destruction</a></span></dt>
+<dt><span class="section"><a href="intrusive/performance.html#intrusive.performance.performance_results_reversing">
+ Reversing</a></span></dt>
+<dt><span class="section"> Sorting</span></dt>
+<dt><span class="section"><a href="intrusive/performance.html#intrusive.performance.performance_results_write_access">
+ Write access</a></span></dt>
+<dt><span class="section"><a href="intrusive/performance.html#intrusive.performance.performance_results_conclusions">
+ Conclusions</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Release Notes</span></dt>
+<dd><dl><dt><span class="section"><a href="intrusive/release_notes.html#intrusive.release_notes.release_notes_boost_1_36_00">
+ Boost 1.36 Release</a></span></dt></dl></dd>
+<dt><span class="section"> Tested compilers</span></dt>
+<dt><span class="section"> References</span></dt>
+<dt><span class="section"> Acknowledgements</span></dt>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Header <boost/intrusive/any_hook.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/avl_set.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/avl_set_hook.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/avltree.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/avltree_algorithms.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/bs_set_hook.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/circular_list_algorithms.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/circular_slist_algorithms.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/derivation_value_traits.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/linear_slist_algorithms.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/link_mode.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/list.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/list_hook.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/member_value_traits.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/options.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/pointer_plus_bits.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/rbtree.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/rbtree_algorithms.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/set.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/set_hook.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/sg_set.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/sgtree.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/sgtree_algorithms.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/slist.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/slist_hook.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/splay_set.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/splay_set_hook.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/splaytree.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/splaytree_algorithms.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/trivial_value_traits.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/unordered_set.hpp></span></dt>
+<dt><span class="section">Header <boost/intrusive/unordered_set_hook.hpp></span></dt>
+</dl></dd>
+<dt><span class="section"> License notices</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="intrusive.introduction"></a><a class="link" href="intrusive.html#intrusive.introduction" title="Introduction"> Introduction</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="intrusive.html#intrusive.introduction.introduction_presenting"> Presenting
+ Boost.Intrusive</a></span></dt>
+<dt><span class="section"><a href="intrusive.html#intrusive.introduction.introduction_building_intrusive">
+ Building Boost.Intrusive</a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="intrusive.introduction.introduction_presenting"></a><a class="link" href="intrusive.html#intrusive.introduction.introduction_presenting" title="Presenting Boost.Intrusive"> Presenting
+ Boost.Intrusive</a>
+</h3></div></div></div>
+<p>
+ <span class="bold"><strong>Boost.Intrusive</strong></span> is a library presenting
+ some intrusive containers to the world of C++. Intrusive containers are special
+ containers that offer <a class="link" href="intrusive/performance.html" title="Performance">better performance</a>
+ and exception safety guarantees than non-intrusive containers (like STL containers).
+ </p>
+<p>
+ The performance benefits of intrusive containers makes them ideal as a building
+ block to efficiently construct complex containers like multi-index containers
+ or to design high performance code like memory allocation algorithms.
+ </p>
+<p>
+ While intrusive containers were and are widely used in C, they became more
+ and more forgotten in C++ due to the presence of the standard containers
+ which don't support intrusive techniques.<span class="bold"><strong>Boost.Intrusive</strong></span>
+ not only reintroduces this technique to C++, but also encapsulates the implementation
+ in STL-like interfaces. Hence anyone familiar with standard containers can
+ easily use <span class="bold"><strong>Boost.Intrusive</strong></span>.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="intrusive.introduction.introduction_building_intrusive"></a><a class="link" href="intrusive.html#intrusive.introduction.introduction_building_intrusive" title="Building Boost.Intrusive">
+ Building Boost.Intrusive</a>
+</h3></div></div></div>
+<p>
+ There is no need to compile anything to use <span class="bold"><strong>Boost.Intrusive</strong></span>,
+ since it's a header only library. Just include your Boost header directory
+ in your compiler include path.
+ </p>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: July 19, 2008 at 22:20:40 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost/interprocess/windows_shared_memory.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="intrusive/intrusive_vs_nontrusive.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>
-

Modified: branches/proto/v4/doc/html/jam.html
==============================================================================
--- branches/proto/v4/doc/html/jam.html (original)
+++ branches/proto/v4/doc/html/jam.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,144 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/jam.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/jam.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 28. Boost.Jam : 3.1.17</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="tools.html" title="Part II. Boost Tools">
+<link rel="prev" href="quickbook/ref.html" title="Quick Reference">
+<link rel="next" href="jam/building.html" title="Building BJam">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quickbook/ref.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="tools.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="jam/building.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="jam"></a>Chapter 28. Boost.Jam : 3.1.17</h2></div>
+<div><div class="authorgroup">
+<div class="author"><h3 class="author">
+<span class="firstname">Rene</span> <span class="surname">Rivera</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">David</span> <span class="surname">Abrahams</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">Vladimir</span> <span class="surname">Prus</span>
+</h3></div>
+</div></div>
+<div><p class="copyright">Copyright © 2003-2007 Rene Rivera, David Abrahams, Vladimir Prus</p></div>
+<div><div class="legalnotice">
+<a name="id2303277"></a><p>
+ 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)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"> Introduction</span></dt>
+<dd><dl><dt><span class="section"> Features</span></dt></dl></dd>
+<dt><span class="section"> Building BJam</span></dt>
+<dt><span class="section"> Using BJam</span></dt>
+<dd><dl>
+<dt><span class="section"> Options</span></dt>
+<dt><span class="section"> Operation</span></dt>
+</dl></dd>
+<dt><span class="section"> Language</span></dt>
+<dd><dl>
+<dt><span class="section"> Lexical Features</span></dt>
+<dt><span class="section"> Targets</span></dt>
+<dt><span class="section"> Rules</span></dt>
+<dt><span class="section">Flow-of-Control</span></dt>
+<dt><span class="section">Variables</span></dt>
+<dt><span class="section">Modules</span></dt>
+</dl></dd>
+<dt><span class="section">Miscellaneous</span></dt>
+<dd><dl>
+<dt><span class="section">Diagnostics</span></dt>
+<dt><span class="section">Bugs, Limitations</span></dt>
+<dt><span class="section">Fundamentals</span></dt>
+</dl></dd>
+<dt><span class="section">History</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="jam.intro"></a><a class="link" href="jam.html#jam.intro" title="Introduction"> Introduction</a>
+</h2></div></div></div>
+<div class="toc"><dl><dt><span class="section"> Features</span></dt></dl></div>
+<p>
+ Boost.Jam (BJam) is a build tool based on FTJam, which in turn is based on
+ Perforce Jam. It
+ contains significant improvements made to facilitate its use in the Boost Build
+ System, but should be backward compatible with <a href="http://www.perforce.com/jam/jam.html" target="_top">Perforce
+ Jam</a>.
+ </p>
+<p>
+ This is version 3.1.17 of BJam and is based on version 2.4 of Jam/MR:
+ </p>
+<pre class="programlisting"><span class="emphasis"><em>+\
++\ Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
+\+</em></span>
+This is Release 2.4 of Jam/MR, a make-like program.
+License is hereby granted to use this software and distribute it
+freely, as long as this copyright notice is retained and modifications
+are clearly marked.
+ALL WARRANTIES ARE HEREBY DISCLAIMED.
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="jam.intro.features"></a><a class="link" href="jam.html#jam.intro.features" title="Features"> Features</a>
+</h3></div></div></div>
+<p>
+ Jam is a make(1) replacement that makes building simple things simple and
+ building complicated things manageable.
+ </p>
+<p>
+ Jam's language is expressive, making Jamfiles (c.f. Makefiles) compact.
+ </p>
+<p>
+ Jam handles header file dependencies automatically and on-the-fly.
+ </p>
+<p>
+ Jam is very portable: it runs on UNIX, VMS, Mac, and NT. Most Jamfiles themselves
+ are portable.
+ </p>
+<p>
+ Jam is unintrusive: it is small, it has negligible CPU overhead, and it doesn't
+ create any of its own funny files (c.f. Odin, nmake, SunOS make).
+ </p>
+<p>
+ Jam can build large projects spread across many directories in one pass,
+ without recursing, tracking the relationships among all files. Jam can do
+ this with multiple, concurrent processes.
+ </p>
+<p>
+ Jam isn't under the blinkin GNU copyright, so you can incorporate it into
+ commercial products.
+ </p>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quickbook/ref.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="tools.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="jam/building.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/jam/building.html
==============================================================================
--- branches/proto/v4/doc/html/jam/building.html (original)
+++ branches/proto/v4/doc/html/jam/building.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,18 +1,963 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/jam/building.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/jam/building.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Building BJam</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="../jam.html" title="Chapter 28. Boost.Jam : 3.1.17">
+<link rel="prev" href="../jam.html" title="Chapter 28. Boost.Jam : 3.1.17">
+<link rel="next" href="usage.html" title="Using BJam">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../jam.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../jam.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="usage.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="jam.building"></a><a class="link" href="building.html" title="Building BJam"> Building BJam</a>
+</h2></div></div></div>
+<p>
+ Installing <code class="literal">BJam</code> after building it is simply a matter of
+ copying the generated executables someplace in your <code class="literal">PATH</code>.
+ For building the executables there are a set of <code class="literal">build</code> bootstrap
+ scripts to accomodate particular environments. The scripts take one optional
+ argument, the name of the toolset to build with. When the toolset is not given
+ an attempt is made to detect an available toolset and use that. The build scripts
+ accept these arguments:
+ </p>
+<pre class="programlisting"><span class="emphasis"><em>build</em></span> [<span class="emphasis"><em>toolset</em></span>]
+</pre>
+<p>
+ Running the scripts without arguments will give you the best chance of success.
+ On Windows platforms from a command console do:
+ </p>
+<pre class="programlisting">cd <span class="emphasis"><em>jam source location</em></span>
+.\build.bat
+</pre>
+<p>
+ On Unix type platforms do:
+ </p>
+<pre class="programlisting">cd <span class="emphasis"><em>jam source location</em></span>
+sh ./build.sh
+</pre>
+<p>
+ For the Boost.Jam source included with the Boost distribution the <span class="emphasis"><em>jam
+ source location</em></span> is <code class="literal">BOOST_ROOT/tools/jam/src</code>.
+ </p>
+<p>
+ If the scripts fail to detect an appropriate toolset to build with your particular
+ toolset may not be auto-detectable. In that case, you can specify the toolset
+ as the first argument, this assumes that the toolset is readily available in
+ the <code class="literal">PATH</code>.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The toolset used to build Boost.Jam is independent of the toolsets used for
+ Boost.Build. Only one version of Boost.Jam is needed to use Boost.Build.
+ </p></td></tr>
+</table></div>
+<p>
+ The supported toolsets, and whether they are auto-detected, are:
+ </p>
+<div class="table">
+<a name="id2303467"></a><p class="title"><b>Table 28.1. Supported Toolsets</b></p>
+<div class="table-contents"><table class="table" summary="Supported Toolsets">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Script
+ </p>
+ </th>
+<th>
+ <p>
+ Platform
+ </p>
+ </th>
+<th>
+ <p>
+ Toolset
+ </p>
+ </th>
+<th>
+ <p>
+ Detection and Notes
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal">build.bat</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Windows NT, 2000, and XP
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>borland</td></tr>
+<tr><td>
+Borland C++Builder (BCC 5.5)</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>Common install location: "<code class="literal">C:\Borland\BCC55</code>"</li>
+<li>
+<code class="literal">BCC32.EXE</code>
+ in <code class="literal">PATH</code>
+</li>
+</ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>como</td></tr>
+<tr><td>Comeau
+ Computing C/C++</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>gcc</td></tr>
+<tr><td>GNU GCC</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>gcc-nocygwin</td></tr>
+<tr><td>GNU
+ GCC</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>intel-win32</td></tr>
+<tr><td>Intel
+ C++ Compiler for Windows</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>
+<code class="literal">ICL.EXE</code> in <code class="literal">PATH</code>
+</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>metrowerks</td></tr>
+<tr><td>MetroWerks
+ CodeWarrior C/C++ 7.x, 8.x, 9.x</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<code class="literal">CWFolder</code> variable configured</li>
+<li>
+<code class="literal">MWCC.EXE</code>
+ in <code class="literal">PATH</code>
+</li>
+</ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>mingw</td></tr>
+<tr><td>GNU
+ GCC as the MinGW
+ configuration</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>Common install location: "<code class="literal">C:\MinGW</code>"</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>msvc</td></tr>
+<tr><td>Microsoft
+ Visual C++ 6.x</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<code class="literal">VCVARS32.BAT</code> already configured</li>
+<li>
+<code class="literal">%MSVCDir%</code>
+ is present in environment</li>
+<li>Common install locations: "<code class="literal">%ProgramFiles%\Microsoft
+ Visual Studio</code>", "<code class="literal">%ProgramFiles%\Microsoft
+ Visual C++</code>"</li>
+<li>
+<code class="literal">CL.EXE</code> in <code class="literal">PATH</code>
+</li>
+</ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>vc7</td></tr>
+<tr><td>Microsoft
+ Visual C++ 7.x</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<code class="literal">VCVARS32.BAT</code> or <code class="literal">VSVARS32.BAT</code> already
+ configured</li>
+<li>
+<code class="literal">%VS71COMNTOOLS%</code> is present in environment</li>
+<li>
+<code class="literal">%VCINSTALLDIR%</code>
+ is present in environment</li>
+<li>Common install locations: "<code class="literal">%ProgramFiles%\Microsoft
+ Visual Studio .NET</code>", "<code class="literal">%ProgramFiles%\Microsoft
+ Visual Studio .NET 2003</code>"</li>
+<li>
+<code class="literal">CL.EXE</code> in
+ <code class="literal">PATH</code>
+</li>
+</ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td><a href="http://msdn.microsoft.com/visualc/" target="_top"><code class="literal">vc8</code>
+ and <code class="literal">vc9</code></a></td></tr>
+<tr><td>Microsoft Visual C++ 8.x and 9.x</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Detection: </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<code class="literal">VCVARSALL.BAT</code> already configured</li>
+<li>
+<code class="literal">%VS90COMNTOOLS%</code>
+ is present in environment</li>
+<li>Common install location: "<code class="literal">%ProgramFiles%\Microsoft
+ Visual Studio 9</code>"</li>
+<li>
+<code class="literal">%VS80COMNTOOLS%</code> is
+ present in environment</li>
+<li>Common install location: "<code class="literal">%ProgramFiles%\Microsoft
+ Visual Studio 8</code>"</li>
+<li>
+<code class="literal">CL.EXE</code> in <code class="literal">PATH</code>
+</li>
+</ul></div>
+<p>
+ </p>
+ <p>
+ Notes: </p>
+<div class="itemizedlist"><ul type="disc"><li>If <code class="literal">VCVARSALL.BAT</code> is called to set up the toolset,
+ it is passed all the extra arguments, see below for what those arguments
+ are. This can be used to build, for example, a Win64 specific version
+ of <code class="literal">bjam</code>. Consult the VisualStudio documentation for
+ what the possible argument values to the <code class="literal">VCVARSALL.BAT</code>
+ are.</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal">build.sh</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Unix, Linux, Cygwin, etc.
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>acc</td></tr>
+<tr><td>HP-UX
+ aCC</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<code class="literal">aCC</code> in <code class="literal">PATH</code>
+</li>
+<li>
+<code class="literal">uname</code>
+ is "HP-UX"</li>
+</ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>como</td></tr>
+<tr><td>Comeau
+ Computing C/C++</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>como in <code class="literal">PATH</code>
+</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>gcc</td></tr>
+<tr><td>GNU GCC</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>gcc in <code class="literal">PATH</code>
+</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>intel-linux</td></tr>
+<tr><td>Intel
+ C++ for Linux</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<code class="literal">icc</code> in <code class="literal">PATH</code>
+</li>
+<li>Common install locations:
+ "<code class="literal">/opt/intel/cc/9.0</code>", "<code class="literal">/opt/intel_cc_80</code>",
+ "<code class="literal">/opt/intel/compiler70</code>", "<code class="literal">/opt/intel/compiler60</code>",
+ "<code class="literal">/opt/intel/compiler50</code>"</li>
+</ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td><code class="literal">kcc</code></td></tr>
+<tr><td>Intel KAI C++</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>
+<code class="literal">KCC</code> in <code class="literal">PATH</code>
+</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>kylix</td></tr>
+<tr><td>
+Borland C++Builder</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>bc++ in PATH</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>mipspro</td></tr>
+<tr><td>SGI
+ MIPSpro C</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>
+<code class="literal">uname</code> is "<code class="literal">IRIX</code>" or "<code class="literal">IRIX64</code>"</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td><code class="literal">sunpro</code></td></tr>
+<tr><td>Sun Workshop 6 C++</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>Standard install location: "<code class="literal">/opt/SUNWspro</code>"</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td><code class="literal">qcc</code></td></tr>
+<tr><td>QNX Neutrino</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>
+<code class="literal">uname</code> is "<code class="literal">QNX</code>" and <code class="literal">qcc</code>
+ in <code class="literal">PATH</code>
+</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>true64cxx</td></tr>
+<tr><td>Compaq
+ C++ Compiler for True64 UNIX</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>
+<code class="literal">uname</code> is "<code class="literal">OSF1</code>"</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>vacpp</td></tr>
+<tr><td>IBM
+ VisualAge C++</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>
+<code class="literal">xlc</code> in <code class="literal">PATH</code>
+</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ MacOS X
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>darwin</td></tr>
+<tr><td>Apple
+ MacOS X GCC</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>
+<code class="literal">uname</code> is "<code class="literal">Darwin</code>"</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ </p>
+ </td>
+<td>
+ <p>
+ Windows NT, 2000, and XP
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<table class="simplelist" border="0" summary="Simple list">
+<tr><td>mingw</td></tr>
+<tr><td>GNU
+ GCC as the MinGW
+ configuration with the MSYS shell</td></tr>
+</table>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>Common install location: "<code class="literal">/mingw</code>"</li></ul></div>
+<p>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ The built executables are placed in a subdirectory specific to your platform.
+ For example, in Linux running on an Intel x86 compatible chip, the executables
+ are placed in: "<code class="literal">bin.linuxx86</code>". The <code class="literal">bjam[.exe]</code>
+ executable can be used to invoke Boost.Build.
+ </p>
+<p>
+ The build scripts support additional invocation arguments for use by developers
+ of Boost.Jam and for additional setup of the toolset. The extra arguments come
+ after the toolset:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Arguments not in the form of an option, before option arguments, are used
+ for extra setup to toolset configuration scripts.
+ </li>
+<li>
+ Arguments of the form "<code class="literal">--option</code>", which are
+ passed to the <code class="literal">build.jam</code> build script.
+ </li>
+<li>
+ Arguments not in the form of an option, after the options, which are targets
+ for the <code class="literal">build.jam</code> script.
+ </li>
+</ul></div>
+<pre class="programlisting"><span class="emphasis"><em>build</em></span> [<span class="emphasis"><em>toolset</em></span>] [<span class="emphasis"><em>setup</em></span>*] [--<span class="emphasis"><em>option</em></span>+ <span class="emphasis"><em>target</em></span>*]
+</pre>
+<p>
+ The arguments immediately after the toolset are passed directly to the setup
+ script of the toolset, if available and if it needs to be invoked. This allows
+ one to configure the toolset ass needed to do non-default builds of <code class="literal">bjam</code>.
+ For example to build a Win64 version with <code class="literal">vc8</code>. See the toolset
+ descriptiona above for when particular toolsets support this.
+ </p>
+<p>
+ The arguments starting with the "<code class="literal">--option</code>" forms
+ are passed to the <code class="literal">build.jam</code> script and are used to further
+ customize what gets built. Options and targets supported by the <code class="literal">build.jam</code>
+ script:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">---</code></span></dt>
+<dd><p>
+ Empty option when one wants to only specify a target.
+ </p></dd>
+<dt><span class="term"><code class="literal">--release</code></span></dt>
+<dd><p>
+ The default, builds the optimized executable.
+ </p></dd>
+<dt><span class="term"><code class="literal">--debug</code></span></dt>
+<dd><p>
+ Builds debugging versions of the executable. When built they are placed
+ in their own directory "<code class="literal">bin./platform/.debug</code>".
+ </p></dd>
+<dt><span class="term"><code class="literal">--grammar</code></span></dt>
+<dd><p>
+ Normally the Jam language grammar parsing files are not regenerated. This
+ forces building of the grammar, although it may not force the regeneration
+ of the grammar parser. If the parser is out of date it will be regenerated
+ and subsequently built.
+ </p></dd>
+<dt><span class="term"><code class="literal">--with-python=<span class="emphasis"><em>path</em></span></code></span></dt>
+<dd><p>
+ Enables Python integration, given a path to the Python libraries.
+ </p></dd>
+<dt><span class="term"><code class="literal">--gc</code></span></dt>
+<dd><p>
+ Enables use of the Boehm Garbage Collector. The build will look for the
+ Boehm-GC source in a "boehm_gc" subdirectory from the <code class="literal">bjam</code>
+ sources.
+ </p></dd>
+<dt><span class="term"><code class="literal">--duma</code></span></dt>
+<dd><p>
+ Enables use of the DUMA (Detect Uintended Memory Access) debugging memory
+ allocator. The build expects to find the DUMA source files in a "duma"
+ subdirectory from the <code class="literal">bjam</code> sources.
+ </p></dd>
+<dt><span class="term"><code class="literal">--toolset-root=<span class="emphasis"><em>path</em></span></code></span></dt>
+<dd><p>
+ Indicates where the toolset used to build is located. This option is passed
+ in by the bootstrap (<code class="literal">build.bat</code> or <code class="literal">build.sh</code>)
+ script.
+ </p></dd>
+<dt><span class="term"><code class="literal">--show-locate-target</code></span></dt>
+<dd><p>
+ For information, prints out where it will put the built executable.
+ </p></dd>
+<dt><span class="term"><code class="literal">--noassert</code></span></dt>
+<dd><p>
+ Disable debug assertions, even if building the debug version of the executable.
+ </p></dd>
+<dt><span class="term"><code class="literal">dist</code></span></dt>
+<dd><p>
+ Generate packages (compressed archives) as appropriate for distribution
+ in the platform, if possible.
+ </p></dd>
+<dt><span class="term"><code class="literal">clean</code></span></dt>
+<dd><p>
+ Remove all the built executables and objects.
+ </p></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2003-2007 Rene Rivera, David Abrahams, Vladimir Prus<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../jam.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../jam.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="usage.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>
-
-

Modified: branches/proto/v4/doc/html/lambda.html
==============================================================================
--- branches/proto/v4/doc/html/lambda.html (original)
+++ branches/proto/v4/doc/html/lambda.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,197 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 11. Boost.Lambda</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="intrusive/license_notices.html" title="License notices">
+<link rel="next" href="lambda/getting_started.html" title="Getting Started">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intrusive/license_notices.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lambda/getting_started.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="lambda"></a>Chapter 11. Boost.Lambda</h2></div>
+<div><div class="author">
+<h3 class="author">
+<span class="firstname">Jaakko</span> <span class="surname">Järvi</span>
+</h3>
+<code class="email">&lt;<a class="email" href="mailto:jarvi%20at%20cs%20tamu%20edu">jarvi at cs tamu edu</a>&gt;</code>
+</div></div>
+<div><p class="copyright">Copyright © 1999-2004 Jaakko Järvi, Gary Powell</p></div>
+<div><div class="legalnotice">
+<a name="id1575303"></a><p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)</p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">In a nutshell</span></dt>
+<dt><span class="section">Getting Started</span></dt>
+<dd><dl>
+<dt><span class="section">Installing the library</span></dt>
+<dt><span class="section">Conventions used in this document</span></dt>
+</dl></dd>
+<dt><span class="section">Introduction</span></dt>
+<dd><dl>
+<dt><span class="section">Motivation</span></dt>
+<dt><span class="section">Introduction to lambda expressions</span></dt>
+</dl></dd>
+<dt><span class="section">Using the library</span></dt>
+<dd><dl>
+<dt><span class="section">Introductory Examples</span></dt>
+<dt><span class="section">Parameter and return types of lambda functors</span></dt>
+<dt><span class="section">About actual arguments to lambda functors</span></dt>
+<dt><span class="section">Storing bound arguments in lambda functions</span></dt>
+</dl></dd>
+<dt><span class="section">Lambda expressions in details</span></dt>
+<dd><dl>
+<dt><span class="section">Placeholders</span></dt>
+<dt><span class="section">Operator expressions</span></dt>
+<dt><span class="section">Bind expressions</span></dt>
+<dt><span class="section">Overriding the deduced return type</span></dt>
+<dt><span class="section">Delaying constants and variables</span></dt>
+<dt><span class="section">Lambda expressions for control structures</span></dt>
+<dt><span class="section">Exceptions</span></dt>
+<dt><span class="section">Construction and destruction</span></dt>
+<dt><span class="section">Special lambda expressions</span></dt>
+<dt><span class="section">Casts, sizeof and typeid</span></dt>
+<dt><span class="section">Nesting STL algorithm invocations</span></dt>
+</dl></dd>
+<dt><span class="section">Extending return type deduction system</span></dt>
+<dt><span class="section">Practical considerations</span></dt>
+<dd><dl>
+<dt><span class="section">Performance</span></dt>
+<dt><span class="section">About compiling</span></dt>
+<dt><span class="section">Portability</span></dt>
+</dl></dd>
+<dt><span class="section">Relation to other Boost libraries</span></dt>
+<dd><dl>
+<dt><span class="section">Boost Function</span></dt>
+<dt><span class="section">Boost Bind</span></dt>
+</dl></dd>
+<dt><span class="section">Contributors</span></dt>
+<dt><span class="section">Rationale for some of the design decisions</span></dt>
+<dd><dl><dt><span class="section"><a href="lambda/s10.html#lambda.why_weak_arity">
+Lambda functor arity
+</a></span></dt></dl></dd>
+<dt><span class="bibliography">Bibliography</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="introduction"></a>In a nutshell</h2></div></div></div>
+<p>
 
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/lambda.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/lambda.html
- </body>
+ The Boost Lambda Library (BLL in the sequel) is a C++ template
+ library, which implements a form of <span class="emphasis"><em>lambda abstractions</em></span> for C++.
+The term originates from functional programming and lambda calculus, where a lambda abstraction defines an unnamed function.
+ The primary motivation for the BLL is to provide flexible and
+ convenient means to define unnamed function objects for STL algorithms.
+In explaining what the library is about, a line of code says more than a thousand words; the
+ following line outputs the elements of some STL container
+ <code class="literal">a</code> separated by spaces:
+
+ </p>
+<pre class="programlisting">for_each(a.begin(), a.end(), std::cout &lt;&lt; _1 &lt;&lt; ' ');</pre>
+<p>
+
+ The expression <code class="literal">std::cout &lt;&lt; _1 &lt;&lt; ' '</code> defines a unary function object.
+ The variable <code class="literal">_1</code> is the parameter of this function, a <span class="emphasis"><em>placeholder</em></span> for the actual argument.
+ Within each iteration of <code class="literal">for_each</code>, the function is
+ called with an element of <code class="literal">a</code> as the actual argument.
+ This actual argument is substituted for the placeholder, and the &#8220;<span class="quote">body</span>&#8221; of the function is evaluated.
+ </p>
+<p>The essence of BLL is letting you define small unnamed function objects, such as the one above, directly on the call site of an STL algorithm.
+ </p>
+</div>
+<div class="bibliography">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="id1581911"></a>Bibliography</h2></div></div></div>
+<div class="biblioentry">
+<a name="cit:stepanov:94"></a><p>[<abbr class="abbrev">STL94</abbr>] <span class="authorgroup"><span class="firstname">A. A.</span> <span class="surname">Stepanov</span> and <span class="firstname">M.</span> <span class="surname">Lee</span>. </span><span class="title"><i>The Standard Template Library</i>. </span><span class="orgname">Hewlett-Packard Laboratories. </span><span class="pubdate">1994. </span><span class="bibliomisc">
+www.hpl.hp.com/techreports
+. </span></p>
+</div>
+<div class="biblioentry">
+<a name="cit:sgi:02"></a><p>[<abbr class="abbrev">SGI02</abbr>] <span class="title"><i>The SGI Standard Template Library</i>. </span><span class="pubdate">2002. </span><span class="bibliomisc">www.sgi.com/tech/stl/. </span></p>
+</div>
+<div class="biblioentry">
+<a name="cit:c++:98"></a><p>[<abbr class="abbrev">C++98</abbr>] <span class="title"><i>International Standard, Programming Languages &#8211; C++</i>. </span><span class="subtitle">ISO/IEC:14882. </span><span class="pubdate">1998. </span></p>
+</div>
+<div class="biblioentry">
+<a name="cit:jarvi:99"></a><p>[<abbr class="abbrev">Jär99</abbr>] <span class="articleinfo">
+<span class="author"><span class="firstname">Jaakko</span> <span class="surname">Järvi</span>. </span>
+<span class="title"><i>C++ Function Object Binders Made Easy</i>. </span>
+. </span><span class="title"><i>Lecture Notes in Computer Science</i>. </span><span class="volumenum">1977. </span><span class="publishername">Springer. </span><span class="pubdate">2000. </span></p>
+</div>
+<div class="biblioentry">
+<a name="cit:jarvi:00"></a><p>[<abbr class="abbrev">Jär00</abbr>] <span class="author"><span class="firstname">Jaakko</span> <span class="surname">Järvi</span>. </span><span class="author"><span class="firstname">Gary</span> <span class="surname">Powell</span>. </span><span class="title"><i>The Lambda Library : Lambda Abstraction in C++</i>. </span><span class="orgname">Turku Centre for Computer Science. </span><span class="bibliomisc">Technical Report . </span><span class="issuenum">378. </span><span class="pubdate">2000. </span><span class="bibliomisc">www.tucs.fi/publications. </span></p>
+</div>
+<div class="biblioentry">
+<a name="cit:jarvi:01"></a><p>[<abbr class="abbrev">Jär01</abbr>] <span class="author"><span class="firstname">Jaakko</span> <span class="surname">Järvi</span>. </span><span class="author"><span class="firstname">Gary</span> <span class="surname">Powell</span>. </span><span class="title"><i>The Lambda Library : Lambda Abstraction in C++</i>. </span><span class="confgroup"><span class="conftitle">Second Workshop on C++ Template Programming. </span><span class="address">Tampa Bay, OOPSLA'01. </span>. </span><span class="pubdate">2001. </span><span class="bibliomisc">www.oonumerics.org/tmpw01/. </span></p>
+</div>
+<div class="biblioentry">
+<a name="cit:jarvi:03"></a><p>[<abbr class="abbrev">Jär03</abbr>] <span class="articleinfo">
+
+<span class="author"><span class="firstname">Jaakko</span> <span class="surname">Järvi</span>. </span>
+
+<span class="author"><span class="firstname">Gary</span> <span class="surname">Powell</span>. </span>
+
+<span class="author"><span class="firstname">Andrew</span> <span class="surname">Lumsdaine</span>. </span>
+<span class="title"><i>The Lambda Library : unnamed functions in C++</i>. </span>
+
+. </span><span class="title"><i>Software - Practice and Expreience</i>. </span><span class="volumenum">33:259-291. </span><span class="pubdate">2003. </span></p>
+</div>
+<div class="biblioentry">
+<a name="cit:boost::tuple"></a><p>[<abbr class="abbrev">tuple</abbr>] <span class="title"><i>The Boost Tuple Library</i>. </span><span class="bibliomisc">www.boost.org/libs/tuple/doc/tuple_users_guide.html
+. </span><span class="pubdate">2002. </span></p>
+</div>
+<div class="biblioentry">
+<a name="cit:boost::type_traits"></a><p>[<abbr class="abbrev">type_traits</abbr>] <span class="title"><i>The Boost type_traits</i>. </span><span class="bibliomisc">www.boost.org/libs/type_traits/
+. </span><span class="pubdate">2002. </span></p>
+</div>
+<div class="biblioentry">
+<a name="cit:boost::ref"></a><p>[<abbr class="abbrev">ref</abbr>] <span class="title"><i>Boost ref</i>. </span><span class="bibliomisc">www.boost.org/libs/bind/ref.html
+. </span><span class="pubdate">2002. </span></p>
+</div>
+<div class="biblioentry">
+<a name="cit:boost::bind"></a><p>[<abbr class="abbrev">bind</abbr>] <span class="title"><i>Boost Bind Library</i>. </span><span class="bibliomisc">www.boost.org/libs/bind/bind.html
+. </span><span class="pubdate">2002. </span></p>
+</div>
+<div class="biblioentry">
+<a name="cit:boost::function"></a><p>[<abbr class="abbrev">function</abbr>] <span class="title"><i>Boost Function Library</i>. </span><span class="bibliomisc">www.boost.org/libs/function/
+. </span><span class="pubdate">2002. </span></p>
+</div>
+<div class="biblioentry">
+<a name="cit:fc++"></a><p>[<abbr class="abbrev">fc++</abbr>] <span class="title"><i>The FC++ library: Functional Programming in C++</i>. </span><span class="author"><span class="firstname">Yannis</span> <span class="surname">Smaragdakis</span>. </span><span class="author"><span class="firstname">Brian</span> <span class="surname">McNamara</span>. </span><span class="bibliomisc">www.cc.gatech.edu/~yannis/fc++/
+. </span><span class="pubdate">2002. </span></p>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: May 08, 2008 at 14:41:48 -0700</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intrusive/license_notices.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lambda/getting_started.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/mpi.html
==============================================================================
--- branches/proto/v4/doc/html/mpi.html (original)
+++ branches/proto/v4/doc/html/mpi.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,179 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2007 Trustees of Indiana University
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/mpi.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/mpi.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 12. Boost.MPI</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="lambda/s10.html" title="Rationale for some of the design decisions">
+<link rel="next" href="mpi/getting_started.html" title="Getting started">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lambda/s10.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="mpi/getting_started.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="mpi"></a>Chapter 12. Boost.MPI</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Douglas</span> <span class="surname">Gregor</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Matthias</span> <span class="surname">Troyer</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2005-2007 Douglas Gregor,
+ Matthias Troyer, Trustees of Indiana University</p></div>
+<div><div class="legalnotice">
+<a name="id1582420"></a><p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">
+ http://www.boost.org/LICENSE_1_0.txt </a>)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"> Introduction</span></dt>
+<dt><span class="section"> Getting started</span></dt>
+<dd><dl>
+<dt><span class="section"> MPI Implementation</span></dt>
+<dt><span class="section"> Getting Boost.MPI</span></dt>
+<dt><span class="section"> Configure and Build</span></dt>
+<dt><span class="section"> Installing and Using Boost.MPI</span></dt>
+<dt><span class="section"> Testing Boost.MPI</span></dt>
+</dl></dd>
+<dt><span class="section"> Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section"> Point-to-Point communication</span></dt>
+<dt><span class="section"> Collective operations</span></dt>
+<dt><span class="section"> Managing communicators</span></dt>
+<dt><span class="section"> Separating structure from content</span></dt>
+<dt><span class="section"> Performance optimizations</span></dt>
+<dt><span class="section"> Mapping from C MPI to Boost.MPI</span></dt>
+</dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Header <boost/mpi.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/allocator.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/collectives.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/collectives_fwd.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/communicator.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/config.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/datatype.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/datatype_fwd.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/environment.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/exception.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/graph_communicator.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/group.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/intercommunicator.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/nonblocking.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/operations.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/packed_iarchive.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/packed_oarchive.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/python.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/request.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/skeleton_and_content.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/skeleton_and_content_fwd.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/status.hpp></span></dt>
+<dt><span class="section">Header <boost/mpi/timer.hpp></span></dt>
+</dl></dd>
+<dt><span class="section"> Python Bindings</span></dt>
+<dd><dl>
+<dt><span class="section"> Quickstart</span></dt>
+<dt><span class="section"> Transmitting User-Defined Data</span></dt>
+<dt><span class="section"> Collectives</span></dt>
+<dt><span class="section"> Skeleton/Content Mechanism</span></dt>
+<dt><span class="section"> C++/Python MPI Compatibility</span></dt>
+<dt><span class="section"> Reference</span></dt>
+</dl></dd>
+<dt><span class="section"> Design Philosophy</span></dt>
+<dt><span class="section"> Performance Evaluation</span></dt>
+<dt><span class="section"> Revision History</span></dt>
+<dt><span class="section"> Acknowledgments</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="mpi.intro"></a> Introduction</h2></div></div></div>
+<p>
+ Boost.MPI is a library for message passing in high-performance parallel applications.
+ A Boost.MPI program is one or more processes that can communicate either via
+ sending and receiving individual messages (point-to-point communication) or
+ by coordinating as a group (collective communication). Unlike communication
+ in threaded environments or using a shared-memory library, Boost.MPI processes
+ can be spread across many different machines, possibly with different operating
+ systems and underlying architectures.
+ </p>
+<p>
+ Boost.MPI is not a completely new parallel programming library. Rather, it
+ is a C++-friendly interface to the standard Message Passing Interface (MPI), the most popular library
+ interface for high-performance, distributed computing. MPI defines a library
+ interface, available from C, Fortran, and C++, for which there are many MPI implementations.
+ Although there exist C++ bindings for MPI, they offer little functionality
+ over the C bindings. The Boost.MPI library provides an alternative C++ interface
+ to MPI that better supports modern C++ development styles, including complete
+ support for user-defined data types and C++ Standard Library types, arbitrary
+ function objects for collective algorithms, and the use of modern C++ library
+ techniques to maintain maximal efficiency.
+ </p>
+<p>
+ At present, Boost.MPI supports the majority of functionality in MPI 1.1. The
+ thin abstractions in Boost.MPI allow one to easily combine it with calls to
+ the underlying C MPI library. Boost.MPI currently supports:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Communicators: Boost.MPI supports the creation, destruction, cloning, and
+ splitting of MPI communicators, along with manipulation of process groups.
+ </li>
+<li>
+ Point-to-point communication: Boost.MPI supports point-to-point communication
+ of primitive and user-defined data types with send and receive operations,
+ with blocking and non-blocking interfaces.
+ </li>
+<li>
+ Collective communication: Boost.MPI supports collective operations such as
+ <code class="computeroutput"><a class="link" href="boost/mpi/reduce.html" title="Function reduce">reduce</a></code>
+ and <code class="computeroutput"><a class="link" href="boost/mpi/gather.html" title="Function gather">gather</a></code>
+ with both built-in and user-defined data types and function objects.
+ </li>
+<li>
+ MPI Datatypes: Boost.MPI can build MPI data types for user-defined types
+ using the Boost.Serialization
+ library.
+ </li>
+<li>
+ Separating structure from content: Boost.MPI can transfer the shape (or "skeleton")
+ of complexc data structures (lists, maps, etc.) and then separately transfer
+ their content. This facility optimizes for cases where the data within a
+ large, static data structure needs to be transmitted many times.
+ </li>
+</ul></div>
+<p>
+ Boost.MPI can be accessed either through its native C++ bindings, or through
+ its alternative, <a class="link" href="mpi/python.html" title="Python Bindings">Python interface</a>.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: July 19, 2008 at 22:20:46 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lambda/s10.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="mpi/getting_started.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/program_options.html
==============================================================================
--- branches/proto/v4/doc/html/program_options.html (original)
+++ branches/proto/v4/doc/html/program_options.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,128 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/program_options.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/program_options.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 13. Boost.Program_options</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="mpi/acknowledge.html" title="Acknowledgments">
+<link rel="next" href="program_options/tutorial.html" title="Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mpi/acknowledge.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="program_options/tutorial.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="program_options"></a>Chapter 13. Boost.Program_options</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Vladimir</span> <span class="surname">Prus</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2002-2004 Vladimir Prus</p></div>
+<div><div class="legalnotice">
+<a name="id1642561"></a><p>Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file <code class="filename">LICENSE_1_0.txt</code> or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section">Getting Started</span></dt>
+<dt><span class="section">Option Details</span></dt>
+<dt><span class="section">Multiple Sources</span></dt>
+</dl></dd>
+<dt><span class="section">Library Overview</span></dt>
+<dd><dl>
+<dt><span class="section">Options Description Component</span></dt>
+<dt><span class="section">Parsers Component</span></dt>
+<dt><span class="section">Storage Component</span></dt>
+<dt><span class="section">Specific parsers</span></dt>
+<dt><span class="section">Annotated List of Symbols</span></dt>
+</dl></dd>
+<dt><span class="section">How To</span></dt>
+<dd><dl>
+<dt><span class="section">Non-conventional Syntax</span></dt>
+<dt><span class="section">Response Files</span></dt>
+<dt><span class="section">Winmain Command Line</span></dt>
+<dt><span class="section">Option Groups and Hidden Options</span></dt>
+<dt><span class="section">Custom Validators</span></dt>
+<dt><span class="section">Unicode Support</span></dt>
+<dt><span class="section">Allowing Unknown Options</span></dt>
+</dl></dd>
+<dt><span class="section">Design Discussion</span></dt>
+<dd><dl><dt><span class="section">Unicode Support</span></dt></dl></dd>
+<dt><span class="section">Acknowledgements</span></dt>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Header <boost/program_options/cmdline.hpp></span></dt>
+<dt><span class="section">Header <boost/program_options/environment_iterator.hpp></span></dt>
+<dt><span class="section">Header <boost/program_options/eof_iterator.hpp></span></dt>
+<dt><span class="section">Header <boost/program_options/errors.hpp></span></dt>
+<dt><span class="section">Header <boost/program_options/option.hpp></span></dt>
+<dt><span class="section">Header <boost/program_options/options_description.hpp></span></dt>
+<dt><span class="section">Header <boost/program_options/parsers.hpp></span></dt>
+<dt><span class="section">Header <boost/program_options/positional_options.hpp></span></dt>
+<dt><span class="section">Header <boost/program_options/value_semantic.hpp></span></dt>
+<dt><span class="section">Header <boost/program_options/variables_map.hpp></span></dt>
+<dt><span class="section">Header <boost/program_options/version.hpp></span></dt>
+</dl></dd>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="id1642581"></a>Introduction</h2></div></div></div>
+<p>The program_options library allows program developers to obtain
+ <span class="emphasis"><em>program options</em></span>, that is (name, value) pairs from the user,
+ via conventional methods such as command line and config file.</p>
+<p>Why would you use such a library, and why is it better than parsing
+ your command line by straightforward hand-written code?
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li><p>It's easier. The syntax for declaring options is simple, and
+ the library itself is small. Things like conversion of option values to
+ desired type and storing into program variables are handled
+ automatically.
+ </p></li>
+<li><p>Error reporting is better. All the problems with the command line are
+ reported, while hand-written code can just misparse the input. In
+ addition, the usage message can be automatically generated, to
+ avoid falling out of sync with the real list of options.</p></li>
+<li><p>Options can be read from anywhere. Sooner or later the command
+ line will be not enough for your users, and you'll want config files
+ or maybe even environment variables. These can be added without significant
+ effort on your part.
+ </p></li>
+</ul></div>
+<p>
+ </p>
+<p>
+ Now let's see some examples of the library usage in the <a class="xref" href="program_options/tutorial.html" title="Tutorial">the section called &#8220;Tutorial&#8221;</a>.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: May 02, 2007 at 18:18:48 -0700</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mpi/acknowledge.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="program_options/tutorial.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/ref.html
==============================================================================
--- branches/proto/v4/doc/html/ref.html (original)
+++ branches/proto/v4/doc/html/ref.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,111 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/ref.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/ref.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 15. Boost.Ref</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="proto/appendices.html" title="Appendices">
+<link rel="next" href="ref/reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="proto/appendices.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="ref/reference.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="ref"></a>Chapter 15. Boost.Ref</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Jaakko</span> <span class="surname">Järvi</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Peter</span> <span class="surname">Dimov</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Douglas</span> <span class="surname">Gregor</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Dave</span> <span class="surname">Abrahams</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 1999, 2000 Jaakko Järvi</p></div>
+<div><p class="copyright">Copyright © 2001, 2002 Peter Dimov</p></div>
+<div><p class="copyright">Copyright © 2002 David Abrahams</p></div>
+<div><div class="legalnotice">
+<a name="id1976375"></a><p>Subject to the Boost Software License, Version 1.0. See
+ accompanying file <code class="filename">LICENSE_1_0.txt</code> or copy at
+ http://www.boost.org/LICENSE_1_0.txt.
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Reference</span></dt>
+<dd><dl><dt><span class="section">Header <boost/ref.hpp></span></dt></dl></dd>
+<dt><span class="section">Acknowledgements</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="ref.intro"></a>Introduction</h2></div></div></div>
+<p>The Ref library is a small library that is useful for passing
+ references to function templates (algorithms) that would usually
+ take copies of their arguments. It defines the class template
+ <code class="computeroutput"><a class="link" href="boost/reference_wrapper.html" title="Class template reference_wrapper">boost::reference_wrapper&lt;T&gt;</a></code>,
+ the two functions
+ <code class="computeroutput"><a class="link" href="boost/reference_wrapper.html#boost.ref_id1283652">boost::ref</a></code> and
+ <code class="computeroutput"><a class="link" href="boost/reference_wrapper.html#boost.cref_id1283628">boost::cref</a></code> that return
+ instances of <code class="computeroutput">boost::reference_wrapper&lt;T&gt;</code>, and the
+ two traits classes
+ <code class="computeroutput"><a class="link" href="boost/is_reference_wrapper.html" title="Class template is_reference_wrapper">boost::is_reference_wrapper&lt;T&gt;</a></code>
+ and
+ <code class="computeroutput"><a class="link" href="boost/unwrap_reference.html" title="Class template unwrap_reference">boost::unwrap_reference&lt;T&gt;</a></code>.</p>
+<p>The purpose of
+ <code class="computeroutput">boost::reference_wrapper&lt;T&gt;</code> is to
+ contain a reference to an object of type T. It is primarily used to
+ "feed" references to function templates (algorithms) that take their
+ parameter by value.</p>
+<p>To support this usage,
+ <code class="computeroutput">boost::reference_wrapper&lt;T&gt;</code> provides an implicit
+ conversion to <code class="computeroutput">T&amp;</code>. This usually allows the function
+ templates to work on references unmodified.</p>
+<p><code class="computeroutput">boost::reference_wrapper&lt;T&gt;</code> is
+ both CopyConstructible and Assignable (ordinary references are not
+ Assignable).</p>
+<p>The expression <code class="computeroutput">boost::ref(x)</code>
+ returns a
+ <code class="computeroutput">boost::reference_wrapper&lt;X&gt;(x)</code> where X
+ is the type of x. Similarly,
+ <code class="computeroutput">boost::cref(x)</code> returns a
+ <code class="computeroutput">boost::reference_wrapper&lt;X const&gt;(x)</code>.</p>
+<p>The expression
+ <code class="computeroutput">boost::is_reference_wrapper&lt;T&gt;::value</code>
+ is true if T is a <code class="computeroutput">reference_wrapper</code>, and
+ false otherwise.</p>
+<p>The type-expression
+ <code class="computeroutput">boost::unwrap_reference&lt;T&gt;::type</code> is T::type if T
+ is a <code class="computeroutput">reference_wrapper</code>, T otherwise.</p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: November 10, 2006 at 10:27:05 -0800</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="proto/appendices.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="ref/reference.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/signals.html
==============================================================================
--- branches/proto/v4/doc/html/signals.html (original)
+++ branches/proto/v4/doc/html/signals.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,116 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/signals.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/signals.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 16. Boost.Signals</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="ref/ack.html" title="Acknowledgements">
+<link rel="next" href="signals/tutorial.html" title="Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="ref/ack.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="signals/tutorial.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="signals"></a>Chapter 16. Boost.Signals</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Douglas</span> <span class="surname">Gregor</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2001-2004 Douglas Gregor</p></div>
+<div><div class="legalnotice">
+<a name="id1977379"></a><p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)</p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section">How to Read this Tutorial</span></dt>
+<dt><span class="section">Compatibility Note</span></dt>
+<dt><span class="section">Hello, World! (Beginner)</span></dt>
+<dt><span class="section">Calling multiple slots</span></dt>
+<dt><span class="section">Passing values to and from slots</span></dt>
+<dt><span class="section">Connection Management</span></dt>
+<dt><span class="section">Example: Document-View</span></dt>
+<dt><span class="section">Linking against the Signals library</span></dt>
+</dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Header <boost/signal.hpp></span></dt>
+<dt><span class="section">Header <boost/signals/slot.hpp></span></dt>
+<dt><span class="section">Header <boost/signals/trackable.hpp></span></dt>
+<dt><span class="section">Header <boost/signals/connection.hpp></span></dt>
+<dt><span class="section">Header <boost/visit_each.hpp></span></dt>
+<dt><span class="section">Header <boost/last_value.hpp></span></dt>
+</dl></dd>
+<dt><span class="section">Frequently Asked Questions</span></dt>
+<dt><span class="section">Design Overview</span></dt>
+<dd><dl>
+<dt><span class="section">Type Erasure</span></dt>
+<dt><span class="section">connection class</span></dt>
+<dt><span class="section">Slot Call Iterator</span></dt>
+<dt><span class="section">visit_each function template</span></dt>
+</dl></dd>
+<dt><span class="section">Design Rationale</span></dt>
+<dd><dl>
+<dt><span class="section">Choice of Slot Definitions</span></dt>
+<dt><span class="section">User-level Connection Management</span></dt>
+<dt><span class="section">Combiner Interface</span></dt>
+<dt><span class="section">Connection Interfaces: += operator</span></dt>
+<dt><span class="section">trackable rationale</span></dt>
+<dt><span class="section">Comparison with other Signal/Slot implementations</span></dt>
+</dl></dd>
+<dt><span class="section">Testsuite</span></dt>
+<dd><dl><dt><span class="section">Acceptance tests</span></dt></dl></dd>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="id1977399"></a>Introduction</h2></div></div></div>
+<p>The Boost.Signals library is an implementation of a managed
+signals and slots system. Signals represent callbacks with multiple
+targets, and are also called publishers or events in similar
+systems. Signals are connected to some set of slots, which are
+callback receivers (also called event targets or subscribers), which
+are called when the signal is "emitted."</p>
+<p>Signals and slots are managed, in that signals and slots (or,
+more properly, objects that occur as part of the slots) track all
+connections and are capable of automatically disconnecting signal/slot
+connections when either is destroyed. This enables the user to make
+signal/slot connections without expending a great effort to manage the
+lifetimes of those connections with regard to the lifetimes of all
+objects involved.</p>
+<p>When signals are connected to multiple slots, there is a
+question regarding the relationship between the return values of the
+slots and the return value of the signals. Boost.Signals allows the
+user to specify the manner in which multiple return values are
+combined.</p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: May 04, 2004 at 11:17:23 -0700</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="ref/ack.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="signals/tutorial.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/string_algo.html
==============================================================================
--- branches/proto/v4/doc/html/string_algo.html (original)
+++ branches/proto/v4/doc/html/string_algo.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,174 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/string_algo.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/string_algo.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 18. Boost String Algorithms Library</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="boost_staticassert/test.html" title="Test Programs">
+<link rel="next" href="string_algo/release_notes.html" title="Release Notes">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_staticassert/test.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="string_algo/release_notes.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="string_algo"></a>Chapter 18. Boost String Algorithms Library</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Pavol</span> <span class="surname">Droba</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2002-2004 Pavol Droba</p></div>
+<div><div class="legalnotice">
+<a name="id1992931"></a><p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Release Notes</span></dt>
+<dt><span class="section">Usage</span></dt>
+<dd><dl>
+<dt><span class="section">First Example</span></dt>
+<dt><span class="section">Case conversion</span></dt>
+<dt><span class="section">Predicates and Classification</span></dt>
+<dt><span class="section">Trimming</span></dt>
+<dt><span class="section">Find algorithms</span></dt>
+<dt><span class="section">Replace Algorithms</span></dt>
+<dt><span class="section">Find Iterator</span></dt>
+<dt><span class="section">Split</span></dt>
+</dl></dd>
+<dt><span class="section">Quick Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Algorithms</span></dt>
+<dt><span class="section">Finders and Formatters</span></dt>
+<dt><span class="section">Iterators</span></dt>
+<dt><span class="section">Classification</span></dt>
+</dl></dd>
+<dt><span class="section">Design Topics</span></dt>
+<dd><dl>
+<dt><span class="section">String Representation</span></dt>
+<dt><span class="section">Sequence Traits</span></dt>
+<dt><span class="section">Find Algorithms</span></dt>
+<dt><span class="section">Replace Algorithms</span></dt>
+<dt><span class="section">Find Iterators & Split Algorithms</span></dt>
+<dt><span class="section">Exception Safety</span></dt>
+</dl></dd>
+<dt><span class="section">Concepts</span></dt>
+<dd><dl>
+<dt><span class="section">Definitions</span></dt>
+<dt><span class="section">Finder Concept</span></dt>
+<dt><span class="section">Formatter concept</span></dt>
+</dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Header <boost/algorithm/string.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/case_conv.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/classification.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/compare.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/concept.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/constants.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/erase.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/find.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/find_format.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/find_iterator.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/finder.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/formatter.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/iter_find.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/join.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/predicate.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/regex.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/regex_find_format.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/replace.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/sequence_traits.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/split.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/std_containers_traits.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string/trim.hpp></span></dt>
+<dt><span class="section">Header <boost/algorithm/string_regex.hpp></span></dt>
+</dl></dd>
+<dt><span class="section">Rationale</span></dt>
+<dd><dl>
+<dt><span class="section">Locales</span></dt>
+<dt><span class="section">Regular Expressions</span></dt>
+</dl></dd>
+<dt><span class="section">Environment</span></dt>
+<dd><dl>
+<dt><span class="section">Build</span></dt>
+<dt><span class="section">Examples</span></dt>
+<dt><span class="section">Tests</span></dt>
+<dt><span class="section">Portability</span></dt>
+</dl></dd>
+<dt><span class="section">Credits</span></dt>
+<dd><dl><dt><span class="section">Acknowledgments</span></dt></dl></dd>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="string_algo.intro"></a>Introduction</h2></div></div></div>
+<p>
+ The String Algorithm Library provides a generic implementation of
+ string-related algorithms which are missing in STL. It is an extension
+ to the algorithms library of STL and it includes trimming, case conversion,
+ predicates and find/replace functions. All of them come in different variants
+ so it is easier to choose the best fit for a particular need.
+ </p>
+<p>
+ The implementation is not restricted to work with a particular container
+ (like <code class="computeroutput">std::basic_string</code>), rather it is as generic as
+ possible. This generalization is not compromising the performance since
+ algorithms are using container specific features when it means a performance
+ gain.
+ </p>
+<p>
+ <span class="bold"><strong>
+ Important note: In this documentation we use term <span class="emphasis"><em>string</em></span> to
+ designate a sequence of <span class="emphasis"><em>characters</em></span> stored in an arbitrary container.
+ A <span class="emphasis"><em>string</em></span> is not restricted to <code class="computeroutput">std::basic_string</code> and
+ <span class="emphasis"><em>character</em></span> does not have to be <code class="computeroutput">char</code> or <code class="computeroutput">wchar_t</code>,
+ although these are most common candidates.
+ </strong></span>
+ Consult the <a class="link" href="string_algo/design.html" title="Design Topics">design chapter</a> to see precise specification of
+ supported string types.
+ </p>
+<p>
+ The library interface functions and classes are defined in namespace <code class="computeroutput">boost::algorithm</code>, and
+ they are lifted into namespace <code class="computeroutput">boost</code> via using declaration.
+ </p>
+<p>
+ The documentation is divided into several sections. For a quick start read the
+ <a class="link" href="string_algo/usage.html" title="Usage">Usage</a> section followed by
+ <a class="link" href="string_algo/quickref.html" title="Quick Reference">Quick Reference</a>.
+ <a class="link" href="string_algo/design.html" title="Design Topics">The Design Topics</a>,
+ <a class="link" href="string_algo/concept.html" title="Concepts">Concepts</a> and <a class="link" href="string_algo/rationale.html" title="Rationale">Rationale</a>
+ provide some explanation about the library design and structure an explain how it should be used.
+ See the <a class="link" href="string_algo/reference.html" title="Reference">Reference</a> for the complete list of provided utilities
+ and algorithms. Functions and classes in the reference are organized by the headers in which they are defined.
+ The reference contains links to the detailed description for every entity in the library.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: February 27, 2008 at 10:51:14 -0800</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_staticassert/test.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="string_algo/release_notes.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/thread.html
==============================================================================
--- branches/proto/v4/doc/html/thread.html (original)
+++ branches/proto/v4/doc/html/thread.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,103 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/thread.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/thread.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 19. Thread</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="string_algo/credits.html" title="Credits">
+<link rel="next" href="thread/changes.html" title="Changes since boost 1.34">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string_algo/credits.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="thread/changes.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="thread"></a>Chapter 19. Thread</h2></div>
+<div><div class="authorgroup"><div class="author"><h3 class="author">
+<span class="firstname">Anthony</span> <span class="surname">Williams</span>
+</h3></div></div></div>
+<div><p class="copyright">Copyright © 2007 -8 Anthony Williams</p></div>
+<div><div class="legalnotice">
+<a name="id2033631"></a><p>
+ 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)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"> Overview</span></dt>
+<dt><span class="section"> Changes since boost 1.34</span></dt>
+<dt><span class="section"> Thread Management</span></dt>
+<dd><dl>
+<dt><span class="section"> Class thread</span></dt>
+<dt><span class="section"> Namespace this_thread</span></dt>
+<dt><span class="section"> Class thread_group</span></dt>
+</dl></dd>
+<dt><span class="section"> Synchronization</span></dt>
+<dd><dl>
+<dt><span class="section"> Mutex Concepts</span></dt>
+<dt><span class="section"> Lock Types</span></dt>
+<dt><span class="section"> Mutex Types</span></dt>
+<dt><span class="section"> Condition Variables</span></dt>
+<dt><span class="section"> One-time Initialization</span></dt>
+<dt><span class="section"> Barriers</span></dt>
+</dl></dd>
+<dt><span class="section">Thread Local Storage</span></dt>
+<dd><dl><dt><span class="section"><a href="thread/thread_local_storage.html#thread.thread_local_storage.thread_specific_ptr"> Class
+ <code class="computeroutput"><span class="identifier">thread_specific_ptr</span></code></a></span></dt></dl></dd>
+<dt><span class="section"> Date and Time Requirements</span></dt>
+<dd><dl>
+<dt><span class="section"> Typedef system_time</span></dt>
+<dt><span class="section"> Non-member function get_system_time()</span></dt>
+</dl></dd>
+<dt><span class="section"> Acknowledgments</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="thread.overview"></a><a class="link" href="thread.html#thread.overview" title="Overview"> Overview</a>
+</h2></div></div></div>
+<p>
+ <span class="bold"><strong>Boost.Thread</strong></span> enables the use of multiple threads
+ of execution with shared data in portable C++ code. It provides classes and
+ functions for managing the threads themselves, along with others for synchronizing
+ data between the threads or providing separate copies of data specific to individual
+ threads.
+ </p>
+<p>
+ The <span class="bold"><strong>Boost.Thread</strong></span> library was originally written
+ and designed by William E. Kempf. This version is a major rewrite designed
+ to closely follow the proposals presented to the C++ Standards Committee, in
+ particular N2497,
+ N2320,
+ N2184,
+ N2139,
+ and N2094
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string_algo/credits.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="thread/changes.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/tribool.html
==============================================================================
--- branches/proto/v4/doc/html/tribool.html (original)
+++ branches/proto/v4/doc/html/tribool.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,80 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/tribool.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/tribool.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 21. Boost.Tribool</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="boost_tr1/testing.html" title="Testing">
+<link rel="next" href="tribool/tutorial.html" title="Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_tr1/testing.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tribool/tutorial.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="tribool"></a>Chapter 21. Boost.Tribool</h2></div>
+<div><div class="author">
+<h3 class="author">
+<span class="firstname">Douglas</span> <span class="surname">Gregor</span>
+</h3>
+<code class="email">&lt;<a class="email" href="mailto:dgregor%20-at-%20cs.indiana.edu">dgregor -at- cs.indiana.edu</a>&gt;</code>
+</div></div>
+<div><p class="copyright">Copyright © 2002-2004 Douglas Gregor</p></div>
+<div><div class="legalnotice">
+<a name="id2118476"></a><p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)</p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section">Basic usage</span></dt>
+<dt><span class="section">Renaming the indeterminate state</span></dt>
+<dt><span class="section">tribool input/output</span></dt>
+</dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Header <boost/logic/tribool.hpp></span></dt>
+<dt><span class="section">Header <boost/logic/tribool_fwd.hpp></span></dt>
+<dt><span class="section">Header <boost/logic/tribool_io.hpp></span></dt>
+</dl></dd>
+<dt><span class="section">Testsuite</span></dt>
+<dd><dl><dt><span class="section">Acceptance tests</span></dt></dl></dd>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tribool.introduction"></a>Introduction</h2></div></div></div>
+<p>The 3-state boolean library contains a single class,
+ <code class="computeroutput"><a class="link" href="boost/logic/tribool.html" title="Class tribool">boost::logic::tribool</a></code>, along with
+ support functions and operator overloads that implement 3-state
+ boolean logic. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: May 03, 2007 at 03:28:53 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_tr1/testing.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tribool/tutorial.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/typeof.html
==============================================================================
--- branches/proto/v4/doc/html/typeof.html (original)
+++ branches/proto/v4/doc/html/typeof.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,195 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/typeof.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/typeof.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 22. Boost.Typeof</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="tribool/tests.html" title="Testsuite">
+<link rel="next" href="typeof/tuto.html" title="Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tribool/tests.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="typeof/tuto.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="typeof"></a>Chapter 22. Boost.Typeof</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Arkadiy</span> <span class="surname">Vertleyb</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Peder</span> <span class="surname">Holt</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2004, 2005 Arkadiy Vertleyb, Peder Holt</p></div>
+<div><div class="legalnotice">
+<a name="id2124691"></a><p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">
+ http://www.boost.org/LICENSE_1_0.txt </a>)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"> Motivation</span></dt>
+<dt><span class="section"> Tutorial</span></dt>
+<dt><span class="section"> Reference</span></dt>
+<dd><dl>
+<dt><span class="section"> AUTO, AUTO_TPL</span></dt>
+<dt><span class="section"> COMPLIANT</span></dt>
+<dt><span class="section"> INCREMENT_REGISTRATION_GROUP</span></dt>
+<dt><span class="section"> INTEGRAL</span></dt>
+<dt><span class="section"> LIMIT_FUNCTION_ARITY</span></dt>
+<dt><span class="section"> LIMIT_SIZE</span></dt>
+<dt><span class="section"> REGISTER_TYPE</span></dt>
+<dt><span class="section"> REGISTER_TEMPLATE</span></dt>
+<dt><span class="section"> TEMPLATE</span></dt>
+<dt><span class="section"> TYPEOF, TYPEOF_TPL</span></dt>
+<dt><span class="section"> TYPEOF_NESTED_TYPEDEF, TYPEOF_NESTED_TYPEDEF_TPL</span></dt>
+</dl></dd>
+<dt><span class="section"> Other considerations and tips</span></dt>
+<dd><dl>
+<dt><span class="section"> Native typeof support and emulation</span></dt>
+<dt><span class="section"> The three participating parties</span></dt>
+<dt><span class="section"> Supported features</span></dt>
+<dt><span class="section"> What needs to be registered?</span></dt>
+<dt><span class="section"> Limitations</span></dt>
+</dl></dd>
+<dt><span class="section"> Contributed By:</span></dt>
+<dt><span class="section"> Acknowledgements</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="typeof.moti"></a> Motivation</h2></div></div></div>
+<p>
+ </p>
+<p>
+ Today many template libraries supply object generators to simplify object creation
+ by utilizing the C++ template argument deduction facility. Consider <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code>.
+ In order to instantiate this class template and create a temporary object of
+ this instantiation, one has to supply template parameters, as well as parameters
+ to the constructor:
+ </p>
+<pre class="programlisting">
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&gt;(</span><span class="number">5</span><span class="special">,</span> <span class="number">3.14159</span><span class="special">);</span>
+</pre>
+<p>
+ To avoid this duplication, STL supplies the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span></code>
+ object generator. When it is used, the types of template parameters are deduced
+ from supplied function arguments:
+ </p>
+<pre class="programlisting">
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">3.14159</span><span class="special">);</span>
+</pre>
+<p>
+ For the temporary objects it is enough. However, when a named object needs
+ to be allocated, the problem appears again:
+ </p>
+<pre class="programlisting">
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">p</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">3.14159</span><span class="special">);</span>
+</pre>
+<p>
+ The object generator no longer helps:
+ </p>
+<pre class="programlisting">
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">3.14159</span><span class="special">);</span>
+</pre>
+<p>
+ It would be nice to deduce the type of the object (on the left) from the expression
+ it is initialized with (on the right), but the current C++ syntax does not
+ allow for this.
+ </p>
+<p>
+ The above example demonstrates the essence of the problem but does not demonstrate
+ its scale. Many libraries, especially expression template libraries, create
+ objects of really complex types, and go a long way to hide this complexity
+ behind object generators. Consider a nit Boost.Lambda functor:
+ </p>
+<pre class="programlisting">
+<span class="identifier">_1</span> <span class="special">&gt;</span> <span class="number">15</span> <span class="special">&amp;&amp;</span> <span class="identifier">_2</span> <span class="special">&lt;</span> <span class="number">20</span>
+</pre>
+<p>
+ If one wanted to allocate a named copy of such an innocently looking functor,
+ she would have to specify something like this:
+ </p>
+<pre class="programlisting">
+<span class="identifier">lambda_functor</span><span class="special">&lt;</span>
+ <span class="identifier">lambda_functor_base</span><span class="special">&lt;</span>
+ <span class="identifier">logical_action</span><span class="special">&lt;</span><span class="identifier">and_action</span><span class="special">&gt;,</span>
+ <span class="identifier">tuple</span><span class="special">&lt;</span>
+ <span class="identifier">lambda_functor</span><span class="special">&lt;</span>
+ <span class="identifier">lambda_functor_base</span><span class="special">&lt;</span>
+ <span class="identifier">relational_action</span><span class="special">&lt;</span><span class="identifier">greater_action</span><span class="special">&gt;,</span>
+ <span class="identifier">tuple</span><span class="special">&lt;</span>
+ <span class="identifier">lambda_functor</span><span class="special">&lt;</span><span class="identifier">placeholder</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;,</span>
+ <span class="keyword">int</span> <span class="keyword">const</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;,</span>
+ <span class="identifier">lambda_functor</span><span class="special">&lt;</span>
+ <span class="identifier">lambda_functor_base</span><span class="special">&lt;</span>
+ <span class="identifier">relational_action</span><span class="special">&lt;</span><span class="identifier">less_action</span><span class="special">&gt;,</span>
+ <span class="identifier">tuple</span><span class="special">&lt;</span>
+ <span class="identifier">lambda_functor</span><span class="special">&lt;</span><span class="identifier">placeholder</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span> <span class="special">&gt;,</span>
+ <span class="keyword">int</span> <span class="keyword">const</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+<span class="special">&gt;</span>
+<span class="identifier">f</span> <span class="special">=</span> <span class="identifier">_1</span> <span class="special">&gt;</span> <span class="number">15</span> <span class="special">&amp;&amp;</span> <span class="identifier">_2</span> <span class="special">&lt;</span> <span class="number">20</span><span class="special">;</span>
+</pre>
+<p>
+ Not exactly elegant. To solve this problem (as well as some other problems),
+ the C++ standard committee is considering a few additions to the standard language,
+ such as <code class="computeroutput"><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">decltype</span></code> and <code class="computeroutput"><span class="keyword">auto</span></code>
+ (see http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1607.pdf).
+ </p>
+<p>
+ The <code class="computeroutput"><span class="identifier">typeof</span></code> operator (or <code class="computeroutput"><span class="identifier">decltype</span></code>, which is a slightly different flavor
+ of <code class="computeroutput"><span class="identifier">typeof</span></code>) allows one to determine
+ the type of an expression at compile time. Using <code class="computeroutput"><span class="identifier">typeof</span></code>,
+ the above example can be simplified drastically:
+ </p>
+<pre class="programlisting">
+<span class="identifier">typeof</span><span class="special">(</span><span class="identifier">_1</span> <span class="special">&gt;</span> <span class="number">15</span> <span class="special">&amp;&amp;</span> <span class="identifier">_2</span> <span class="special">&lt;</span> <span class="number">20</span><span class="special">)</span> <span class="identifier">f</span> <span class="special">=</span> <span class="identifier">_1</span> <span class="special">&gt;</span> <span class="number">15</span> <span class="special">&amp;&amp;</span> <span class="identifier">_2</span> <span class="special">&lt;</span> <span class="number">20</span><span class="special">;</span>
+</pre>
+<p>
+ Much better, but some duplication still exists. The <code class="computeroutput"><span class="keyword">auto</span></code>
+ type solves the rest of the problem:
+ </p>
+<pre class="programlisting">
+<span class="keyword">auto</span> <span class="identifier">f</span> <span class="special">=</span> <span class="identifier">_1</span> <span class="special">&gt;</span> <span class="number">15</span> <span class="special">&amp;&amp;</span> <span class="identifier">_2</span> <span class="special">&lt;</span> <span class="number">20</span><span class="special">;</span>
+</pre>
+<p>
+ The purpose of the Boost.Typeof library is to provide a library-based solution,
+ which could be used until the language-based facility is added to the Standard
+ and becomes widely available.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: September 05, 2007 at 12:52:18 -0700</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tribool/tests.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="typeof/tuto.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/unordered.html
==============================================================================
--- branches/proto/v4/doc/html/unordered.html (original)
+++ branches/proto/v4/doc/html/unordered.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,218 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 23. Boost.Unordered</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="typeof/ackn.html" title="Acknowledgements">
+<link rel="next" href="unordered/buckets.html" title="The Data Structure">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="typeof/ackn.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="unordered/buckets.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="unordered"></a>Chapter 23. Boost.Unordered</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Daniel</span> <span class="surname">James</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2003, 2004 Jeremy B. Maitin-Shepard</p></div>
+<div><p class="copyright">Copyright © 2005-2008 Daniel
+ James</p></div>
+<div><div class="legalnotice">
+<a name="id2134745"></a><p>
+ 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
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"> Introduction</span></dt>
+<dt><span class="section"> The Data Structure</span></dt>
+<dt><span class="section"><a href="unordered/hash_equality.html"> Equality Predicates and Hash
+ Functions</a></span></dt>
+<dt><span class="section"> Comparison with Associative Containers</span></dt>
+<dt><span class="section"> Implementation Rationale</span></dt>
+<dt><span class="section"> Change Log</span></dt>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Header <boost/unordered_set.hpp></span></dt>
+<dt><span class="section">Header <boost/unordered_map.hpp></span></dt>
+</dl></dd>
+<dt><span class="section">Bibliography</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="unordered.intro"></a><a class="link" href="unordered.html#unordered.intro" title="Introduction"> Introduction</a>
+</h2></div></div></div>
+<p>
+ For accessing data based on key lookup, the C++ standard library offers <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span></code>,
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span></code>, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">multiset</span></code>
+ and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">multimap</span></code>. These are generally implemented
+ using balanced binary trees so that lookup time has logarithmic complexity.
+ That is generally okay, but in many cases a <a href="http://en.wikipedia.org/wiki/Hash_table" target="_top">hash
+ table</a> can perform better, as accessing data has constant complexity,
+ on average. The worst case complexity is linear, but that occurs rarely and
+ with some care, can be avoided.
+ </p>
+<p>
+ Also, the existing containers require a 'less than' comparison object to order
+ their elements. For some data types this is impossible to implement or isn't
+ practical. In contrast, a hash table only needs an equality function and a
+ hash function for the key.
+ </p>
+<p>
+ With this in mind, the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">C++
+ Standard Library Technical Report</a> introduced the unordered associative
+ containers, which are implemented using hash tables, and they have now been
+ added to the <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2007/n2461.pdf" target="_top">Working
+ Draft of the C++ Standard</a>.
+ </p>
+<p>
+ This library supplies an almost complete implementation of the specification
+ in the <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2007/n2461.pdf" target="_top">Working
+ Draft of the C++ Standard</a>, (it doesn't support <code class="computeroutput"><span class="identifier">emplace</span></code>
+ yet, see the <a class="link" href="unordered/rationale.html#unordered.rationale.future_developments">Implementation
+ Rationale</a> section for more details). If accepted the containers should
+ also be added to Boost.TR1.
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">unordered_set</span></code> and <code class="computeroutput"><span class="identifier">unordered_multiset</span></code> are defined in the header
+ &lt;<code class="computeroutput"><a class="link" href="unordered/reference.html#header.boost.unordered_set.hpp" title="Header &lt;boost/unordered_set.hpp&gt;">boost/unordered_set.hpp</a></code>&gt;
+ </p>
+<pre class="programlisting">
+<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">class</span> <span class="identifier">Key</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">Hash</span> <span class="special">=</span> <code class="computeroutput"><a class="link" href="boost/hash.html" title="Struct template hash">boost::hash</a></code><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;,</span>
+ <span class="keyword">class</span> <span class="identifier">Pred</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;,</span>
+ <span class="keyword">class</span> <span class="identifier">Alloc</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="keyword">class</span> <code class="computeroutput"><a class="link" href="boost/unordered_set.html" title="Class template unordered_set">unordered_set</a></code><span class="special">;</span>
 
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/unordered.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/unordered.html
- </body>
+ <span class="keyword">template</span><span class="special">&lt;</span>
+ <span class="keyword">class</span> <span class="identifier">Key</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">Hash</span> <span class="special">=</span> <code class="computeroutput"><a class="link" href="boost/hash.html" title="Struct template hash">boost::hash</a></code><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;,</span>
+ <span class="keyword">class</span> <span class="identifier">Pred</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;,</span>
+ <span class="keyword">class</span> <span class="identifier">Alloc</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="keyword">class</span> <code class="computeroutput"><a class="link" href="boost/unordered_multiset.html" title="Class template unordered_multiset">unordered_multiset</a></code><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ <code class="computeroutput"><span class="identifier">unordered_map</span></code> and <code class="computeroutput"><span class="identifier">unordered_multimap</span></code> are defined in the header
+ &lt;<code class="computeroutput"><a class="link" href="unordered/reference.html#header.boost.unordered_map.hpp" title="Header &lt;boost/unordered_map.hpp&gt;">boost/unordered_map.hpp</a></code>&gt;
+ </p>
+<pre class="programlisting">
+<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">class</span> <span class="identifier">Key</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Mapped</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">Hash</span> <span class="special">=</span> <code class="computeroutput"><a class="link" href="boost/hash.html" title="Struct template hash">boost::hash</a></code><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;,</span>
+ <span class="keyword">class</span> <span class="identifier">Pred</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;,</span>
+ <span class="keyword">class</span> <span class="identifier">Alloc</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="keyword">class</span> <code class="computeroutput"><a class="link" href="boost/unordered_map.html" title="Class template unordered_map">unordered_map</a></code><span class="special">;</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span>
+ <span class="keyword">class</span> <span class="identifier">Key</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Mapped</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">Hash</span> <span class="special">=</span> <code class="computeroutput"><a class="link" href="boost/hash.html" title="Struct template hash">boost::hash</a></code><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;,</span>
+ <span class="keyword">class</span> <span class="identifier">Pred</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;,</span>
+ <span class="keyword">class</span> <span class="identifier">Alloc</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="keyword">class</span> <code class="computeroutput"><a class="link" href="boost/unordered_multimap.html" title="Class template unordered_multimap">unordered_multimap</a></code><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ When using Boost.TR1, these classes are included from <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">unordered_set</span><span class="special">&gt;</span></code>
+ and <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">unordered_map</span><span class="special">&gt;</span></code>, with the classes added to the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span></code>
+ namespace.
+ </p>
+<p>
+ The containers are used in a similar manner to the normal associative containers:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting">
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unordered_map</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">map</span><span class="special">;</span>
+<span class="identifier">map</span> <span class="identifier">x</span><span class="special">;</span>
+<span class="identifier">x</span><span class="special">[</span><span class="string">"one"</span><span class="special">]</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
+<span class="identifier">x</span><span class="special">[</span><span class="string">"two"</span><span class="special">]</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
+<span class="identifier">x</span><span class="special">[</span><span class="string">"three"</span><span class="special">]</span> <span class="special">=</span> <span class="number">3</span><span class="special">;</span>
+
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">x</span><span class="special">.</span><span class="identifier">at</span><span class="special">(</span><span class="string">"one"</span><span class="special">)</span> <span class="special">==</span> <span class="number">1</span><span class="special">);</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">x</span><span class="special">.</span><span class="identifier">find</span><span class="special">(</span><span class="string">"missing"</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ But since the elements aren't ordered, the output of:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting">
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">map</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">&lt;&lt;</span><span class="identifier">i</span><span class="special">.</span><span class="identifier">first</span><span class="special">&lt;&lt;</span><span class="string">","</span><span class="special">&lt;&lt;</span><span class="identifier">i</span><span class="special">.</span><span class="identifier">second</span><span class="special">&lt;&lt;</span><span class="string">"\n"</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ can be in any order. For example, it might be:
+ </p>
+<pre class="programlisting">
+<span class="identifier">two</span><span class="special">,</span><span class="number">2</span>
+<span class="identifier">one</span><span class="special">,</span><span class="number">1</span>
+<span class="identifier">three</span><span class="special">,</span><span class="number">3</span>
+</pre>
+<p>
+ To store an object in an unordered associative container requires both an key
+ equality function and a hash function. The default function objects in the
+ standard containers support a few basic types including integer types, floating
+ point types, pointer types, and the standard strings. Since Boost.Unordered
+ uses <code class="computeroutput"><a class="link" href="boost/hash.html" title="Struct template hash">boost::hash</a></code> it also supports
+ some other types, including standard containers. To use any types not supported
+ by these methods you have to <a class="link" href="hash/custom.html" title="Extending boost::hash for a custom data type">extend Boost.Hash
+ to support the type</a> or use your own custom equality predicates and hash
+ functions. See the <a class="link" href="unordered/hash_equality.html" title="Equality Predicates and Hash Functions">Equality Predicates
+ and Hash Functions</a> section for more details.
+ </p>
+<p>
+ There are other differences, which are listed in the <a class="link" href="unordered/comparison.html" title="Comparison with Associative Containers">Comparison
+ with Associative Containers</a> section.
+ </p>
+</div>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: July 19, 2008 at 22:21:03 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="typeof/ackn.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="unordered/buckets.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/variant.html
==============================================================================
--- branches/proto/v4/doc/html/variant.html (original)
+++ branches/proto/v4/doc/html/variant.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,16 +1,220 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 24. Boost.Variant</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="unordered/bibliography.html" title="Bibliography">
+<link rel="next" href="variant/tutorial.html" title="Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="unordered/bibliography.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="variant/tutorial.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="variant"></a>Chapter 24. Boost.Variant</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Eric</span> <span class="surname">Friedman</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Itay</span> <span class="surname">Maman</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2002, 2003 Eric Friedman, Itay Maman</p></div>
+<div><div class="legalnotice">
+<a name="id2167928"></a><p>Permission to copy, use, sell and distribute this software
+ is granted provided this copyright notice appears in all copies.
+ Permission to modify the code and to distribute modified code is
+ granted provided this copyright notice appears in all copies, and
+ a notice that the code was modified is included with the copyright
+ notice.</p>
+<p> This software is provided "as is" without express or
+ implied warranty, and with no claim as to its suitability for any
+ purpose.</p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dd><dl>
+<dt><span class="section">Abstract</span></dt>
+<dt><span class="section">Motivation</span></dt>
+</dl></dd>
+<dt><span class="section">Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section">Basic Usage</span></dt>
+<dt><span class="section">Advanced Topics</span></dt>
+</dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Concepts</span></dt>
+<dt><span class="section">Header <boost/variant.hpp></span></dt>
+<dt><span class="section">Header <boost/variant/variant_fwd.hpp></span></dt>
+<dt><span class="section">Header <boost/variant/variant.hpp></span></dt>
+<dt><span class="section">Header <boost/variant/recursive_variant.hpp></span></dt>
+<dt><span class="section">Header <boost/variant/recursive_wrapper.hpp></span></dt>
+<dt><span class="section">Header <boost/variant/apply_visitor.hpp></span></dt>
+<dt><span class="section">Header <boost/variant/get.hpp></span></dt>
+<dt><span class="section">Header <boost/variant/bad_visit.hpp></span></dt>
+<dt><span class="section">Header <boost/variant/static_visitor.hpp></span></dt>
+<dt><span class="section">Header <boost/variant/visitor_ptr.hpp></span></dt>
+</dl></dd>
+<dt><span class="section">Design Overview</span></dt>
+<dd><dl><dt><span class="section">"Never-Empty" Guarantee</span></dt></dl></dd>
+<dt><span class="section">Miscellaneous Notes</span></dt>
+<dd><dl>
+<dt><span class="section">Boost.Variant vs. Boost.Any</span></dt>
+<dt><span class="section">Portability</span></dt>
+<dt><span class="section">Troubleshooting</span></dt>
+<dt><span class="section">Acknowledgments</span></dt>
+</dl></dd>
+<dt><span class="section">References</span></dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="variant.intro"></a>Introduction</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Abstract</span></dt>
+<dt><span class="section">Motivation</span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="variant.abstract"></a>Abstract</h3></div></div></div>
+<p>The <code class="computeroutput">variant</code> class template is a safe, generic, stack-based
+discriminated union container, offering a simple solution for manipulating an
+object from a heterogeneous set of types in a uniform manner. Whereas
+standard containers such as <code class="computeroutput">std::vector</code> may be thought of as
+"<span class="bold"><strong>multi-value, single type</strong></span>,"
+<code class="computeroutput">variant</code> is "<span class="bold"><strong>multi-type,
+single value</strong></span>."</p>
+<p>Notable features of <code class="computeroutput"><a class="link" href="boost/variant.html" title="Class template variant">boost::variant</a></code>
+include:</p>
+<div class="itemizedlist"><ul type="disc">
+<li>Full value semantics, including adherence to standard
+ overload resolution rules for conversion operations.</li>
+<li>Compile-time type-safe value visitation via
+ <code class="computeroutput"><a class="link" href="boost/apply_visitor.html" title="Function apply_visitor">boost::apply_visitor</a></code>.</li>
+<li>Run-time checked explicit value retrieval via
+ <code class="computeroutput"><a class="link" href="boost/get_id1065773.html" title="Function get">boost::get</a></code>.</li>
+<li>Support for recursive variant types via both
+ <code class="computeroutput"><a class="link" href="boost/make_recursive_variant.html" title="Class template make_recursive_variant">boost::make_recursive_variant</a></code> and
+ <code class="computeroutput"><a class="link" href="boost/recursive_wrapper.html" title="Class template recursive_wrapper">boost::recursive_wrapper</a></code>.</li>
+<li>Efficient implementation -- stack-based when possible (see
+ <a class="xref" href="variant/design.html#variant.design.never-empty" title='"Never-Empty" Guarantee'>the section called &#8220;"Never-Empty" Guarantee&#8221;</a> for more details).</li>
+</ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="variant.motivation"></a>Motivation</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Problem</span></dt>
+<dt><span class="section">Solution: A Motivating Example</span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="variant.motivation.problem"></a>Problem</h4></div></div></div>
+<p>Many times, during the development of a C++ program, the
+programmer finds himself in need of manipulating several distinct
+types in a uniform manner. Indeed, C++ features direct language
+support for such types through its <code class="computeroutput">union</code>
+keyword:</p>
+<pre class="programlisting">union { int i; double d; } u;
+u.d = 3.14;
+u.i = 3; // overwrites u.d (OK: u.d is a POD type)</pre>
+<p>C++'s <code class="computeroutput">union</code> construct, however, is nearly
+useless in an object-oriented environment. The construct entered
+the language primarily as a means for preserving compatibility with
+C, which supports only POD (Plain Old Data) types, and so does not
+accept types exhibiting non-trivial construction or
+destruction:</p>
+<pre class="programlisting">union {
+ int i;
+ std::string s; // illegal: std::string is not a POD type!
+} u;</pre>
+<p>Clearly another approach is required. Typical solutions
+feature the dynamic-allocation of objects, which are subsequently
+manipulated through a common base type (often a virtual base class
+ [<a class="link" href="variant/refs.html#variant.refs.hen01">Hen01</a>]
+or, more dangerously, a <code class="computeroutput">void*</code>). Objects of
+concrete type may be then retrieved by way of a polymorphic downcast
+construct (e.g., <code class="computeroutput">dynamic_cast</code>,
+<code class="computeroutput"><a class="link" href="boost/any_cast.html" title="Function any_cast">boost::any_cast</a></code>, etc.).</p>
+<p>However, solutions of this sort are highly error-prone, due
+to the following:</p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<span class="emphasis"><em>Downcast errors cannot be detected at
+ compile-time.</em></span> Thus, incorrect usage of downcast
+ constructs will lead to bugs detectable only at run-time.</li>
+<li>
+<span class="emphasis"><em>Addition of new concrete types may be
+ ignored.</em></span> If a new concrete type is added to the
+ hierarchy, existing downcast code will continue to work as-is,
+ wholly ignoring the new type. Consequently, the programmer must
+ manually locate and modify code at numerous locations, which often
+ results in run-time errors that are difficult to find.</li>
+</ul></div>
+<p>Furthermore, even when properly implemented, these solutions tend
+to incur a relatively significant abstraction penalty due to the use of
+the heap, virtual function calls, and polymorphic downcasts.</p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="variant.motivation.solution"></a>Solution: A Motivating Example</h4></div></div></div>
+<p>The <code class="computeroutput"><a class="link" href="boost/variant.html" title="Class template variant">boost::variant</a></code> class template
+addresses these issues in a safe, straightforward, and efficient manner. The
+following example demonstrates how the class can be used:</p>
+<pre class="programlisting">#include "boost/variant.hpp"
+#include &lt;iostream&gt;
 
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/variant.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/variant.html
- </body>
+class my_visitor : public <code class="computeroutput"><a class="link" href="boost/static_visitor.html" title="Class template static_visitor">boost::static_visitor</a></code>&lt;int&gt;
+{
+public:
+ int operator()(int i) const
+ {
+ return i;
+ }
+
+ int operator()(const <code class="computeroutput">std::string</code> &amp; str) const
+ {
+ return str.length();
+ }
+};
+
+int main()
+{
+ <code class="computeroutput"><a class="link" href="boost/variant.html" title="Class template variant">boost::variant</a></code>&lt; int, std::string &gt; u("hello world");
+ std::cout &lt;&lt; u; // output: hello world
+
+ int result = <code class="computeroutput"><a class="link" href="boost/apply_visitor.html" title="Function apply_visitor">boost::apply_visitor</a></code>( my_visitor(), u );
+ std::cout &lt;&lt; result; // output: 11 (i.e., length of "hello world")
+}
+</pre>
+</div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="unordered/bibliography.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="variant/tutorial.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>

Modified: branches/proto/v4/doc/html/xpressive.html
==============================================================================
--- branches/proto/v4/doc/html/xpressive.html (original)
+++ branches/proto/v4/doc/html/xpressive.html 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -1,17 +1,209 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-
- 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) -->
- <title>Redirect to generated documentation</title>
- <meta http-equiv="refresh" content="0; URL=http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/xpressive.html">
- </head>
- <body>
- Automatic redirection failed, please go to
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/xpressive.html
- </body>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 25. Boost.Xpressive</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
+<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
+<link rel="prev" href="variant/refs.html" title="References">
+<link rel="next" href="xpressive/user_s_guide.html" title="User's Guide">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="variant/refs.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="xpressive/user_s_guide.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="xpressive"></a>Chapter 25. Boost.Xpressive</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Eric</span> <span class="surname">Niebler</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2007 Eric Niebler</p></div>
+<div><div class="legalnotice">
+<a name="id2182289"></a><p>
+ 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)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Preface</span></dt>
+<dt><span class="section">User's Guide</span></dt>
+<dd><dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section"><a href="xpressive/user_s_guide.html#boost_xpressive.user_s_guide.installing_xpressive">Installing
+ xpressive</a></span></dt>
+<dt><span class="section">Quick Start</span></dt>
+<dt><span class="section"><a href="xpressive/user_s_guide.html#xpressive.user_s_guide.creating_a_regex_object">Creating
+ a Regex Object</a></span></dt>
+<dt><span class="section"><a href="xpressive/user_s_guide.html#boost_xpressive.user_s_guide.matching_and_searching">Matching
+ and Searching</a></span></dt>
+<dt><span class="section"><a href="xpressive/user_s_guide.html#boost_xpressive.user_s_guide.accessing_results">Accessing
+ Results</a></span></dt>
+<dt><span class="section"><a href="xpressive/user_s_guide.html#boost_xpressive.user_s_guide.string_substitutions">String
+ Substitutions</a></span></dt>
+<dt><span class="section"><a href="xpressive/user_s_guide.html#boost_xpressive.user_s_guide.string_splitting_and_tokenization">String
+ Splitting and Tokenization</a></span></dt>
+<dt><span class="section"><a href="xpressive/user_s_guide.html#boost_xpressive.user_s_guide.grammars_and_nested_matches">Grammars
+ and Nested Matches</a></span></dt>
+<dt><span class="section"><a href="xpressive/user_s_guide.html#boost_xpressive.user_s_guide.semantic_actions_and_user_defined_assertions">Semantic
+ Actions and User-Defined Assertions</a></span></dt>
+<dt><span class="section"><a href="xpressive/user_s_guide.html#boost_xpressive.user_s_guide.symbol_tables_and_attributes">Symbol
+ Tables and Attributes</a></span></dt>
+<dt><span class="section"><a href="xpressive/user_s_guide.html#boost_xpressive.user_s_guide.localization_and_regex_traits">Localization
+ and Regex Traits</a></span></dt>
+<dt><span class="section"><a href="xpressive/user_s_guide.html#boost_xpressive.user_s_guide.tips_n_tricks"> Tips 'N
+ Tricks</a></span></dt>
+<dt><span class="section">Concepts</span></dt>
+<dt><span class="section">Examples</span></dt>
+</dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Header <boost/xpressive/basic_regex.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/match_results.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/regex_actions.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/regex_algorithms.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/regex_compiler.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/regex_constants.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/regex_error.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/regex_iterator.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/regex_primitives.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/regex_token_iterator.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/regex_traits.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/sub_match.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/traits/c_regex_traits.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/traits/cpp_regex_traits.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/traits/null_regex_traits.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/xpressive.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/xpressive_dynamic.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/xpressive_fwd.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/xpressive_static.hpp></span></dt>
+<dt><span class="section">Header <boost/xpressive/xpressive_typeof.hpp></span></dt>
+</dl></dd>
+<dt><span class="section">Acknowledgments</span></dt>
+<dt><span class="section">Appendices</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="xpressive/appendices.html#boost_xpressive.appendices.appendix_1__history">Appendix
+ 1: History</a></span></dt>
+<dt><span class="section"><a href="xpressive/appendices.html#boost_xpressive.appendices.appendix_2__not_yet_implemented">Appendix
+ 2: Not Yet Implemented</a></span></dt>
+<dt><span class="section"><a href="xpressive/appendices.html#boost_xpressive.appendices.appendix_3__differences_from_boost_regex">Appendix
+ 3: Differences from Boost.Regex</a></span></dt>
+<dt><span class="section"><a href="xpressive/appendices.html#boost_xpressive.appendices.perf"> Appendix 4: Performance
+ Comparison</a></span></dt>
+</dl></dd>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_xpressive.preface"></a><a class="link" href="xpressive.html#boost_xpressive.preface" title="Preface">Preface</a>
+</h2></div></div></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <span class="emphasis"><em>Wife:</em></span> New Shimmer is a floor wax!<br> <span class="emphasis"><em>Husband:</em></span>
+ No, new Shimmer is a dessert topping!<br> <span class="emphasis"><em>Wife:</em></span>
+ It's a floor wax!<br> <span class="emphasis"><em>Husband:</em></span> It's a dessert topping!<br>
+ <span class="emphasis"><em>Wife:</em></span> It's a floor wax, I'm telling you!<br> <span class="emphasis"><em>Husband:</em></span>
+ It's a dessert topping, you cow!<br> <span class="emphasis"><em>Announcer:</em></span>
+ Hey, hey, hey, calm down, you two. New Shimmer is both a floor wax <span class="emphasis"><em>and</em></span>
+ a dessert topping!
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <span class="bold"><strong><span class="emphasis"><em>-- Saturday Night Live</em></span></strong></span>
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<a name="boost_xpressive.preface.description"></a><h3>
+<a name="id2182388"></a>
+ <a class="link" href="xpressive.html#boost_xpressive.preface.description">Description</a>
+ </h3>
+<p>
+ xpressive is an advanced, object-oriented regular expression template library
+ for C++. Regular expressions can be written as strings that are parsed at run-time,
+ or as expression templates that are parsed at compile-time. Regular expressions
+ can refer to each other and to themselves recursively, allowing you to build
+ arbitrarily complicated grammars out of them.
+ </p>
+<a name="boost_xpressive.preface.motivation"></a><h3>
+<a name="id2182405"></a>
+ <a class="link" href="xpressive.html#boost_xpressive.preface.motivation">Motivation</a>
+ </h3>
+<p>
+ If you need to manipulate text in C++, you have typically had two disjoint
+ options: a regular expression engine or a parser generator. Regular expression
+ engines (like Boost.Regex) are powerful
+ and flexible; patterns are represented as strings which can be specified at
+ runtime. However, that means that syntax errors are likewise not detected until
+ runtime. Also, regular expressions are ill-suited to advanced text processing
+ tasks such as matching balanced, nested tags. Those tasks have traditionally
+ been handled by parser generators (like the <a href="http://spirit.sourceforge.net" target="_top">Spirit
+ Parser Framework</a>). These beasts are more powerful but less flexible.
+ They generally don't allow you to arbitrarily modify your grammar rules on
+ the fly. In addition, they don't have the exhaustive backtracking semantics
+ of regular expressions, which can make it more challenging to author some types
+ of patterns.
+ </p>
+<p>
+ xpressive brings these two approaches seamlessly together and occupies a unique
+ niche in the world of C++ text processing. With xpressive, you can choose to
+ use it much as you would use Boost.Regex,
+ representing regular expressions as strings. Or you can use it as you would
+ use Spirit, writing your
+ regexes as C++ expressions, enjoying all the benefits of an embedded language
+ dedicated to text manipulation. What's more, you can mix the two to get the
+ benefits of both, writing regular expression <span class="emphasis"><em>grammars</em></span>
+ in which some of the regular expressions are statically bound -- hard-coded
+ and syntax-checked by the compiler -- and others are dynamically bound and
+ specified at runtime. These regular expressions can refer to each other recursively,
+ matching patterns in strings that ordinary regular expressions cannot.
+ </p>
+<a name="boost_xpressive.preface.influences_and_related_work"></a><h3>
+<a name="id2182448"></a>
+ <a class="link" href="xpressive.html#boost_xpressive.preface.influences_and_related_work">Influences
+ and Related Work</a>
+ </h3>
+<p>
+ The design of xpressive's interface has been strongly influenced by John Maddock's
+ Boost.Regex library and his proposal
+ to add regular expressions to the Standard Library. I also drew a great deal
+ of inspiration from Joel de Guzman's <a href="http://spirit.sourceforge.net" target="_top">Spirit
+ Parser Framework</a>, which served as the model for static xpressive. Other
+ sources of inspiration are the <a href="http://www.perl.com/pub/a/2002/06/04/apo5.html" target="_top">Perl
+ 6</a> redesign and GRETA.
+ (You can read a summary of the changes Perl 6 will bring to regex culture
+ here.)
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: July 19, 2008 at 22:22:06 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="variant/refs.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="xpressive/user_s_guide.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
 </html>
-

Modified: branches/proto/v4/doc/src/boost.xml
==============================================================================
--- branches/proto/v4/doc/src/boost.xml (original)
+++ branches/proto/v4/doc/src/boost.xml 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -524,6 +524,8 @@
      </libraryinfo>
    </library>
    
+ <xi:include href="proto.xml"/>
+
    <library name="Python" dirname="python" html-only="1">
      <libraryinfo>
        <author>

Modified: branches/proto/v4/libs/proto/doc/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/proto/doc/Jamfile.v2 (original)
+++ branches/proto/v4/libs/proto/doc/Jamfile.v2 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -107,5 +107,5 @@
         # better use SVG's instead:
         # <format>pdf:<xsl:param>admon.graphics.extension=".svg"
 
- <dependency>protodoc
+# <dependency>protodoc
     ;

Modified: branches/proto/v4/libs/proto/doc/transforms.qbk
==============================================================================
--- branches/proto/v4/libs/proto/doc/transforms.qbk (original)
+++ branches/proto/v4/libs/proto/doc/transforms.qbk 2008-08-04 15:15:28 EDT (Mon, 04 Aug 2008)
@@ -30,18 +30,18 @@
 
 You associate transforms with your grammar rules using _when_. For instance,
 you might want to promote all `int` terminals to `long`. You would say
-`when< terminal<int>, terminal<long>::type(_value) >`. Here,
-`terminal<long>::type(_value)` is an example of a Proto transform. It says to
-create an object of type `terminal<long>::type` and initialize it with the
-result of the `_value` transform. `_value` is a transform defined by Proto which
+`proto::when< proto::terminal<int>, proto::terminal<long>::type(proto::_value) >`. Here,
+`proto::terminal<long>::type(proto::_value)` is an example of a Proto transform. It says to
+create an object of type `proto::terminal<long>::type` and initialize it with the
+result of the `proto::_value` transform. `proto::_value` is a transform defined by Proto which
 extracts the value from a terminal expression.
 
 [note The transform above might look a little strange at first. It appears
 to be constructing a temporary object in place. In fact, it is a
-/function type/. Since `terminal<long>::type` and `_value` are types,
-`terminal<long>::type(_value)` is actually the type of a function that takes
-`_value` as a parameter and returns `terminal<long>::type`. That is immaterial;
-there is no such function in reality. Rather, Proto interprets this function
+/function type/. Since `proto::terminal<long>::type` and `proto::_value` are /types/,
+`proto::terminal<long>::type(proto::_value)` is actually the type of a function that takes
+`proto::_value` as a parameter and returns `proto::terminal<long>::type`. But no such
+function actually exists! Rather, Proto interprets this function
 type as a transform, the effect of which is described above. The resemblance
 to an in-place construction of a temporary object is intentional. It is a
 concise and natural notation for specifying transforms. Proto transforms use
@@ -51,8 +51,40 @@
 parameters:
 
 * `expr` -- the Proto expression to transform
-* `state` -- the initial state of the transformation
-* `data` -- any optional mutable state information
+* `state` -- an optional initial state of the transformation
+* `data` -- any optional mutable state information
+
+Many transforms do no use the state and data parameters, and you can pass
+dummy values for them or leave them off entirely. Later on we'll see where
+they are useful.
+
+In addition to being a function object, a grammar decorated with transforms
+is also a grammar. That is, it can be used as the second parameter to
+the _matches_ metafunction to see if an expression type matches the grammar.
+
+The first pararameter to the transform, `expr`, is a Proto expression. Its
+type /must/ match the grammar defined by the transform. It is an error to
+apply a transform to an expression that does not match the transform's
+grammar. If you try it, you're likely to get an ugly compiler error if you're
+lucky. If you're unlucky, it'll compile and do something weird at runtime.
+For instance, consider the following:
+
+ // A grammar that matches an int terminal, and a
+ // transform that promotes it to a long terminal.
+ typedef
+ proto::when<
+ proto::terminal<int>
+ , proto::terminal<long>::type(proto::_value)
+ >
+ Promote;
+
+ // A character terminal
+ proto::terminal<char>::type expr = {'a'};
+
+ // ERROR! The Promote transform expects an integer
+ // terminal, not a character terminal.
+ Promote promote;
+ proto::terminal<long>::type expr2 = promote(expr);
 
 Grammars with transforms are proper function objects, so you can use
 `boost::result_of<>` to calculate their return types. So, applying a
@@ -73,6 +105,42 @@
     // ... and apply Grammar's transform:
     result_type result = Grammar()(expr, state, data);
 
+[/====================================]
+[heading The State and Data Parameters]
+[/====================================]
+
+So in a transform, what are the `state` and `data` parameters used for?
+If you are familiar with the `std::accumulate()` standard algorithm,
+you know that it takes an input sequence, an initial state, and a
+binary function. The algorithm passes the initial state and the first
+element to the binary function to calculate a new state, which is
+then similarly combined with the second element, and so on. Users of
+functional programming languages know this operation as `fold`.
+
+Proto provides several variants of a `fold` transform that behaves
+analogously to `std::accumulate()`. The `fold` transform is described
+in detail later, but here we're just interested in the `state`
+parameter. Any transform that uses `fold` is going to require you
+to pass an initial state. That is what the second parameter of a
+transform is used for.
+
+The `data` parameter is a little different. It can be anything you
+want, and -- unlike the `state` parameter -- none of Proto's built-in
+transforms will touch it. Also unlike the `state` parameter, the
+`data` parameter will be passed around by non-const reference. You
+can use the `data` parameter to pass along data that your
+custom transforms might use or mutate.
+
+So the difference between `state` and `data` is that `state` is an
+accumulation variable that Proto will change, both in type and in
+value, during the transformation, whereas `data` is just a blob of
+bits that you would like available to your transforms. For instance,
+you might want to fold an expression tree to a Fusion list and do
+something locale-specific to each element before you put it in the
+list. In that case, your state parameter would be `fusion::nil`
+(i.e., an empty list), and the data parameter would be a
+`std::locale`.
+
 [/==========================================]
 [section Example: Calculator Arity Transform]
 [/==========================================]
@@ -112,9 +180,9 @@
 We can read this as follows: a calculator expression is either placeholder 1,
 placeholder 2, some other terminal, or some unary or binary operator whose
 operands are calculator expressions. Recall that `proto::_` is a wildcard which
-matches anything. So `terminal< _ >` will match any terminal, and
-`unary_expr< _, CalcArity >` will match any unary expression
-for which the operand matches CalcArity (the `_` matches any operator
+matches anything. So `proto::terminal< _ >` will match any terminal, and
+`proto::unary_expr< _, CalcArity >` will match any unary expression
+for which the operand matches `CalcArity` (the `_` matches any operator
 tag).
 
 [/============================]
@@ -138,13 +206,13 @@
 the arity of all of the sub-expressions and taking the maximum.
 
 Let's look at the sub-expression for the placeholder `_1`. It is matched by this
-part of our grammar: `terminal< placeholder1 >`. We want to associate this
+part of our grammar: `proto::terminal< placeholder1 >`. We want to associate this
 part of our grammar with an arity of `1`. We do that by attaching a transform.
 Since the arity of an expression can be evaluated at compile time, let's use
 `mpl::int_<1>` to represent the arity of the first placeholder. The following
 attaches a transform that always evaluates to `mpl::int_<1>`:
 
- when< terminal< placeholder1 >, mpl::int_<1>() >
+ proto::when< proto::terminal< placeholder1 >, mpl::int_<1>() >
 
 This grammar rule will match any `placeholder1` terminal, and will transform it
 to a (default-constructed) `mpl::int_<1>` object. As described previously,
@@ -155,11 +223,11 @@
 Next, let's write a transform for unary operators that returns the arity of the
 operand. It is simply:
 
- when< unary_expr< _, CalcArity >, CalcArity(_child) >
+ proto::when< proto::unary_expr< _, CalcArity >, CalcArity(proto::_child) >
 
-The transform `CalcArity(_child)` recursively applies the `CalcArity`
+The transform `CalcArity(proto::_child)` recursively applies the `CalcArity`
 transform to the child node of the unary expression. As you might have noticed,
-`CalcArity(_child)` is another function type, but Proto interprets this one
+`CalcArity(proto::_child)` is another function type, but Proto interprets this one
 differently. Rather than trying to construct a `CalcArity` object, Proto
 knows this is a function object and invokes it instead.
 
@@ -170,8 +238,8 @@
 can't know in general which is the case, so it uses a trait, `proto::is_callable<>`,
 to differentiate. `is_callable< mpl::int_<1> >::value` is false so `mpl::int_<1>()`
 is an object to construct, but `is_callable< CalcArity >::value` is true so
-`CalcArity(_child)` is a function to call. (`is_callable< CalcArity >::value` is true
-because `CalcArity` inherits from `proto::or_<>`, which is callable.)]
+`CalcArity(proto::_child)` is a function to call. (`is_callable< CalcArity >::value`
+is true because `CalcArity` inherits from `proto::or_<>`, which is callable.)]
 
 [/
     That begs the question, what does `unary_expr<>`'s transform do? Well,
@@ -235,35 +303,39 @@
 
 The arity of a binary operator is the maximum of the arity of the left and
 right operands. We can specify this with the help of `mpl::max<>`, which is a
-so-called meta-function that computes the maximum of two compile-time integers.
+so-called metafunction that computes the maximum of two compile-time integers.
 The transform is described below:
 
- when<
- binary_expr< _, CalcArity, CalcArity >
- , mpl::max< CalcArity(_left), CalcArity(_right) >()
+ proto::when< proto::binary_expr< _, CalcArity, CalcArity >,
+ mpl::max< CalcArity(proto::_left), CalcArity(proto::_right) >()
>
 
 The above says to match binary calculator expressions and compute their
 arity by first computing the arity of the left and right children and then
 taking their maximum.
 
+[def _X_ [~X]]
+[def _Y_ [~Y]]
+[def _Z_ [~Z]]
+
 There's a lot going on in the above transform, so let's take it one piece
-at a time, starting with the parts we know. `CalcArity(_left)`
+at a time, starting with the parts we know. `CalcArity(proto::_left)`
 will calculate the arity of the left child, returning a compile-time integer.
-Likewise for `CalcArity(_right)`. What is new is that these two
+Likewise for `CalcArity(proto::_right)`. What is new is that these two
 transforms are nested within another: `mpl::max<...>()`. Proto notices that
 `mpl::max<...>` is not callable, so this transform is interpreted as an
 object to construct rather than a function to invoke. Using meta-programming
 tricks, Proto disassembles the `mpl::max<...>` template looking for nested
 Proto transforms to apply. It finds two and applies them, resulting in
-`mpl::max< mpl::int_<X>, mpl::int_<Y> >`.
+`mpl::max< mpl::int_<_X_>, mpl::int_<_Y_> >`.
 
 Having first applied any nested transforms, Proto then looks to see if
-`mpl::max<X, Y>` has a nested `::type` typedef. This is a common convention
-used by meta-functions. In this case, `mpl::max<>::type` is a typedef
-for `mpl::int_< Z >` where `Z` is the maximum of `X` and `Y`. The trailing
-`()` on the transform indicates that the result should be default-constructed,
-so this transform returns `mpl::int_<Z>()`. And we're done.
+`mpl::max< mpl::int_<_X_>, mpl::int_<_Y_> >` has a nested `::type` typedef.
+This is a common convention used by metafunctions. In this case,
+`mpl::max<...>::type` is a typedef for `mpl::int_< _Z_ >` where `_Z_` is the
+maximum of `_X_` and `_Y_`. The trailing `()` on the transform indicates that
+the result should be default-constructed, so this transform returns
+`mpl::int_<_Z_>()`. And we're done.
 
 [note Had `mpl::max<>` not had a nested `::type` typedef, the transform
 would have created and returned a default-constructed `mpl::max<>` object
@@ -291,7 +363,8 @@
 2
 ]
 
-(Aside: this uses the fact that `mpl::int_<1>` has a conversion to `int(1)`.)
+(Aside: the output statements use the fact that `mpl::int_<_X_>`
+has a conversion to `int(_X_)`.)
 
 [endsect]
 
@@ -304,31 +377,37 @@
 Proto, such as `_child`, `_left`, and `_right`. This section describes those
 transforms and others in detail.
 
+[/
+
+Why is this here??
+
 All the transforms defined in this section are of the following form:
 
- struct some_transform : callable
- {
- template<typename Sig>
- struct result;
+[def _some_transform_ [~some_transform]]
 
- template<typename This, typename Expr, typename State, typename Data>
- struct result<This(Expr, State, Data)>
+ struct _some_transform_ : proto::transform< _some_transform_ >
+ {
+ template<typename Expr, typename State, typename Date>
+ struct impl : proto::transform_impl< Expr, State, Data >
         {
- typedef ... type;
- };
+ typedef ... result_type;
 
- template<typename Expr, typename State, typename Data>
- typename result<some_transform(Expr, State, Data)>::type
- operator()(Expr const &expr, State const &state, Data &data) const
- {
- return ...;
- }
+ result_type operator()(
+ typename impl::expr_param expr
+ , typename impl::state_param state
+ , typename impl::data_param data
+ ) const
+ {
+ return ...;
+ }
+ };
     };
 
-So defined, `some_transform` is a transform "in the raw". It can be used
-without needing to explicitly specify any arguments to the transform. These
-are the building blocks from which you can compose larger transforms using
-function types.
+So defined, `_some_transform_` is a transform "in the raw", just like
+`proto::_value` or `proto::_child`. These transforms are the building
+blocks from which you can compose larger transforms using function types.
+
+]
 
 [section:child_c_and_friends [^_value], [^_child], [^_left], and [^_right]]
 
@@ -1183,13 +1262,12 @@
 We've also seen the primitive transforms that Proto provides.
 So-called primitive transforms can be used without specifying
 arguments, like `_child0` which returns the first child of the
-current node. But primitive transforms are not special in any way.
-They are merely ternary function objects that take the current
-expression, state and data as arguments.
-
-You can define your own primitive transforms. You might want to
-do this if your transform is complicated and composing it out
-of primitives becomes unwieldy. You might also do this
+current node. In this section we'll see how to author your own
+primitive transforms.
+
+There are a few reasons why you might want to write your own
+primitive transforms. For instance, your transform may be complicated and
+composing it out of primitives becomes unwieldy. You might also need
 to work around compiler bugs on legacy compilers that makes
 composing transforms using function types problematic. Finally,
 you might also decide to define your own primitive transforms
@@ -1198,35 +1276,34 @@
 or differentiate callable transforms from object transforms,
 primitive transforms are more efficient.
 
-To define your own primitive transform, merely define a ternary
-function object that accepts an expression, a state and a data.
-Here, for example, is how Proto defines the `_child_c<>` transform:
+Your primitive transforms will inherit from `proto::transform<>`
+and have a nested `impl<>` template that inherits from
+`proto::transform_impl<>`. For example, is how Proto defines
+the `_child_c<>` transform:
 
     namespace boost { namespace proto
     {
- // A transform that returns the I-th child
+ // A PrimitiveTransform that returns I-th child of the current
+ // expression.
         template<int I>
- struct _child_c : callable
+ struct _child_c : transform<_child_c<I> >
         {
- // Nested "result" template, used by
- // boost::result_of<> to compute the
- // return type of the function.
- template<typename Sig>
- struct result;
-
- template<typename This, typename Expr, typename State, typename Data>
- struct result<This(Expr, State, Data)>
- : proto::result_of::child_c<Expr, I>
- {};
-
- // Function call operator that actually
- // executes the transform.
             template<typename Expr, typename State, typename Data>
- typename proto::result_of::child_c<Expr, I>::const_reference
- operator ()(Expr const &expr, State const &, Data &) const
+ struct impl : transform_impl<Expr, State, Data>
             {
- return proto::child_c<I>(expr);
- }
+ typedef
+ typename result_of::child_c<Expr, I>::type
+ result_type;
+
+ result_type operator ()(
+ typename impl::expr_param expr
+ , typename impl::state_param state
+ , typename impl::data_param data
+ ) const
+ {
+ return proto::child_c<I>(expr);
+ }
+ };
         };
 
         // Note that _child_c<I> is callable, so that
@@ -1238,15 +1315,33 @@
         {};
     }}
 
-There is nothing particularly special about the definition of
-`_child_c<>`. It is just an ordinary polymorphic function object. The
-only interesting bit is the `is_callable<>` specialization, which
-will be described in the section called "Making Your Transform
-Callable".
-
-Once you have defined such a ternary function object, you can use
-it as a transform without any arguments and Proto will automatically
-pass it the current expression, state and data parameters.
+The `proto::transform<>` base class provides the `operator()` overloads
+and the nested `result<>` template that make your transform a valid
+TR1-style function object that works with `boost::result_of<>`. These
+are all implemented in terms of the nested `impl<>` template you define.
+
+The `proto::transform_impl<>` base class is merely a convenience. It
+provides some nested typedefs that are generally useful. The are
+specified in the table below:
+
+[table proto::transform_impl<Expr, State, Data> typedefs
+[[typedef][Equivalen To]]
+[[`expr`][`typename remove_reference<Expr>::type`]]
+[[`state`][`typename remove_reference<State>::type`]]
+[[`data`][`typename remove_reference<Data>::type`]]
+[[`expr_param`][`typename add_reference<typename add_const<Expr>::type>::type`]]
+[[`state_param`][`typename add_reference<typename add_const<State>::type>::type`]]
+[[`data_param`][`typename add_reference<typename add_const<Data>::type>::type`]]
+]
+
+You'll notice that `_child_c::impl::operator()` takes arguments of types
+`expr_param`, `state_param`, and `data_param`. The typedefs make it easy to
+accepts arguments by reference or const reference accordingly.
+
+The only other interesting bit is the `is_callable<>` specialization, which
+will be described in the section called
+[link boost_proto.users_guide.expression_transformation.is_callable
+"Making Your Transform Callable"].
 
 [endsect]
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk