mirror of
https://github.com/boostorg/mpl.git
synced 2025-08-03 06:44:37 +02:00
Merge documentation fixes from RC_1_34_0
[SVN r38223]
This commit is contained in:
10
doc/src/refmanual/Algorithms-Runtime.rst
Normal file
10
doc/src/refmanual/Algorithms-Runtime.rst
Normal 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`_
|
||||
|
140
doc/src/refmanual/for_each.rst
Normal file
140
doc/src/refmanual/for_each.rst
Normal 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>`_
|
@@ -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()
|
||||
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user