Merge documentation fixes from RC_1_34_0

[SVN r38223]
This commit is contained in:
Aleksey Gurtovoy
2007-07-16 02:26:38 +00:00
parent 7518d7dab3
commit fa401f0e4d
4 changed files with 166 additions and 19 deletions

View File

@@ -0,0 +1,10 @@
.. The MPL *runtime algorithms* provide out-of-box support for the
common scenarios of crossing compile time/runtime boundary.
.. |Runtime Algorithms| replace:: `Runtime Algorithms`_
.. |runtime algorithm| replace:: `runtime algorithm`_
.. _runtime algorithm: `Runtime Algorithms`_
.. |runtime algorithms| replace:: `runtime algorithms`_

View File

@@ -0,0 +1,140 @@
.. Algorithms/Runtime Algorithms//for_each |10
for_each
========
Synopsis
--------
.. parsed-literal::
template<
typename Sequence
, typename F
>
void for_each( F f );
template<
typename Sequence
, typename TransformOp
, typename F
>
void for_each( F f );
Description
-----------
``for_each`` is a family of overloaded function templates:
* ``for_each<Sequence>( f )`` applies the runtime function object
``f`` to every element in the |begin/end<Sequence>| range.
* ``for_each<Sequence,TransformOp>( f )`` applies the runtime function
object ``f`` to the result of the transformation ``TransformOp`` of
every element in the |begin/end<Sequence>| range.
Header
------
.. parsed-literal::
#include <boost/mpl/for_each.hpp>
Parameters
----------
+-------------------+-----------------------------------+-----------------------------------+
| Parameter | Requirement | Description |
+===================+===================================+===================================+
| ``Sequence`` | |Forward Sequence| | A sequence to iterate. |
+-------------------+-----------------------------------+-----------------------------------+
| ``TransformOp`` | |Lambda Expression| | A transformation. |
+-------------------+-----------------------------------+-----------------------------------+
| ``f`` | An |unary function object| | A runtime operation to apply. |
+-------------------+-----------------------------------+-----------------------------------+
Expression semantics
--------------------
For any |Forward Sequence| ``s``, |Lambda Expression| ``op`` , and an
|unary function object| ``f``:
.. parsed-literal::
for_each<s>( f );
:Return type:
``void``
:Postcondition:
Equivalent to
.. parsed-literal::
typedef begin<Sequence>::type i\ :sub:`1`;
|value_initialized|\ < deref<i\ :sub:`1`>::type > x\ :sub:`1`;
f(boost::get(x\ :sub:`1`));
typedef next<i\ :sub:`1`>::type i\ :sub:`2`;
|value_initialized|\ < deref<i\ :sub:`2`>::type > x\ :sub:`2`;
f(boost::get(x\ :sub:`2`));
|...|
|value_initialized|\ < deref<i\ :sub:`n`>::type > x\ :sub:`n`;
f(boost::get(x\ :sub:`n`));
typedef next<i\ :sub:`n`>::type last;
where ``n == size<s>::value`` and ``last`` is identical to
``end<s>::type``; no effect if ``empty<s>::value == true``.
.. parsed-literal::
for_each<s,op>( f );
:Return type:
``void``
:Postcondition:
Equivalent to
.. parsed-literal::
for_each< tranform_view<s,op> >( f );
Complexity
----------
Linear. Exactly ``size<s>::value`` applications of ``op`` and ``f``.
Example
-------
.. parsed-literal::
struct value_printer
{
template< typename U > void operator()(U x)
{
std::cout << x << '\n';
}
};
int main()
{
for_each< range_c<int,0,10> >( value_printer() );
}
See also
--------
|Runtime Algorithms|, |Views|, |transform_view|
.. |unary function object| replace:: `unary function object <http://www.sgi.com/tech/stl/UnaryFunction.html>`_
.. |value_initialized| replace:: `value_initialized <http://www.boost.org/libs/utility/value_init.htm>`_

View File

@@ -1,3 +1,9 @@
# Copyright (c) Aleksey Gurtovoy 2001-2007
#
# 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)
import time
import fnmatch
import os.path
@@ -6,6 +12,8 @@ import re
import string
underlines = ['+', '/']
special_cases = [ 'inserter', '_1,_2,..._n' ]
def __section_header(section):
parts = section.split('/')
@@ -22,21 +30,14 @@ def __section_intro(section):
return '%s.rst' % '-'.join( [x.split(' ')[0] for x in parts] )
def __include_page( output, page ):
def __include_page( output, page, name = None ):
output.write( '.. include:: %s\n' % page )
# output.write( '.. raw:: LaTeX\n\n' )
# output.write( ' \\newpage\n\n')
ref = '/'.join( page.split('.')[0].split('-') )
if ref.upper() == ref: # macros
ref = 'BOOST_MPL_%s' % ref
output.write(
( '.. |%(ref)s| replace:: |``%(ref)s``|__\n'
+ '.. |``%(ref)s``| replace:: :refentry:`%(ref)s`\n'
+ '__ `%(ref)s`_\n' )
% { 'ref': ref }
)
elif ref.lower() == ref:
if name and name not in special_cases: ref = name
else: ref = '/'.join( page.split('.')[0].split('-') )
if ref.upper() == ref or ref.lower() == ref:
output.write(
( '.. |%(ref)s| replace:: |``%(ref)s``|__\n'
+ '.. |``%(ref)s``| replace:: :refentry:`%(ref)s`\n'
@@ -82,7 +83,7 @@ def main( filename, dir ):
placement_spec = open(src, 'r').readline()
topic = 'Unclassified'
name = None
name = None
order = -1
match = re_topic.match(placement_spec)
@@ -95,7 +96,7 @@ def main( filename, dir ):
if not topics.has_key(topic):
topics[topic] = []
topics[topic].append((src, order))
topics[topic].append((src, order, name))
if name:
if topic.find( '/Concepts' ) == -1:
@@ -115,7 +116,7 @@ def main( filename, dir ):
__include_page( output, intro )
for src in content:
__include_page( output, src[0] )
__include_page( output, src[0], src[2] )
output.close()

View File

@@ -2,7 +2,7 @@
The MPL Reference Manual
************************
:Copyright: Copyright <20> Aleksey Gurtovoy and David Abrahams, 2001-2005.
:Copyright: Copyright <20> Aleksey Gurtovoy and David Abrahams, 2001-2007.
:License: Distributed under the Boost Software License, Version 1.0. (See
accompanying file ``LICENSE_1_0.txt`` or copy at
@@ -132,10 +132,6 @@ __ `Placeholders`_
__ `BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS`_
__ `BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS`_
.. |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS| replace:: |``BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS``|__
.. |``BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS``| replace:: :refentry:`BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS`
__ `BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS`_
.. |transformation algorithm disclaimer| replace::
[*Note:* This wording applies to a no-inserter version(s) of the algorithm. See the