forked from boostorg/preprocessor
Update
[SVN r12691]
This commit is contained in:
@ -1,70 +1,88 @@
|
||||
<HTML><HEAD><TITLE>Boost PREPROCESSOR library</TITLE><BODY bgcolor="#FFFFFF">
|
||||
|
||||
<a href="index.htm"><IMG height=86 alt="c++boost.gif (8819 bytes)" src="../../../../c++boost.gif" width=277 align=center></a>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<link rel="stylesheet" type="text/css" href="../../../boost.css">
|
||||
<title>Boost.Preprocessor</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF" link="#0000ff" vlink="#800080">
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="../../../../index.htm"><img height="86" width="277" alt="C++ Boost" src="../../../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Preprocessor</h1>
|
||||
<h2 align="center">Reference</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<H1>#include <<a href="../../../../boost/preprocessor/while.hpp">boost/preprocessor/while.hpp</a>></H1>
|
||||
<a href="tuple_to_list.htm">Prev</a> <a href="arithmetic.htm">Next</a> <a href="index.htm#Macros">Macros</a> <a href="index.htm#Headers">Headers</a>
|
||||
<hr>
|
||||
|
||||
<h1>#include <<a href="../../../../boost/preprocessor/while.hpp">boost/preprocessor/while.hpp</a>></h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<H2><a name="BOOST_PP_WHILE">#define BOOST_PP_WHILE</a>(C,F,X)</H2>
|
||||
<P>Iterates F(D,X) while C(D,X) is true.</P>
|
||||
<h2><a name="BOOST_PP_WHILE">#define BOOST_PP_WHILE</a>(C,F,X)</h2>
|
||||
<p>Iterates <code>F(D,X)</code> while <code>C(D,X)</code> is true.</p>
|
||||
|
||||
<P>In other words, expands to:</P>
|
||||
<p>In other words, expands to:</p>
|
||||
|
||||
<PRE>
|
||||
<pre>
|
||||
F(D, ... F(D, F(D,X) ) ... )
|
||||
</PRE>
|
||||
</pre>
|
||||
|
||||
<P>The depth of iteration is determined by C(D,X).</P>
|
||||
<p>The depth of iteration is determined by <code>C(D,X)</code>.</p>
|
||||
|
||||
<H3>Legend</H3>
|
||||
<UL>
|
||||
<LI><B>X</B> is the current state of iteration. The state is usually a tuple.
|
||||
<LI><B>C</B> is the condition for iteration. It must expand to a decimal
|
||||
integer literal.
|
||||
<LI><B>F</B> is the iterated macro. Note that if the state is a tuple, then
|
||||
F(D,X) usually expands to a tuple of the same number of elements.
|
||||
<LI><B>D</B> is the recursion depth and should only be used as a parameter
|
||||
<h3>Legend</h3>
|
||||
<ul>
|
||||
<li><b>X</b> is the current state of iteration. The state is usually a tuple.</li>
|
||||
<li><b>C</b> is the condition for iteration. It must expand to a decimal
|
||||
integer literal.</li>
|
||||
<li><b>F</b> is the iterated macro. Note that if the state is a tuple, then
|
||||
F(D,X) usually expands to a tuple of the same number of elements.</li>
|
||||
<li><b>D</b> is the recursion depth and should only be used as a parameter
|
||||
to other macros using <a href="while.htm#BOOST_PP_WHILE">BOOST_PP_WHILE</a>(). Such macros include
|
||||
<a href="arithmetic_add.htm#BOOST_PP_ADD">BOOST_PP_ADD</a>() and other arithmetic operations. For each macro using
|
||||
<a href="while.htm#BOOST_PP_WHILE">BOOST_PP_WHILE</a>(), there is a version of the macro, distinguished by the
|
||||
D suffix (e.g. BOOST_PP_ADD_D()), that accepts an additional recursion
|
||||
depth as the first parameter. This technique is necessary to avoid
|
||||
recursively expanding the same macro again, which is not permitted by the
|
||||
C++ preprocessor. Note that the value of the D parameter may exceed
|
||||
<a href="limits.htm#BOOST_PP_LIMIT_MAG">BOOST_PP_LIMIT_MAG</a>.
|
||||
</UL>
|
||||
C++ preprocessor.</li>
|
||||
</ul>
|
||||
|
||||
<H3>Note</H3>
|
||||
<h3>Note</h3>
|
||||
<ul>
|
||||
<li>The value of the D parameter may exceed <a href="limits.htm#BOOST_PP_LIMIT_MAG">BOOST_PP_LIMIT_MAG</a>.</li>
|
||||
<li>Using <a href="while.htm#BOOST_PP_WHILE">BOOST_PP_WHILE</a>() is a bit tricky. This is due to the C++
|
||||
preprocessor limitations. It is recommended to take a look at the
|
||||
implementations of the various PREPROCESSOR library primitives such as
|
||||
<a href="arithmetic_add.htm#BOOST_PP_ADD">BOOST_PP_ADD</a>() for additional examples.</li>
|
||||
</ul>
|
||||
|
||||
<P>Using <a href="while.htm#BOOST_PP_WHILE">BOOST_PP_WHILE</a>() is a bit tricky. This is due to the C++ preprocessor
|
||||
limitations. It is recommended to take a look at the implementations of the
|
||||
various PREPROCESSOR library primitives such as <a href="arithmetic_add.htm#BOOST_PP_ADD">BOOST_PP_ADD</a>() for
|
||||
additional examples.</P>
|
||||
|
||||
<H3>Example</H3>
|
||||
<UL>
|
||||
<LI><a href="../../example/count_down.c">count_down.c</a>
|
||||
<LI><a hreF="../../example/linear_fib.c">linear_fib.c</a>
|
||||
</UL>
|
||||
|
||||
<H3>Implementation rationale</H3>
|
||||
<UL>
|
||||
<LI>The maximum iteration depth is greater than 2*<a href="limits.htm#BOOST_PP_LIMIT_MAG">BOOST_PP_LIMIT_MAG</a> to make
|
||||
it possible to compute N*N functions.
|
||||
</UL>
|
||||
<h3>Example</h3>
|
||||
<ul>
|
||||
<li><a href="../../example/count_down.c">count_down.c</a></li>
|
||||
<li><a href="../../example/linear_fib.c">linear_fib.c</a></li>
|
||||
<li><a href="../../example/delay.c">delay.c</a></li>
|
||||
</ul>
|
||||
|
||||
<hr>
|
||||
|
||||
<p>(C) Copyright Housemarque Oy 2002</p>
|
||||
<a href="tuple_to_list.htm">Prev</a> <a href="arithmetic.htm">Next</a> <a href="index.htm#Macros">Macros</a> <a href="index.htm#Headers">Headers</a>
|
||||
<hr>
|
||||
|
||||
<p>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan --><!--webbot bot="Timestamp" endspan i-checksum="15246" --></p>
|
||||
|
||||
<p><i>© Copyright <a href="http://www.housemarque.com">Housemarque Oy</a> 2002</i></p>
|
||||
|
||||
<p><i>Permission to copy, use, modify, sell and distribute this document is granted
|
||||
provided this copyright notice appears in all copies. This document is provided
|
||||
"as is" without express or implied warranty, and with no claim as to its suitability
|
||||
for any purpose.</p>
|
||||
for any purpose.</i></p>
|
||||
|
||||
<p>Generated: <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan --><!--webbot bot="Timestamp" endspan i-checksum="15246" --></p>
|
||||
|
||||
</BODY></HTML>
|
||||
</body></html>
|
||||
|
Reference in New Issue
Block a user