[boost-doc-zh] r353 committed - 升级至1.41.0,第五批,libs/目录下u-x子目录

  • From: boost-doc-zh@xxxxxxxxxxxxxx
  • To: boost-doc-zh-notify@xxxxxxxxxxxxx
  • Date: Tue, 08 Dec 2009 15:09:21 +0000

Revision: 353
Author: alai04
Date: Tue Dec  8 07:08:28 2009
Log: 升级至1.41.0,第五批,libs/目录下u-x子目录
http://code.google.com/p/boost-doc-zh/source/detail?r=353

Added:
 /trunk/libs/unordered/doc/bibliography.xml
 /trunk/libs/unordered/doc/ref.xml
Modified:
 /trunk/libs/utility/index.html
 /trunk/libs/utility/swap.html
 /trunk/libs/utility/value_init.htm
 /trunk/libs/wave/doc/class_reference_ctxpolicy.html
 /trunk/libs/wave/doc/class_reference_filepos.html
 /trunk/libs/wave/doc/wave_driver.html

=======================================
--- /dev/null
+++ /trunk/libs/unordered/doc/bibliography.xml  Tue Dec  8 07:08:28 2009
@@ -0,0 +1,26 @@
+<!--
+Copyright Daniel James 2008-2009
+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)
+-->
+<section id="unordered.bibliography">
+<title>Bibliography</title>
+<bibliography>
+  <biblioentry>
+    <biblioset relation="journal">
+      <title>C/C++ Users Journal</title>
+      <date>February, 2006</date>
+    </biblioset>
+    <biblioset relation="article">
+      <authorgroup>
+        <author>
+          <firstname>Pete</firstname>
+          <surname>Becker</surname>
+        </author>
+      </authorgroup>
+ <title><ulink url="http://www.ddj.com/cpp/184402066";>STL and TR1: Part III - Unordered containers</ulink></title>
+    </biblioset>
+    <para>An introducation to the standard unordered containers.</para>
+  </biblioentry>
+</bibliography>
+</section>
=======================================
--- /dev/null
+++ /trunk/libs/unordered/doc/ref.xml   Tue Dec  8 07:08:28 2009
@@ -0,0 +1,3253 @@
+<!--
+Copyright Daniel James 2006-2009
+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)
+--><library-reference>
+    <header name="boost/unordered_set.hpp">
+      <namespace name="boost">
+        <class name="unordered_set">
+          <template>
+            <template-type-parameter name="Value">
+            </template-type-parameter>
+            <template-type-parameter name="Hash">
+              <default><type>boost::hash&lt;Value&gt;</type></default>
+            </template-type-parameter>
+            <template-type-parameter name="Pred">
+              <default><type>std::equal_to&lt;Value&gt;</type></default>
+            </template-type-parameter>
+            <template-type-parameter name="Alloc">
+              <default><type>std::allocator&lt;Value&gt;</type></default>
+            </template-type-parameter>
+          </template>
+          <purpose><simpara>
+            An unordered associative container that stores unique values.
+          </simpara></purpose>
+          <description>
+            <para>Based on chapter 23 of
+ <ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2960.pdf";>the working draft of the C++ standard [n2960]</ulink>.
+              But without the updated rules for allocators.
+            </para>
+            <para><emphasis role="bold">Template Parameters</emphasis>
+              <informaltable>
+                <tgroup cols="2">
+                  <tbody>
+                    <row>
+                      <entry><emphasis>Value</emphasis></entry>
+ <entry>Value must be Assignable and CopyConstructible</entry></row>
+                    <row>
+                      <entry><emphasis>Hash</emphasis></entry>
+ <entry>A unary function object type that acts a hash function for a <code>Value</code>. It takes a single argument of type <code>Value</code> and returns a value of type std::size_t.</entry></row>
+                    <row>
+                      <entry><emphasis>Pred</emphasis></entry>
+ <entry>A binary function object that implements an equivalence relation on values of type <code>Value</code>. + A binary function object that induces an equivalence relation on values of type Key. + It takes two arguments of type Key and returns a value of type bool.</entry></row>
+                    <row>
+                      <entry><emphasis>Alloc</emphasis></entry>
+ <entry>An allocator whose value type is the same as the container's value type.</entry></row></tbody></tgroup></informaltable></para> + <para>The elements are organized into buckets. Keys with the same hash code are stored in the same bucket.</para> + <para>The number of buckets can be automatically increased by a call to insert, or as the result of calling rehash.</para>
+          </description>
+          <typedef name="key_type">
+            <type>Value</type>
+          </typedef>
+          <typedef name="value_type">
+            <type>Value</type>
+          </typedef>
+          <typedef name="hasher">
+            <type>Hash</type>
+          </typedef>
+          <typedef name="key_equal">
+            <type>Pred</type>
+          </typedef>
+          <typedef name="allocator_type">
+            <type>Alloc</type>
+          </typedef>
+          <typedef name="pointer">
+            <type>typename allocator_type::pointer</type>
+          </typedef>
+          <typedef name="const_pointer">
+            <type>typename allocator_type::const_pointer</type>
+          </typedef>
+          <typedef name="reference">
+            <type>typename allocator_type::reference</type>
+ <purpose><simpara>lvalue of <type>value_type</type>.</simpara></purpose>
+          </typedef>
+          <typedef name="const_reference">
+            <type>typename allocator_type::const_reference</type>
+ <purpose><simpara>const lvalue of <type>value_type</type>.</simpara></purpose>
+          </typedef>
+          <typedef name="size_type">
+            <type><emphasis>implementation-defined</emphasis></type>
+            <description>
+              <para>An unsigned integral type.</para>
+ <para><type>size_type</type> can represent any non-negative value of <type>difference_type</type>.</para>
+            </description>
+          </typedef>
+          <typedef name="difference_type">
+            <type><emphasis>implementation-defined</emphasis></type>
+            <description>
+              <para>A signed integral type.</para>
+ <para>Is identical to the difference type of <type>iterator</type> and <type>const_iterator</type>.</para>
+            </description>
+          </typedef>
+          <typedef name="iterator">
+            <type><emphasis>implementation-defined</emphasis></type>
+            <description>
+ <para>A constant iterator whose value type is <type>value_type</type>. </para> + <para>The iterator category is at least a forward iterator.</para>
+              <para>Convertible to <type>const_iterator</type>.</para>
+            </description>
+          </typedef>
+          <typedef name="const_iterator">
+            <type><emphasis>implementation-defined</emphasis></type>
+            <description>
+ <para>A constant iterator whose value type is <type>value_type</type>. </para> + <para>The iterator category is at least a forward iterator.</para>
+            </description>
+          </typedef>
+          <typedef name="local_iterator">
+            <type><emphasis>implementation-defined</emphasis></type>
+            <description>
+ <para>An iterator with the same value type, difference type and pointer and reference type as <type>iterator</type>.</para> + <para>A local_iterator object can be used to iterate through a single bucket.</para>
+            </description>
+          </typedef>
+          <typedef name="const_local_iterator">
+            <type><emphasis>implementation-defined</emphasis></type>
+            <description>
+ <para>A constant iterator with the same value type, difference type and pointer and reference type as <type>const_iterator</type>.</para> + <para>A const_local_iterator object can be used to iterate through a single bucket.</para>
+            </description>
+          </typedef>
+          <constructor specifiers="explicit">
+            <parameter name="n">
+              <paramtype>size_type</paramtype>
+ <default><emphasis>implementation-defined</emphasis></default>
+            </parameter>
+            <parameter name="hf">
+              <paramtype>hasher const&amp;</paramtype>
+              <default>hasher()</default>
+            </parameter>
+            <parameter name="eq">
+              <paramtype>key_equal const&amp;</paramtype>
+              <default>key_equal()</default>
+            </parameter>
+            <parameter name="a">
+              <paramtype>allocator_type const&amp;</paramtype>
+              <default>allocator_type()</default>
+            </parameter>
+            <postconditions>
+              <code><methodname>size</methodname>() == 0</code>
+            </postconditions>
+            <description>
+ <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0.</para>
+            </description>
+          </constructor>
+          <constructor>
+            <template>
+              <template-type-parameter name="InputIterator">
+              </template-type-parameter>
+            </template>
+            <parameter name="f">
+              <paramtype>InputIterator</paramtype>
+            </parameter>
+            <parameter name="l">
+              <paramtype>InputIterator</paramtype>
+            </parameter>
+            <parameter name="n">
+              <paramtype>size_type</paramtype>
+ <default><emphasis>implementation-defined</emphasis></default>
+            </parameter>
+            <parameter name="hf">
+              <paramtype>hasher const&amp;</paramtype>
+              <default>hasher()</default>
+            </parameter>
+            <parameter name="eq">
+              <paramtype>key_equal const&amp;</paramtype>
+              <default>key_equal()</default>
+            </parameter>
+            <parameter name="a">
+              <paramtype>allocator_type const&amp;</paramtype>
+              <default>allocator_type()</default>
+            </parameter>
+            <description>
+ <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0 and inserts the elements from [f, l) into it.</para>
+            </description>
+          </constructor>
+          <constructor>
+            <parameter>
+              <paramtype>unordered_set const&amp;</paramtype>
+            </parameter>
+            <description>
+ <para>The copy constructor. Copies the contained elements, hash function, predicate, maximum load factor and allocator.</para>
+            </description>
+            <requires>
+              <para><code>value_type</code> is copy constructible</para>
+            </requires>
+          </constructor>
+          <constructor>
+            <parameter>
+              <paramtype>unordered_set &amp;&amp;</paramtype>
+            </parameter>
+            <description>
+              <para>The move constructor.</para>
+            </description>
+            <notes>
+ <para>This is emulated on compilers without rvalue references.</para>
+            </notes>
+            <requires>
+              <para>
+                <code>value_type</code> is move constructible.
+ (TODO: This is not actually required in this implementation).
+              </para>
+            </requires>
+          </constructor>
+          <constructor specifiers="explicit">
+            <parameter name="a">
+              <paramtype>Allocator const&amp;</paramtype>
+            </parameter>
+            <description>
+ <para>Constructs an empty container, using allocator <code>a</code>.</para>
+            </description>
+          </constructor>
+          <constructor>
+            <parameter name="x">
+              <paramtype>unordered_set const&amp;</paramtype>
+            </parameter>
+            <parameter name="a">
+              <paramtype>Allocator const&amp;</paramtype>
+            </parameter>
+            <description>
+ <para>Constructs an container, copying <code>x</code>'s contained elements, hash function, predicate, maximum load factor, but using allocator <code>a</code>.</para>
+            </description>
+          </constructor>
+          <destructor>
+            <notes>
+ <para>The destructor is applied to every element, and all memory is deallocated</para>
+            </notes>
+          </destructor>
+          <method name="operator=">
+            <parameter>
+              <paramtype>unordered_set const&amp;</paramtype>
+            </parameter>
+            <type>unordered_set&amp;</type>
+            <description>
+ <para>The assignment operator. Copies the contained elements, hash function, predicate and maximum load factor but not the allocator.</para>
+            </description>
+            <notes>
+              <para>
+ On compilers without rvalue references, there is a single assignment + operator with the signature <code>operator=(unordered_set)</code>
+                in order to emulate move semantics.
+              </para>
+            </notes>
+            <requires>
+              <para><code>value_type</code> is copy constructible</para>
+            </requires>
+          </method>
+          <method name="operator=">
+            <parameter>
+              <paramtype>unordered_set &amp;&amp;</paramtype>
+            </parameter>
+            <type>unordered_set&amp;</type>
+            <description>
+              <para>The move assignment operator.</para>
+            </description>
+            <notes>
+              <para>
+ On compilers without rvalue references, there is a single assignment + operator with the signature <code>operator=(unordered_set)</code>
+                in order to emulate move semantics.
+              </para>
+            </notes>
+            <requires>
+              <para>
+                <code>value_type</code> is move constructible.
+ (TODO: This is not actually required in this implementation).
+              </para>
+            </requires>
+          </method>
+          <method name="get_allocator" cv="const">
+            <type>allocator_type</type>
+          </method>
+          <method-group name="size and capacity">
+            <method name="empty" cv="const">
+              <type>bool</type>
+              <returns>
+                <code><methodname>size</methodname>() == 0</code>
+              </returns>
+            </method>
+            <method name="size" cv="const">
+              <type>size_type</type>
+              <returns>
+ <code>std::distance(<methodname>begin</methodname>(), <methodname>end</methodname>())</code>
+              </returns>
+            </method>
+            <method name="max_size" cv="const">
+              <type>size_type</type>
+ <returns><code><methodname>size</methodname>()</code> of the largest possible container.
+              </returns>
+            </method>
+          </method-group>
+          <method-group name="iterators">
+            <overloaded-method name="begin">
+              <signature><type>iterator</type></signature>
+              <signature cv="const"><type>const_iterator</type></signature>
+ <returns>An iterator referring to the first element of the container, or if the container is empty the past-the-end value for the container.
+              </returns>
+            </overloaded-method>
+            <overloaded-method name="end">
+              <signature>
+                <type>iterator</type>
+              </signature>
+              <signature cv="const">
+                <type>const_iterator</type>
+              </signature>
+ <returns>An iterator which refers to the past-the-end value for the container.
+              </returns>
+            </overloaded-method>
+            <method name="cbegin" cv="const">
+              <type>const_iterator</type>
+ <returns>A constant iterator referring to the first element of the container, or if the container is empty the past-the-end value for the container.
+              </returns>
+            </method>
+            <method name="cend" cv="const">
+              <type>const_iterator</type>
+ <returns>A constant iterator which refers to the past-the-end value for the container.
+              </returns>
+            </method>
+          </method-group>
+          <method-group name="modifiers">
+            <method name="emplace">
+              <template>
+                <template-type-parameter name="Args" pack="1">
+                </template-type-parameter>
+              </template>
+              <parameter name="args" pack="1">
+                <paramtype>Args&amp;&amp;</paramtype>
+              </parameter>
+              <type>std::pair&lt;iterator, bool&gt;</type>
+              <description>
+ <para>Inserts an object, constructed with the arguments <code>args</code>, in the container if and only if there is no element in the container with an equivalent value.</para>
+              </description>
+              <returns>
+ <para>The bool component of the return type is true if an insert took place.</para> + <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent value.</para>
+              </returns>
+              <throws>
+ <para>If an exception is thrown by an operation other than a call to <code>hasher</code> the function has no effect.</para>
+              </throws>
+              <notes>
+ <para>Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor.</para> + <para>Pointers and references to elements are never invalidated.</para> + <para>If the compiler doesn't support variadic template arguments or rvalue + references, this is emulated for up to 10 arguments, with no support
+                      for rvalue references or move semantics.</para>
+              </notes>
+            </method>
+            <method name="emplace_hint">
+              <template>
+                <template-type-parameter name="Args" pack="1">
+                </template-type-parameter>
+              </template>
+              <parameter name="hint">
+                <paramtype>const_iterator</paramtype>
+              </parameter>
+              <parameter name="args" pack="1">
+                <paramtype>Args&amp;&amp;</paramtype>
+              </parameter>
+              <type>iterator</type>
+              <description>
+ <para>Inserts an object, constructed with the arguments <code>args</code>, in the container if and only if there is no element in the container with an equivalent value.</para> + <para>hint is a suggestion to where the element should be inserted.</para>
+              </description>
+              <returns>
+ <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent value.</para>
+              </returns>
+              <throws>
+ <para>If an exception is thrown by an operation other than a call to <code>hasher</code> the function has no effect.</para>
+              </throws>
+              <notes>
+ <para>The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same value. </para> + <para>Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor.</para> + <para>Pointers and references to elements are never invalidated.</para> + <para>If the compiler doesn't support variadic template arguments or rvalue + references, this is emulated for up to 10 arguments, with no support
+                      for rvalue references or move semantics.</para>
+              </notes>
+            </method>
+            <method name="insert">
+              <parameter name="obj">
+                <paramtype>value_type const&amp;</paramtype>
+              </parameter>
+              <type>std::pair&lt;iterator, bool&gt;</type>
+              <description>
+ <para>Inserts obj in the container if and only if there is no element in the container with an equivalent value.</para>
+              </description>
+              <returns>
+ <para>The bool component of the return type is true if an insert took place.</para> + <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent value.</para>
+              </returns>
+              <throws>
+ <para>If an exception is thrown by an operation other than a call to <code>hasher</code> the function has no effect.</para>
+              </throws>
+              <notes>
+ <para>Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor.</para> + <para>Pointers and references to elements are never invalidated.</para>
+              </notes>
+            </method>
+            <method name="insert">
+              <parameter name="hint">
+                <paramtype>const_iterator</paramtype>
+              </parameter>
+              <parameter name="obj">
+                <paramtype>value_type const&amp;</paramtype>
+              </parameter>
+              <type>iterator</type>
+              <description>
+ <para>Inserts obj in the container if and only if there is no element in the container with an equivalent value.</para> + <para>hint is a suggestion to where the element should be inserted.</para>
+              </description>
+              <returns>
+ <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent value.</para>
+              </returns>
+              <throws>
+ <para>If an exception is thrown by an operation other than a call to <code>hasher</code> the function has no effect.</para>
+              </throws>
+              <notes>
+ <para>The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same value. </para> + <para>Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor.</para> + <para>Pointers and references to elements are never invalidated.</para>
+              </notes>
+            </method>
+            <method name="insert">
+              <template>
+                <template-type-parameter name="InputIterator">
+                </template-type-parameter>
+              </template>
+              <parameter name="first">
+                <paramtype>InputIterator</paramtype>
+              </parameter>
+              <parameter name="last">
+                <paramtype>InputIterator</paramtype>
+              </parameter>
+              <type>void</type>
+              <description>
+ <para>Inserts a range of elements into the container. Elements are inserted if and only if there is no element in the container with an equivalent value.</para>
+              </description>
+              <throws>
+ <para>When inserting a single element, if an exception is thrown by an operation other than a call to <code>hasher</code> the function has no effect.</para>
+              </throws>
+              <notes>
+ <para>Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor.</para> + <para>Pointers and references to elements are never invalidated.</para>
+              </notes>
+            </method>
+            <method name="erase">
+              <parameter name="position">
+                <paramtype>const_iterator</paramtype>
+              </parameter>
+              <type>iterator</type>
+              <description>
+ <para>Erase the element pointed to by <code>position</code>.</para>
+              </description>
+              <returns>
+ <para>The iterator following <code>position</code> before the erasure.</para>
+              </returns>
+              <throws>
+ <para>Only throws an exception if it is thrown by <code>hasher</code> or <code>key_equal</code>.</para> + <para>In this implementation, this overload doesn't call either function object's methods so it is no throw, but this might not be true in other implementations.</para>
+              </throws>
+            </method>
+            <method name="erase">
+              <parameter name="k">
+                <paramtype>key_type const&amp;</paramtype>
+              </parameter>
+              <type>size_type</type>
+              <description>
+ <para>Erase all elements with key equivalent to <code>k</code>.</para>
+              </description>
+              <returns>
+                <para>The number of elements erased.</para>
+              </returns>
+              <throws>
+ <para>Only throws an exception if it is thrown by <code>hasher</code> or <code>key_equal</code>.</para>
+              </throws>
+            </method>
+            <method name="erase">
+              <parameter name="first">
+                <paramtype>const_iterator</paramtype>
+              </parameter>
+              <parameter name="last">
+                <paramtype>const_iterator</paramtype>
+              </parameter>
+              <type>iterator</type>
+              <description>
+ <para>Erases the elements in the range from <code>first</code> to <code>last</code>.</para>
+              </description>
+              <returns>
+ <para>The iterator following the erased elements - i.e. <code>last</code>.</para>
+              </returns>
+              <throws>
+ <para>Only throws an exception if it is thrown by <code>hasher</code> or <code>key_equal</code>.</para> + <para>In this implementation, this overload doesn't call either function object's methods so it is no throw, but this might not be true in other implementations.</para>
+              </throws>
+            </method>
+            <method name="clear">
+              <type>void</type>
+              <description>
+                <para>Erases all elements in the container.</para>
+              </description>
+              <postconditions>
+ <para><code><methodname>size</methodname>() == 0</code></para>
+              </postconditions>
+              <throws>
+                <para>Never throws an exception.</para>
+              </throws>
+            </method>
+            <method name="swap">
+              <parameter>
+                <paramtype>unordered_set&amp;</paramtype>
+              </parameter>
+              <type>void</type>
+              <throws>
+ <para>If the allocators are equal, doesn't throw an exception unless it is thrown by the copy constructor or copy assignment operator of <code>key_equal</code> or <code>hasher</code>.</para>
+              </throws>
+              <notes>
+ <para>For a discussion of the behavior when allocators aren't equal see + <link linkend="unordered.rationale.swapping_containers_with_unequal_allocators">the implementation details</link>.</para>
+              </notes>
+            </method>
+          </method-group>
+          <method-group name="observers">
+            <method name="hash_function" cv="const">
+              <type>hasher</type>
+              <returns>The container's hash function.
+              </returns>
+            </method>
+            <method name="key_eq" cv="const">
+              <type>key_equal</type>
+              <returns>The container's key equality predicate.
+              </returns>
+            </method>
+          </method-group>
+          <method-group name="lookup">
+            <overloaded-method name="find">
+              <signature>
+                <parameter name="k">
+                  <paramtype>key_type const&amp;</paramtype>
+                </parameter>
+                <type>iterator</type>
+              </signature>
+              <signature cv="const">
+                <parameter name="k">
+                  <paramtype>key_type const&amp;</paramtype>
+                </parameter>
+                <type>iterator</type>
+              </signature>
+              <returns>
+ <para>An iterator pointing to an element with key equivalent to <code>k</code>, or <code>b.end()</code> if no such element exists.</para>
+              </returns>
+            </overloaded-method>
+            <method name="count" cv="const">
+              <parameter name="k">
+                <paramtype>key_type const&amp;</paramtype>
+              </parameter>
+              <type>size_type</type>
+              <returns>
+ <para>The number of elements with key equivalent to <code>k</code>.</para>
+              </returns>
+            </method>
+            <overloaded-method name="equal_range">
+              <signature>
+                <parameter name="k">
+                  <paramtype>key_type const&amp;</paramtype>
+                </parameter>
+                <type>std::pair&lt;iterator, iterator&gt;</type>
+              </signature>
+              <signature cv="const">
+                <parameter name="k">
+                  <paramtype>key_type const&amp;</paramtype>
+                </parameter>
+ <type>std::pair&lt;const_iterator, const_iterator&gt;</type>
+              </signature>
+              <returns>
+ <para>A range containing all elements with key equivalent to <code>k</code>. + If the container doesn't container any such elements, returns + <code><functionname>std::make_pair</functionname>(<methodname>b.end</methodname>(),<methodname>b.end</methodname>())</code>.
+                  </para>
+              </returns>
+            </overloaded-method>
+          </method-group>
+          <method-group name="bucket interface">
+            <method name="bucket_count" cv="const">
+              <type>size_type</type>
+              <returns>
+                <para>The number of buckets.</para>
+              </returns>
+            </method>
+            <method name="max_bucket_count" cv="const">
+              <type>size_type</type>
+              <returns>
+                <para>An upper bound on the number of buckets.</para>
+              </returns>
+            </method>
+            <method name="bucket_size" cv="const">
+              <parameter name="n">
+                <paramtype>size_type</paramtype>
+              </parameter>
+              <type>size_type</type>
+              <requires>
+ <para><code>n &lt; <methodname>bucket_count</methodname>()</code></para>
+              </requires>
+              <returns>
+ <para>The number of elements in bucket <code>n</code>.</para>
+              </returns>
+            </method>
+            <method name="bucket" cv="const">
+              <parameter name="k">
+                <paramtype>key_type const&amp;</paramtype>
+              </parameter>
+              <type>size_type</type>
+              <returns>
+ <para>The index of the bucket which would contain an element with key <code>k</code>.</para>
+              </returns>
+              <postconditions>
+ <para>The return value is less than <code>bucket_count()</code></para>
+              </postconditions>
+            </method>
+            <overloaded-method name="begin">
+              <signature>
+                <parameter name="n">
+                  <paramtype>size_type</paramtype>
+                </parameter>
+                <type>local_iterator</type>
+              </signature>
+              <signature cv="const">
+                <parameter name="n">
+                  <paramtype>size_type</paramtype>
+                </parameter>
+                <type>const_local_iterator</type>
+              </signature>
+              <requires>
+ <para><code>n</code> shall be in the range <code>[0, bucket_count())</code>.</para>
+              </requires>
+              <returns>
+ <para>A local iterator pointing the first element in the bucket with index <code>n</code>.</para>
+              </returns>
+            </overloaded-method>
+            <overloaded-method name="end">
+              <signature>
+                <parameter name="n">
+                  <paramtype>size_type</paramtype>
+                </parameter>
+                <type>local_iterator</type>
+              </signature>
+              <signature cv="const">
+                <parameter name="n">
+                  <paramtype>size_type</paramtype>
+                </parameter>
+                <type>const_local_iterator</type>
+              </signature>
+              <requires>
+ <para><code>n</code> shall be in the range <code>[0, bucket_count())</code>.</para>
+              </requires>
+              <returns>
+ <para>A local iterator pointing the 'one past the end' element in the bucket with index <code>n</code>.</para>
+              </returns>
+            </overloaded-method>
+            <method name="cbegin" cv="const">
+              <parameter name="n">
+                <paramtype>size_type</paramtype>
+              </parameter>
+              <type>const_local_iterator</type>
+              <requires>
+ <para><code>n</code> shall be in the range <code>[0, bucket_count())</code>.</para>
+              </requires>
+              <returns>
+ <para>A constant local iterator pointing the first element in the bucket with index <code>n</code>.</para>
+              </returns>
+            </method>
+            <method name="cend">
+              <parameter name="n">
+                <paramtype>size_type</paramtype>
+              </parameter>
+              <type>const_local_iterator</type>
+              <requires>
+ <para><code>n</code> shall be in the range <code>[0, bucket_count())</code>.</para>
+              </requires>
+              <returns>
+ <para>A constant local iterator pointing the 'one past the end' element in the bucket with index <code>n</code>.</para>
+              </returns>
+            </method>
+          </method-group>
+          <method-group name="hash policy">
+            <method name="load_factor" cv="const">
+              <type>float</type>
+              <returns>
+                <para>The average number of elements per bucket.</para>
+              </returns>
+            </method>
+            <method name="max_load_factor" cv="const">
+              <type>float</type>
+              <returns>
+                <para>Returns the current maximum load factor.</para>
+              </returns>
+            </method>
+            <method name="max_load_factor">
+              <parameter name="z">
+                <paramtype>float</paramtype>
+              </parameter>
+              <type>void</type>
+              <effects>
+ <para>Changes the container's maximum load factor, using <code>z</code> as a hint.</para>
+              </effects>
+            </method>
+            <method name="rehash">
+              <parameter name="n">
+                <paramtype>size_type</paramtype>
+              </parameter>
+              <type>void</type>
+              <description>
+ <para>Changes the number of buckets so that there at least <code>n</code> buckets, and so that the load factor is less than the maximum load factor.</para> + <para>Invalidates iterators, and changes the order of elements. Pointers and references to elements are not invalidated.</para>
+              </description>
+              <throws>
+ <para>The function has no effect if an exception is thrown, unless it is thrown by the container's hash function or comparison function.</para>
+              </throws>
+            </method>
+          </method-group>
+          <free-function-group name="Equality Comparisons">
+            <function name="operator==">
+              <template>
+                <template-type-parameter name="Value">
+                </template-type-parameter>
+                <template-type-parameter name="Hash">
+                </template-type-parameter>
+                <template-type-parameter name="Pred">
+                </template-type-parameter>
+                <template-type-parameter name="Alloc">
+                </template-type-parameter>
+              </template>
+              <parameter name="x">
+ <paramtype>unordered_set&lt;Value, Hash, Pred, Alloc&gt; const&amp;</paramtype>
+              </parameter>
+              <parameter name="y">
+ <paramtype>unordered_set&lt;Value, Hash, Pred, Alloc&gt; const&amp;</paramtype>
+              </parameter>
+              <type>bool</type>
+              <notes>
+                <para>This is a boost extension.</para>
+ <para>Behavior is undefined if the two containers don't have
+                    equivalent equality predicates.</para>
+              </notes>
+            </function>
+            <function name="operator!=">
+              <template>
+                <template-type-parameter name="Value">
+                </template-type-parameter>
+                <template-type-parameter name="Hash">
+                </template-type-parameter>
+                <template-type-parameter name="Pred">
+                </template-type-parameter>
+                <template-type-parameter name="Alloc">
+                </template-type-parameter>
+              </template>
+              <parameter name="x">
+ <paramtype>unordered_set&lt;Value, Hash, Pred, Alloc&gt; const&amp;</paramtype>
+              </parameter>
+              <parameter name="y">
+ <paramtype>unordered_set&lt;Value, Hash, Pred, Alloc&gt; const&amp;</paramtype>
+              </parameter>
+              <type>bool</type>
+              <notes>
+                <para>This is a boost extension.</para>
+ <para>Behavior is undefined if the two containers don't have
+                    equivalent equality predicates.</para>
+              </notes>
+            </function>
+          </free-function-group>
+          <free-function-group name="swap">
+            <function name="swap">
+              <template>
+                <template-type-parameter name="Value">
+                </template-type-parameter>
+                <template-type-parameter name="Hash">
+                </template-type-parameter>
+                <template-type-parameter name="Pred">
+                </template-type-parameter>
+                <template-type-parameter name="Alloc">
+                </template-type-parameter>
+              </template>
+              <parameter name="x">
+ <paramtype>unordered_set&lt;Value, Hash, Pred, Alloc&gt;&amp;</paramtype>
+              </parameter>
+              <parameter name="y">
+ <paramtype>unordered_set&lt;Value, Hash, Pred, Alloc&gt;&amp;</paramtype>
+              </parameter>
+              <type>void</type>
+              <effects>
+                <para><code>x.swap(y)</code></para>
+              </effects>
+              <throws>
+ <para>If the allocators are equal, doesn't throw an exception unless it is thrown by the copy constructor or copy assignment operator of <code>Hash</code> or <code>Pred</code>.</para>
+              </throws>
+              <notes>
+ <para>For a discussion of the behavior when allocators aren't equal see + <link linkend="unordered.rationale.swapping_containers_with_unequal_allocators">the implementation details</link>.</para>
+              </notes>
+            </function>
+          </free-function-group>
+        </class>
+        <class name="unordered_multiset">
+          <template>
+            <template-type-parameter name="Value">
+            </template-type-parameter>
+            <template-type-parameter name="Hash">
+              <default><type>boost::hash&lt;Value&gt;</type></default>
+            </template-type-parameter>
+            <template-type-parameter name="Pred">
+              <default><type>std::equal_to&lt;Value&gt;</type></default>
+            </template-type-parameter>
+            <template-type-parameter name="Alloc">
+              <default><type>std::allocator&lt;Value&gt;</type></default>
+            </template-type-parameter>
+          </template>
+          <purpose><simpara>
+ An unordered associative container that stores values. The same key can be stored multiple times.
+          </simpara></purpose>
+          <description>
+            <para>Based on chapter 23 of
+ <ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2960.pdf";>the working draft of the C++ standard [n2960]</ulink>.
+              But without the updated rules for allocators.
+            </para>
+            <para><emphasis role="bold">Template Parameters</emphasis>
+              <informaltable>
+                <tgroup cols="2">
+                  <tbody>
+                    <row>
+                      <entry><emphasis>Value</emphasis></entry>
+ <entry>Value must be Assignable and CopyConstructible</entry></row>
+                    <row>
+                      <entry><emphasis>Hash</emphasis></entry>
+ <entry>A unary function object type that acts a hash function for a <code>Value</code>. It takes a single argument of type <code>Value</code> and returns a value of type std::size_t.</entry></row>
+                    <row>
+                      <entry><emphasis>Pred</emphasis></entry>
+ <entry>A binary function object that implements an equivalence relation on values of type <code>Value</code>. + A binary function object that induces an equivalence relation on values of type Key. + It takes two arguments of type Key and returns a value of type bool.</entry></row>
+                    <row>
+                      <entry><emphasis>Alloc</emphasis></entry>
+ <entry>An allocator whose value type is the same as the container's value type.</entry></row></tbody></tgroup></informaltable></para> + <para>The elements are organized into buckets. Keys with the same hash code are stored in the same bucket and elements with equivalent keys are stored next to each other.</para> + <para>The number of buckets can be automatically increased by a call to insert, or as the result of calling rehash.</para>
+          </description>
+          <typedef name="key_type">
+            <type>Value</type>
+          </typedef>
+          <typedef name="value_type">
+            <type>Value</type>
+          </typedef>
+          <typedef name="hasher">
+            <type>Hash</type>
+          </typedef>
+          <typedef name="key_equal">
+            <type>Pred</type>
+          </typedef>
+          <typedef name="allocator_type">
+            <type>Alloc</type>
+          </typedef>
+          <typedef name="pointer">
+            <type>typename allocator_type::pointer</type>
+          </typedef>
+          <typedef name="const_pointer">
+            <type>typename allocator_type::const_pointer</type>
+          </typedef>
+          <typedef name="reference">
+            <type>typename allocator_type::reference</type>
+ <purpose><simpara>lvalue of <type>value_type</type>.</simpara></purpose>
+          </typedef>
+          <typedef name="const_reference">
+            <type>typename allocator_type::const_reference</type>
+ <purpose><simpara>const lvalue of <type>value_type</type>.</simpara></purpose>
+          </typedef>
+          <typedef name="size_type">
+            <type><emphasis>implementation-defined</emphasis></type>
+            <description>
+              <para>An unsigned integral type.</para>
+ <para><type>size_type</type> can represent any non-negative value of <type>difference_type</type>.</para>
+            </description>
+          </typedef>
+          <typedef name="difference_type">
+            <type><emphasis>implementation-defined</emphasis></type>
+            <description>
+              <para>A signed integral type.</para>
+ <para>Is identical to the difference type of <type>iterator</type> and <type>const_iterator</type>.</para>
+            </description>
+          </typedef>
+          <typedef name="iterator">
+            <type><emphasis>implementation-defined</emphasis></type>
+            <description>
+ <para>A constant iterator whose value type is <type>value_type</type>. </para> + <para>The iterator category is at least a forward iterator.</para>
+              <para>Convertible to <type>const_iterator</type>.</para>
+            </description>
+          </typedef>
+          <typedef name="const_iterator">
+            <type><emphasis>implementation-defined</emphasis></type>
+            <description>
+ <para>A constant iterator whose value type is <type>value_type</type>. </para> + <para>The iterator category is at least a forward iterator.</para>
+            </description>
+          </typedef>
+          <typedef name="local_iterator">
+            <type><emphasis>implementation-defined</emphasis></type>
+            <description>
+ <para>An iterator with the same value type, difference type and pointer and reference type as <type>iterator</type>.</para> + <para>A local_iterator object can be used to iterate through a single bucket.</para>
+            </description>
+          </typedef>
+          <typedef name="const_local_iterator">
+            <type><emphasis>implementation-defined</emphasis></type>
+            <description>
+ <para>A constant iterator with the same value type, difference type and pointer and reference type as <type>const_iterator</type>.</para> + <para>A const_local_iterator object can be used to iterate through a single bucket.</para>
+            </description>
+          </typedef>
+          <constructor specifiers="explicit">
+            <parameter name="n">
+              <paramtype>size_type</paramtype>
+ <default><emphasis>implementation-defined</emphasis></default>
+            </parameter>
+            <parameter name="hf">
+              <paramtype>hasher const&amp;</paramtype>
+              <default>hasher()</default>
+            </parameter>
+            <parameter name="eq">
+              <paramtype>key_equal const&amp;</paramtype>
+              <default>key_equal()</default>
+            </parameter>
+            <parameter name="a">
+              <paramtype>allocator_type const&amp;</paramtype>
+              <default>allocator_type()</default>
+            </parameter>
+            <postconditions>
+              <code><methodname>size</methodname>() == 0</code>
+            </postconditions>
+            <description>
+ <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0.</para>
+            </description>
+          </constructor>
+          <constructor>
+            <template>
+              <template-type-parameter name="InputIterator">
+              </template-type-parameter>
+            </template>
+            <parameter name="f">
+              <paramtype>InputIterator</paramtype>
+            </parameter>
+            <parameter name="l">
+              <paramtype>InputIterator</paramtype>
+            </parameter>
+            <parameter name="n">
+              <paramtype>size_type</paramtype>
+ <default><emphasis>implementation-defined</emphasis></default>
+            </parameter>
+            <parameter name="hf">
+              <paramtype>hasher const&amp;</paramtype>
+              <default>hasher()</default>
+            </parameter>
+            <parameter name="eq">
+              <paramtype>key_equal const&amp;</paramtype>
+              <default>key_equal()</default>
+            </parameter>
+            <parameter name="a">
+              <paramtype>allocator_type const&amp;</paramtype>
+              <default>allocator_type()</default>
+            </parameter>
+            <description>
+ <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0 and inserts the elements from [f, l) into it.</para>
+            </description>
+          </constructor>
+          <constructor>
+            <parameter>
+              <paramtype>unordered_multiset const&amp;</paramtype>
+            </parameter>
+            <description>
+ <para>The copy constructor. Copies the contained elements, hash function, predicate, maximum load factor and allocator.</para>
+            </description>
+            <requires>
+              <para><code>value_type</code> is copy constructible</para>
+            </requires>
+          </constructor>
+          <constructor>
+            <parameter>
+              <paramtype>unordered_multiset &amp;&amp;</paramtype>
+            </parameter>
+            <description>
+              <para>The move constructor.</para>
+            </description>
+            <notes>
+ <para>This is emulated on compilers without rvalue references.</para>
+            </notes>
+            <requires>
+              <para>
+                <code>value_type</code> is move constructible.
+ (TODO: This is not actually required in this implementation).
+              </para>
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/libs/utility/index.html      Thu Sep  4 19:58:01 2008
+++ /trunk/libs/utility/index.html      Tue Dec  8 07:08:28 2009
@@ -1,114 +1,39 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-
-
-
-
-  <meta http-equiv="Content-Language" content="en-us">
-
-
-
-
-  <meta name="GENERATOR" content="Microsoft FrontPage 5.0">
-
-
-
-
-  <meta name="ProgId" content="FrontPage.Editor.Document">
-
-
-
-
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-
-
-
-  <title>Boost Utility Library</title>
+<html><head>
+<meta http-equiv="Content-Language" content="en-us">
+<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Boost Utility Library</title>
+
 </head>

