519 lines
24 KiB
XML
519 lines
24 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
Copyright 2012 Eric Niebler
|
|
|
|
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)
|
|
-->
|
|
<header name="boost/proto/repeat.hpp">
|
|
<para>
|
|
Contains macros to ease the generation of repetitious code constructs.
|
|
</para>
|
|
|
|
<macro name="BOOST_PROTO_REPEAT" kind="functionlike">
|
|
<macro-parameter name="MACRO"/>
|
|
<purpose>Repeatedly invoke the specified macro.</purpose>
|
|
<description>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_REPEAT()</computeroutput> is used to generate the kind of repetitive
|
|
code that is typical of EDSLs built with Proto.
|
|
<computeroutput>BOOST_PROTO_REPEAT(<replaceable>MACRO</replaceable>)</computeroutput>
|
|
is equivalent to:
|
|
</para>
|
|
<para>
|
|
<programlisting><replaceable>MACRO</replaceable>(1, <macroname>BOOST_PROTO_typename_A</macroname>, <macroname>BOOST_PROTO_A_const_ref</macroname>, <macroname>BOOST_PROTO_A_const_ref_a</macroname>, <macroname>BOOST_PROTO_ref_a</macroname>)
|
|
<replaceable>MACRO</replaceable>(2, <macroname>BOOST_PROTO_typename_A</macroname>, <macroname>BOOST_PROTO_A_const_ref</macroname>, <macroname>BOOST_PROTO_A_const_ref_a</macroname>, <macroname>BOOST_PROTO_ref_a</macroname>)
|
|
...
|
|
<replaceable>MACRO</replaceable>(<macroname>BOOST_PROTO_MAX_ARITY</macroname>, <macroname>BOOST_PROTO_typename_A</macroname>, <macroname>BOOST_PROTO_A_const_ref</macroname>, <macroname>BOOST_PROTO_A_const_ref_a</macroname>, <macroname>BOOST_PROTO_ref_a</macroname>)</programlisting>
|
|
</para>
|
|
<para>
|
|
<emphasis role="bold">Example:</emphasis>
|
|
</para>
|
|
<para>
|
|
See <computeroutput><macroname>BOOST_PROTO_REPEAT_FROM_TO</macroname>()</computeroutput>.
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
<macro name="BOOST_PROTO_REPEAT_FROM_TO" kind="functionlike">
|
|
<macro-parameter name="FROM"/>
|
|
<macro-parameter name="TO"/>
|
|
<macro-parameter name="MACRO"/>
|
|
<purpose>Repeatedly invoke the specified macro.</purpose>
|
|
<description>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_REPEAT_FROM_TO()</computeroutput> is used to generate the kind of repetitive
|
|
code that is typical of EDSLs built with Proto.
|
|
<computeroutput>BOOST_PROTO_REPEAT_FROM_TO(<replaceable>FROM</replaceable>, <replaceable>TO</replaceable>, <replaceable>MACRO</replaceable>)</computeroutput>
|
|
is equivalent to:
|
|
</para>
|
|
<para>
|
|
<programlisting><replaceable>MACRO</replaceable>(<replaceable>FROM</replaceable>, <macroname>BOOST_PROTO_typename_A</macroname>, <macroname>BOOST_PROTO_A_const_ref</macroname>, <macroname>BOOST_PROTO_A_const_ref_a</macroname>, <macroname>BOOST_PROTO_ref_a</macroname>)
|
|
<replaceable>MACRO</replaceable>(<replaceable>FROM+1</replaceable>, <macroname>BOOST_PROTO_typename_A</macroname>, <macroname>BOOST_PROTO_A_const_ref</macroname>, <macroname>BOOST_PROTO_A_const_ref_a</macroname>, <macroname>BOOST_PROTO_ref_a</macroname>)
|
|
...
|
|
<replaceable>MACRO</replaceable>(<replaceable>TO-1</replaceable>, <macroname>BOOST_PROTO_typename_A</macroname>, <macroname>BOOST_PROTO_A_const_ref</macroname>, <macroname>BOOST_PROTO_A_const_ref_a</macroname>, <macroname>BOOST_PROTO_ref_a</macroname>)</programlisting>
|
|
</para>
|
|
<para>
|
|
<emphasis role="bold">Example:</emphasis>
|
|
</para>
|
|
<para>
|
|
<programlisting>// Generate BOOST_PROTO_MAX_ARITY-1 overloads of the
|
|
// following construct() function template.
|
|
#define M0(N, typename_A, A_const_ref, A_const_ref_a, ref_a) \
|
|
template<typename T, typename_A(N)> \
|
|
typename <classname alt="boost::proto::result_of::make_expr">proto::result_of::make_expr</classname>< \
|
|
<classname alt="boost::proto::tag::function">proto::tag::function</classname> \
|
|
, construct_helper<T> \
|
|
, A_const_ref(N) \
|
|
>::type const \
|
|
construct(A_const_ref_a(N)) \
|
|
{ \
|
|
return <functionname alt="boost::proto::make_expr">proto::make_expr</functionname>< \
|
|
<classname alt="boost::proto::tag::function">proto::tag::function</classname> \
|
|
>( \
|
|
construct_helper<T>() \
|
|
, ref_a(N) \
|
|
); \
|
|
}
|
|
BOOST_PROTO_REPEAT_FROM_TO(1, BOOST_PROTO_MAX_ARITY, M0)
|
|
#undef M0</programlisting>
|
|
</para>
|
|
<para>
|
|
The above invocation of <computeroutput>BOOST_PROTO_REPEAT_FROM_TO()</computeroutput>
|
|
will generate the following code:
|
|
</para>
|
|
<para>
|
|
<programlisting>template<typename T, typename A0>
|
|
typename <classname alt="boost::proto::result_of::make_expr">proto::result_of::make_expr</classname><
|
|
<classname alt="boost::proto::tag::function">proto::tag::function</classname>
|
|
, construct_helper<T>
|
|
, A0 const &
|
|
>::type const
|
|
construct(A0 const & a0)
|
|
{
|
|
return <functionname alt="boost::proto::make_expr">proto::make_expr</functionname><
|
|
<classname alt="boost::proto::tag::function">proto::tag::function</classname>
|
|
>(
|
|
construct_helper<T>()
|
|
, boost::ref(a0)
|
|
);
|
|
}
|
|
|
|
template<typename T, typename A0, typename A1>
|
|
typename <classname alt="boost::proto::result_of::make_expr">proto::result_of::make_expr</classname><
|
|
<classname alt="boost::proto::tag::function">proto::tag::function</classname>
|
|
, construct_helper<T>
|
|
, A0 const &
|
|
, A1 const &
|
|
>::type const
|
|
construct(A0 const & a0, A1 const & a1)
|
|
{
|
|
return <functionname alt="boost::proto::make_expr">proto::make_expr</functionname><
|
|
<classname alt="boost::proto::tag::function">proto::tag::function</classname>
|
|
>(
|
|
construct_helper<T>()
|
|
, boost::ref(a0)
|
|
, boost::ref(a1)
|
|
);
|
|
}
|
|
|
|
// ... and so on, up to BOOST_PROTO_MAX_ARITY-1 arguments ...</programlisting>
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
<macro name="BOOST_PROTO_REPEAT_EX" kind="functionlike">
|
|
<macro-parameter name="MACRO"/>
|
|
<macro-parameter name="typename_A"/>
|
|
<macro-parameter name="A"/>
|
|
<macro-parameter name="A_a"/>
|
|
<macro-parameter name="a"/>
|
|
<purpose>Repeatedly invoke the specified macro.</purpose>
|
|
<description>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_REPEAT_EX()</computeroutput> is used to generate the kind of repetitive
|
|
code that is typical of EDSLs built with Proto.
|
|
<computeroutput>BOOST_PROTO_REPEAT_EX(<replaceable>MACRO</replaceable>, <replaceable>typename_A</replaceable>, <replaceable>A</replaceable>, <replaceable>A_a</replaceable>, <replaceable>a</replaceable>)</computeroutput>
|
|
is equivalent to:
|
|
</para>
|
|
<para>
|
|
<programlisting><replaceable>MACRO</replaceable>(1, typename_A, A, A_a, a)
|
|
<replaceable>MACRO</replaceable>(2, typename_A, A, A_a, a)
|
|
...
|
|
<replaceable>MACRO</replaceable>(<macroname>BOOST_PROTO_MAX_ARITY</macroname>, typename_A, A, A_a, a)</programlisting>
|
|
</para>
|
|
<para>
|
|
<emphasis role="bold">Example:</emphasis>
|
|
</para>
|
|
<para>
|
|
See <computeroutput><macroname>BOOST_PROTO_REPEAT_FROM_TO</macroname>()</computeroutput>.
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
<macro name="BOOST_PROTO_REPEAT_FROM_TO_EX" kind="functionlike">
|
|
<macro-parameter name="FROM"/>
|
|
<macro-parameter name="TO"/>
|
|
<macro-parameter name="MACRO"/>
|
|
<macro-parameter name="typename_A"/>
|
|
<macro-parameter name="A"/>
|
|
<macro-parameter name="A_a"/>
|
|
<macro-parameter name="a"/>
|
|
<purpose>Repeatedly invoke the specified macro.</purpose>
|
|
<description>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_REPEAT_FROM_TO_EX()</computeroutput> is used to generate the kind of repetitive
|
|
code that is typical of EDSLs built with Proto.
|
|
<computeroutput>BOOST_PROTO_REPEAT_FROM_TO_EX(<replaceable>FROM</replaceable>, <replaceable>TO</replaceable>, <replaceable>MACRO</replaceable>, <replaceable>typename_A</replaceable>, <replaceable>A</replaceable>, <replaceable>A_a</replaceable>, <replaceable>a</replaceable>)</computeroutput>
|
|
is equivalent to:
|
|
</para>
|
|
<para>
|
|
<programlisting><replaceable>MACRO</replaceable>(<replaceable>FROM</replaceable>, typename_A, A, A_a, a)
|
|
<replaceable>MACRO</replaceable>(<replaceable>FROM+1</replaceable>, typename_A, A, A_a, a)
|
|
...
|
|
<replaceable>MACRO</replaceable>(<replaceable>TO-1</replaceable>, typename_A, A, A_a, a)</programlisting>
|
|
</para>
|
|
<para>
|
|
<emphasis role="bold">Example:</emphasis>
|
|
</para>
|
|
<para>
|
|
See <computeroutput><macroname>BOOST_PROTO_REPEAT_FROM_TO</macroname>()</computeroutput>.
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
<macro name="BOOST_PROTO_LOCAL_ITERATE" kind="functionlike">
|
|
<purpose>Vertical repetition of a user-supplied macro.</purpose>
|
|
<description>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_LOCAL_ITERATE()</computeroutput> is used generate the kind of repetitive code that is typical
|
|
of EDSLs built with Proto. This macro causes the user-defined macro <computeroutput>BOOST_PROTO_LOCAL_MACRO()</computeroutput> to
|
|
be expanded with values in the range specified by <computeroutput>BOOST_PROTO_LOCAL_LIMITS</computeroutput>.
|
|
</para>
|
|
<para>
|
|
<emphasis role="bold">Usage:</emphasis>
|
|
</para>
|
|
<para>
|
|
<programlisting>#include BOOST_PROTO_LOCAL_ITERATE()</programlisting>
|
|
</para>
|
|
<para>
|
|
<emphasis role="bold">Example:</emphasis>
|
|
</para>
|
|
<para>
|
|
<programlisting>// Generate BOOST_PROTO_MAX_ARITY-1 overloads of the
|
|
// following construct() function template.
|
|
#define BOOST_PROTO_LOCAL_MACRO(N, typename_A, A_const_ref, A_const_ref_a, ref_a)\
|
|
template<typename T, typename_A(N)> \
|
|
typename <classname alt="boost::proto::result_of::make_expr">proto::result_of::make_expr</classname>< \
|
|
<classname alt="boost::proto::tag::function">proto::tag::function</classname> \
|
|
, construct_helper<T> \
|
|
, A_const_ref(N) \
|
|
>::type const \
|
|
construct(A_const_ref_a(N)) \
|
|
{ \
|
|
return <functionname alt="boost::proto::make_expr">proto::make_expr</functionname>< \
|
|
<classname alt="boost::proto::tag::function">proto::tag::function</classname> \
|
|
>( \
|
|
construct_helper<T>() \
|
|
, ref_a(N) \
|
|
); \
|
|
}
|
|
#define BOOST_PROTO_LOCAL_LIMITS (1, BOOST_PP_DEC(BOOST_PROTO_MAX_ARITY))
|
|
#include BOOST_PROTO_LOCAL_ITERATE()</programlisting>
|
|
</para>
|
|
<para>
|
|
The above inclusion of <computeroutput>BOOST_PROTO_LOCAL_ITERATE()</computeroutput>
|
|
will generate the following code:
|
|
</para>
|
|
<para>
|
|
<programlisting>template<typename T, typename A0>
|
|
typename <classname alt="boost::proto::result_of::make_expr">proto::result_of::make_expr</classname><
|
|
<classname alt="boost::proto::tag::function">proto::tag::function</classname>
|
|
, construct_helper<T>
|
|
, A0 const &
|
|
>::type const
|
|
construct(A0 const & a0)
|
|
{
|
|
return <functionname alt="boost::proto::make_expr">proto::make_expr</functionname><
|
|
<classname alt="boost::proto::tag::function">proto::tag::function</classname>
|
|
>(
|
|
construct_helper<T>()
|
|
, boost::ref(a0)
|
|
);
|
|
}
|
|
|
|
template<typename T, typename A0, typename A1>
|
|
typename <classname alt="boost::proto::result_of::make_expr">proto::result_of::make_expr</classname><
|
|
<classname alt="boost::proto::tag::function">proto::tag::function</classname>
|
|
, construct_helper<T>
|
|
, A0 const &
|
|
, A1 const &
|
|
>::type const
|
|
construct(A0 const & a0, A1 const & a1)
|
|
{
|
|
return <functionname alt="boost::proto::make_expr">proto::make_expr</functionname><
|
|
<classname alt="boost::proto::tag::function">proto::tag::function</classname>
|
|
>(
|
|
construct_helper<T>()
|
|
, boost::ref(a0)
|
|
, boost::ref(a1)
|
|
);
|
|
}
|
|
|
|
// ... and so on, up to BOOST_PROTO_MAX_ARITY-1 arguments ...</programlisting>
|
|
</para>
|
|
<para>
|
|
If <computeroutput>BOOST_PROTO_LOCAL_LIMITS</computeroutput> is not defined by the user, it defaults
|
|
to <computeroutput>(1, BOOST_PROTO_MAX_ARITY)</computeroutput>.
|
|
</para>
|
|
<para>
|
|
At each iteration, <computeroutput>BOOST_PROTO_LOCAL_MACRO()</computeroutput> is invoked with the current
|
|
iteration number and the following 4 macro parameters:
|
|
<itemizedlist>
|
|
<listitem><computeroutput>BOOST_PROTO_LOCAL_typename_A</computeroutput></listitem>
|
|
<listitem><computeroutput>BOOST_PROTO_LOCAL_A</computeroutput></listitem>
|
|
<listitem><computeroutput>BOOST_PROTO_LOCAL_A_a</computeroutput></listitem>
|
|
<listitem><computeroutput>BOOST_PROTO_LOCAL_a</computeroutput></listitem>
|
|
</itemizedlist>
|
|
If these macros are not defined by the user, they default respectively to:
|
|
<itemizedlist>
|
|
<listitem><computeroutput><macroname>BOOST_PROTO_typename_A</macroname></computeroutput></listitem>
|
|
<listitem><computeroutput><macroname>BOOST_PROTO_A_const_ref</macroname></computeroutput></listitem>
|
|
<listitem><computeroutput><macroname>BOOST_PROTO_A_const_ref_a</macroname></computeroutput></listitem>
|
|
<listitem><computeroutput><macroname>BOOST_PROTO_ref_a</macroname></computeroutput></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
<para>
|
|
After including <computeroutput>BOOST_PROTO_LOCAL_ITERATE()</computeroutput>, the
|
|
following macros are automatically undefined:
|
|
<itemizedlist>
|
|
<listitem><computeroutput>BOOST_PROTO_LOCAL_MACRO</computeroutput></listitem>
|
|
<listitem><computeroutput>BOOST_PROTO_LOCAL_LIMITS</computeroutput></listitem>
|
|
<listitem><computeroutput>BOOST_PROTO_LOCAL_typename_A</computeroutput></listitem>
|
|
<listitem><computeroutput>BOOST_PROTO_LOCAL_A</computeroutput></listitem>
|
|
<listitem><computeroutput>BOOST_PROTO_LOCAL_A_a</computeroutput></listitem>
|
|
<listitem><computeroutput>BOOST_PROTO_LOCAL_a</computeroutput></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
<macro name="BOOST_PROTO_typename_A" kind="functionlike">
|
|
<macro-parameter name="N"/>
|
|
<purpose>
|
|
Generates sequences like
|
|
<computeroutput>
|
|
typename A<subscript>0</subscript>,
|
|
typename A<subscript>1</subscript>, …
|
|
typename A<subscript>N-1</subscript>
|
|
</computeroutput>.
|
|
</purpose>
|
|
<description>
|
|
<para>
|
|
Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
|
|
and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
|
|
</para>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_typename_A(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
|
|
</para>
|
|
<para>
|
|
<programlisting>typename A<subscript>0</subscript>, typename A<subscript>1</subscript>, … typename A<subscript>N-1</subscript></programlisting>
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
<macro name="BOOST_PROTO_A_const_ref" kind="functionlike">
|
|
<macro-parameter name="N"/>
|
|
<purpose>
|
|
Generates sequences like
|
|
<computeroutput>
|
|
A<subscript>0</subscript> const &,
|
|
A<subscript>1</subscript> const &, …
|
|
A<subscript>N-1</subscript> const &
|
|
</computeroutput>.
|
|
</purpose>
|
|
<description>
|
|
<para>
|
|
Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
|
|
and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
|
|
</para>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_A_const_ref(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
|
|
</para>
|
|
<para>
|
|
<programlisting>A<subscript>0</subscript> const &, A<subscript>1</subscript> const &, … A<subscript>N-1</subscript> const &</programlisting>
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
<macro name="BOOST_PROTO_A_ref" kind="functionlike">
|
|
<macro-parameter name="N"/>
|
|
<purpose>
|
|
Generates sequences like
|
|
<computeroutput>
|
|
A<subscript>0</subscript> &,
|
|
A<subscript>1</subscript> &, …
|
|
A<subscript>N-1</subscript> &
|
|
</computeroutput>.
|
|
</purpose>
|
|
<description>
|
|
<para>
|
|
Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
|
|
and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
|
|
</para>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_A_ref(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
|
|
</para>
|
|
<para>
|
|
<programlisting>A<subscript>0</subscript> &, A<subscript>1</subscript> &, … A<subscript>N-1</subscript> &</programlisting>
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
<macro name="BOOST_PROTO_A" kind="functionlike">
|
|
<macro-parameter name="N"/>
|
|
<purpose>
|
|
Generates sequences like
|
|
<computeroutput>
|
|
A<subscript>0</subscript>,
|
|
A<subscript>1</subscript>, …
|
|
A<subscript>N-1</subscript>
|
|
</computeroutput>.
|
|
</purpose>
|
|
<description>
|
|
<para>
|
|
Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
|
|
and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
|
|
</para>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_A(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
|
|
</para>
|
|
<para>
|
|
<programlisting>A<subscript>0</subscript>, A<subscript>1</subscript>, … A<subscript>N-1</subscript></programlisting>
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
<macro name="BOOST_PROTO_A_const" kind="functionlike">
|
|
<macro-parameter name="N"/>
|
|
<purpose>
|
|
Generates sequences like
|
|
<computeroutput>
|
|
A<subscript>0</subscript> const,
|
|
A<subscript>1</subscript> const, …
|
|
A<subscript>N-1</subscript> const
|
|
</computeroutput>.
|
|
</purpose>
|
|
<description>
|
|
<para>
|
|
Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
|
|
and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
|
|
</para>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_A_const(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
|
|
</para>
|
|
<para>
|
|
<programlisting>A<subscript>0</subscript> const, A<subscript>1</subscript> const, … A<subscript>N-1</subscript> const</programlisting>
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
<macro name="BOOST_PROTO_A_const_ref_a" kind="functionlike">
|
|
<macro-parameter name="N"/>
|
|
<purpose>
|
|
Generates sequences like
|
|
<computeroutput>
|
|
A<subscript>0</subscript> const & a<subscript>0</subscript>,
|
|
A<subscript>1</subscript> const & a<subscript>1</subscript>, …
|
|
A<subscript>N-1</subscript> const & a<subscript>N-1</subscript>
|
|
</computeroutput>.
|
|
</purpose>
|
|
<description>
|
|
<para>
|
|
Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
|
|
and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
|
|
</para>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_A_const_ref_a(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
|
|
</para>
|
|
<para>
|
|
<programlisting>A<subscript>0</subscript> const & a<subscript>0</subscript>, A<subscript>1</subscript> const & a<subscript>1</subscript>, … A<subscript>N-1</subscript> const & a<subscript>N-1</subscript></programlisting>
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
<macro name="BOOST_PROTO_A_ref_a" kind="functionlike">
|
|
<macro-parameter name="N"/>
|
|
<purpose>
|
|
Generates sequences like
|
|
<computeroutput>
|
|
A<subscript>0</subscript> & a<subscript>0</subscript>,
|
|
A<subscript>1</subscript> & a<subscript>1</subscript>, …
|
|
A<subscript>N-1</subscript> & a<subscript>N-1</subscript>
|
|
</computeroutput>.
|
|
</purpose>
|
|
<description>
|
|
<para>
|
|
Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
|
|
and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
|
|
</para>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_A_ref_a(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
|
|
</para>
|
|
<para>
|
|
<programlisting>A<subscript>0</subscript> & a<subscript>0</subscript>, A<subscript>1</subscript> & a<subscript>1</subscript>, … A<subscript>N-1</subscript> & a<subscript>N-1</subscript></programlisting>
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
<macro name="BOOST_PROTO_ref_a" kind="functionlike">
|
|
<macro-parameter name="N"/>
|
|
<purpose>
|
|
Generates sequences like
|
|
<computeroutput>
|
|
boost::ref(a<subscript>0</subscript>),
|
|
boost::ref(a<subscript>1</subscript>), …
|
|
boost::ref(a<subscript>N-1</subscript>)
|
|
</computeroutput>.
|
|
</purpose>
|
|
<description>
|
|
<para>
|
|
Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
|
|
and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
|
|
</para>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_ref_a(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
|
|
</para>
|
|
<para>
|
|
<programlisting>boost::ref(a<subscript>0</subscript>), boost::ref(a<subscript>1</subscript>), … boost::ref(a<subscript>N-1</subscript>)</programlisting>
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
<macro name="BOOST_PROTO_a" kind="functionlike">
|
|
<macro-parameter name="N"/>
|
|
<purpose>
|
|
Generates sequences like
|
|
<computeroutput>
|
|
a<subscript>0</subscript>,
|
|
a<subscript>1</subscript>, …
|
|
a<subscript>N-1</subscript>
|
|
</computeroutput>.
|
|
</purpose>
|
|
<description>
|
|
<para>
|
|
Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
|
|
and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
|
|
</para>
|
|
<para>
|
|
<computeroutput>BOOST_PROTO_a(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
|
|
</para>
|
|
<para>
|
|
<programlisting>a<subscript>0</subscript>, a<subscript>1</subscript>, … a<subscript>N-1</subscript></programlisting>
|
|
</para>
|
|
</description>
|
|
</macro>
|
|
|
|
</header>
|