Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r85240 - in trunk: boost/circular_buffer libs/circular_buffer/doc
From: antoshkka_at_[hidden]
Date: 2013-08-08 11:32:11


Author: apolukhin
Date: 2013-08-08 11:32:11 EDT (Thu, 08 Aug 2013)
New Revision: 85240
URL: http://svn.boost.org/trac/boost/changeset/85240

Log:
Updated documentaion of the circular_buffer to reflect the rvalue references support (refs #7888) + replaced some tabs with whitespaces and added the boost.root parameter to jamfile.v2

Text files modified:
   trunk/boost/circular_buffer/base.hpp | 116 ++++++++++++----------
   trunk/boost/circular_buffer/space_optimized.hpp | 102 ++++++++++---------
   trunk/libs/circular_buffer/doc/circular_buffer.qbk | 46 +++++++++
   trunk/libs/circular_buffer/doc/jamfile.v2 | 201 ++++++++++++++++++++-------------------
   4 files changed, 263 insertions(+), 202 deletions(-)

Modified: trunk/boost/circular_buffer/base.hpp
==============================================================================
--- trunk/boost/circular_buffer/base.hpp Thu Aug 8 09:22:56 2013 (r85239)
+++ trunk/boost/circular_buffer/base.hpp 2013-08-08 11:32:11 EDT (Thu, 08 Aug 2013) (r85240)
@@ -174,19 +174,17 @@
 
 // Helper types
 
- // A type representing the "best" way to pass the value_type to a method.
- //typedef typename call_traits<value_type>::param_type param_value_type;
+ //! A type representing the "best" way to pass the value_type to a method.
     typedef const value_type& param_value_type;
 
- // A type representing the "best" way to return the value_type from a const method.
- //typedef typename call_traits<value_type>::param_type return_value_type;
-
- // A type representing rvalue from param type.
+ //! A type representing rvalue from param type.
+ //! On compilers without rvalue references support this type is the Boost.Moves type used for emulation.
     typedef BOOST_RV_REF(value_type) rvalue_type;
 
 private:
 
     // TODO: move to Boost.Move
+ /*! \cond */
     template <class ValT>
     static inline typename boost::conditional<
         (boost::is_nothrow_move_constructible<ValT>::value || !boost::is_copy_constructible<ValT>::value)
@@ -199,6 +197,7 @@
>::type move_if_noexcept(ValT& value) BOOST_NOEXCEPT {
         return boost::move(value);
     }
+ /*! \endcond */
 
 // Member variables
 
@@ -654,8 +653,7 @@
         This method can be useful when passing the stored data into a legacy C API as an array.
         \post <code>\&(*this)[0] \< \&(*this)[1] \< ... \< \&(*this)[size() - 1]</code>
         \return A pointer to the beginning of the array or <code>0</code> if empty.
- \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ \throws Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operations in the <i>Throws</i> section do not throw anything.
         \par Iterator Invalidation
@@ -747,8 +745,7 @@
               <code>val_0 == (*this)[0] \&\& val_1 == (*this)[1] \&\& ... \&\& val_m == (*this)[m - 1] \&\& val_r1 ==
               (*this)[m + n - 1] \&\& val_r2 == (*this)[m + n - 2] \&\& ... \&\& val_rn == (*this)[m]</code>
         \param new_begin The new beginning.
- \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ \throws See Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the <code>circular_buffer</code> is full or <code>new_begin</code> points to
              <code>begin()</code> or if the operations in the <i>Throws</i> section do not throw anything.
@@ -886,7 +883,7 @@
         \param new_capacity The new capacity.
         \throws "An allocation error" if memory is exhausted, (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Strong.
         \par Iterator Invalidation
@@ -927,7 +924,7 @@
                     size. (See the <i>Effect</i>.)
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -962,7 +959,7 @@
         \param new_capacity The new capacity.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Strong.
         \par Iterator Invalidation
@@ -1002,7 +999,7 @@
                     size. (See the <i>Effect</i>.)
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1073,7 +1070,7 @@
         \param alloc The allocator.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Complexity
              Linear (in the <code>n</code>).
     */
@@ -1094,7 +1091,7 @@
         \param alloc The allocator.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Complexity
              Linear (in the <code>n</code>).
     */
@@ -1114,7 +1111,7 @@
         \param cb The <code>circular_buffer</code> to be copied.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Complexity
              Linear (in the size of <code>cb</code>).
     */
@@ -1183,7 +1180,7 @@
         \param alloc The allocator.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Complexity
              Linear (in the <code>std::distance(first, last)</code>).
     */
@@ -1210,7 +1207,7 @@
         \param alloc The allocator.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Complexity
              Linear (in <code>std::distance(first, last)</code>; in
              <code>min[capacity, std::distance(first, last)]</code> if the <code>InputIterator</code> is a
@@ -1253,7 +1250,7 @@
         \param cb The <code>circular_buffer</code> to be copied.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Exception Safety
              Strong.
         \par Iterator Invalidation
@@ -1308,7 +1305,7 @@
         \param item The element the <code>circular_buffer</code> will be filled with.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1338,7 +1335,7 @@
         \param item The element the <code>circular_buffer</code> will be filled with.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1370,7 +1367,7 @@
         \param last The end of the range to be copied.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1407,7 +1404,7 @@
         \param last The end of the range to be copied.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1504,7 +1501,7 @@
               <code>0</code>, nothing will be inserted.
         \param item The element to be inserted.
         \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws.
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -1525,7 +1522,7 @@
               <code>0</code>, nothing will be inserted.
         \param item The element to be inserted.
         \throws Whatever <code>T::T(T&&)</code> throws.
- \throws Whatever <code>T::operator = (T&&)</code> throws.
+ Whatever <code>T::operator = (T&&)</code> throws.
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -1545,8 +1542,8 @@
               If the <code>circular_buffer</code> is full, the first element will be removed. If the capacity is
               <code>0</code>, nothing will be inserted.
         \throws Whatever <code>T::T()</code> throws.
- \throws Whatever <code>T::T(T&&)</code> throws.
- \throws Whatever <code>T::operator = (T&&)</code> throws.
+ Whatever <code>T::T(T&&)</code> throws.
+ Whatever <code>T::operator = (T&&)</code> throws.
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -1568,7 +1565,7 @@
               <code>0</code>, nothing will be inserted.
         \param item The element to be inserted.
         \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws.
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -1589,7 +1586,7 @@
               <code>0</code>, nothing will be inserted.
         \param item The element to be inserted.
         \throws Whatever <code>T::T(T&&)</code> throws.
- \throws Whatever <code>T::operator = (T&&)</code> throws.
+ Whatever <code>T::operator = (T&&)</code> throws.
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -1609,8 +1606,8 @@
               If the <code>circular_buffer</code> is full, the last element will be removed. If the capacity is
               <code>0</code>, nothing will be inserted.
         \throws Whatever <code>T::T()</code> throws.
- \throws Whatever <code>T::T(T&&)</code> throws.
- \throws Whatever <code>T::operator = (T&&)</code> throws.
+ Whatever <code>T::T(T&&)</code> throws.
+ Whatever <code>T::operator = (T&&)</code> throws.
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -1691,7 +1688,9 @@
         \return Iterator to the inserted element or <code>begin()</code> if the <code>item</code> is not inserted. (See
                 the <i>Effect</i>.)
         \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws.
+ Exceptions of move_if_noexcept(T&).
+
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -1724,7 +1723,8 @@
         \return Iterator to the inserted element or <code>begin()</code> if the <code>item</code> is not inserted. (See
                 the <i>Effect</i>.)
         \throws Whatever <code>T::T(T&&)</code> throws.
- \throws Whatever <code>T::operator = (T&&)</code> throws.
+ Whatever <code>T::operator = (T&&)</code> throws.
+ Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -1753,12 +1753,12 @@
               <code>circular_buffer</code> is full and the <code>pos</code> points to <code>begin()</code>, then the
               <code>item</code> will not be inserted. If the capacity is <code>0</code>, nothing will be inserted.
         \param pos An iterator specifying the position where the <code>item</code> will be inserted.
- \param item The element to be inserted.
         \return Iterator to the inserted element or <code>begin()</code> if the <code>item</code> is not inserted. (See
                 the <i>Effect</i>.)
         \throws Whatever <code>T::T()</code> throws.
- \throws Whatever <code>T::T(T&&)</code> throws.
- \throws Whatever <code>T::operator = (T&&)</code> throws.
+ Whatever <code>T::T(T&&)</code> throws.
+ Whatever <code>T::operator = (T&&)</code> throws.
+ Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -1791,7 +1791,8 @@
         \param n The number of <code>item</code>s the to be inserted.
         \param item The element whose copies will be inserted.
         \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws.
+ Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operations in the <i>Throws</i> section do not throw anything.
         \par Iterator Invalidation
@@ -1842,8 +1843,10 @@
         \param pos An iterator specifying the position where the range will be inserted.
         \param first The beginning of the range to be inserted.
         \param last The end of the range to be inserted.
- \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ \throws Whatever <code>T::T(const T&)</code> throws if the <code>InputIterator</code> is not a move iterator.
+ Whatever <code>T::operator = (const T&)</code> throws if the <code>InputIterator</code> is not a move iterator.
+ Whatever <code>T::T(T&&)</code> throws if the <code>InputIterator</code> is a move iterator.
+ Whatever <code>T::operator = (T&&)</code> throws if the <code>InputIterator</code> is a move iterator.
         \par Exception Safety
              Basic; no-throw if the operations in the <i>Throws</i> section do not throw anything.
         \par Iterator Invalidation
@@ -1941,7 +1944,8 @@
         \return Iterator to the inserted element or <code>end()</code> if the <code>item</code> is not inserted. (See
                 the <i>Effect</i>.)
         \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws.
+ Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operations in the <i>Throws</i> section do not throw anything.
         \par Iterator Invalidation
@@ -1973,7 +1977,8 @@
         \return Iterator to the inserted element or <code>end()</code> if the <code>item</code> is not inserted. (See
                 the <i>Effect</i>.)
         \throws Whatever <code>T::T(T&&)</code> throws.
- \throws Whatever <code>T::operator = (T&&)</code> throws.
+ Whatever <code>T::operator = (T&&)</code> throws.
+ Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operations in the <i>Throws</i> section do not throw anything.
         \par Iterator Invalidation
@@ -2001,12 +2006,12 @@
               <code>circular_buffer</code> is full and the <code>pos</code> points to <code>end()</code>, then the
               <code>item</code> will not be inserted. If the capacity is <code>0</code>, nothing will be inserted.
         \param pos An iterator specifying the position before which the <code>item</code> will be inserted.
- \param item The element to be inserted.
         \return Iterator to the inserted element or <code>end()</code> if the <code>item</code> is not inserted. (See
                 the <i>Effect</i>.)
         \throws Whatever <code>T::T()</code> throws.
- \throws Whatever <code>T::T(T&&)</code> throws.
- \throws Whatever <code>T::operator = (T&&)</code> throws.
+ Whatever <code>T::T(T&&)</code> throws.
+ Whatever <code>T::operator = (T&&)</code> throws.
+ Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operations in the <i>Throws</i> section do not throw anything.
         \par Iterator Invalidation
@@ -2038,7 +2043,8 @@
         \param n The number of <code>item</code>s the to be inserted.
         \param item The element whose copies will be inserted.
         \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws.
+ Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operations in the <i>Throws</i> section do not throw anything.
         \par Iterator Invalidation
@@ -2081,8 +2087,10 @@
         \param pos An iterator specifying the position where the range will be inserted.
         \param first The beginning of the range to be inserted.
         \param last The end of the range to be inserted.
- \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ \throws Whatever <code>T::T(const T&)</code> throws if the <code>InputIterator</code> is not a move iterator.
+ Whatever <code>T::operator = (const T&)</code> throws if the <code>InputIterator</code> is not a move iterator.
+ Whatever <code>T::T(T&&)</code> throws if the <code>InputIterator</code> is a move iterator.
+ Whatever <code>T::operator = (T&&)</code> throws if the <code>InputIterator</code> is a move iterator.
         \par Exception Safety
              Basic; no-throw if the operations in the <i>Throws</i> section do not throw anything.
         \par Iterator Invalidation
@@ -2127,7 +2135,7 @@
         \param pos An iterator pointing at the element to be removed.
         \return Iterator to the first element remaining beyond the removed element or <code>end()</code> if no such
                 element exists.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ \throws Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -2165,7 +2173,7 @@
         \param last The end of the range to be removed.
         \return Iterator to the first element remaining beyond the removed elements or <code>end()</code> if no such
                 element exists.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ \throws Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -2201,7 +2209,7 @@
         \param pos An iterator pointing at the element to be removed.
         \return Iterator to the first element remaining in front of the removed element or <code>begin()</code> if no
                 such element exists.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ \throws Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -2242,7 +2250,7 @@
         \param last The end of the range to be removed.
         \return Iterator to the first element remaining in front of the removed elements or <code>begin()</code> if no
                 such element exists.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ \throws Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -2285,7 +2293,7 @@
         \pre <code>n \<= size()</code>
         \post The <code>n</code> elements at the beginning of the <code>circular_buffer</code> will be removed.
         \param n The number of elements to be removed.
- \throws Whatever <code>T::operator = (const T&)</code> throws. (Does not throw anything in case of scalars.)
+ \throws Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything. (I.e. no throw in
              case of scalars.)
@@ -2317,7 +2325,7 @@
         \pre <code>n \<= size()</code>
         \post The <code>n</code> elements at the end of the <code>circular_buffer</code> will be removed.
         \param n The number of elements to be removed.
- \throws Whatever <code>T::operator = (const T&)</code> throws. (Does not throw anything in case of scalars.)
+ \throws Exceptions of move_if_noexcept(T&).
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything. (I.e. no throw in
              case of scalars.)

Modified: trunk/boost/circular_buffer/space_optimized.hpp
==============================================================================
--- trunk/boost/circular_buffer/space_optimized.hpp Thu Aug 8 09:22:56 2013 (r85239)
+++ trunk/boost/circular_buffer/space_optimized.hpp 2013-08-08 11:32:11 EDT (Thu, 08 Aug 2013) (r85240)
@@ -22,7 +22,9 @@
 
 /*!
     \class circular_buffer_space_optimized
- \brief Space optimized circular buffer container adaptor.
+ \brief Space optimized circular buffer container adaptor.
+ <code>T</code> must be a copyable class or must have an noexcept move constructor
+ and move assignment operator.
 */
 template <class T, class Alloc>
 class circular_buffer_space_optimized :
@@ -203,7 +205,7 @@
         \param capacity_ctrl The new capacity controller.
         \throws "An allocation error" if memory is exhausted, (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Strong.
         \par Iterator Invalidation
@@ -245,7 +247,7 @@
                     the requested size. (See the <i>Effect</i>.)
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -280,7 +282,7 @@
         \param capacity_ctrl The new capacity controller.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Strong.
         \par Iterator Invalidation
@@ -316,7 +318,7 @@
                     the requested size. (See the <i>Effect</i>.)
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -405,7 +407,7 @@
         \param alloc The allocator.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Complexity
              Linear (in the <code>n</code>).
     */
@@ -447,7 +449,7 @@
         \param cb The <code>circular_buffer_space_optimized</code> to be copied.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Complexity
              Linear (in the size of <code>cb</code>).
     */
@@ -486,7 +488,8 @@
         \param alloc The allocator.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept
+ and <code>InputIterator</code> is a move iterator.
         \par Complexity
              Linear (in the <code>std::distance(first, last)</code>).
     */
@@ -517,7 +520,7 @@
         \param alloc The allocator.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Complexity
              Linear (in <code>std::distance(first, last)</code>; in
              <code>min[capacity_ctrl.%capacity(), std::distance(first, last)]</code> if the <code>InputIterator</code>
@@ -621,7 +624,7 @@
         \param item The element the <code>circular_buffer_space_optimized</code> will be filled with.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -654,7 +657,7 @@
         \param item The element the <code>circular_buffer_space_optimized</code> will be filled with.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -688,7 +691,8 @@
         \param last The end of the range to be copied.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept and
+ <code>InputIterator</code> is a move iterator.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -728,7 +732,8 @@
         \param last The end of the range to be copied.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept and
+ <code>InputIterator</code> is a move iterator.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -766,8 +771,8 @@
              otherwise an assertion will report an error if such invalidated iterator is used.)
         \par Complexity
              Constant (in the size of the <code>circular_buffer_space_optimized</code>).
- \sa <code>\link swap(circular_buffer<T, Alloc>&, circular_buffer<T, Alloc>&)
- swap(circular_buffer_space_optimized<T, Alloc>&, circular_buffer_space_optimized<T, Alloc>&)\endlink</code>
+ \sa <code>swap(circular_buffer<T, Alloc>&, circular_buffer<T, Alloc>&)</code>,
+ <code>swap(circular_buffer_space_optimized<T, Alloc>&, circular_buffer_space_optimized<T, Alloc>&)</code>
 
 
     */
@@ -787,7 +792,7 @@
         \param item The element to be inserted.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -812,7 +817,6 @@
         \param item The element to be inserted.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(T&&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -836,8 +840,8 @@
               The amount of allocated memory in the internal buffer may be predictively increased.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T()</code> throws.
- \throws Whatever <code>T::T(T&&)</code> throws.
+ Whatever <code>T::T()</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -862,7 +866,7 @@
         \param item The element to be inserted.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -887,7 +891,7 @@
         \param item The element to be inserted.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(T&&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -909,11 +913,10 @@
               If the <code>circular_buffer_space_optimized</code> is full, the last element will be removed. If the
               capacity is <code>0</code>, nothing will be inserted.<br><br>
               The amount of allocated memory in the internal buffer may be predictively increased.
- \param item The element to be inserted.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T()</code> throws.
- \throws Whatever <code>T::T(T&&)</code> throws.
+ Whatever <code>T::T()</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -989,8 +992,8 @@
                 the <i>Effect</i>.)
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1028,8 +1031,7 @@
                 the <i>Effect</i>.)
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(T&&)</code> throws.
- \throws Whatever <code>T::operator = (T&&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1066,9 +1068,8 @@
                 the <i>Effect</i>.)
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T()</code> throws.
- \throws Whatever <code>T::T(T&&)</code> throws.
- \throws Whatever <code>T::operator = (T&&)</code> throws.
+ Whatever <code>T::T()</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1104,8 +1105,8 @@
         \param item The element whose copies will be inserted.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1152,8 +1153,7 @@
         \param last The end of the range to be inserted.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1203,8 +1203,8 @@
                 the <i>Effect</i>.)
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1242,8 +1242,7 @@
                 the <i>Effect</i>.)
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(T&&)</code> throws.
- \throws Whatever <code>T::operator = (T&&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1280,9 +1279,8 @@
                 the <i>Effect</i>.)
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T()</code> throws.
- \throws Whatever <code>T::T(T&&)</code> throws.
- \throws Whatever <code>T::operator = (T&&)</code> throws.
+ Whatever <code>T::T()</code> throws.
+ Whatever <code>T::T(const T&)</code> throws or nothing if <code>T::T(T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1318,8 +1316,8 @@
         \param item The element whose copies will be inserted.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1367,8 +1365,8 @@
         \param last The end of the range to be inserted.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::T(const T&)</code> throws.
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::T(const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1413,7 +1411,8 @@
                 element exists.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws or
+ nothing if <code>T::operator = (T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1443,7 +1442,8 @@
                 element exists.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws or
+ nothing if <code>T::operator = (T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1472,7 +1472,8 @@
                 such element exists.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws or
+ nothing if <code>T::operator = (T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation
@@ -1504,7 +1505,8 @@
                 such element exists.
         \throws "An allocation error" if memory is exhausted (<code>std::bad_alloc</code> if the standard allocator is
                 used).
- \throws Whatever <code>T::operator = (const T&)</code> throws.
+ Whatever <code>T::operator = (const T&)</code> throws or
+ nothing if <code>T::operator = (T&&)</code> is noexcept.
         \par Exception Safety
              Basic.
         \par Iterator Invalidation

Modified: trunk/libs/circular_buffer/doc/circular_buffer.qbk
==============================================================================
--- trunk/libs/circular_buffer/doc/circular_buffer.qbk Thu Aug 8 09:22:56 2013 (r85239)
+++ trunk/libs/circular_buffer/doc/circular_buffer.qbk 2013-08-08 11:32:11 EDT (Thu, 08 Aug 2013) (r85240)
@@ -267,6 +267,51 @@
 The rules when the iterator is still valid can be inferred from the code in
 [@../../libs/circular_buffer/test/soft_iterator_invalidation.cpp soft_iterator_invalidation.cpp].
 
+
+[h3 Move emulation and rvalues]
+
+Since Boost 1.54.0 support for move semantics was implemented using
+the [@boost:libs/move/doc/html/move.html Boost.Move] library.
+If rvalue references are available __cb will use them, but if not it uses a close,
+but imperfect emulation. On such compilers:
+
+* Non-copyable objects can be stored in the containers.
+ They can be constructed in place using `emplace`, or if they support
+ Boost.Move, moved into place.
+* The containers themselves are not movable.
+* Argument forwarding is not perfect.
+
+__cb will use rvalues and move emulations for value types only if move constructor of the value type does not throw
+or if the value type has no copy constructor.
+
+Some methods won't use move constructor for the value type at all, if the constructor throws. This is
+required for data consistency and avoidance of situations, when aftrer an exception __cb
+contains moved away objects along with the good ones.
+
+See documentation for [@boost:libs/type_traits/doc/html/boost_typetraits/reference/is_copy_constructible.html `is_copy_constructible`] and [@boost:libs/type_traits/doc/html/boost_typetraits/reference/is_nothrow_move_constructible.html `is_nothrow_move_constructible`] type triats.
+There you'll find information about how to make constructor of class noexcept and how to make a non-copyable
+class in C++03 and C++98.
+
+Performance of __cb will *greatly improve* if value type has noexcept move constructor and noexcept move assignment.
+
+[h3 Exceptions of move_if_noexcept(T&)]
+
+Reference documentation of the __cb contains notes like "Throws: See Exceptions of `move_if_noexcept(T&)`".
+That note means the following: `move_if_noexcept(T& value)` does not throws exceptions at all, but it returns
+`value` as rvalue reference only if class `T` have noexcept move constructor or if it has no copy constructor.
+Otherwise `move_if_noexcept(T& value)` returns `value` as const reference.
+
+This leads us to the following situation:
+
+* If `value` has a noexcept move constructor, then no exceptions will be thrown at all.
+* If `value` has a throwing move constructor and some copy constructor, then method may throw exceptions
+of copy constructor.
+* If `value` has a throwing move constructor and no copy constructor, then method may throw exceptions
+of move constructor.
+
+`move_if_noexcept(T&)` uses [@boost:libs/move/doc/html/move.html Boost.Move], [@boost:libs/type_traits/doc/html/boost_typetraits/reference/is_copy_constructible.html `is_copy_constructible`] and [@boost:libs/type_traits/doc/html/boost_typetraits/reference/is_nothrow_move_constructible.html `is_nothrow_move_constructible`] type triats.
+
+
 [h3 Caveats]
 
 The __cb should not be used for storing pointers to dynamically allocated objects.
@@ -492,6 +537,7 @@
 [h4 Boost 1.55]
 
 * Documentation refactored by Paul A. Bristow using Quickbook, Doxygen and Autoindexing.
+* Rvalue references emulation added by Antony Polukhin using Boost.Move.
 
 [h4 Boost 1.42]
 

Modified: trunk/libs/circular_buffer/doc/jamfile.v2
==============================================================================
--- trunk/libs/circular_buffer/doc/jamfile.v2 Thu Aug 8 09:22:56 2013 (r85239)
+++ trunk/libs/circular_buffer/doc/jamfile.v2 2013-08-08 11:32:11 EDT (Thu, 08 Aug 2013) (r85240)
@@ -34,42 +34,45 @@
       
    :
    # Pass some setting parameters to Doxygen.
- <doxygen:param>WARNINGS=YES # Default NO, but useful to see warnings, especially in a logfile.
- # It is also wise to to set a warnings logfile like this:
- <doxygen:param>WARN_LOGFILE=AutoDoxywarnings.log # This may not be empty (usually not a good sign!), depending on options chosen.
- # Much better to send message to a logfile than the default stderr.
- # and make sure that there are no Doxygen errors or significant warnings in the log file.
- <doxygen:param>RECURSIVE=NO # Search recursively down .hpp and .cpp subdirectories.
+ <doxygen:param>WARNINGS=YES # Default NO, but useful to see warnings, especially in a logfile.
+ # It is also wise to to set a warnings logfile like this:
+ <doxygen:param>WARN_LOGFILE=AutoDoxywarnings.log # This may not be empty (usually not a good sign!), depending on options chosen.
+ # Much better to send message to a logfile than the default stderr.
+ # and make sure that there are no Doxygen errors or significant warnings in the log file.
+ <doxygen:param>RECURSIVE=NO # Search recursively down .hpp and .cpp subdirectories.
       <doxygen:param>EXTRACT_ALL=NO
- <doxygen:param>EXTRACT_PRIVATE=NO # NO means do not extract info about private member functions and data.
- <doxygen:param>HIDE_UNDOC_MEMBERS=YES # Only show members that have some documentation like \param, \return ...
- <doxygen:param>MACRO_EXPANSION=YES # YES will expand all macro names in the source code (default = NO).
- <doxygen:param>EXPAND_ONLY_PREDEF=YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
- # then the macro expansion is limited to the macros specified with the PREDEFINED and EXPAND_AS_DEFINED tags.
- # If EXPAND_ONLY_PREDEF tag can be used to specify a list of macro names that should be expanded (as defined).
- # The PREDEFINED tag can be used to specify one or more macro names that are defined
- # before the preprocessor is started (similar to the -D option of gcc).
- # The argument of the tag is a list of macros of the form:
- # name or name=definition (no spaces).
- # If the definition and the "=" are omitted, "=1" is assumed.
- # To prevent a macro definition from being undefined via #undef or
- # recursively expanded use the := operator instead of the = operator.
- # See http://www.stack.nl/~dimitri/doxygen/config.html#cfg_predefined.
- # static char *malloc BOOST_PREVENT_MACRO_SUBSTITUTION(const size_type bytes);
- # will not produce a helpful Doxygen output, so
- # replace some with more helpful text, or none, for example:
- <doxygen:param>"PREDEFINED= \\
- \"BOOST_PREVENT_MACRO_SUBSTITUTION\" \\
- \"BOOST_STATIC_CONSTANT(T,V)=static x const y\" \\
- \"BOOST_UNITS_AUTO_STATIC_CONSTANT(a,b)=static const auto a = b\" \\
- \"BOOST_DEDUCED_TYPENAME=typename\" \\
- \"BOOST_CONSTEXPR=constexpr\" \\
- \"BOOST_UNITS_TYPEOF(a)=typeof(a)\" \\
- \"BOOST_UNITS_HAS_TYPEOF=1\" \\
- \"BOOST_MPL_ASSERT(expr)=\" \\
- \"BOOST_ASSERT(expr)=\" \\
- \"ASSERT(x)=assert(x)\" \\
- \"__cplusplus \""
+ <doxygen:param>EXTRACT_PRIVATE=NO # NO means do not extract info about private member functions and data.
+ <doxygen:param>HIDE_UNDOC_MEMBERS=YES # Only show members that have some documentation like \param, \return ...
+ <doxygen:param>MACRO_EXPANSION=YES # YES will expand all macro names in the source code (default = NO).
+ <doxygen:param>EXPAND_ONLY_PREDEF=YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+ # then the macro expansion is limited to the macros specified with the PREDEFINED and EXPAND_AS_DEFINED tags.
+ # If EXPAND_ONLY_PREDEF tag can be used to specify a list of macro names that should be expanded (as defined).
+ # The PREDEFINED tag can be used to specify one or more macro names that are defined
+ # before the preprocessor is started (similar to the -D option of gcc).
+ # The argument of the tag is a list of macros of the form:
+ # name or name=definition (no spaces).
+ # If the definition and the "=" are omitted, "=1" is assumed.
+ # To prevent a macro definition from being undefined via #undef or
+ # recursively expanded use the := operator instead of the = operator.
+ # See http://www.stack.nl/~dimitri/doxygen/config.html#cfg_predefined.
+ # static char *malloc BOOST_PREVENT_MACRO_SUBSTITUTION(const size_type bytes);
+ # will not produce a helpful Doxygen output, so
+ # replace some with more helpful text, or none, for example:
+ <doxygen:param>"PREDEFINED= \\
+ \"BOOST_PREVENT_MACRO_SUBSTITUTION\" \\
+ \"BOOST_STATIC_CONSTANT(T,V)=static x const y\" \\
+ \"BOOST_UNITS_AUTO_STATIC_CONSTANT(a,b)=static const auto a = b\" \\
+ \"BOOST_DEDUCED_TYPENAME=typename\" \\
+ \"BOOST_CONSTEXPR=constexpr\" \\
+ \"BOOST_CONTAINER_NOEXCEPT=noexcept\" \\
+ \"BOOST_CONTAINER_NOEXCEPT_IF(T)=noexcept(T)\" \\
+ \"BOOST_UNITS_TYPEOF(a)=typeof(a)\" \\
+ \"BOOST_UNITS_HAS_TYPEOF=1\" \\
+ \"BOOST_MPL_ASSERT(expr)=\" \\
+ \"BOOST_ASSERT(expr)=\" \\
+ \"BOOST_RV_REF(T)=T &&\" \\
+ \"ASSERT(x)=assert(x)\" \\
+ \"__cplusplus \""
       # BOOST_PREVENT_MACRO_SUBSTITUTION, will not be replaced by ,
       # BOOST_STATIC_CONSTANT will be replaced by "static x const y",
       # BOOST_DEDUCED_TYPENAME will be replaced by "typename",
@@ -89,7 +92,7 @@
       # Boost Libraries with useful examples are: Accumulators, Interprocess, MPI, Random, Units, Expressive.
       
       # Optionally, you can provide a Reference section name specific for your library, for example:
- <xsl:param>"boost.doxygen.reftitle=Boost.Circular_buffer C++ Reference"
+ <xsl:param>"boost.doxygen.reftitle=Boost.Circular_buffer C++ Reference"
    ;
 
 xml circular_buffer : circular_buffer.qbk ;
@@ -103,38 +106,39 @@
    
    # General settings
    # =================
-
- # Options for html and pdf
- # ========================
- # No indent on body text:
- <xsl:param>body.start.indent=0pt
- # Margin size:
- <xsl:param>page.margin.inner=0.5in
- # Margin size:
- <xsl:param>page.margin.outer=0.5in
- # Yes, we want graphics for admonishments:
- <xsl:param>admon.graphics=1
+ <xsl:param>boost.root=../../../..
+
+ # Options for html and pdf
+ # ========================
+ # No indent on body text:
+ <xsl:param>body.start.indent=0pt
+ # Margin size:
+ <xsl:param>page.margin.inner=0.5in
+ # Margin size:
+ <xsl:param>page.margin.outer=0.5in
+ # Yes, we want graphics for admonishments:
+ <xsl:param>admon.graphics=1
   
- # HTML options:
- # =============
- # Use graphics icons not text for navigation:
- <xsl:param>navig.graphics=1
- # How far down we chunk nested sections, basically all of them:
- <xsl:param>chunk.section.depth=2
- # Don't put the first section on the same page as the TOC itself:
- <xsl:param>chunk.first.sections=1
- # How far down sections get TOC's
- <xsl:param>toc.section.depth=4
- # Max depth in each TOC:
- <xsl:param>toc.max.depth=2
- # How far down we go with TOC's
- <xsl:param>generate.section.toc.level=10
- # Horizontal ? spacing in table cells.
- <format>html:<xsl:param>html.cellspacing=3 # pixels
- # Vertical spacing in table cells.
- <format>html:<xsl:param>html.cellpadding=5 # pixels
- # Not sure if these are right way round?
-
+ # HTML options:
+ # =============
+ # Use graphics icons not text for navigation:
+ <xsl:param>navig.graphics=1
+ # How far down we chunk nested sections, basically all of them:
+ <xsl:param>chunk.section.depth=2
+ # Don't put the first section on the same page as the TOC itself:
+ <xsl:param>chunk.first.sections=1
+ # How far down sections get TOC's
+ <xsl:param>toc.section.depth=4
+ # Max depth in each TOC:
+ <xsl:param>toc.max.depth=2
+ # How far down we go with TOC's
+ <xsl:param>generate.section.toc.level=10
+ # Horizontal ? spacing in table cells.
+ <format>html:<xsl:param>html.cellspacing=3 # pixels
+ # Vertical spacing in table cells.
+ <format>html:<xsl:param>html.cellpadding=5 # pixels
+ # Not sure if these are right way round?
+
         <auto-index>on # Turns on index (or off).
         # Turns on (or off) index-verbose for diagnostic info (using /bin auto-index-verbose folders).
         <auto-index-verbose>on
@@ -149,42 +153,43 @@
         # Without this would need !scan-path "../../../boost/circular_buffer"
         
         # Used by Quickbook to invoke indexing.
- # Required by boost-trunk/doc/ see jamfile.v2 to use auto-index.
+ # Required by boost-trunk/doc/ see jamfile.v2 to use auto-index.
     # Choose indexing method for html:
     <format>html:<auto-index-internal>on
     <format>docbook:<auto-index-internal>on
     
- # PDF Options:
- # ============
- # TOC Generation: this is needed for FOP-0.9 and later:
- <format>pdf:<xsl:param>fop1.extensions=0
- # Or enable this if you're using XEP:
- <format>pdf:<xsl:param>xep.extensions=1
- # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
- <format>pdf:<xsl:param>fop.extensions=0
- # No indent on body text:
- <xsl:param>body.start.indent=0pt
- # Margin size:
- <xsl:param>page.margin.inner=0.5in
- # Margin size:
- <xsl:param>page.margin.outer=0.5in
-
- # Yes, we want graphics for admonishments:
- <xsl:param>admon.graphics=1
-
- # Set these one for PDF generation *only*:
- # default png graphics are awful in PDF form,
- # better use SVG instead:
- #<format>pdf:<xsl:param>admon.graphics.extension=".svg"
- <format>pdf:<xsl:param>admon.graphics.extension=".png" # Only png images are available.
- <format>pdf:<xsl:param>admon.graphics.path=$(nav_images)/ # next, prev, note, tip ... for pdf.
- <format>pdf:<xsl:param>use.role.for.mediaobject=1
- <format>pdf:<xsl:param>preferred.mediaobject.role=print
+ # PDF Options:
+ # ============
+ # TOC Generation: this is needed for FOP-0.9 and later:
+ <format>pdf:<xsl:param>fop1.extensions=0
+ # Or enable this if you're using XEP:
+ <format>pdf:<xsl:param>xep.extensions=1
+ # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
+ <format>pdf:<xsl:param>fop.extensions=0
+ # No indent on body text:
+ <xsl:param>body.start.indent=0pt
+ # Margin size:
+ <xsl:param>page.margin.inner=0.5in
+ # Margin size:
+ <xsl:param>page.margin.outer=0.5in
+
+ # Yes, we want graphics for admonishments:
+ <xsl:param>admon.graphics=1
+
+ # Set these one for PDF generation *only*:
+ # default png graphics are awful in PDF form,
+ # better use SVG instead:
+ #<format>pdf:<xsl:param>admon.graphics.extension=".svg"
+ <format>pdf:<xsl:param>admon.graphics.extension=".png" # Only png images are available.
+ <format>pdf:<xsl:param>admon.graphics.path=$(nav_images)/ # next, prev, note, tip ... for pdf.
+ <format>pdf:<xsl:param>use.role.for.mediaobject=1
+ <format>pdf:<xsl:param>preferred.mediaobject.role=print
         <format>pdf:<xsl:param>img.src.path=$(pdf_images_location)/ # graphics (diagrams) for pdf.
- <format>pdf:<xsl:param>draft.mode="no"
-
- <dependency>autodoc #
- <dependency>png_install
+ <format>pdf:<xsl:param>draft.mode="no"
+ <format>pdf:<xsl:param>boost.url.prefix=../../../..
+
+ <dependency>autodoc #
+ <dependency>png_install
    ;
 
 # Install (copy) the 'master' copies of all icon images (both PNG and SVG)


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