-
-<body bgcolor="#ffffff">
-
-
-
-<h1><img src="../../boost.png" align="middle" height="86" width="276">Boost
-                       Utility 库</h1>
-
-
-
+<body style="background-color: rgb(255, 255, 255);">
+<h1><img src="../../boost.png" align="middle" height="86" width="276">Boost Utility 库</h1> <p>Boost Utility 库其实并不是单个库。它由一组组件组成,这些组件都太小了,单 独的每一个都不适合被称为库。</p>
-
-
-
-<p>但是这并不意味着它们的用处不大看一下:</p>
-
-
-
+<p>但是这并不意味着它们的用处不大。看一下:</p>
 <blockquote>
-
-
-  <p>
-                               <a href="assert.html">assert</a><br>
-
-
-                               <a 
href="base_from_member.html">base_from_member</a><br>
-
-
-                               <a href="call_traits.htm">call_traits</a><br>
-
-
-                               <a 
href="checked_delete.html">checked_delete</a><br>
-
-
-                               <a 
href="compressed_pair.htm">compressed_pair</a><br>
-
-
-                               <a 
href="current_function.html">current_function</a><br>
-
-
-                               <a href="enable_if.html">enable_if</a><br>
-
-
-                <a href="iterator_adaptors.htm">iterator_adaptors<br>
-  </a><a href="generator_iterator.htm">generator iterator adaptors</a><br>
-
-
-                               <a href="operators.htm">operators</a><br>
-
-
-                               <a 
href="throw_exception.html">throw_exception</a><br>
-
-
-                               <a href="utility.htm">utility</a><br>
-
-
-                <a href="value_init.htm">value_init</a></p>
-
-
-               </blockquote>
-
-
-
+<p> <a href="assert.html">assert</a><br>
+<a href="base_from_member.html">base_from_member</a><br>
+<a href="call_traits.htm">call_traits</a><br>
+<a href="checked_delete.html">checked_delete</a><br>
+<a href="compressed_pair.htm">compressed_pair</a><br>
+<a href="current_function.html">current_function</a><br>
+<a href="enable_if.html">enable_if</a><br>
+<a href="iterator_adaptors.htm">iterator_adaptors<br>
+</a><a href="generator_iterator.htm">generator
+iterator adaptors</a><br>
+<a href="operators.htm">operators</a><br>
+<a href="swap.html">swap</a><br>
+<a href="throw_exception.html">throw_exception</a><br>
+<a href="utility.htm">utility</a><br>
+<a href="value_init.htm">value_init</a></p>
+</blockquote>
 <hr>
-
-<p>&copy; Copyright Beman Dawes, 2001</p>
-
-
-
-<p>Distributed under the Boost Software License, Version 1.0. (See
-        accompanying file <a href="../../LICENSE_1_0.txt">
-        LICENSE_1_0.txt</a> or copy at
-        <a href="http://www.boost.org/LICENSE_1_0.txt";>
-        www.boost.org/LICENSE_1_0.txt</a>)</p>
-
-
-
-<p>Revised
- <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->07 November, 2006<!--webbot bot="Timestamp" endspan i-checksum="39368" --></p>
-
-
-
-</body>
-</html>
+<p>(c) Copyright Beman Dawes, 2001</p>
+<p>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../LICENSE_1_0.txt">
+LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt";>
+www.boost.org/LICENSE_1_0.txt</a>)</p>
+<p>Revised<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan --> +07 November, 2006<!--webbot bot="Timestamp" endspan i-checksum="39368" --></p>
+</body></html>
=======================================
--- /trunk/libs/utility/swap.html       Tue Mar 31 20:05:18 2009
+++ /trunk/libs/utility/swap.html       Tue Dec  8 07:08:28 2009
@@ -1,109 +1,132 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";> <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en-US" lang="en-US"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Boost: Swap Documentation</title></head>
-
-
-  <body>
-    <!-- Page header -->
- <img src="../../boost.png" alt="C++ Boost" align="middle" height="86" width="277" />
-    <h1>Swap</h1>
-
-    <p>
- <tt>template&lt;class T&gt; void swap(T&amp; <em>left</em>, T&amp; <em>right</em>);</tt>
-    </p>
-
-    <!-- Introduction -->
-    <p>
-      The template function <tt>boost::swap</tt> allows the values of
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Boost: Swap Documentation</title></head>
+<body>
+<!-- Page header --> <h2><img src="../../boost.png" alt="C++ Boost" align="middle" height="86" width="277" /> 头文件 &lt;<a href="../../boost/swap.hpp">boost/swap.hpp</a>&gt;</h2>
+<h1>Swap</h1>
+<p> <tt>template&lt;class T&gt; void
+swap(T&amp; <em>left</em>, T&amp; <em>right</em>);</tt>
+</p>
+<!-- Introduction -->
+<p> The template function <tt>boost::swap</tt>
+allows the values of
 two variables to be swapped, using argument dependent lookup to select
 a specialized swap function if available. If no specialized swap
-function is available, <tt>std::swap</tt> is used.<br />函数模板 <tt>boost::swap</tt> 允许两个变量交换它们的值,它使用实参依赖查找(ADL)来选择 可用的特化 swap 函数。如果没有可用的特化 swap 函数,就使用 <tt>std::swap</tt>。
-    </p>
-
-    <!-- Rationale -->
-    <h2>Rationale 原理</h2>
-    <p>
-      The generic <tt>std::swap</tt> function requires that the
+function is available, <tt>std::swap</tt> is used.<br />
+函数模板 <tt>boost::swap</tt>
+允许两个变量交换它们的值,它使用实参依赖查找(ADL)来选择可用的特化 swap 函 数。如果没有可用的特化 swap 函数,就使用 <tt>std::swap</tt>。
+</p>
+<!-- Rationale -->
+<h2>Rationale 原理</h2>
+<p> The generic <tt>std::swap</tt> function requires
+that the
 elements to be swapped are assignable and copy constructible. It is
 usually implemented using one copy construction and two assignments -
 this is often both unnecessarily restrictive and unnecessarily slow. In
 addition, where the generic swap implementation provides only the basic
 guarantee, specialized swap functions are often able to provide the
 no-throw exception guarantee (and it is considered best practice to do
-so where possible<sup><a href="swap.html#ref1">1</a></sup>).<br />普通的 <tt>std::swap</tt>
+so where possible<sup><a href="swap.html#ref1">1</a></sup>).<br />
+普通的 <tt>std::swap</tt>
函数要求被交换的元素必须是可赋值且可复制构造的。它是用一次复制构造和两次赋 值来实现的 - 一般来说,这是不必要的限制,而且也比较慢。此外,这个通用的 swap 实现只提供 了基本的异常安全保证,而特化的 swap 函数通常可以提供无抛出的异常安全保证(而且可被视为有可能的最好实现<sup><a href="#ref1">1</a></sup>)。</p>
-    <p>
- The alternative to using argument dependent lookup in this situation is to provide a template specialization of <tt>std::swap</tt>
+<p> The alternative to using argument dependent lookup in this
+situation is to provide a template specialization of <tt>std::swap</tt>
 for every type that requires a specialized swap. Although this is legal
 C++, no Boost libraries use this method, whereas many Boost libraries
-provide specialized swap functions in their own namespaces.<br />另一种方法 是,在此情形下使用实参依赖查找,为每一个需要特化 swap 的类型提供一个 <tt>std::swap</tt> 的模板特化。虽然这是合法的 C++,但是没有一个 Boost 库使用 了这种方法,多数 Boost 库在它们自己的名字空间中提供特化的 swap 函数。
-    </p>
-    <p>
- <tt>boost::swap</tt> also supports swapping built-in arrays. Note that <tt>std::swap</tt> originally did not do so, but a request to add an overload of <tt>std::swap</tt> for built-in arrays has been accepted by the C++ Standards Committee<sup><a href="swap.html#ref2">2</a></sup>.<br /><tt>boost::swap</tt> 也支持内建数组的交换。注意,<tt>std::swap</tt> 最初并 不这样做,不过,为内建数组增加一个 <tt>std::swap</tt> 重载这一请求已经被 C++ 标准委员会接纳<sup><a href="#ref2">2</a></sup>。
-    </p>
-
-    <!-- Exception Safety -->
-    <h2>Exception Safety 异常安全性</h2>
-    <p>
- <tt>boost::swap</tt> provides the same exception guarantee as the underlying swap function used, with one exception; for an array of type <tt>T[n]</tt>, where <tt>n &gt; 1</tt> and the underlying swap function for <tt>T</tt> provides the strong exception guarantee, <tt>boost::swap</tt> provides only the basic exception guarantee.<br /><tt>boost::swap</tt> 提供 了与其所用的底层 swap 函数相同的异常安全保证,除了一种例外情况;对于数组类 型 <tt>T[n]</tt>,当 <tt>n &gt; 1</tt> 且 <tt>T</tt> 的底层 swap 函数提供强 异常安全保证时,<tt>boost::swap</tt> 只提供基本异常安全保证。
-    </p>
-
-    <!-- Requirements -->
-    <h2>Requirements 要求</h2>
-    <p>Either:<br />或者:</p>
-    <ul>
-      <li>T must be assignable<br />T 必须是可赋值的</li>
-      <li>T must be copy constructible<br />T 必须是可复制构造的</li>
-    </ul>
-    <p>Or:<br />或者:</p>
-    <ul>
- <li>A function with the signature <tt>swap(T&amp;,T&amp;)</tt> is available via argument dependent lookup<br />通过ADL可以找到函数签名为 <tt>swap(T&amp;,T&amp;)</tt> 的函数</li>
-    </ul>
-    <p>Or:<br />或者:</p>
-    <ul>
- <li>A template specialization of <tt>std::swap</tt> exists for T<br />有一个针对 T 的 <tt>std::swap</tt> 特化模板</li>
-    </ul>
-    <p>Or:<br />或者:</p>
-    <ul>
- <li>T is a built-in array of swappable elements<br />T 是可交换元素的 内建数组</li>
-    </ul>
-
-
-    <!-- Portability -->
-    <h2>Portability 可移植性</h2>
-    <p>
- Several older compilers do not support argument dependent lookup - on these compilers <tt>boost::swap</tt> will call <tt>std::swap</tt>, ignoring any specialized swap functions that could be found as a result of argument dependent lookup.<br />有几个老的编译器不支持ADL - 在这些编译器上 <tt>boost::swap</tt> 将直接调用 <tt>std::swap</tt>,忽略任意可以由ADL找到的 特化 swap 函数。
-    </p>
-
-    <!-- Credits -->
-    <h2>Credits 荣誉</h2>
-    <ul>
-      <li>
- <em>Niels Dekker</em> - for implementing and documenting support for built-in arrays<br /><em>Niels Dekker</em> - 对内建数组支持的实现和文档 编写
-      </li>
-      <li>
- <em><a href="mailto:Joseph.Gauterin@xxxxxxxxxxxxxx";>Joseph Gauterin</a></em> - for the initial idea, implementation, tests, and documentation<br /><em><a href="mailto:Joseph.Gauterin@xxxxxxxxxxxxxx";>Joseph Gauterin</a></em> - 起初 的想法、实现、测试和文档编写
-      </li>
-      <li>
- <em>Steven Watanabe</em> - for the idea to make <tt>boost::swap</tt> less specialized than <tt>std::swap</tt>, thereby allowing the function to have the name 'swap' without introducing ambiguity<br /><em>Steven Watanabe</em> - 提出让 <tt>boost::swap</tt> 比 <tt>std::swap</tt> 更少限制的想法,从而允许带有名字'swap'的函数不会引起歧义
-      </li>
-    </ul>
-
-    <!-- References -->
-    <hr />
- <p><sup><a id="ref1">[1]</a></sup><a id="ref1">Scott Meyers, Effective C++ Third Edition, Item 25: "Consider support for a non-throwing swap"</a></p> -<a id="ref1"> </a><p><a id="ref1"><sup></sup></a><sup><a id="ref2">[2]</a></sup><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#809";>LWG Defect Report 809 (std::swap should be overloaded for array types)</a></p>
-
-    <!-- Copyright info -->
-    <hr />
-    <p>Revised: 15 November 2008</p>
-    <p>
-Copyright 2007, 2008 Joseph Gauterin. Use, modification, and
+provide specialized swap functions in their own namespaces.<br />
+另一种方法是,在此情形下使用实参依赖查找,为每一个需要特化 swap 的类型提供 一个 <tt>std::swap</tt> +的模板特化。虽然这是合法的 C++,但是没有一个 Boost 库使用了这种方法,多数 Boost 库在它们自己的名字空间中提供特化的 swap
+函数。 </p>
+<p> <tt>boost::swap</tt> also supports swapping
+built-in arrays. Note that <tt>std::swap</tt> originally
+did not do so, but a request to add an overload of <tt>std::swap</tt>
+for built-in arrays has been accepted by the C++ Standards Committee<sup><a href="swap.html#ref2">2</a></sup>.<br />
+<tt>boost::swap</tt> 也支持内建数组的交换。注意,<tt>std::swap</tt>
+最初并不这样做,不过,为内建数组增加一个 <tt>std::swap</tt> 重载这一请求已 经被 C++
+标准委员会接纳<sup><a href="#ref2">2</a></sup>。
+</p>
+<!-- Exception Safety -->
+<h2>Exception Safety 异常安全性</h2>
+<p> <tt>boost::swap</tt> provides the same exception
+guarantee as the underlying swap function used, with one exception; for
+an array of type <tt>T[n]</tt>, where <tt>n
+&gt; 1</tt> and the underlying swap function for <tt>T</tt>
+provides the strong exception guarantee, <tt>boost::swap</tt>
+provides only the basic exception guarantee.<br />
+<tt>boost::swap</tt> 提供了与其所用的底层 swap
+函数相同的异常安全保证,除了一种例外情况;对于数组类型 <tt>T[n]</tt>,当 <tt>n +&gt; 1</tt> 且 <tt>T</tt> 的底层 swap 函数提供强异常安全保证 时,<tt>boost::swap</tt>
+只提供基本异常安全保证。 </p>
+<!-- Requirements -->
+<h2>Requirements 要求</h2>
+<p>Either:<br />
+或者:</p>
+<ul>
+<li>T must be assignable<br />
+T 必须是可赋值的</li>
+<li>T must be copy constructible<br />
+T 必须是可复制构造的</li>
+</ul>
+<p>Or:<br />
+或者:</p>
+<ul>
+<li>A function with the signature <tt>swap(T&amp;,T&amp;)</tt>
+is available via argument dependent lookup<br />
+通过ADL可以找到函数签名为 <tt>swap(T&amp;,T&amp;)</tt> 的函数</li>
+</ul>
+<p>Or:<br />
+或者:</p>
+<ul>
+<li>A template specialization of <tt>std::swap</tt>
+exists for T<br />
+有一个针对 T 的 <tt>std::swap</tt> 特化模板</li>
+</ul>
+<p>Or:<br />
+或者:</p>
+<ul>
+<li>T is a built-in array of swappable elements<br />
+T 是可交换元素的内建数组</li>
+</ul>
+<!-- Portability -->
+<h2>Portability 可移植性</h2>
+<p> Several older compilers do not support argument dependent
+lookup - on these compilers <tt>boost::swap</tt> will call
+<tt>std::swap</tt>, ignoring any specialized swap functions
+that could be found as a result of argument dependent lookup.<br />
+有几个老的编译器不支持ADL - 在这些编译器上 <tt>boost::swap</tt> 将直接调用 <tt>std::swap</tt>,
+忽略任意可以由ADL找到的特化 swap 函数。 </p>
+<!-- Credits -->
+<h2>Credits 荣誉</h2>
+<ul>
+<li> <em>Niels Dekker</em> - for implementing and
+documenting support for built-in arrays<br />
+<em>Niels Dekker</em> - 对内建数组支持的实现和文档编写 </li>
+<li> <em><a href="mailto:Joseph.Gauterin@xxxxxxxxxxxxxx";>Joseph Gauterin</a></em>
+- for the initial idea, implementation, tests, and documentation<br />
+<em><a href="mailto:Joseph.Gauterin@xxxxxxxxxxxxxx";>Joseph
+Gauterin</a></em> - 起初的想法、实现、测试和文档编写 </li>
+<li> <em>Steven Watanabe</em> - for the idea to
+make <tt>boost::swap</tt> less specialized than <tt>std::swap</tt>,
+thereby allowing the function to have the name 'swap' without
+introducing ambiguity<br />
+<em>Steven Watanabe</em> - 提出让 <tt>boost::swap</tt>
+比 <tt>std::swap</tt> 更少限制的想法,从而允许带有名字'swap'的函数不会引起 歧义 </li>
+</ul>
+<!-- References -->
+<hr />
+<p><sup><a id="ref1">[1]</a></sup><a id="ref1">Scott Meyers, Effective C++ Third Edition, Item
+25: "Consider support for a non-throwing swap"</a></p>
+<a id="ref1"> </a>
+<p><sup><a id="ref2">[2]</a></sup><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#809";>LWG
+Defect Report 809 (std::swap should be overloaded for array types)</a></p>
+<!-- Copyright info -->
+<hr />
+<p>Revised:&nbsp;08 September 2009</p>
+<p>Copyright 2007-2009 Joseph Gauterin. Use, modification, and
 distribution are subject to the Boost Software License, Version 1.0.
-(See accompanying file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or a copy at &lt;<a href="http://www.boost.org/LICENSE_1_0.txt";>http://www.boost.org/LICENSE_1_0.txt</a>&gt;.)
-    </p>
-
-  </body></html>
+(See accompanying file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or a copy at &lt;<a href="http://www.boost.org/LICENSE_1_0.txt";>http://www.boost.org/LICENSE_1_0.txt</a>&gt;.)
+</p>
+</body></html>
=======================================
--- /trunk/libs/utility/value_init.htm  Tue Mar 31 01:07:16 2009
+++ /trunk/libs/utility/value_init.htm  Tue Dec  8 07:08:28 2009
@@ -1,8 +1,6 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>value_initialized</title>
-
-</head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>value_initialized</title></head> <body style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" link="#0000ff" vlink="#800080"> <h2><img src="../../boost.png" height="86" width="276"> 头文件 &lt;<a href="../../boost/utility/value_init.hpp">boost/utility/value_init.hpp</a>&gt;
 </h2>
@@ -148,7 +146,7 @@
 <h2><a name="types"></a>类型和对象</h2>
 <h2><a name="val_init"><code>模板类
 value_initialized&lt;T&gt;</code></a></h2>
-<pre>namespace boost {<br><br>template&lt;class T&gt;<br>class value_initialized<br>{<br> public :<br> value_initialized() : x() {}<br> operator T&amp;() const { return x ; }<br> T&amp; data() const { return x ; }<br><br> private :<br> <i>unspecified</i> x ;<br>} ;<br><br>template&lt;class T&gt;<br>T const&amp; get ( value_initialized&lt;T&gt; const&amp; x )<br>{<br> return x.data() ;<br>}<br><br>template&lt;class T&gt;<br>T&amp; get ( value_initialized&lt;T&gt;&amp; x )<br>{<br> return x.data() ;<br>}<br><br>} // namespace boost<br></pre> +<pre>namespace boost {<br>template&lt;class T&gt;<br>class value_initialized<br>{<br> public :<br> value_initialized() : x() {}<br> operator T const &amp;() const { return x ; }<br> operator T&amp;() { return x ; }<br> T const &amp;data() const { return x ; }<br> T&amp; data() { return x ; }<br> void swap( value_initialized&lt;T&gt;&amp; );<br><br> private :<br> <i>unspecified</i> x ;<br>} ;<br><br>template&lt;class T&gt;<br>T const&amp; get ( value_initialized&lt;T&gt; const&amp; x )<br>{<br> return x.data() ;<br>}<br><br>template&lt;class T&gt;<br>T&amp; get ( value_initialized&lt;T&gt;&amp; x )<br>{<br> return x.data() ;<br>}<br><br>} // namespace boost<br></pre>
 <p>该模板类的一个对象是一个可以转换为 'T&amp;' 的 <code>T</code>-包
装,当该包装类被缺省构造时,被包装的对象(类型为 T 的数据成员 <code></code>)可以保证是 <a href="#valueinit">值初始化</a> 的: </p> <pre>int zero = 0 ;<br>value_initialized&lt;int&gt; x ;<br>assert ( x == zero ) ;<br><br>std::string def ;<br>value_initialized&lt; std::string &gt; y ;<br>assert ( y == def ) ;<br></pre>
@@ -163,20 +161,12 @@
 <code>value_initialized&lt;T&gt;</code> 也是可交换的,调用其
 <code>swap</code> 成员函数相当于调用
<code>boost::swap</code>.</p><pre>value_initialized&lt;int&gt; x ; <br>static_cast&lt;int&amp;&gt;(x) = 1 ; // OK<br>get(x) = 1 ; // OK<br><br>value_initialized&lt;int const&gt; y ; <br>static_cast&lt;int&amp;&gt;(y) = 1 ; // ERROR: 不能转为 int&amp;<br>static_cast&lt;int const&amp;&gt;(y) = 1 ; // ERROR: 不能修改常 量值<br>get(y) = 1 ; // ERROR: 不能修改常量值</pre>
-<h3>警告:</h3>
-<p>转换操作符和 <code>data()</code> 成员函数都是 <code>const</code>
-的,以允许从一个常量的包装器来访问被包装的对象:</p>
-<pre>void foo(int);<br>value_initialized&lt;int&gt; const x ;<br>foo(x);<br></pre> -<p>但是请注意,转换操作符是转为 <code>T&amp;</code> 的,即使它本身是 <code>const</code> -的。因此,如果<code> T</code> 是一个非常量类型,你可以通一个常量的包装器对 被包装的对象进行修改:</p> +<h3>警告:</h3><p>Boost 1.40.0及以前的版本中的 <code>value_initialized</code> 实现允许<i>非常量</i>地从一个常量包装访问被包 装的对象,用转型操作符或 <code>data()</code> 成员函数都可以。例如:</p> <pre>value_initialized&lt;int&gt; const x_c ;<br>int&amp; xr = x_c ; // OK, 可以转换为 int&amp; 即使 x_c 本身是 const 的。<br>xr = 2 ; </pre>
 <p>这种不正常行为的原因是,有些常用的编译器不接受以下代码:</p>
<pre>struct X<br>{<br> operator int&amp;() ;<br> operator int const&amp;() const ; <br>};<br>X x ;<br>(x == 1 ) ; // ERROR HERE!</pre> -<p>这些编译器认为两个转换操作符之间有歧义。这是不正确的,但是我所知道的解决 办法就是只提供一个转换操作符,这就导致了前面所说的异常
-行为。<br>
-</p>
-<h3>提议的标准:非成员函数 get() 惯用法</h3>
-<p>可以通过一个常量的包装器修改非常量的被包装对象这一异常行为是可以避免 的,只要确保总是通过 get() 来访问被包装对象:</p> +<p>当前版本的 <code>value_initialized</code> 不再有这种不正常的行为。因为当 前的编译器已广泛支持常量和非常量的转型操作符的重载,所以我们决定修正这个问 题。所以当前的版本支持逻辑常量性的想法。</p><h3>提议的标准:非成员函数 get() 惯用法</h3> +<p>可以通过一个常量的包装器修改非常量的被包装对象这一异常行为(以前的 <code>value_initialized</code> 版本支持这种行为)是可以避免的,只要确保总是通 过 get() 来访问被包装对象:</p> <pre>value_initialized&lt;int&gt; x ;<br>get(x) = 1 ; // OK<br><br>value_initialized&lt;int const&gt; cx ;<br>get(x) = 1 ; // ERROR: 不能修改常量对象<br><br>value_initialized&lt;int&gt; const x_c ;<br>get(x_c) = 1 ; // ERROR: 不能修改常量对象 <br><br>value_initialized&lt;int const&gt; const cx_c ;<br>get(cx_c) = 1 ; // ERROR: 不能修改常量对象<br></pre>
 <h2><a name="initialized_value"><code>initialized_value</code></a></h2>
<pre>namespace boost {<br>class initialized_value_t<br>{<br> public :<br> template &lt;class T&gt; operator T() const ;<br>};<br><br>initialized_value_t const initialized_value = {} ;<br><br>} // namespace boost<br></pre>
@@ -218,8 +208,7 @@
 Boost release version 1.36 (2008). </p>
 <p>Developed by <a href="mailto:fernando_cacciola@xxxxxxxxxxx";>Fernando
Cacciola</a>, the latest version of this file can be found at <a href="http://www.boost.org/";>www.boost.org</a>. </p> -<hr><p>Revised 28 August 2008</p><p>(c) Copyright Fernando Cacciola, 2002, 2008.</p>
-<p>Distributed under the Boost Software License, Version 1.0. See
-<a href="http://www.boost.org/LICENSE_1_0.txt";>www.boost.org/LICENSE_1_0.txt</a></p>
-<br>
+<hr>Revised 03 October 2009
+<p>(c) Copyright Fernando Cacciola, 2002, 2009.</p>
+<p>Distributed under the Boost Software License, Version 1.0. See <a href="http://www.boost.org/LICENSE_1_0.txt";>www.boost.org/LICENSE_1_0.txt</a></p>
 </body></html>
=======================================
--- /trunk/libs/wave/doc/class_reference_ctxpolicy.html Sat Nov 29 02:17:08 2008 +++ /trunk/libs/wave/doc/class_reference_ctxpolicy.html Tue Dec 8 07:08:28 2009
@@ -50,23 +50,7 @@
 </ul>
<p>This policy type is used as a template parameter to the <a href="class_reference_context.html"><tt>boost::wave::context&lt;&gt;</tt></a> object, where the default policy provides empty hook functions only.<br>这个 策略类型用作 <a href="class_reference_context.html"><tt>boost::wave::context&lt;&gt;</tt></a> 对象的一个模板参数,缺省的策略只提供空的钩子函数。</p> <h2><a name="header_synopsis"></a>Header <a href="http://svn.boost.org/trac/boost/browser/trunk/boost/wave/preprocessing_hooks.hpp";>wave/preprocessing_hooks.hpp</a> synopsis 头文件概要</h2> -<pre><span class="keyword">namespace</span> boost {<br><span class="keyword">namespace</span> wave {<br><span class="keyword">namespace</span> context_policies {<br> <br> <span class="keyword">struct</span> default_preprocessing_hooks {<br><br> <span class="comment">// general hook functions</span> - <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#found_directive">found_directive</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> TokenT <span class="keyword">const </span>&amp;directive);<br> - <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ExceptionT&gt;<br> void <a href="class_reference_ctxpolicy.html#trow_exception">throw_exception</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> ExceptionT <span class="keyword">const</span>&amp; e);<br><br> <span class="comment">// test, whether a given token may be skipped</span><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#may_skip_whitespace">may_skip_whitespace</a> (ContextT <span class="keyword">const</span>&amp; ctx,<br> TokenT &amp;token, <span class="keyword">bool</span> &amp;skipped_newline);<br> - <span class="comment">// Conditional compilation</span><span class="keyword"> - template</span> &lt;<br> <span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT, <br> <span class="keyword">typename</span> ContainerT<br> &gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#evaluated_conditional_expression">evaluated_conditional_expression</a>(<br> ContextT <span class="keyword">const</span> &amp;ctx, TokenT <span class="keyword">const</span>&amp; directive, <br> ContainerT <span class="keyword">const</span>&amp; expression, <span class="keyword">bool</span> expression_value);<br> - <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT&gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#skipped_token">skipped_token</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> TokenT <span class="keyword">const</span>&amp; token);<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT&gt;<br> TokenT <span class="keyword">const</span>&amp; <a href="class_reference_ctxpolicy.html#generated_token">generated_token</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> TokenT <span class="keyword">const</span>&amp; token);<br><br> <span class="comment">// macro expansion tracing</span><span class="keyword">
-        template</span> &lt;<span class="keyword">
- typename</span> ContextT, <span class="keyword">typename</span> TokenT, <span class="keyword">typename</span> ContainerT,<br> <span class="keyword">typename</span> IteratorT<br> &gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#expanding_function_like_macro">expanding_function_like_macro</a>(<br> ContextT <span class="keyword">const</span> &amp;ctx, TokenT <span class="keyword">const</span> &amp;macrodef, <br> <span class="keyword">std::vector</span>&lt;TokenT&gt; <span class="keyword">const</span> &amp;formal_args, <br> ContainerT <span class="keyword">const</span> &amp;definition, TokenT <span class="keyword">const</span> &amp;macrocall, <br> <span class="keyword">std::vector</span>&lt;ContainerT&gt; <span class="keyword">const</span> &amp;arguments,<br> IteratorT <span class="keyword">const</span> &amp;seqstart, Iterator <span class="keyword">const</span> &amp;seqend);<br> <br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#expanding_object_like_macro">expanding_object_like_macro</a>(<br> ContextT <span class="keyword">const</span> &amp;ctx, TokenT <span class="keyword">const</span> &amp;macro, <br> ContainerT <span class="keyword">const</span> &amp;definition, TokenT <span class="keyword">const</span> &amp;macrocall);<br> <br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#expanded_macro">expanded_macro</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> ContainerT <span class="keyword">const</span> &amp;result);<br> <br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#expanded_macro">rescanned_macro</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> ContainerT <span class="keyword">const</span> &amp;result);<br><br> <span class="comment">// include file tracing functions</span> - <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#opened_include_file">found_include_directive</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> std::string <span class="keyword">const</span> &amp;filename, <span class="keyword">bool</span> include_next);<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT&gt;<br> <span class="keyword">void </span><a href="class_reference_ctxpolicy.html#opened_include_file">opened_include_file</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> std::string <span class="keyword">const</span> &amp;relname, std::string const&amp; absname,<br> <span class="keyword">bool</span> is_system_include); <br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT&gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#returning_from_include_file">returning_from_include_file</a>(ContextT <span class="keyword">const</span> &amp;ctx);<br><br> <span class="comment">// interpretation of #pragma's of the form </span>
-        <span class="comment">// 'wave option[(value)]'</span>
- <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#interpret_pragma">interpret_pragma</a>(ContextT <span class="keyword">const</span> &amp;ctx, ContainerT &amp;pending, <br> <span class="keyword">typename</span> ContextT::token_type <span class="keyword">const</span> &amp;option, <br> ContainerT <span class="keyword">const</span> &amp;values, <br> <span class="keyword">typename</span> ContextT::token_type <span class="keyword">const</span> &amp;pragma_token);<br><br> <span class="comment">// macro definition hooks</span> - <span class="keyword">template</span> &lt;<br> <span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT, <span class="keyword"> - typename</span> ParametersT, <span class="keyword">typename</span> DefinitionT<br> &gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#defined_macro">defined_macro</a>(ContextT <span class="keyword">const</span> &amp;ctx, TokenT <span class="keyword">const</span> &amp;name, <span class="keyword"> - bool</span> is_functionlike, ParametersT <span class="keyword">const</span> &amp;parameters, <br> DefinitionT <span class="keyword">const</span> &amp;definition, <span class="keyword">bool</span> is_predefined);<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT&gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#undefined_macro">undefined_macro</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> TokenT<span class="keyword"> const</span> &amp;name);<br><br> <span class="comment">// #error and #warning directive hooks</span> - <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#found_warning_directive">found_warning_directive</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> ContainerT <span class="keyword">const</span> &amp;message);<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#found_error_directive">found_error_directive</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> ContainerT <span class="keyword">const</span> &amp;message);<br><br> <span class="comment">// #line directive hook</span> - <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#found_line_directive">found_line_directive</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> ContainerT <span class="keyword">const</span> &amp;arguments, <span class="keyword">unsigned int</span> line,<br> std::string <span class="keyword">const</span>&amp; filename);<br> };<br><br>}}} <span class="comment">// namespace boost::wave::context_policies</span></pre>
-<h2><a name="member_functions"></a>Member functions 成员函数</h2>
+<pre><span class="keyword">namespace</span> boost {<br><span class="keyword">namespace</span> wave {<br><span class="keyword">namespace</span> context_policies {<br> <br> <span class="keyword">struct</span> default_preprocessing_hooks {<br><br> <span class="comment">// general hook functions</span><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#found_directive">found_directive</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> TokenT <span class="keyword">const </span>&amp;directive);<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ExceptionT&gt;<br> void <a href="class_reference_ctxpolicy.html#trow_exception">throw_exception</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> ExceptionT <span class="keyword">const</span>&amp; e);<br><br> <span class="comment">// test, whether a given token may be skipped</span><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#may_skip_whitespace">may_skip_whitespace</a> (ContextT <span class="keyword">const</span>&amp; ctx,<br> TokenT &amp;token, <span class="keyword">bool</span> &amp;skipped_newline);<br><br> <span class="comment">// Conditional compilation</span><span class="keyword"><br> template</span> &lt;<br> <span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT, <br> <span class="keyword">typename</span> ContainerT<br> &gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#evaluated_conditional_expression">evaluated_conditional_expression</a>(<br> ContextT <span class="keyword">const</span> &amp;ctx, TokenT <span class="keyword">const</span>&amp; directive, <br> ContainerT <span class="keyword">const</span>&amp; expression, <span class="keyword">bool</span> expression_value);<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT&gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#skipped_token">skipped_token</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> TokenT <span class="keyword">const</span>&amp; token);<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT&gt;<br> TokenT <span class="keyword">const</span>&amp; <a href="class_reference_ctxpolicy.html#generated_token">generated_token</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> TokenT <span class="keyword">const</span>&amp; token);<br><br> <span class="comment">// macro expansion tracing</span><span class="keyword"><br> template</span> &lt;<span class="keyword"><br> typename</span> ContextT, <span class="keyword">typename</span> TokenT, <span class="keyword">typename</span> ContainerT,<br> <span class="keyword">typename</span> IteratorT<br> &gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#expanding_function_like_macro">expanding_function_like_macro</a>(<br> ContextT <span class="keyword">const</span> &amp;ctx, TokenT <span class="keyword">const</span> &amp;macrodef, <br> <span class="keyword">std::vector</span>&lt;TokenT&gt; <span class="keyword">const</span> &amp;formal_args, <br> ContainerT <span class="keyword">const</span> &amp;definition, TokenT <span class="keyword">const</span> &amp;macrocall, <br> <span class="keyword">std::vector</span>&lt;ContainerT&gt; <span class="keyword">const</span> &amp;arguments,<br> IteratorT <span class="keyword">const</span> &amp;seqstart, Iterator <span class="keyword">const</span> &amp;seqend);<br> <br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#expanding_object_like_macro">expanding_object_like_macro</a>(<br> ContextT <span class="keyword">const</span> &amp;ctx, TokenT <span class="keyword">const</span> &amp;macro, <br> ContainerT <span class="keyword">const</span> &amp;definition, TokenT <span class="keyword">const</span> &amp;macrocall);<br> <br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#expanded_macro">expanded_macro</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> ContainerT <span class="keyword">const</span> &amp;result);<br> <br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#expanded_macro">rescanned_macro</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> ContainerT <span class="keyword">const</span> &amp;result);<br><br><br> <span class="comment">// include file tracing functions</span><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#opened_include_file">found_include_directive</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> std::string <span class="keyword">const</span> &amp;filename, <span class="keyword">bool</span> include_next);<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT&gt;<br> <span class="keyword">void </span><a href="class_reference_ctxpolicy.html#opened_include_file">opened_include_file</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> std::string <span class="keyword">const</span> &amp;relname, std::string <span class="keyword">const</span>&amp; absname,<br> <span class="keyword">bool</span> is_system_include); <br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT&gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#returning_from_include_file">returning_from_include_file</a>(ContextT <span class="keyword">const</span> &amp;ctx);<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT&gt;<br> <span class="keyword">void</span> <a href="#detected_include_guard">detected_include_guard</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> std::string <span class="keyword">const</span>&amp; filename,<br> std::string <span class="keyword">const</span>&amp; include_guard);<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT&gt;<br> <span class="keyword">void</span> <a href="#detected_pragma_once">detected_pragma_once</a>(ContextT <span class="keyword">const</span> &amp;ctx,<br> TokenT <span class="keyword">const</span>&amp; pragma_token, <br> std::string <span class="keyword">const</span>&amp; filename);<br><br><br> <span class="comment">// interpretation of #pragma's of the form </span><br> <span class="comment">// 'wave option[(value)]'</span><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#interpret_pragma">interpret_pragma</a>(ContextT <span class="keyword">const</span> &amp;ctx, ContainerT &amp;pending, <br> <span class="keyword">typename</span> ContextT::token_type <span class="keyword">const</span> &amp;option, <br> ContainerT <span class="keyword">const</span> &amp;values, <br> <span class="keyword">typename</span> ContextT::token_type <span class="keyword">const</span> &amp;pragma_token);<br><br><br> <span class="comment">// macro definition hooks</span><br> <span class="keyword">template</span> &lt;<br> <span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT, <span class="keyword"><br> typename</span> ParametersT, <span class="keyword">typename</span> DefinitionT<br> &gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#defined_macro">defined_macro</a>(ContextT <span class="keyword">const</span> &amp;ctx, TokenT <span class="keyword">const</span> &amp;name, <span class="keyword"><br> bool</span> is_functionlike, ParametersT <span class="keyword">const</span> &amp;parameters, <br> DefinitionT <span class="keyword">const</span> &amp;definition, <span class="keyword">bool</span> is_predefined);<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT&gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#undefined_macro">undefined_macro</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> TokenT<span class="keyword"> const</span> &amp;name);<br><br><br> <span class="comment">// #error and #warning directive hooks</span><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#found_warning_directive">found_warning_directive</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> ContainerT <span class="keyword">const</span> &amp;message);<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">bool</span> <a href="class_reference_ctxpolicy.html#found_error_directive">found_error_directive</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> ContainerT <span class="keyword">const</span> &amp;message);<br><br> <span class="comment">// #line directive hook</span><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContainerT&gt;<br> <span class="keyword">void</span> <a href="class_reference_ctxpolicy.html#found_line_directive">found_line_directive</a>(ContextT <span class="keyword">const</span> &amp;ctx, <br> ContainerT <span class="keyword">const</span> &amp;arguments, <span class="keyword">unsigned int</span> line,<br> std::string <span class="keyword">const</span>&amp; filename);<br> };<br><br>}}} <span class="comment">// namespace boost::wave::context_policies</span><span class="keyword"></span></pre><h2><a name="member_functions"></a>Member functions 成员函数</h2>
 <h3>General hook functions 普通钩子函数 </h3>
 <p><a name="found_directive"></a><strong>found_directive</strong></p>
<pre> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT&gt;<br> <span class="keyword">bool</span> found_directive(ContextT <span class="keyword">const</span>&amp; ctx, TokenT <span class="keyword">const </span>&amp;directive);<br>
@@ -270,7 +254,37 @@
<p>The <tt>ctx</tt> parameter provides a reference to the <tt>context_type</tt> used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Boost V1.35.0 release.<br>参数 <tt>ctx</tt> 提供了一个到 <tt>context_type</tt> 的引用,在用户初始化预处理迭 代器时使用。注意,该参数是在 Boost V1.35.0 版本中加入的。 </p>
 </blockquote>
-<h3>Interpretation of #pragma's 对#pragma的解释</h3>
+<p><a id="detected_include_guard" name="detected_include_guard"></a><strong>detected_include_guard</strong></p><pre> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT&gt;<br> <span class="keyword">void</span> detected_include_guard(ContextT <span class="keyword">const</span>&amp; ctx, <br> std::string <span class="keyword">const</span>&amp; filename,<br> std::string <span class="keyword">const</span>&amp; include_guard);<br></pre>
+<blockquote>
+<p>The function <tt>detected_include_guard</tt> is called whenever a<span lang="de">n</span> include file is about to be added to the list of #pragma once +headers as the result of a detected include guard scheme. That means this header
+file will not be opened and parsed again even if it is specified in a later
+<span class="preprocessor">#include</span> directive.&nbsp;<br>当一个包含文 件即将被添加至 #pragma once 头文件列表中作为一个被检测的包含防卫机制的结果 时,函数 <tt>detected_include_guard</tt> 被调用。这意味着该头文件不会被再次 打开和分析,即使它在以后的
+<span class="preprocessor">#include</span> 指令所指定。 </p>
+<p>The <tt>ctx</tt> parameter provides a reference to the <tt>context_type</tt> +used during instantiation of the preprocessing iterators by the user.<br>参 数 <tt>ctx</tt> 给定一个 <tt>context_type</tt>
+的引用,它在预处理迭代器的实例化期间被用户使用。 </p>
+<p>The parameter <tt>filename</tt> contains the file system path of the opened +file (this is relative to the directory of the currently processed file or a +absolute path depending on the paths given as the include search paths).<br>参数 <tt>filename</tt> 含有被打开文件的系统路径(相对于当前被处理 文件的目录,或是一个依赖于包含文件查找路径的绝对路径)。</p>
+<p>The parameter <tt>include_guard</tt> contains the name of the detected
+include guard.<br>参数 <tt>include_guard</tt> 含有被检测包含防卫的名字。 <br></p></blockquote> +<p><a id="detected_pragma_once" name="detected_pragma_once"></a><strong>detected_pragma_once</strong></p><pre> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename </span>TokenT&gt;<br> <span class="keyword">void</span> detected_<span lang="de">p<span class="style1">ragma<span lang="en-us">_</span>once</span></span>(ContextT <span class="keyword">const</span>&amp; ctx,<br><span lang="de"> TokenT <span class="keyword">const</span>&amp; pragma_token,</span><br> std::string <span class="keyword">const</span>&amp; filename);</pre>
+<blockquote>
+<p>The function <tt>detected_pragma_once</tt> is called whenever either a<span lang="de">n</span> include file is about to be added to the list of #pragma once +headers as the result of a detected <span lang="de"><span class="preprocessor">#pragma once</span> directive</span>. That means this header
+file will not be opened and parsed again even if it is specified in a later
+<span class="preprocessor">#include</span> directive.<br>当一个包含文件即将 被添加至 #pragma once 头文件列表中作为一个被检测 <span lang="de"><span class="preprocessor">#pragma once</span></span> 指令的结果时,函数 <tt>detected_pragma_once</tt> 被调用。这意味着该头文件将不会被再次打开和分 析,即使它在以后的
+<span class="preprocessor">#include</span> 指令所指定。 </p>
+<p>The <tt>ctx</tt> parameter provides a reference to the <tt>context_type</tt> +used during instantiation of the preprocessing iterators by the user.<br>参 数 <tt>ctx</tt> 给定一个 <tt>context_type</tt>
+的引用,它在预处理迭代器的实例化期间被用户使用。 </p>
+<p><span lang="de">The parameter pragma_token refers to the token "#pragma"
+triggering this preprocessing hook.<br></span><span lang="de">参数 pragma_token 指向触发这个预处理钩子的记号 "#pragma"。&nbsp;</span></p> +<p>The parameter <tt>filename</tt> contains the file system path of the opened +file (this is relative to the directory of the currently processed file or a
+absolute path depending on the paths given as the include search
+paths).<br>参数 <tt>filename</tt> 含有被打开文件的系统路径(相对于当前被处理 文件的目录,或是一个依赖于包含文件查找路径的绝对路径)。 </p></blockquote><h3>Interpretation of #pragma's 对#pragma的解释</h3>
 <p><strong><a name="interpret_pragma"></a>interpret_pragma</strong></p>
<pre> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ContainerT&gt;<br> bool <a href="class_reference_ctxpolicy.html#interpret_pragma">interpret_pragma</a>(ContextT <span class="keyword">const</span> &amp;ctx, ContainerT &amp;pending, <br> <span class="keyword">typename</span> ContextT::token_type <span class="keyword">const</span> &amp;option, <br> ContainerT <span class="keyword">const</span> &amp;values, <br> <span class="keyword">typename</span> ContextT::token_type<span class="keyword"> const</span> &amp;pragma_token);<br>
 </pre>
@@ -368,12 +382,12 @@
   </tbody>
 </table>
 <hr size="1">
-<p class="copyright">Copyright (c) 2003-2008 Hartmut Kaiser<br>
+<p class="copyright">Copyright (c) 2003-2009 Hartmut Kaiser<br>
   <br>
   <font size="2">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) </font> </p>
-<p class="copyright"><span class="updated">Last updated:
- <!-- #BeginDate format:fcAm1m -->Tuesday, October 14, 2008 18:45<!-- #EndDate -->
-  </span></p>
+<p class="copyright"><span class="updated">Last updated: <!-- #BeginDate format:fcAm1m -->Thursday, September 1<span lang="de">8</span>,
+2009 <span lang="de">09</span>:<span lang="de">10</span><!-- #EndDate -->
+</span></p><p class="copyright"><span lang="de"></span><!-- #EndDate --></p>
 </body></html>
=======================================
--- /trunk/libs/wave/doc/class_reference_filepos.html Sat Nov 29 02:17:08 2008 +++ /trunk/libs/wave/doc/class_reference_filepos.html Tue Dec 8 07:08:28 2009
@@ -3,7 +3,6 @@

<title>The File Position</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <link href="theme/style.css" rel="stylesheet" type="text/css"></head>
-
 <body>
 <table background="theme/bkd2.gif" border="0" cellspacing="2" width="100%">
   <tbody><tr>
@@ -34,11 +33,7 @@
the underlying input stream. This token position contains the corresponding filename, the line number and the column number, where the token was recognized.<br>file position 模板用于表示一个具体的单词在底层输入流中的位 置。这个位置包含有相应的文件名、识别出该单词的行号和列号。</p> <h2><b><a name="header_synopsis"></a>Header <a href="http://svn.boost.org/trac/boost/browser/trunk/boost/wave/util/file_position.hpp";>wave/util/file_position.hpp</a>
-  synopsis 头文件概要</b></h2>
-<pre><span class="keyword">namespace</span> <span class="identifier">boost</span> {<br><span class="keyword">namespace</span> <span class="identifier">wave</span> {<br><span class="keyword">namespace</span> <span class="identifier">util</span> {<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> String = <span class="keyword">std::string</span>&gt;<br> <span class="keyword">class</span> file_position {<br> <br> <span class="keyword">public</span>:<br> <a href="class_reference_filepos.html#constructors">file_position</a>();<br> <span class="keyword">explicit</span> <a href="class_reference_filepos.html#constructors">file_position</a>(String const &amp;file, <br> int line_ = 1, int column_ = 1);<br><br> // accessors<br> String <span class="keyword">const</span> &amp;<a href="class_reference_filepos.html#get_accessors">get_file</a>() <span class="keyword">const</span>;<br> <span class="keyword">int</span> <a href="class_reference_filepos.html#get_accessors">get_line</a>() <span class="keyword">const</span>;<br> <span class="keyword">int</span> <a href="class_reference_filepos.html#get_accessors">get_column</a>() <span class="keyword">const</span>;<br> <br> <span class="keyword">void</span> <a href="class_reference_filepos.html#set_accessors">set_file</a>(String <span class="keyword">const</span> &amp;file);<br> <span class="keyword">void</span> <a href="class_reference_filepos.html#set_accessors">set_line</a>(<span class="keyword">int</span> line);<br> <span class="keyword">void</span> <a href="class_reference_filepos.html#set_accessors">set_column</a>(<span class="keyword">int</span> column);<br> };<br><br>} <span class="comment">// namespace util</span>
-}   <span class="comment">// namespace wave</span>
-}   <span class="comment">// namespace boost</span></pre>
-<h2><a name="template_parameters"></a>Template parameters 模板参数</h2>
+ synopsis 头文件概要</b></h2><pre><span class="keyword">namespace</span> <span class="identifier">boost</span> {<br><span class="keyword">namespace</span> <span class="identifier">wave</span> {<br><span class="keyword">namespace</span> <span class="identifier">util</span> {<br><br> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> String = <span class="keyword">std::string</span>&gt;<br> <span class="keyword">class</span> file_position {<br> <br> <span class="keyword">public</span>:<br> <a href="class_reference_filepos.html#constructors">file_position</a>();<br> <span class="keyword">explicit</span> <a href="class_reference_filepos.html#constructors">file_position</a>(String const &amp;file, <br> <span class="keyword">unsigned int</span> line_ = 1, <span class="keyword">unsigned int </span>column_ = 1);<br><br> // accessors<br> String <span class="keyword">const</span> &amp;<a href="class_reference_filepos.html#get_accessors">get_file</a>() <span class="keyword">const</span>;<br> <span class="keyword">unsigned int</span> <a href="class_reference_filepos.html#get_accessors">get_line</a>() <span class="keyword">const</span>;<br> <span class="keyword">unsigned int</span> <a href="class_reference_filepos.html#get_accessors">get_column</a>() <span class="keyword">const</span>;<br> <br> <span class="keyword">void</span> <a href="class_reference_filepos.html#set_accessors">set_file</a>(String <span class="keyword">const</span> &amp;file);<br> <span class="keyword">void</span> <a href="class_reference_filepos.html#set_accessors">set_line</a>(<span class="keyword">int</span> line);<br> <span class="keyword">void</span> <a href="class_reference_filepos.html#set_accessors">set_column</a>(<span class="keyword">int</span> column);<br> };<br><br>} <span class="comment">// namespace util</span><br>} <span class="comment">// namespace wave</span><br>} <span class="comment">// namespace boost</span></pre><h2><a name="template_parameters"></a>Template parameters 模板参数</h2> <p>The <tt>file_position</tt> template used by the default token type has to be instantiated with one template parameter, which gives the string type to use for storing the file name member of the file position. If this parameter isn't given, it defaults to a <tt>std::string</tt>.
@@ -46,23 +41,17 @@
with a <tt>std::string</tt>.<br>缺省的单词类型所使用的 <tt>file_position</tt> 模板必须以一个模板参数来初始化,该参数给定了用于保存 文件名的字符串类型。如果该参数未给出,则缺省为 <tt>std::string</tt>。请注 意,这个模板参数所给出的类型必须兼容于 <tt>std::string</tt>。</p> <p>You may use your own position types if appropriate, but in any case these should implement the same interface as the <tt>file_position</tt> template described here.<br>如果适合,你可以使用你自己的位置类型,不过在任何 情况下,都应该实现与上述&nbsp; <tt>file_position</tt> 模板相同的接口。 </p>
 <h2><a name="member_functions"></a>Member functions 成员函数</h2>
-<h3><a name="constructors"></a>Constructors 构造函数</h3>
-<pre> <a href="class_reference_filepos.html#constructors">file_position</a>();<br> <span class="keyword">explicit</span> <a href="class_reference_filepos.html#constructors">file_position</a>(String const &amp;file, <br> int line_ = 1, int column_ = 1);<br></pre>
-<blockquote>
+<h3><a name="constructors"></a>Constructors 构造函数</h3><pre> <a href="class_reference_filepos.html#constructors">file_position</a>();<br> <span class="keyword">explicit</span> <a href="class_reference_filepos.html#constructors">file_position</a>(String const &amp;file, <br> <span class="keyword">unsigned int </span>line_ = 1, <span class="keyword">unsigned int </span>column_ = 1);<br></pre><blockquote> <p>The constructors initialize a new instance of a <tt>file_position</tt> in correspondence to the supplied parameters. The parameters default to an empty filename and the line number and column number set to one.<br>这个构造 函数根据给定的参数初始化一个新的 <tt>file_position</tt> 实例。其参数缺省为空 文件名,且行号与列号均设为零。</p>
 </blockquote>
-<p><a name="get_accessors"></a><b>get_file</b>, <b>get_line</b>, <b>get_column</b></p> -<pre> String <span class="keyword">const</span> &amp;<a href="class_reference_filepos.html#get_accessors">get_file</a>() <span class="keyword">const</span>;<br> <span class="keyword">int</span> <a href="class_reference_filepos.html#get_accessors">get_line</a>() <span class="keyword">const</span>;<br> <span class="keyword">int</span> <a href="class_reference_filepos.html#get_accessors">get_column</a>() <span class="keyword">const</span>;<br></pre>
-<blockquote>
+<p><a name="get_accessors"></a><b>get_file</b>, <b>get_line</b>, <b>get_column</b></p><pre> String <span class="keyword">const</span> &amp;<a href="class_reference_filepos.html#get_accessors">get_file</a>() <span class="keyword">const</span>;<br> <span class="keyword">unsigned int</span> <a href="class_reference_filepos.html#get_accessors">get_line</a>() <span class="keyword">const</span>;<br> <span class="keyword">unsigned int</span> <a href="class_reference_filepos.html#get_accessors">get_column</a>() <span class="keyword">const</span>;<br></pre><blockquote> <p>The <tt>get_...</tt> functions are used to access the current values of the file position members: the filename (<tt>get_file</tt>), the line number (<tt>get_line</tt>) and the column number (<tt>get_column</tt>).<br><tt>get_...</tt> 函数用 于访问文件位置各个成员的当前值:文件名(<tt>get_file</tt>),行号 (<tt>get_line</tt>)和列号(<tt>get_column</tt>)。</p>
 </blockquote>
-<p><a name="set_accessors"></a><b>set_file</b>, <b>set_line</b>, <b>set_column</b></p> -<pre> <span class="keyword">void</span> <a href="class_reference_filepos.html#set_accessors">set_file</a>(String <span class="keyword">const</span> &amp;file);<br> <span class="keyword">void</span> <a href="class_reference_filepos.html#set_accessors">set_line</a>(<span class="keyword">int</span> line);<br> <span class="keyword">void</span> <a href="class_reference_filepos.html#set_accessors">set_column</a>(<span class="keyword">int</span> column);<br></pre>
-<blockquote>
+<p><a name="set_accessors"></a><b>set_file</b>, <b>set_line</b>, <b>set_column</b></p><pre> <span class="keyword">void</span> <a href="class_reference_filepos.html#set_accessors">set_file</a>(String <span class="keyword">const</span> &amp;file);<br> <span class="keyword">void</span> <a href="class_reference_filepos.html#set_accessors">set_line</a>(<span class="keyword">unsigned int</span> line);<br> <span class="keyword">void</span> <a href="class_reference_filepos.html#set_accessors">set_column</a>(<span class="keyword">unsigned int</span> column);<br></pre><blockquote> <p>The <tt>set_...</tt> functions are used to set new values to the file position members: the filename (<tt>set_file</tt>), the line number (<tt>set_line</tt>) and the column number (<tt>set_column</tt>).<br><tt>set_...</tt> 函数用 于为文件位置的各个成员设置新值:文件名(<tt>set_file</tt>),行号 (<tt>set_line</tt>)和列号(<tt>set_column</tt>)。</p>
@@ -76,12 +65,10 @@
   </tr>
 </tbody></table>
 <hr size="1">
-<p class="copyright">Copyright (c) 2003-2008 Hartmut Kaiser<br>
+<p class="copyright">Copyright (c) 2003-2009 Hartmut Kaiser<br>
   <br>
 <font size="2">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) </font> </p>
-<p class="copyright"><span class="updated">Last updated:
- <!-- #BeginDate format:fcAm1m -->Sunday, October 12, 2008 20:14<!-- #EndDate -->
-</span></p>
+<p class="copyright"><span class="updated">Last updated: <!-- #BeginDate format:fcAm1m -->Saturday, September 18, 2009 15:14<!-- #EndDate --> </span></p><p class="copyright"></p>
 </body></html>
=======================================
--- /trunk/libs/wave/doc/wave_driver.html       Sat Nov 29 02:17:08 2008
+++ /trunk/libs/wave/doc/wave_driver.html       Tue Dec  8 07:08:28 2009
@@ -26,8 +26,8 @@
on top of any other C++ compiler. It outputs the textual representation of the preprocessed tokens generated from a given input file. This driver program has the following command line syntax:<br>在 <tt>Wave</tt> 库中实现了一个驱动 器程序,它采用了本库几乎所有的功能。它可以被用作在任意C++编译器之上执行的一 个预处理器。它输出从给定的输入文件生成的预处理单词的文字表示。这个驱动器程序 具有以下命令行语法:</p> -<pre>Usage: wave [options] [@config-file(s)] file:<br> <br> Options allowed on the command line only:<br> -h [--help]: print out program usage (this message)<br> -v [--version]: print the version number<br> -c [--copyright]: print out the copyright statement<br> --config-file filepath: specify a config file (alternatively: @filepath)<br> <br> Options allowed additionally in a config file:<br> -o [--output] path: specify a file [path] to use for output instead of <br> stdout or disable output [-]<br> -E [ --autooutput ]: output goes into a file named &lt;input_basename&gt;.i<br> -I [--include] path: specify an additional include directory<br> -S [--sysinclude] syspath: specify an additional system include directory<br> -F [--forceinclude] file: force inclusion of the given file<br> -D [--define] macro[=[value]]: specify a macro to define<br> -P [--predefine] macro[=[value]]: specify a macro to predefine<br> -U [--undefine] macro: specify a macro to undefine<br> -u [--undefineall]: undefine all macrodefinitions<br> -n [--nesting] depth: specify a new maximal include nesting depth<br> <br> Extended options (allowed everywhere)<br> -t [--traceto] arg: output trace info to a file [arg] or to stderr [-]<br> --timer: output overall elapsed computing time<br> --long_long: enable long long support if C++ mode<br> --variadics: enable variadics and placemarkers in C++ mode<br> --c99: enable C99 mode (implies variadics and placemarkers)<br> -l [ --listincludes ] arg: list included file to a file [arg] or to stdout [-]<br> -m [ --macronames ] arg: list names of all defined macros to a file [arg] or <br> to stdout [-]<br> -p [ --preserve ] arg (=0): preserve whitespace<br> 0: no whitespace is preserved (default),<br> 1: comments are preserved,<br> 2: all whitespace is preserved<br> -L [ --line ] arg (=1): control the generation of #line directives<br> 0: no #line directives are generated<br> 1: #line directives will be emitted (default)<br> -x [ --extended ]: enable the #pragma wave system() directive<br> -G [ --noguard ]: disable include guard detection<br> -s [ --state ] arg: load and save state information from/to the given<br> file [arg] or 'wave.state' [-] (interactive mode<br> only)<br></pre> -<p dir="ltr">The possible options are straightforward and self explanatory. The +<pre>Usage: wave [options] [@config-file(s)] file:<br> <br> Options allowed on the command line only:<br> -h [--help]: print out program usage (this message)<br> -v [--version]: print the version number<br> -c [--copyright]: print out the copyright statement<br> --config-file filepath: specify a config file (alternatively: @filepath)<br> <br> Options allowed additionally in a config file:<br> -o [--output] path: specify a file [path] to use for output instead of <br> stdout or disable output [-]<br> -E [ --autooutput ]: output goes into a file named &lt;input_basename&gt;.i<br> -I [--include] path: specify an additional include directory<br> -S [--sysinclude] syspath: specify an additional system include directory<br> -F [--forceinclude] file: force inclusion of the given file<br> -D [--define] macro[=[value]]: specify a macro to define<br> -P [--predefine] macro[=[value]]: specify a macro to predefine<br> -U [--undefine] macro: specify a macro to undefine<br> -u [--undefineall]: undefine all macrodefinitions<br> -n [--nesting] depth: specify a new maximal include nesting depth<br> <br> Extended options (allowed everywhere)<br> -t [--traceto] arg: output trace info to a file [arg] or to stderr [-]<br> --timer: output overall elapsed computing time<br> --long_long: enable long long support if C++ mode<br> --variadics: enable variadics and placemarkers in C++ mode<br> --c99: enable C99 mode (implies variadics and placemarkers)<br> -l [ --listincludes ] arg: list included file to a file [arg] or to stdout [-]<br> -m [ --macronames ] arg: list names of all defined macros to a file [arg] or <br> to stdout [-]<br> -c [ --macrocounts ] arg list macro invocation counts to a file [arg] or to<br> stdout [-]<br> -p [ --preserve ] arg (=0): preserve whitespace<br> 0: no whitespace is preserved (default),<br> 1: comments are preserved,<br> 2: all whitespace is preserved<br> -L [ --line ] arg (=1): control the generation of #line directives<br> 0: no #line directives are generated<br> 1: #line directives will be emitted (default)<br> -x [ --extended ]: enable the #pragma wave system() directive<br> -G [ --noguard ]: disable include guard detection<br> -g [ --listguards ]: list names of files flagged as 'include once' to a<br> file [arg] or to stdout [-]<br> -s [ --state ] arg: load and save state information from/to the given<br> file [arg] or 'wave.state' [-] (interactive mode<br> only)</pre> +<p dir="ltr">he possible options are straightforward and self explanatory. The following describes some of these options in more detail. Please note, that the extended options (--c99 and --variadics) are available only, if the driver was compiled with the constant <tt>WAVE_SUPPORT_VARIADICS_PLACEMARKERS</tt>
@@ -172,7 +172,13 @@
 definition. The path specifies the filename to use for the output of
the generated macro list. If the filename given equals to <tt>'-'</tt> (without the quotes), the macro list is put into the standard output stream (stdout).<br>启用对所有被定义宏的输出。包括宏名、参数名(如果该宏为函 数宏)及其定义。path 指定了输出所生成的宏列表的文件名。如果给定的文件名为 <tt>'-'</tt>(不带引号),则宏列表被输出至标准输出流(stdout)。</p>
 </blockquote>
-<p dir="ltr">-p [--preserve] arg </p>
+
+<p dir="ltr">-c [--macrocounts] path</p>
+<blockquote>
+<p dir="ltr">Enable the output of all macro invocation counts. The path specifies +the filename to use for the output of the generated list. If the filename given
+equals to <tt>'-'</tt> (without the quotes), the macro list is put into the
+standard output stream (stdout).<br>打开所有宏调用计数的输出。path 给定一个 文件名用于生成列表的输出。如果该文件给定为 <tt>'-'</tt> (不带引号),则宏列表 被输出至标准输出流(stdout)。</p></blockquote><p dir="ltr">-p [--preserve] arg </p>
 <blockquote>
   <p dir="ltr">Preserve the whitespace from the input
 stream not located inside of macro definitions. The argument defines
@@ -201,7 +207,14 @@
 processing of included files. For more information about automatic
include guard detection please refer to <a href="class_reference_context.html">The Context Object</a> class reference.<br>该选项在处理包含文件时禁止 Wave 库正常执行的自动包含防卫检测。 有关自动包含防卫检测的更多信息,请参考 <a href="class_reference_context.html">上下文对象</a> 的类参考。 </p>
 </blockquote>
-<p dir="ltr">-s [--state]</p>
+<p dir="ltr">-g [--listguards] arg </p>
+<blockquote>
+<p dir="ltr">This option lists all found include files which either contain a +<span class="preprocessor">#pragma once</span> or contain an include guard into
+the given file. If the filename given equals to <tt>'-'</tt> (without the
+quotes), the guards log is put into the standard output stream (stdout). For +more information about automatic include guard detection please refer to <a href="class_reference_context.html">The Context Object</a> class reference.&nbsp;<br>这个选项列出所有被找到的包含文件,这些文件包含 +<span class="preprocessor">#pragma once</span> 或是其中含有一个包含防卫。如 果该文件名给定为 <tt>'-'</tt> (不带引号),则防卫日志被输出至标准输出流 (stdout)。有关自动包含防卫检测的更多信息,请参考 <a href="class_reference_context.html">上下文对象</a> 类参考。 </p></blockquote><p dir="ltr">-s [--state]</p>
 <blockquote>
   <p dir="ltr">This option tries instructs the <tt>Wave</tt>
 tool to load the serialized information from the file given as the
@@ -249,14 +262,9 @@
<td width="30"><a href="tracing_facility.html"><img src="theme/r_arr.gif" border="0"></a></td>
   </tr>
 </tbody></table>
-<hr size="1">
-<p class="copyright">Copyright (c) 2003-2008 Hartmut Kaiser<br>
-  <br>
-<font size="2">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) </font> </p>
-<span class="updated"></span>
-<p class="copyright"><span class="updated">Last updated:
- <!-- #BeginDate format:fcAm1m -->Tuesday, July 29, 2008 20:40<!-- #EndDate --> +<hr size="1"><p class="copyright">Copyright (c) 2003-2009 Hartmut Kaiser<br><br><font size="2">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) </font></p><span class="updated"></span> +<p class="copyright"><span class="updated">Last updated: <!-- #BeginDate format:fcAm1m -->Thursday, September 17, 2009 12:40<!-- #EndDate --> </span></p><p class="copyright"><span class="updated">
 </span></p>
 </body></html>

Other related posts:

  • » [boost-doc-zh] r353 committed - 升级至1.41.0,第五批,libs/目录下u-x子目录 - boost-doc-zh