lib cleanup

[SVN r15693]
This commit is contained in:
Paul Mensonides
2002-10-03 22:13:37 +00:00
parent ae584c68b2
commit 4bb690a819
263 changed files with 14965 additions and 16 deletions

55
doc/acknowledgements.html Normal file
View File

@ -0,0 +1,55 @@
<html>
<head>
<title>acknowledgements.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<h4>Acknowledgements</h4>
<div>
The following are a few acknowledgements of people that contributed to
or were instrumental in the development of the library by Vesa Karnoven and myself.
</div>
<h4>Vesa Karvonen</h4>
<div>
The original idea of passing two extra parameters to REPEAT, which makes it possible to create preprocessor code on top of it,
was due to Aleksey Gurtovoy.&nbsp;
The invokeable IDENTITY macro was invented by him.&nbsp;
He also suggested the name for the library.&nbsp;
Many thanks to Aleksey for his insights!
</div>
<div>
Thanks to everyone who participated in the review:&nbsp; David Abrahams, Beman Dawes, Ronald Garcia, Douglas Gregor, Aleksey Gurtovoy, Jeremy Siek, and Daryle Walker.
</div>
<div>
Thanks to Chris Little and Mat Marcus for providing help with MWCW.
</div>
<div>
The original automatic recursion technique, which makes many of the library
primitives easier to use, was invented by Paul Mensonides.
</div>
<div>
The PREPROCESSOR library has been developed by Vesa Karvonen.
</div>
<h4>Paul Mensonides</h4>
<div>
Thanks to Vesa Karvonen for the original conception of the library.&nbsp;
His work, his help, and his opinions are all much appreciated.
</div>
<div>
Thanks also to David Abrahams for his observations and continued support.
</div>
<div>
The help of several other Boost developers is also greatly appreciated.&nbsp;
In particular, thanks to Aleksey Gurtovoy for his suggestions and to Ralf W. Grosse-Kunstleve for providing
access to several compilers for testing.
</div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
</div>
<div style="margin-left: 0px;">
Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies.&nbsp;
This document is provided "as is" without express or implied warranty and with no claim as to its suitability for any purpose.
</div>
</body>
</html>

55
doc/bibliography.html Normal file
View File

@ -0,0 +1,55 @@
<html>
<head>
<title>bibliography.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<h4>Bibliography</h4>
<table style="margin-left: 20px">
<tr>
<td><b>[Stroustrup]</b></td>
<td>Stroustrup:&nbsp; <i>The Design and Evolution of C++</i>, ISBN 0201543303</td>
</tr>
<tr>
<td><b>[Czarnecki]</b></td>
<td>Czarnecki, Eisenecker:&nbsp; <i>Generative Programming</i>, ISBN 0201309777</td>
</tr>
<tr>
<td><b>[Barton]</b></td>
<td>Barton, Nackman:&nbsp; <i>Scientific and Engineering C++</i>, ISBN 0201533936</td>
</tr>
<tr>
<td><b>[McConnell]</b></td>
<td>McConnell:&nbsp; <i>Code Complete</i>, ISBN 1556154844</td>
</tr>
<tr>
<td><b>[Std]</b></td>
<td>ISO/IEC 14882:1998 <i>Programming Languages - C++</i></td>
</tr>
<tr>
<td><b>[Thompson]</b></td>
<td>Thompson:&nbsp; <i>Haskell:&nbsp; The Craft of Functional Programming</i>, ISBN 0201342758</td>
</tr>
<tr>
<td><b>[Okasaki]</b></td>
<td>Okasaki:&nbsp; <i>Purely Functional Data Structures</i>, ISBN 0521663504</td>
</tr>
<tr>
<td><b>[Cousineau]</b></td>
<td>Cousineau, Mauny:&nbsp; <i>The Functional Approach to Programming</i>, ISBN 0521576814</td>
</tr>
<tr>
<td><b>[Abelson]</b></td>
<td>Abelson, Sussman, Sussman:&nbsp; <i>Structure and Interpretation of Computer Programs</i>, ISBN 0521576814</td>
</tr>
</table>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
</div>
<div style="margin-left: 0px;">
Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies.&nbsp;
This document is provided "as is" without express or implied warranty and with no claim as to its suitability for any purpose.
</div>
</body>
</html>

9
doc/blank.html Normal file
View File

@ -0,0 +1,9 @@
<html>
<head>
<title>blank.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
</body>
</html>

20
doc/contents.html Normal file
View File

@ -0,0 +1,20 @@
<html>
<head>
<title>contents.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<style>
a, a:link, a:visited { color: black; font-weight: bold; }
</style>
</head>
<body>
<h4><a href="topics.html">Topics</h4>
<h4><a href="terms.html">Terminology</h4>
<h4><a href="data.html">Data Types</h4>
<h4><a href="ref.html">Reference</h4>
<h4><a href="headers.html">Headers</h4>
<h4><a href="examples.html">Examples</h4>
<h4><a href="miscellanea.html">Miscellanea</h4>
</body>
</html>

15
doc/data.html Normal file
View File

@ -0,0 +1,15 @@
<html>
<head>
<title>data.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<base target="desc">
</head>
<body>
<h4>Data Types <small><a href="contents.html" target="index">[back]</a></small></h4>
<ul>
<li><a href="data/arrays.html">arrays</a></li>
<li><a href="data/lists.html">lists</a></li>
<li><a href="data/tuples.html">tuples</a></li>
</ul>
</body>
</html>

43
doc/data/arrays.html Normal file
View File

@ -0,0 +1,43 @@
<html>
<head>
<title>arrays.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<script language="javascript" type="text/javascript" src="../scripts.js"></script>
</head>
<body>
<h4>Arrays</h4>
<div>
An <i>array</i> is a data structure consisting of a two-element <i>tuple</i>.&nbsp;
The first element is the number of elements in the <i>array</i>.&nbsp;
The second element is another <i>tuple</i> of the elements in the <i>array</i>.&nbsp;
For example,
</div>
<div class="code">
(<i>3</i>, (<i>a</i>, <i>b</i>, <i>c</i>))
</div>
<div>
...is an <i>array</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
</div>
<div>
The primary strength of <i>arrays</i> is that they store their own size.&nbsp;
Because of this, access to elements does not require the size.&nbsp;
It only requires that an element exists at a certain index.
</div>
<div>
This allows macro parameters to be variable in size and allows data states to change
size without the user explicitly keeping track of the size independently.
</div>
<div>
Elements of an <i>array</i> can be extracted with <b>BOOST_PP_ARRAY_ELEM</b>,
an <i>array's</i> size can be extracted with <b>BOOST_PP_ARRAY_SIZE</b>, and
an <i>array</i> can be converted to the more primitive <i>tuple</i> data structure
with <b>BOOST_PP_ARRAY_DATA</b>.
</div>
<h4>Primitives</h4>
<ul>
<li><a href="../ref/array_data.html">BOOST_PP_ARRAY_DATA</a></li>
<li><a href="../ref/array_elem.html">BOOST_PP_ARRAY_ELEM</a></li>
<li><a href="../ref/array_size.html">BOOST_PP_ARRAY_SIZE</a></li>
</ul>
</body>
</html>

36
doc/data/lists.html Normal file
View File

@ -0,0 +1,36 @@
<html>
<head>
<title>lists.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<script language="javascript" type="text/javascript" src="../scripts.js"></script>
</head>
<body>
<h4>Lists</h4>
<div>
A <i>list</i> is a simple cons-style list with a head and a tail.&nbsp;
The head of a <i>list</i> is an element,
and the tail is either another <i>list</i> or <b>BOOST_PP_NIL</b>.
For example,
</div>
<div class="code">
(<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>)))
</div>
<div>
...is a <i>list</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
</div>
<div>
This allows macro parameters to be variable in size and allows data states to change
size without the user explicitly keeping track of the size independently.
</div>
<div>
Elements of a <i>list</i> can be extracted with
<b>BOOST_PP_LIST_FIRST</b> and <b>BOOST_PP_LIST_REST</b>.&nbsp;
</div>
<h4>Primitives</h4>
<ul>
<li><a href="../ref/list_first.html">BOOST_PP_LIST_FIRST</a></li>
<li><a href="../ref/list_rest.html">BOOST_PP_LIST_REST</a></li>
<li><a href="../ref/nil.html">BOOST_PP_NIL</a></li>
</ul>
</body>
</html>

32
doc/data/tuples.html Normal file
View File

@ -0,0 +1,32 @@
<html>
<head>
<title>tuples.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<script language="javascript" type="text/javascript" src="../scripts.js"></script>
</head>
<body>
<h4>Tuples</h4>
<div>
A <i>tuple</i> is a simple comma-separated list of elements inside parenthesis.&nbsp;
For example,
</div>
<div class="code">
(<i>a</i>, <i>b</i>, <i>c</i>)
</div>
<div>
...is a <i>tuple</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
</div>
<div>
<i>Tuples</i> are fast and easy to use.&nbsp;
However, all access to <i>tuples</i> requires knowledge of its size.
</div>
<div>
Elements of a <i>tuple</i> can be extracted with
<b>BOOST_PP_TUPLE_ELEM</b>.
</div>
<h4>Primitives</h4>
<ul>
<li><a href="../ref/tuple_elem.html">BOOST_PP_TUPLE_ELEM</a></li>
</ul>
</body>
</html>

18
doc/examples.html Normal file
View File

@ -0,0 +1,18 @@
<html>
<head>
<title>topics.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<base target="desc">
</head>
<body>
<h4>Examples <small><a href="contents.html" target="index">[back]</a></small></h4>
<ul>
<li><a href="examples/array_arithmetic.c">array_arithmetic.c</a></i>
<li><a href="examples/catch_builtin.cpp">catch_builtin.cpp</a></i>
<li><a href="examples/delay.c">delay.c</a></i>
<li><a href="examples/duffs_device.c">duffs_device.c</a></i>
<li><a href="examples/is_integral.cpp">is_integral.cpp</a></li>
<li><a href="examples/linear_fib.c">linear_fib.c</a></li>
</ul>
</body>
</html>

View File

@ -1,16 +0,0 @@
extern "C" {
void _assert(const char*, const char*, unsigned);
}
int main(void) {
int i = 0;
do { int duffs_device_initial_cnt = (0); if (duffs_device_initial_cnt > 0) { int duffs_device_running_cnt = (duffs_device_initial_cnt + (16 - 1)) / 16; switch (duffs_device_initial_cnt % 16) { do { case (0 ? 16 - 0 : 0): { ++i; }; case (1 ? 16 - 1 : 0): { ++i; }; case (2 ? 16 - 2 : 0): { ++i; }; case (3 ? 16 - 3 : 0): { ++i; }; case (4 ? 16 - 4 : 0): { ++i; }; case (5 ? 16 - 5 : 0): { ++i; }; case (6 ? 16 - 6 : 0): { ++i; }; case (7 ? 16 - 7 : 0): { ++i; }; case (8 ? 16 - 8 : 0): { ++i; }; case (9 ? 16 - 9 : 0): { ++i; }; case (10 ? 16 - 10 : 0): { ++i; }; case (11 ? 16 - 11 : 0): { ++i; }; case (12 ? 16 - 12 : 0): { ++i; }; case (13 ? 16 - 13 : 0): { ++i; }; case (14 ? 16 - 14 : 0): { ++i; }; case (15 ? 16 - 15 : 0): { ++i; }; } while (--duffs_device_running_cnt); } } } while (0);
(void)( (i == 0) || (_assert("i == 0", "duffs_device.c", 58), 0) );
do { int duffs_device_initial_cnt = (1000); if (duffs_device_initial_cnt > 0) { int duffs_device_running_cnt = (duffs_device_initial_cnt + (16 - 1)) / 16; switch (duffs_device_initial_cnt % 16) { do { case (0 ? 16 - 0 : 0): { ++i; }; case (1 ? 16 - 1 : 0): { ++i; }; case (2 ? 16 - 2 : 0): { ++i; }; case (3 ? 16 - 3 : 0): { ++i; }; case (4 ? 16 - 4 : 0): { ++i; }; case (5 ? 16 - 5 : 0): { ++i; }; case (6 ? 16 - 6 : 0): { ++i; }; case (7 ? 16 - 7 : 0): { ++i; }; case (8 ? 16 - 8 : 0): { ++i; }; case (9 ? 16 - 9 : 0): { ++i; }; case (10 ? 16 - 10 : 0): { ++i; }; case (11 ? 16 - 11 : 0): { ++i; }; case (12 ? 16 - 12 : 0): { ++i; }; case (13 ? 16 - 13 : 0): { ++i; }; case (14 ? 16 - 14 : 0): { ++i; }; case (15 ? 16 - 15 : 0): { ++i; }; } while (--duffs_device_running_cnt); } } } while (0);
(void)( (i == 1000) || (_assert("i == N", "duffs_device.c", 60), 0) );
return 0;
}

165
doc/headers.html Normal file
View File

@ -0,0 +1,165 @@
<html>
<head>
<title>headers.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<base target="desc">
<style>
.ps { margin-left: 30px; }
</style>
</head>
<body>
<h4>Headers <small><a href="contents.html" target="index">[back]</a></small></h4>
<ul>
<li>../</li>
<li class="ps"><a href="headers/preprocessor.hpp.html">preprocessor.hpp</a></li>
<li><a href="headers/arithmetic.hpp.html">arithmetic.hpp</a></li>
<li>arithmetic/</li>
<li class="ps"><a href="headers/arithmetic/add.hpp.html">add.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/dec.hpp.html">dec.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/div.hpp.html">div.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/inc.hpp.html">inc.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/mod.hpp.html">mod.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/mul.hpp.html">mul.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/sub.hpp.html">sub.hpp</a></li>
<li><a href="headers/array.hpp.html">array.hpp</a></li>
<li>array/</li>
<li class="ps"><a href="headers/array/data.hpp.html">data.hpp</a></li>
<li class="ps"><a href="headers/array/elem.hpp.html">elem.hpp</a></li>
<li class="ps"><a href="headers/array/size.hpp.html">size.hpp</a></li>
<li><a href="headers/assert_msg.hpp.html">assert_msg.hpp*</a></li>
<li><a href="headers/cat.hpp.html">cat.hpp</a></li>
<li><a href="headers/comma.hpp.html">comma.hpp*</a></li>
<li><a href="headers/comma_if.hpp.html">comma_if.hpp*</a></li>
<li><a href="headers/comparison.hpp.html">comparison.hpp</a></li>
<li>comparison/</li>
<li class="ps"><a href="headers/comparison/equal.hpp.html">equal.hpp</a></li>
<li class="ps"><a href="headers/comparison/greater.hpp.html">greater.hpp</a></li>
<li class="ps"><a href="headers/comparison/greater_equal.hpp.html">greater_equal.hpp</a></li>
<li class="ps"><a href="headers/comparison/less.hpp.html">less.hpp</a></li>
<li class="ps"><a href="headers/comparison/less_equal.hpp.html">less_equal.hpp</a></li>
<li class="ps"><a href="headers/comparison/not_equal.hpp.html">not_equal.hpp</a></li>
<li>config/</li>
<li class="ps"><a href="headers/config/limits.hpp.html">limits.hpp</a></li>
<li><a href="headers/control.hpp.html">control.hpp</a></li>
<li>control/</li>
<li class="ps"><a href="headers/control/deduce_d.hpp.html">deduce_d.hpp</a></li>
<li class="ps"><a href="headers/control/expr_if.hpp.html">expr_if.hpp</a></li>
<li class="ps"><a href="headers/control/expr_iif.hpp.html">expr_iif.hpp</a></li>
<li class="ps"><a href="headers/control/if.hpp.html">if.hpp</a></li>
<li class="ps"><a href="headers/control/iif.hpp.html">iif.hpp</a></li>
<li class="ps"><a href="headers/control/while.hpp.html">while.hpp</a></li>
<li><a href="headers/debug.hpp.html">debug.hpp</a></li>
<li>debug/</li>
<li class="ps"><a href="headers/debug/assert.hpp.html">assert.hpp</a></li>
<li class="ps"><a href="headers/debug/line.hpp.html">line.hpp</a></li>
<li><a href="headers/dec.hpp.html">dec.hpp*</a></li>
<li><a href="headers/empty.hpp.html">empty.hpp*</a></li>
<li><a href="headers/enum.hpp.html">enum.hpp*</a></li>
<li><a href="headers/enum_params.hpp.html">enum_params.hpp*</a></li>
<li><a href="headers/enum_params_with_a_default.hpp.html">enum_params_with_a_default.hpp*</a></li>
<li><a href="headers/enum_params_with_defaults.hpp.html">enum_params_with_defaults.hpp*</a></li>
<li><a href="headers/enum_shifted.hpp.html">enum_shifted.hpp*</a></li>
<li><a href="headers/enum_shifted_params.hpp.html">enum_shifted_params.hpp*</a></li>
<li><a href="headers/expand.hpp.html">expand.hpp*</a></li>
<li><a href="headers/expr_if.hpp.html">expr_if.hpp*</a></li>
<li><a href="headers/facilities.hpp.html">facilities.hpp</a></li>
<li>facilities/</li>
<li class="ps"><a href="headers/facilities/apply.hpp.html">apply.hpp</a></li>
<li class="ps"><a href="headers/facilities/empty.hpp.html">empty.hpp</a></li>
<li class="ps"><a href="headers/facilities/expand.hpp.html">expand.hpp</a></li>
<li class="ps"><a href="headers/facilities/identity.hpp.html">identity.hpp</a></li>
<li class="ps"><a href="headers/facilities/intercept.hpp.html">intercept.hpp</a></li>
<li><a href="headers/for.hpp.html">for.hpp*</a></li>
<li><a href="headers/identity.hpp.html">identity.hpp*</a></li>
<li><a href="headers/if.hpp.html">if.hpp*</a></li>
<li><a href="headers/inc.hpp.html">inc.hpp*</a></li>
<li><a href="headers/iterate.hpp.html">iterate.hpp*</a></li>
<li><a href="headers/iteration.hpp.html">iteration.hpp</a></li>
<li>iteration/</li>
<li class="ps"><a href="headers/iteration/iterate.hpp.html">iterate.hpp</a></li>
<li class="ps"><a href="headers/iteration/local.hpp.html">local.hpp</a></li>
<li class="ps"><a href="headers/iteration/self.hpp.html">self.hpp</a></li>
<li><a href="headers/library.hpp.html">library.hpp</a></li>
<li><a href="headers/limits.hpp.html">limits.hpp*</a></li>
<li><a href="headers/list.hpp.html">list.hpp</a></li>
<li>list/</li>
<li class="ps"><a href="headers/list/adt.hpp.html">adt.hpp</a></li>
<li class="ps"><a href="headers/list/append.hpp.html">append.hpp</a></li>
<li class="ps"><a href="headers/list/at.hpp.html">at.hpp</a></li>
<li class="ps"><a href="headers/list/cat.hpp.html">cat.hpp</a></li>
<li class="ps"><a href="headers/list/enum.hpp.html">enum.hpp</a></li>
<li class="ps"><a href="headers/list/filter.hpp.html">filter.hpp</a></li>
<li class="ps"><a href="headers/list/first_n.hpp.html">first_n.hpp</a></li>
<li class="ps"><a href="headers/list/fold_left.hpp.html">fold_left.hpp</a></li>
<li class="ps"><a href="headers/list/fold_right.hpp.html">fold_right.hpp</a></li>
<li class="ps"><a href="headers/list/for_each.hpp.html">for_each.hpp</a></li>
<li class="ps"><a href="headers/list/for_each_i.hpp.html">for_each_i.hpp</a></li>
<li class="ps"><a href="headers/list/for_each_product.hpp.html">for_each_product.hpp</a></li>
<li class="ps"><a href="headers/list/rest_n.hpp.html">rest_n.hpp</a></li>
<li class="ps"><a href="headers/list/reverse.hpp.html">reverse.hpp</a></li>
<li class="ps"><a href="headers/list/size.hpp.html">size.hpp</a></li>
<li class="ps"><a href="headers/list/to_tuple.hpp.html">to_tuple.hpp</a></li>
<li class="ps"><a href="headers/list/transform.hpp.html">transform.hpp</a></li>
<li><a href="headers/logical.hpp.html">logical.hpp</a></li>
<li>logical/</li>
<li class="ps"><a href="headers/logical/and.hpp.html">and.hpp</a></li>
<li class="ps"><a href="headers/logical/bitand.hpp.html">bitand.hpp</a></li>
<li class="ps"><a href="headers/logical/bitnor.hpp.html">bitnor.hpp</a></li>
<li class="ps"><a href="headers/logical/bitor.hpp.html">bitor.hpp</a></li>
<li class="ps"><a href="headers/logical/bitxor.hpp.html">bitxor.hpp</a></li>
<li class="ps"><a href="headers/logical/bool.hpp.html">bool.hpp</a></li>
<li class="ps"><a href="headers/logical/compl.hpp.html">compl.hpp</a></li>
<li class="ps"><a href="headers/logical/nor.hpp.html">nor.hpp</a></li>
<li class="ps"><a href="headers/logical/not.hpp.html">not.hpp</a></li>
<li class="ps"><a href="headers/logical/or.hpp.html">or.hpp</a></li>
<li class="ps"><a href="headers/logical/xor.hpp.html">xor.hpp</a></li>
<li><a href="headers/max.hpp.html">max.hpp*</a></li>
<li><a href="headers/min.hpp.html">min.hpp*</a></li>
<li><a href="headers/punctuation.hpp.html">punctuation.hpp</a></li>
<li>punctuation/</li>
<li class="ps"><a href="headers/punctuation/comma.hpp.html">comma.hpp</a></li>
<li class="ps"><a href="headers/punctuation/comma_if.hpp.html">comma_if.hpp</a></li>
<li class="ps"><a href="headers/punctuation/paren.hpp.html">paren.hpp</a></li>
<li class="ps"><a href="headers/punctuation/paren_if.hpp.html">paren_if.hpp</a></li>
<li><a href="headers/repeat.hpp.html">repeat.hpp*</a></li>
<li><a href="headers/repeat_2nd.hpp.html">repeat_2nd.hpp*</a></li>
<li><a href="headers/repeat_3rd.hpp.html">repeat_3rd.hpp*</a></li>
<li><a href="headers/repeat_from_to.hpp.html">repeat_from_to.hpp*</a></li>
<li><a href="headers/repeat_from_to_2nd.hpp.html">repeat_from_to_2nd.hpp*</a></li>
<li><a href="headers/repeat_from_to_3rd.hpp.html">repeat_from_to_3rd.hpp*</a></li>
<li><a href="headers/repetition.hpp.html">repetition.hpp</a></li>
<li>repetition/</li>
<li class="ps"><a href="headers/repetition/deduce_r.hpp.html">deduce_r.hpp</a></li>
<li class="ps"><a href="headers/repetition/deduce_z.hpp.html">deduce_z.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum.hpp.html">enum.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_binary_params.hpp.html">enum_binary_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_params.hpp.html">enum_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_params_with_a_default.hpp.html">enum_params_with_a_default.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_params_with_defaults.hpp.html">enum_params_with_defaults.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_shifted_params.hpp.html">enum_shifted_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_shifted.hpp.html">enum_shifted.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_trailing.hpp.html">enum_trailing.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_trailing_binary_params.hpp.html">enum_trailing_binary_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_trailing_params.hpp.html">enum_trailing_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/for.hpp.html">for.hpp</a></li>
<li class="ps"><a href="headers/repetition/repeat.hpp.html">repeat.hpp</a></li>
<li class="ps"><a href="headers/repetition/repeat_from_to.hpp.html">repeat_from_to.hpp</a></li>
<li><a href="headers/selection.hpp.html">selection.hpp</a></li>
<li>selection/</li>
<li class="ps"><a href="headers/selection/max.hpp.html">max.hpp</a></li>
<li class="ps"><a href="headers/selection/min.hpp.html">min.hpp</a></li>
<li><a href="headers/slot.hpp.html">slot.hpp</a></li>
<li>slot/</li>
<li class="ps"><a href="headers/slot/slot.hpp.html">slot.hpp</a></li>
<li><a href="headers/tuple.hpp.html">tuple.hpp</a></li>
<li>tuple/</li>
<li class="ps"><a href="headers/tuple/elem.hpp.html">elem.hpp</a></li>
<li class="ps"><a href="headers/tuple/eat.hpp.html">eat.hpp</a></li>
<li class="ps"><a href="headers/tuple/rem.hpp.html">rem.hpp</a></li>
<li class="ps"><a href="headers/tuple/reverse.hpp.html">reverse.hpp</a></li>
<li class="ps"><a href="headers/tuple/to_list.hpp.html">to_list.hpp</a></li>
<li><a href="headers/stringize.hpp.html">stringize.hpp</a></li>
<li><a href="headers/while.hpp.html">while.hpp*</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,25 @@
<html>
<head>
<title>arithmetic.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>arithmetic.hpp</b> includes the headers in the <i>arithmetic</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/arithmetic.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="arithmetic/add.hpp.html">&lt;boost/preprocessor/arithmetic/add.hpp&gt;</a></li>
<li><a href="arithmetic/dec.hpp.html">&lt;boost/preprocessor/arithmetic/dec.hpp&gt;</a></li>
<li><a href="arithmetic/div.hpp.html">&lt;boost/preprocessor/arithmetic/div.hpp&gt;</a></li>
<li><a href="arithmetic/inc.hpp.html">&lt;boost/preprocessor/arithmetic/inc.hpp&gt;</a></li>
<li><a href="arithmetic/mod.hpp.html">&lt;boost/preprocessor/arithmetic/mod.hpp&gt;</a></li>
<li><a href="arithmetic/mul.hpp.html">&lt;boost/preprocessor/arithmetic/mul.hpp&gt;</a></li>
<li><a href="arithmetic/sub.hpp.html">&lt;boost/preprocessor/arithmetic/sub.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,21 @@
<html>
<head>
<title>array.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>array.hpp</b> includes the headers in the <i>array</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/array.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="array/data.hpp.html">&lt;boost/preprocessor/array/data.hpp&gt;</a></li>
<li><a href="array/elem.hpp.html">&lt;boost/preprocessor/array/elem.hpp&gt;</a></li>
<li><a href="array/size.hpp.html">&lt;boost/preprocessor/array/size.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>assert_msg.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>assert_msg.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/assert_msg.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="debug/assert.hpp.html">&lt;boost/preprocessor/debug/assert.hpp&gt;</a></li>
</ul>
</body>
</html>

19
doc/headers/cat.hpp.html Normal file
View File

@ -0,0 +1,19 @@
<html>
<head>
<title>cat.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>cat.hpp</b> header defines a concatenation macro.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/cat.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../ref/cat.html">BOOST_PP_CAT</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>comma.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>comma.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/comma.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="punctuation/comma.hpp.html">&lt;boost/preprocessor/punctuation/comma.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>comma_if.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>comma_if.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/comma_if.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="punctuation/comma_if.hpp.html">&lt;boost/preprocessor/punctuation/comma_if.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,24 @@
<html>
<head>
<title>comparison.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>comparison.hpp</b> includes the headers in the <i>comparison</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/comparison.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="comparison/equal.hpp.html">&lt;boost/preprocessor/comparison/equal.hpp&gt;</a></li>
<li><a href="comparison/greater.hpp.html">&lt;boost/preprocessor/comparison/greater.hpp&gt;</a></li>
<li><a href="comparison/greater_equal.hpp.html">&lt;boost/preprocessor/comparison/greater_equal.hpp&gt;</a></li>
<li><a href="comparison/less.hpp.html">&lt;boost/preprocessor/comparison/less.hpp&gt;</a></li>
<li><a href="comparison/less_equal.hpp.html">&lt;boost/preprocessor/comparison/less_equal.hpp&gt;</a></li>
<li><a href="comparison/not_equal.hpp.html">&lt;boost/preprocessor/comparison/not_equal.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,24 @@
<html>
<head>
<title>control.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>control.hpp</b> includes the headers in the <i>control</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/control.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="control/deduce_d.hpp.html">&lt;boost/preprocessor/control/deduce_d.hpp&gt;</a></li>
<li><a href="control/expr_if.hpp.html">&lt;boost/preprocessor/control/expr_if.hpp&gt;</a></li>
<li><a href="control/expr_iif.hpp.html">&lt;boost/preprocessor/control/expr_iif.hpp&gt;</a></li>
<li><a href="control/if.hpp.html">&lt;boost/preprocessor/control/if.hpp&gt;</a></li>
<li><a href="control/iif.hpp.html">&lt;boost/preprocessor/control/iif.hpp&gt;</a></li>
<li><a href="control/while.hpp.html">&lt;boost/preprocessor/control/while.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>debug.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>debug.hpp</b> includes the headers in the <i>debug</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/debug.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="debug/assert.hpp.html">&lt;boost/preprocessor/debug/assert.hpp&gt;</a></li>
<li><a href="debug/line.hpp.html">&lt;boost/preprocessor/debug/line.hpp&gt;</a></li>
</ul>
</body>
</html>

20
doc/headers/dec.hpp.html Normal file
View File

@ -0,0 +1,20 @@
<html>
<head>
<title>dec.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>dec.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/dec.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="arithmetic/dec.hpp.html">&lt;boost/preprocessor/arithmetic/dec.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>empty.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>empty.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/empty.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="facilities/empty.hpp.html">&lt;boost/preprocessor/facilities/empty.hpp&gt;</a></li>
</ul>
</body>
</html>

20
doc/headers/enum.hpp.html Normal file
View File

@ -0,0 +1,20 @@
<html>
<head>
<title>enum.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>enum.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/enum.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/enum.hpp.html">&lt;boost/preprocessor/repetition/enum.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>enum_params.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>enum_params.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/enum_params.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/enum_params.hpp.html">&lt;boost/preprocessor/repetition/enum_params.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>enum_params_with_a_default.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>enum_params_with_a_default.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/enum_params_with_a_default.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/enum_params_with_a_default.hpp.html">&lt;boost/preprocessor/repetition/enum_params_with_a_default.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>enum_params_with_defaults.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>enum_params_with_defaults.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/enum_params_with_defaults.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/enum_params_with_defaults.hpp.html">&lt;boost/preprocessor/repetition/enum_params_with_defaults.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>enum_shifted.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>enum_shifted.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/enum_shifted.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/enum_shifted.hpp.html">&lt;boost/preprocessor/repetition/enum_shifted.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>enum_shifted_params.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>enum_shifted_params.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/enum_shifted_params.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/enum_shifted_params.hpp.html">&lt;boost/preprocessor/repetition/enum_shifted_params.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>expand.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>expand.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/expand.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="facilities/expand.hpp.html">&lt;boost/preprocessor/facilities/expand.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>expr_if.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>expr_if.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/expr_if.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="control/expr_if.hpp.html">&lt;boost/preprocessor/control/expr_if.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,23 @@
<html>
<head>
<title>facilities.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>facilities.hpp</b> includes the headers in the <i>facilities</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/facilities.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="facilities/apply.hpp.html">&lt;boost/preprocessor/facilities/apply.hpp&gt;</a></li>
<li><a href="facilities/empty.hpp.html">&lt;boost/preprocessor/facilities/empty.hpp&gt;</a></li>
<li><a href="facilities/expand.hpp.html">&lt;boost/preprocessor/facilities/expand.hpp&gt;</a></li>
<li><a href="facilities/identity.hpp.html">&lt;boost/preprocessor/facilities/identity.hpp&gt;</a></li>
<li><a href="facilities/intercept.hpp.html">&lt;boost/preprocessor/facilities/intercept.hpp&gt;</a></li>
</ul>
</body>
</html>

20
doc/headers/for.hpp.html Normal file
View File

@ -0,0 +1,20 @@
<html>
<head>
<title>for.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>for.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/for.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/for.hpp.html">&lt;boost/preprocessor/repetition/for.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>identity.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>identity.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/identity.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="facilities/identity.hpp.html">&lt;boost/preprocessor/facilities/identity.hpp&gt;</a></li>
</ul>
</body>
</html>

20
doc/headers/if.hpp.html Normal file
View File

@ -0,0 +1,20 @@
<html>
<head>
<title>if.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>if.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/if.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="control/if.hpp.html">&lt;boost/preprocessor/control/if.hpp&gt;</a></li>
</ul>
</body>
</html>

20
doc/headers/inc.hpp.html Normal file
View File

@ -0,0 +1,20 @@
<html>
<head>
<title>inc.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>inc.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/inc.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="arithmetic/inc.hpp.html">&lt;boost/preprocessor/arithmetic/inc.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>iterate.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>iterate.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/iterate.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="iteration/iterate.hpp.html">&lt;boost/preprocessor/iteration/iterate.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,21 @@
<html>
<head>
<title>iteration.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>iteration.hpp</b> includes the headers in the <i>iteration</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/iteration.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="iteration/iterate.hpp.html">&lt;boost/preprocessor/iteration/iterate.hpp&gt;</a></li>
<li><a href="iteration/local.hpp.html">&lt;boost/preprocessor/iteration/local.hpp&gt;</a></li>
<li><a href="iteration/self.hpp.html">&lt;boost/preprocessor/iteration/self.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,15 @@
<html>
<head>
<title>library.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>library.hpp</b> includes the entire library.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/library.hpp&gt;</b>
</div>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>limits.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>limits.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/limits.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="config/limits.hpp.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a></li>
</ul>
</body>
</html>

35
doc/headers/list.hpp.html Normal file
View File

@ -0,0 +1,35 @@
<html>
<head>
<title>list.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list.hpp</b> includes the headers in the <i>list</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="list/adt.hpp.html">&lt;boost/preprocessor/list/adt.hpp&gt;</a></li>
<li><a href="list/append.hpp.html">&lt;boost/preprocessor/list/append.hpp&gt;</a></li>
<li><a href="list/at.hpp.html">&lt;boost/preprocessor/list/at.hpp&gt;</a></li>
<li><a href="list/cat.hpp.html">&lt;boost/preprocessor/list/cat.hpp&gt;</a></li>
<li><a href="list/enum.hpp.html">&lt;boost/preprocessor/list/enum.hpp&gt;</a></li>
<li><a href="list/filter.hpp.html">&lt;boost/preprocessor/list/filter.hpp&gt;</a></li>
<li><a href="list/first_n.hpp.html">&lt;boost/preprocessor/list/first_n.hpp&gt;</a></li>
<li><a href="list/fold_left.hpp.html">&lt;boost/preprocessor/list/fold_left.hpp&gt;</a></li>
<li><a href="list/fold_right.hpp.html">&lt;boost/preprocessor/list/fold_right.hpp&gt;</a></li>
<li><a href="list/for_each.hpp.html">&lt;boost/preprocessor/list/for_each.hpp&gt;</a></li>
<li><a href="list/for_each_i.hpp.html">&lt;boost/preprocessor/list/for_each_i.hpp&gt;</a></li>
<li><a href="list/for_each_product.hpp.html">&lt;boost/preprocessor/list/for_each_product.hpp&gt;</a></li>
<li><a href="list/rest_n.hpp.html">&lt;boost/preprocessor/list/rest_n.hpp&gt;</a></li>
<li><a href="list/reverse.hpp.html">&lt;boost/preprocessor/list/reverse.hpp&gt;</a></li>
<li><a href="list/size.hpp.html">&lt;boost/preprocessor/list/size.hpp&gt;</a></li>
<li><a href="list/to_tuple.hpp.html">&lt;boost/preprocessor/list/to_tuple.hpp&gt;</a></li>
<li><a href="list/transform.hpp.html">&lt;boost/preprocessor/list/transform.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,29 @@
<html>
<head>
<title>logical.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>logical.hpp</b> includes the headers in the <i>logical</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/logical.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="logical/and.hpp.html">&lt;boost/preprocessor/logical/and.hpp&gt;</a></li>
<li><a href="logical/bitand.hpp.html">&lt;boost/preprocessor/logical/bitand.hpp&gt;</a></li>
<li><a href="logical/bitnor.hpp.html">&lt;boost/preprocessor/logical/bitnor.hpp&gt;</a></li>
<li><a href="logical/bitor.hpp.html">&lt;boost/preprocessor/logical/bitor.hpp&gt;</a></li>
<li><a href="logical/bitxor.hpp.html">&lt;boost/preprocessor/logical/bitxor.hpp&gt;</a></li>
<li><a href="logical/bool.hpp.html">&lt;boost/preprocessor/logical/bool.hpp&gt;</a></li>
<li><a href="logical/compl.hpp.html">&lt;boost/preprocessor/logical/compl.hpp&gt;</a></li>
<li><a href="logical/nor.hpp.html">&lt;boost/preprocessor/logical/nor.hpp&gt;</a></li>
<li><a href="logical/not.hpp.html">&lt;boost/preprocessor/logical/not.hpp&gt;</a></li>
<li><a href="logical/or.hpp.html">&lt;boost/preprocessor/logical/or.hpp&gt;</a></li>
<li><a href="logical/xor.hpp.html">&lt;boost/preprocessor/logical/xor.hpp&gt;</a></li>
</ul>
</body>
</html>

20
doc/headers/max.hpp.html Normal file
View File

@ -0,0 +1,20 @@
<html>
<head>
<title>max.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>max.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/max.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="selection/max.hpp.html">&lt;boost/preprocessor/selection/max.hpp&gt;</a></li>
</ul>
</body>
</html>

20
doc/headers/min.hpp.html Normal file
View File

@ -0,0 +1,20 @@
<html>
<head>
<title>min.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>min.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/min.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="selection/min.hpp.html">&lt;boost/preprocessor/selection/min.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,15 @@
<html>
<head>
<title>preprocessor.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>preprocessor.hpp</b> includes the entire library.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor.hpp&gt;</b>
</div>
</body>
</html>

View File

@ -0,0 +1,22 @@
<html>
<head>
<title>punctuation.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>punctuation.hpp</b> includes the headers in the <i>punctuation</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/punctuation.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="punctuation/comma.hpp.html">&lt;boost/preprocessor/punctuation/comma.hpp&gt;</a></li>
<li><a href="punctuation/comma_if.hpp.html">&lt;boost/preprocessor/punctuation/comma_if.hpp&gt;</a></li>
<li><a href="punctuation/paren.hpp.html">&lt;boost/preprocessor/punctuation/paren.hpp&gt;</a></li>
<li><a href="punctuation/paren_if.hpp.html">&lt;boost/preprocessor/punctuation/paren_if.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>repeat.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>repeat.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/repeat.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/repeat.hpp.html">&lt;boost/preprocessor/repetition/repeat.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>repeat_2nd.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>repeat_2nd.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/repeat_2nd.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/repeat.hpp.html">&lt;boost/preprocessor/repetition/repeat.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>repeat_3rd.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>repeat_3rd.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/repeat_3rd.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/repeat.hpp.html">&lt;boost/preprocessor/repetition/repeat.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>repeat_from_to.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>repeat_from_to.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/repeat_from_to.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/repeat_from_to.hpp.html">&lt;boost/preprocessor/repetition/repeat_from_to.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>repeat_from_to_2nd.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>repeat_from_to_2nd.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/repeat_from_to_2nd.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/repeat_from_to.hpp.html">&lt;boost/preprocessor/repetition/repeat_from_to.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>repeat_from_to_3rd.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>repeat_from_to_3rd.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/repeat_from_to_3rd.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/repeat_from_to.hpp.html">&lt;boost/preprocessor/repetition/repeat_from_to.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,33 @@
<html>
<head>
<title>repetition.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>repetition.hpp</b> includes the headers in the <i>repetition</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/repetition.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="repetition/deduce_r.hpp.html">&lt;boost/preprocessor/repetition/deduce_r.hpp&gt;</a></li>
<li><a href="repetition/deduce_z.hpp.html">&lt;boost/preprocessor/repetition/deduce_z.hpp&gt;</a></li>
<li><a href="repetition/enum.hpp.html">&lt;boost/preprocessor/repetition/enum.hpp&gt;</a></li>
<li><a href="repetition/enum_binary_params.hpp.html">&lt;boost/preprocessor/repetition/enum_binary_params.hpp&gt;</a></li>
<li><a href="repetition/enum_params.hpp.html">&lt;boost/preprocessor/repetition/enum_params.hpp&gt;</a></li>
<li><a href="repetition/enum_params_with_a_default.hpp.html">&lt;boost/preprocessor/repetition/enum_params_with_a_default.hpp&gt;</a></li>
<li><a href="repetition/enum_params_with_defaults.hpp.html">&lt;boost/preprocessor/repetition/enum_params_with_defaults.hpp&gt;</a></li>
<li><a href="repetition/enum_shifted_params.hpp.html">&lt;boost/preprocessor/repetition/enum_shifted_params.hpp&gt;</a></li>
<li><a href="repetition/enum_shifted.hpp.html">&lt;boost/preprocessor/repetition/enum_shifted.hpp&gt;</a></li>
<li><a href="repetition/enum_trailing.hpp.html">&lt;boost/preprocessor/repetition/enum_trailing.hpp&gt;</a></li>
<li><a href="repetition/enum_trailing_binary_params.hpp.html">&lt;boost/preprocessor/repetition/enum_trailing_binary_params.hpp&gt;</a></li>
<li><a href="repetition/enum_trailing_params.hpp.html">&lt;boost/preprocessor/repetition/enum_trailing_params.hpp&gt;</a></li>
<li><a href="repetition/for.hpp.html">&lt;boost/preprocessor/repetition/for.hpp&gt;</a></li>
<li><a href="repetition/repeat.hpp.html">&lt;boost/preprocessor/repetition/repeat.hpp&gt;</a></li>
<li><a href="repetition/repeat_from_to.hpp.html">&lt;boost/preprocessor/repetition/repeat_from_to.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>selection.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>selection.hpp</b> includes the headers in the <i>selection</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/selection.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="selection/max.hpp.html">&lt;boost/preprocessor/selection/max.hpp&gt;</a></li>
<li><a href="selection/min.hpp.html">&lt;boost/preprocessor/selection/min.hpp&gt;</a></li>
</ul>
</body>
</html>

19
doc/headers/slot.hpp.html Normal file
View File

@ -0,0 +1,19 @@
<html>
<head>
<title>slot.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>slot.hpp</b> includes the headers in the <i>slot</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/slot.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="slot/slot.hpp.html">&lt;boost/preprocessor/slot/slot.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,19 @@
<html>
<head>
<title>stringize.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>stringize.hpp</b> header defines a stringizing macro.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/stringize.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../ref/stringize.html">BOOST_PP_STRINGIZE</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,23 @@
<html>
<head>
<title>tuple.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>tuple.hpp</b> includes the headers in the <i>tuple</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/tuple.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="tuple/elem.hpp.html">&lt;boost/preprocessor/tuple/elem.hpp&gt;</a></li>
<li><a href="tuple/eat.hpp.html">&lt;boost/preprocessor/tuple/eat.hpp&gt;</a></li>
<li><a href="tuple/rem.hpp.html">&lt;boost/preprocessor/tuple/rem.hpp&gt;</a></li>
<li><a href="tuple/reverse.hpp.html">&lt;boost/preprocessor/tuple/reverse.hpp&gt;</a></li>
<li><a href="tuple/to_list.hpp.html">&lt;boost/preprocessor/tuple/to_list.hpp&gt;</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>while.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>while.hpp</b> is a jumper header for backwards compatibility.&nbsp;
This header is deprecated.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/while.hpp&gt;</b>
</div>
<h4>Includes</h4>
<ul>
<li><a href="control/while.hpp.html">&lt;boost/preprocessor/control/while.hpp&gt;</a></li>
</ul>
</body>
</html>

13
doc/index.html Normal file
View File

@ -0,0 +1,13 @@
<html>
<head>
<title>Boost.Preprocessor</title>
</head>
<frameset rows="65,*" frameborder="0">
<frame name="top" src="top.html" scrolling="no" noresize>
<frameset cols="350,*" frameborder="0" border="3">
<frame name="index" src="contents.html" scrolling="auto">
<frame name="desc" src="blank.html" scrolling="auto">
</frameset>
<noframes>..</noframes>
</frameset>
</html>

15
doc/miscellanea.html Normal file
View File

@ -0,0 +1,15 @@
<html>
<head>
<title>miscellanea.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<base target="desc">
</head>
<body>
<h4>Miscellanea <small><a href="contents.html" target="index">[back]</a></small></h4>
<ul>
<li><a href="syntax.html">syntax highlighting</a></li>
<li><a href="acknowledgements.html">acknowledgements</a></li>
<li><a href="bibliography.html">bibliography</a></li>
</ul>
</body>
</html>

217
doc/ref.html Normal file
View File

@ -0,0 +1,217 @@
<html>
<head>
<title>ref.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<base target="desc">
</head>
<body>
<h4>Reference <small><a href="contents.html" target="index">[back]</a></small></h4>
<ul>
<!-- A -->
<li><a href="ref/add.html">ADD</a></li>
<li><a href="ref/add_d.html">ADD_D</a></li>
<li><a href="ref/and.html">AND</a></li>
<li><a href="ref/apply.html">APPLY</a></li>
<li><a href="ref/array_data.html">ARRAY_DATA</a></li>
<li><a href="ref/array_elem.html">ARRAY_ELEM</a></li>
<li><a href="ref/array_size.html">ARRAY_SIZE</a></li>
<li><a href="ref/assert.html">ASSERT</a></li>
<li><a href="ref/assert_msg.html">ASSERT_MSG</a></li>
<li><a href="ref/assign_slot.html">ASSIGN_SLOT</a></li>
<!-- B -->
<li><a href="ref/bitand.html">BITAND</a></li>
<li><a href="ref/bitnor.html">BITNOR</a></li>
<li><a href="ref/bitor.html">BITOR</a></li>
<li><a href="ref/bitxor.html">BITXOR</a></li>
<li><a href="ref/bool.html">BOOL</a></li>
<!-- C -->
<li><a href="ref/cat.html">CAT</a></li>
<li><a href="ref/comma.html">COMMA</a></li>
<li><a href="ref/comma_if.html">COMMA_IF</a></li>
<li><a href="ref/compl.html">COMPL</a></li>
<li><a href="ref/config_extended_line_info.html">CONFIG_EXTENDED_LINE_INFO</a></li>
<!-- D -->
<li><a href="ref/dec.html">DEC</a></li>
<li><a href="ref/deduce_d.html">DEDUCE_D</a></li>
<li><a href="ref/deduce_r.html">DEDUCE_R</a></li>
<li><a href="ref/deduce_z.html">DEDUCE_Z</a></li>
<li><a href="ref/div.html">DIV</a></li>
<li><a href="ref/div_d.html">DIV_D</a></li>
<!-- E -->
<li><a href="ref/empty.html">EMPTY</a></li>
<li><a href="ref/enum.html">ENUM</a></li>
<li><a href="ref/enum_binary_params.html">ENUM_BINARY_PARAMS</a></li>
<li><a href="ref/enum_binary_params_z.html">ENUM_BINARY_PARAMS_Z</a></li>
<li><a href="ref/enum_params.html">ENUM_PARAMS</a></li>
<li><a href="ref/enum_params_with_a_default.html">ENUM_PARAMS_WITH_A_DEFAULT*</a></li>
<li><a href="ref/enum_params_with_defaults.html">ENUM_PARAMS_WITH_DEFAULTS*</a></li>
<li><a href="ref/enum_params_z.html">ENUM_PARAMS_Z</a></li>
<li><a href="ref/enum_shifted.html">ENUM_SHIFTED</a></li>
<li><a href="ref/enum_shifted_params.html">ENUM_SHIFTED_PARAMS</a></li>
<li><a href="ref/enum_shifted_params_z.html">ENUM_SHIFTED_PARAMS_Z</a></li>
<li><a href="ref/enum_shifted_z.html">ENUM_SHIFTED_<i>z</i></a></li>
<li><a href="ref/enum_trailing.html">ENUM_TRAILING</a></li>
<li><a href="ref/enum_trailing_binary_params.html">ENUM_TRAILING_BINARY_PARAMS</a></li>
<li><a href="ref/enum_trailing_binary_params_z.html">ENUM_TRAILING_BINARY_PARAMS_Z</a></li>
<li><a href="ref/enum_trailing_params.html">ENUM_TRAILING_PARAMS</a></li>
<li><a href="ref/enum_trailing_params_z.html">ENUM_TRAILING_PARAMS_Z</a></li>
<li><a href="ref/enum_trailing_z.html">ENUM_TRAILING_<i>z</i></a></li>
<li><a href="ref/enum_z.html">ENUM_<i>z</i></a></li>
<li><a href="ref/equal.html">EQUAL</a></li>
<li><a href="ref/equal_d.html">EQUAL_D*</a></li>
<li><a href="ref/expand.html">EXPAND</a></li>
<li><a href="ref/expr_if.html">EXPR_IF</a></li>
<li><a href="ref/expr_iif.html">EXPR_IIF</a></li>
<!-- F -->
<li><a href="ref/filename_x.html">FILENAME_<i>x</i></a></li>
<li><a href="ref/for.html">FOR</a></li>
<li><a href="ref/for_r.html">FOR_<i>r</i></a></li>
<li><a href="ref/frame_finish.html">FRAME_FINISH</a></li>
<li><a href="ref/frame_flags.html">FRAME_FLAGS</a></li>
<li><a href="ref/frame_iteration.html">FRAME_ITERATION</a></li>
<li><a href="ref/frame_start.html">FRAME_START</a></li>
<!-- G -->
<li><a href="ref/greater.html">GREATER</a></li>
<li><a href="ref/greater_d.html">GREATER_D</a></li>
<li><a href="ref/greater_equal.html">GREATER_EQUAL</a></li>
<li><a href="ref/greater_equal_d.html">GREATER_EQUAL_D</a></li>
<!-- I -->
<li><a href="ref/identity.html">IDENTITY</a></li>
<li><a href="ref/if.html">IF</a></li>
<li><a href="ref/iif.html">IIF</a></li>
<li><a href="ref/inc.html">INC</a></li>
<li><a href="ref/include_self.html">INCLUDE_SELF</a></li>
<li><a href="ref/indirect_self.html">INDIRECT_SELF</a></li>
<li><a href="ref/intercept.html">INTERCEPT</a></li>
<li><a href="ref/is_iterating.html">IS_ITERATING</a></li>
<li><a href="ref/is_selfish.html">IS_SELFISH</a></li>
<li><a href="ref/iterate.html">ITERATE</a></li>
<li><a href="ref/iteration.html">ITERATION</a></li>
<li><a href="ref/iteration_depth.html">ITERATION_DEPTH</a></li>
<li><a href="ref/iteration_finish.html">ITERATION_FINISH</a></li>
<li><a href="ref/iteration_flags.html">ITERATION_FLAGS</a></li>
<li><a href="ref/iteration_limits.html">ITERATION_LIMITS</a></li>
<li><a href="ref/iteration_params_x.html">ITERATION_PARAMS_<i>x</i></a></li>
<li><a href="ref/iteration_start.html">ITERATION_START</a></li>
<!-- L -->
<li><a href="ref/less.html">LESS</a></li>
<li><a href="ref/less_d.html">LESS_D</a></li>
<li><a href="ref/less_equal.html">LESS_EQUAL</a></li>
<li><a href="ref/less_equal_d.html">LESS_EQUAL_D</a></li>
<li><a href="ref/limit_dim.html">LIMIT_DIM</a></li>
<li><a href="ref/limit_for.html">LIMIT_FOR</a></li>
<li><a href="ref/limit_iteration.html">LIMIT_ITERATION</a></li>
<li><a href="ref/limit_iteration_dim.html">LIMIT_ITERATION_DIM</a></li>
<li><a href="ref/limit_mag.html">LIMIT_MAG</a></li>
<li><a href="ref/limit_repeat.html">LIMIT_REPEAT</a></li>
<li><a href="ref/limit_slot_count.html">LIMIT_SLOT_COUNT</a></li>
<li><a href="ref/limit_slot_sig.html">LIMIT_SLOT_SIG</a></li>
<li><a href="ref/limit_tuple.html">LIMIT_TUPLE</a></li>
<li><a href="ref/limit_while.html">LIMIT_WHILE</a></li>
<li><a href="ref/line.html">LINE</a></li>
<li><a href="ref/list_append.html">LIST_APPEND</a></li>
<li><a href="ref/list_append_d.html">LIST_APPEND_D</a></li>
<li><a href="ref/list_at.html">LIST_AT</a></li>
<li><a href="ref/list_at_d.html">LIST_AT_D</a></li>
<li><a href="ref/list_cat.html">LIST_CAT</a></li>
<li><a href="ref/list_cat_d.html">LIST_CAT_D</a></li>
<li><a href="ref/list_cons.html">LIST_CONS*</a></li>
<li><a href="ref/list_enum.html">LIST_ENUM</a></li>
<li><a href="ref/list_enum_r.html">LIST_ENUM_R</a></li>
<li><a href="ref/list_filter.html">LIST_FILTER</a></li>
<li><a href="ref/list_filter_d.html">LIST_FILTER_D</a></li>
<li><a href="ref/list_first.html">LIST_FIRST</a></li>
<li><a href="ref/list_first_n.html">LIST_FIRST_N</a></li>
<li><a href="ref/list_first_n_d.html">LIST_FIRST_N_D</a></li>
<li><a href="ref/list_fold_left.html">LIST_FOLD_LEFT</a></li>
<li><a href="ref/list_fold_left_2nd.html">LIST_FOLD_LEFT_2ND*</a></li>
<li><a href="ref/list_fold_left_2nd_d.html">LIST_FOLD_LEFT_2ND_D*</a></li>
<li><a href="ref/list_fold_left_d.html">LIST_FOLD_LEFT_<i>d</i></a></li>
<li><a href="ref/list_fold_left_d_old.html">LIST_FOLD_LEFT_D*</a></li>
<li><a href="ref/list_fold_right.html">LIST_FOLD_RIGHT</a></li>
<li><a href="ref/list_fold_right_2nd.html">LIST_FOLD_RIGHT_2ND*</a></li>
<li><a href="ref/list_fold_right_2nd_d.html">LIST_FOLD_RIGHT_2ND_D*</a></li>
<li><a href="ref/list_fold_right_d.html">LIST_FOLD_RIGHT_<i>d</i></a></li>
<li><a href="ref/list_fold_right_d_old.html">LIST_FOLD_RIGHT_D*</a></li>
<li><a href="ref/list_for_each.html">LIST_FOR_EACH</a></li>
<li><a href="ref/list_for_each_i.html">LIST_FOR_EACH_I</a></li>
<li><a href="ref/list_for_each_i_r.html">LIST_FOR_EACH_I_R</a></li>
<li><a href="ref/list_for_each_product.html">LIST_FOR_EACH_PRODUCT</a></li>
<li><a href="ref/list_for_each_product_r.html">LIST_FOR_EACH_PRODUCT_R</a></li>
<li><a href="ref/list_for_each_r.html">LIST_FOR_EACH_R</a></li>
<li><a href="ref/list_is_cons.html">LIST_IS_CONS</a></li>
<li><a href="ref/list_is_nil.html">LIST_IS_NIL</a></li>
<li><a href="ref/list_nil.html">LIST_NIL*</a></li>
<li><a href="ref/list_rest.html">LIST_REST</a></li>
<li><a href="ref/list_rest_n.html">LIST_REST_N</a></li>
<li><a href="ref/list_rest_n_d.html">LIST_REST_N_D</a></li>
<li><a href="ref/list_reverse.html">LIST_REVERSE</a></li>
<li><a href="ref/list_reverse_d.html">LIST_REVERSE_D</a></li>
<li><a href="ref/list_size.html">LIST_SIZE</a></li>
<li><a href="ref/list_size_d.html">LIST_SIZE_D</a></li>
<li><a href="ref/list_to_tuple.html">LIST_TO_TUPLE</a></li>
<li><a href="ref/list_to_tuple_r.html">LIST_TO_TUPLE_R</a></li>
<li><a href="ref/list_transform.html">LIST_TRANSFORM</a></li>
<li><a href="ref/list_transform_d.html">LIST_TRANSFORM_D</a></li>
<li><a href="ref/local_iterate.html">LOCAL_ITERATE</a></li>
<li><a href="ref/local_limits.html">LOCAL_LIMITS</a></li>
<li><a href="ref/local_macro.html">LOCAL_MACRO</a></li>
<li><a href="ref/lparen.html">LPAREN</a></li>
<li><a href="ref/lparen_if.html">LPAREN_IF</a></li>
<!-- M -->
<li><a href="ref/max.html">MAX</a></li>
<li><a href="ref/max_d.html">MAX_D</a></li>
<li><a href="ref/min.html">MIN</a></li>
<li><a href="ref/min_d.html">MIN_D</a></li>
<li><a href="ref/mod.html">MOD</a></li>
<li><a href="ref/mod_d.html">MOD_D</a></li>
<li><a href="ref/mul.html">MUL</a></li>
<li><a href="ref/mul_d.html">MUL_D</a></li>
<!-- N -->
<li><a href="ref/nil.html">NIL</a></li>
<li><a href="ref/nor.html">NOR</a></li>
<li><a href="ref/not.html">NOT</a></li>
<li><a href="ref/not_equal.html">NOT_EQUAL</a></li>
<li><a href="ref/not_equal_d.html">NOT_EQUAL_D*</a></li>
<!-- O -->
<li><a href="ref/or.html">OR</a></li>
<!-- R -->
<li><a href="ref/relative_finish.html">RELATIVE_FINISH</a></li>
<li><a href="ref/relative_flags.html">RELATIVE_FLAGS</a></li>
<li><a href="ref/relative_iteration.html">RELATIVE_ITERATION</a></li>
<li><a href="ref/relative_start.html">RELATIVE_START</a></li>
<li><a href="ref/repeat.html">REPEAT</a></li>
<li><a href="ref/repeat_1st.html">REPEAT_1ST*</a></li>
<li><a href="ref/repeat_2nd.html">REPEAT_2ND*</a></li>
<li><a href="ref/repeat_3rd.html">REPEAT_3RD*</a></li>
<li><a href="ref/repeat_from_to.html">REPEAT_FROM_TO</a></li>
<li><a href="ref/repeat_from_to_1st.html">REPEAT_FROM_TO_1ST*</a></li>
<li><a href="ref/repeat_from_to_2nd.html">REPEAT_FROM_TO_2ND*</a></li>
<li><a href="ref/repeat_from_to_3rd.html">REPEAT_FROM_TO_3RD*</a></li>
<li><a href="ref/repeat_from_to_d.html">REPEAT_FROM_TO_D</a></li>
<li><a href="ref/repeat_from_to_d_z.html">REPEAT_FROM_TO_D_<i>z</i></a></li>
<li><a href="ref/repeat_from_to_z.html">REPEAT_FROM_TO_<i>z</i></a></li>
<li><a href="ref/repeat_z.html">REPEAT_<i>z</i></a></li>
<li><a href="ref/rparen.html">RPAREN</a></li>
<li><a href="ref/rparen_if.html">RPAREN_IF</a></li>
<!-- S -->
<li><a href="ref/slot.html">SLOT</a></li>
<li><a href="ref/stringize.html">STRINGIZE</a></li>
<li><a href="ref/sub.html">SUB</a></li>
<li><a href="ref/sub_d.html">SUB_D</a></li>
<!-- T -->
<li><a href="ref/tuple_eat.html">TUPLE_EAT</a></li>
<li><a href="ref/tuple_elem.html">TUPLE_ELEM</a></li>
<li><a href="ref/tuple_rem.html">TUPLE_REM</a></li>
<li><a href="ref/tuple_reverse.html">TUPLE_REVERSE</a></li>
<li><a href="ref/tuple_to_list.html">TUPLE_TO_LIST</a></li>
<!-- V -->
<li><a href="ref/value.html">VALUE</a></li>
<!-- W -->
<li><a href="ref/while.html">WHILE</a></li>
<li><a href="ref/while_d.html">WHILE_<i>d</i></a></li>
<!-- X -->
<li><a href="ref/xor.html">XOR</a></li>
</ul>
</body>
</html>

57
doc/ref/add.html Normal file
View File

@ -0,0 +1,57 @@
<html>
<head>
<title>BOOST_PP_ADD</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ADD</b> macro expands to the sum of its arguments.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ADD</b>(<i>x</i>, <i>y</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>x</dt>
<dd>
The first addend of the operation.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
<dt>y</dt>
<dd>
The second addend of the operation.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If the sum of <i>x</i> and <i>y</i> is greater than <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
</div>
<div>
Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.&nbsp;
There is no longer any such restriction.&nbsp;
It is more efficient, however, to use <b>BOOST_PP_ADD_D</b> in such a situation.
</div>
<div>
This macro is the most efficient when <i>x</i> is less than or equal to <i>y</i>.&nbsp;
However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.&nbsp;
In other words, <i>x</i> should be the addend that is <i>most likely</i> to be the largest of the two operands.
</div>
<h4>See Also</h4>
<ul>
<li><a href="add_d.html">BOOST_PP_ADD_D</a></li>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/arithmetic/add.hpp.html">&lt;boost/preprocessor/arithmetic/add.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include <a href="../headers/arithmetic/add.hpp.html">&lt;boost/preprocessor/arithmetic/add.hpp&gt;</a>
<a href="add.html">BOOST_PP_ADD</a>(4, 3) // expands to 7
</pre></div>
</body>
</html>

79
doc/ref/add_d.html Normal file
View File

@ -0,0 +1,79 @@
<html>
<head>
<title>BOOST_PP_ADD_D</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ADD_D</b> macro expands to the sum of its second and third arguments.&nbsp;
It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ADD_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>d</dt>
<dd>
The next available <b>BOOST_PP_WHILE</b> iteration.&nbsp;
</dd>
<dt>x</dt>
<dd>
The first addend of the operation.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
<dt>y</dt>
<dd>
The second addend of the operation.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If the sum of <i>x</i> and <i>y</i> is greater than <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
</div>
<div>
This macro is the most efficient when <i>x</i> is less than or equal to <i>y</i>.&nbsp;
However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.&nbsp;
In other words, <i>x</i> should be the addend that is <i>most likely</i> to be the largest of the two operands.
</div>
<h4>See Also</h4>
<ul>
<li><a href="add.html">BOOST_PP_ADD</a></li>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/arithmetic/add.hpp.html">&lt;boost/preprocessor/arithmetic/add.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/arithmetic/add.hpp.html">boost/preprocessor/arithmetic/add.hpp</a>&gt;
#include &lt;<a href="../headers/arithmetic/dec.hpp.html">boost/preprocessor/arithmetic/dec.hpp</a>&gt;
#include &lt;<a href="../headers/control/while.hpp.html">boost/preprocessor/control/while.hpp</a>&gt;
#include &lt;<a href="../headers/tuple/elem.hpp.html">boost/preprocessor/tuple/elem.hpp</a>&gt;
#define PRED(d, data) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, data)
#define OP(d, data) \
( \
<a href="dec.html">BOOST_PP_DEC</a>( \
<a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, data) \
), \
<a href="add_d.html">BOOST_PP_ADD_D</a>( \
d, \
<a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, data), \
2 \
) \
) \
/**/
// increment 'x' by 2 'n' times
#define STRIDE(x, n) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, <a href="while.html">BOOST_PP_WHILE</a>(PRED, OP, (n, x)))
STRIDE(10, 2) // expands to 14
STRIDE(51, 6) // expands to 63
</pre></div>
</body>
</html>

53
doc/ref/and.html Normal file
View File

@ -0,0 +1,53 @@
<html>
<head>
<title>BOOST_PP_AND</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_AND</b> macro expands to the logical <i>AND</i> of its operands.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_AND</b>(<i>p</i>, <i>q</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>p</dt>
<dd>
The left operand of the operation.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
<dt>q</dt>
<dd>
The right operand of the operation.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If both <i>p</i> and <i>q</i> are non-zero, this macro expands to <i>1</i>.&nbsp;
Otherwise, it expands to <i>0</i>.
</div>
<div>
This macro performs a boolean conversion on each operand before performing the logical <i>AND</i> operation.&nbsp;
If that conversion is not necessary, use <b>BOOST_PP_BITAND</b> instead.
</div>
<h4>See Also</h4>
<ul>
<li><a href="bitand.html">BOOST_PP_BITAND</a></li>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/logical/and.hpp.html">&lt;boost/preprocessor/logical/and.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/logical/and.hpp.html">boost/preprocessor/logical/and.hpp</a>&gt;
<a href="and.html">BOOST_PP_AND</a>(4, 3) // expands to 1
<a href="and.html">BOOST_PP_AND</a>(5, 0) // expands to 0
</pre></div>
</body>
</html>

53
doc/ref/apply.html Normal file
View File

@ -0,0 +1,53 @@
<html>
<head>
<title>BOOST_PP_APPLY</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_APPLY</b> macro abstracts the difference between an argument and nothing.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_APPLY</b>(<i>x</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>x</dt>
<dd>
The abstracted argument.&nbsp;
This argument must be either <b>BOOST_PP_NIL</b> or a <i>tuple</i> with one element--such as <i>(arg)</i> or <i>((a, b))</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If <i>x</i> is <b>BOOST_PP_NIL</b>, this macro expands to nothing.&nbsp;
If <i>x</i> is a one element <i>tuple</i>, it expands to the contents of that <i>tuple</i>.
</div>
<h4>See Also</h4>
<ul>
<li><a href="nil.html">BOOST_PP_NIL</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/facilities/apply.hpp.html">&lt;boost/preprocessor/facilities/apply.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/facilities/apply.hpp.html">boost/preprocessor/facilities/apply.hpp</a>&gt;
#include &lt;<a href="../headers/tuple/elem.hpp.html">boost/preprocessor/tuple/elem.hpp</a>&gt;
#define CV(i) \
<a href="apply.html">BOOST_PP_APPLY</a>( \
<a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>( \
4, i, \
(<a href="nil.html">BOOST_PP_NIL</a>, (const), (volatile), (const volatile)) \
) \
) \
/**/
CV(0) // expands to nothing
CV(1) // expands to const
</pre></div>
</body>
</html>

38
doc/ref/array_data.html Normal file
View File

@ -0,0 +1,38 @@
<html>
<head>
<title>BOOST_PP_ARRAY_DATA</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ARRAY_DATA</b> macro extracts the <i>tuple</i> data from an <i>array</i>.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ARRAY_DATA</b>(<i>array</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>array</dt>
<dd>
An <i>array</i> to be converted to a <i>tuple</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the data portion of an <i>array</i> which is a <i>tuple</i>.
</div>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/array/data.hpp.html">&lt;boost/preprocessor/array/data.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/array/data.hpp.html">boost/preprocessor/array/data.hpp</a>&gt;
#define ARRAY (3, (x, y, z))
<a href="array_data.html">BOOST_PP_ARRAY_DATA</a>(ARRAY) // expands to (x, y, z)
</pre></div>
</body>
</html>

40
doc/ref/array_elem.html Normal file
View File

@ -0,0 +1,40 @@
<html>
<head>
<title>BOOST_PP_ARRAY_ELEM</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ARRAY_ELEM</b> macro extracts an element from a <i>array</i>.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ARRAY_ELEM</b>(<i>i</i>, <i>array</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>i</dt>
<dd>
The zero-based index into the <i>array</i> of the element to be extracted.&nbsp;
</dd>
<dt>array</dt>
<dd>
The <i>array</i> from which an element is to be extracted.&nbsp;
This <i>array</i> must contain at least <i>i</i> + <i>1</i> elements.
</dd>
</dl>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/array/elem.hpp.html">&lt;boost/preprocessor/array/elem.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/array/elem.hpp.html">boost/preprocessor/array/elem.hpp</a>&gt;
#define ARRAY (4, (a, b, c, d))
<a href="array_elem.html">BOOST_PP_ARRAY_ELEM</a>(0, ARRAY) // expands to a
<a href="array_elem.html">BOOST_PP_ARRAY_ELEM</a>(3, ARRAY) // expands to d
</pre></div>
</body>
</html>

34
doc/ref/array_size.html Normal file
View File

@ -0,0 +1,34 @@
<html>
<head>
<title>BOOST_PP_ARRAY_SIZE</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ARRAY_SIZE</b> macro expands to the size of the <i>array</i> passed to it.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>array</dt>
<dd>
An <i>array</i> whose size is to be extracted.
</dd>
</dl>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/array/size.hpp.html">&lt;boost/preprocessor/array/size.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/array/size.hpp.html">boost/preprocessor/array/size.hpp</a>&gt;
#define ARRAY (3, (x, y, z))
<a href="array_size.html">BOOST_PP_ARRAY_SIZE</a>(ARRAY) // expands to 3
</pre></div>
</body>
</html>

103
doc/ref/assert.html Normal file
View File

@ -0,0 +1,103 @@
<html>
<head>
<title>BOOST_PP_ASSERT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ASSERT</b> macro conditionally causes a preprocessing error.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ASSERT</b>(<i>cond</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>cond</dt>
<dd>
A condition that determines whether an assertion occurs.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If <i>cond</i> expands to <i>0</i>, this macro causes a preprocessing error.&nbsp;
Otherwise, it expands to nothing.
</div>
<h4>See Also</h4>
<ul>
<li><a href="assert_msg.html">BOOST_PP_ASSERT_MSG</a></li>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/debug/assert.hpp.html">&lt;boost/preprocessor/debug/assert.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/cat.hpp.html">boost/preprocessor/cat.hpp</a>&gt;
#include &lt;<a href="../headers/debug/assert.hpp.html">boost/preprocessor/debug/assert.hpp</a>&gt;
#include &lt;<a href="../headers/logical/bitnor.hpp.html">boost/preprocessor/logical/bitnor.hpp</a>&gt;
#include &lt;<a href="../headers/logical/compl.hpp.html">boost/preprocessor/logical/compl.hpp</a>&gt;
// The is BOOST_PP_IS_NULLARY macro is not part of
// the public interface of the library because it
// doesn't work on Borland preprocessors. It is
// only used here to illustrate assertions. In
// effect, it detects whether an argument is empty
// parenthesis or some text.
#include &lt;boost/preprocessor/detail/is_nullary.hpp&gt;
#define IS_EDISON_DESIGN_GROUP() \
<a href="compl.html">BOOST_PP_COMPL</a>( \
BOOST_PP_IS_NULLARY( \
<a href="cat.html">BOOST_PP_CAT</a>(IS_EDG_CHECK, __EDG_VERSION) \
) \
) \
/**/
#define IS_EDG_CHECK__EDG_VERSION ()
#define IS_METROWERKS() \
<a href="compl.html">BOOST_PP_COMPL</a>( \
BOOST_PP_IS_NULLARY( \
<a href="cat.html">BOOST_PP_CAT</a>(IS_MWERKS_CHECK, __MWERKS__) \
) \
) \
/**/
#define IS_MWERKS_CHECK__MWERKS__ ()
#define IS_MICROSOFT() \
<a href="bitnor.html">BOOST_PP_BITNOR</a>( \
IS_MICROSOFT_ROOT(), \
IS_EDISON_DESIGN_GROUP() \
) \
/**/
#define IS_MICROSOFT_ROOT() \
BOOST_PP_IS_NULLARY( \
<a href="cat.html">BOOST_PP_CAT</a>(IS_MSVC_CHECK, _MSC_VER) \
) \
/**/
#define IS_MSVC_CHECK_MS_VER ()
// this macro doesn't work on EDG...
// (this is just an example)
#define MACRO(n) \
<a href="cat.html">BOOST_PP_CAT</a>( \
MACRO_, \
IS_EDISON_DESIGN_GROUP() \
)(n) \
/**/
#define MACRO_1(n) \
<a href="assert.html">BOOST_PP_ASSERT</a>(0) \
"Edison Design Group is not supported" \
/**/
#define MACRO_0(n) normal mode: n
MACRO(10)
</pre></div>
</body>
</html>

55
doc/ref/assert_msg.html Normal file
View File

@ -0,0 +1,55 @@
<html>
<head>
<title>BOOST_PP_ASSERT_MSG</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ASSERT_MSG</b> macro conditionally inserts debugging text.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ASSERT_MSG</b>(<i>cond</i>, <i>msg</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>cond</dt>
<dd>
A condition that determines whether an assertion occurs.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
<dt>msg</dt>
<dd>
A message to display if <i>cond</i> evaluates to <i>0</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If <i>cond</i> expands to <i>0</i>, this macro expands to <i>msg</i>.&nbsp;
Otherwise, it expands to nothing.
</div>
<h4>See Also</h4>
<ul>
<li><a href="assert_msg.html">BOOST_PP_ASSERT_MSG</a></li>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/debug/assert.hpp.html">&lt;boost/preprocessor/debug/assert.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/comparison/equal.hpp.html">boost/preprocessor/comparison/equal.hpp</a>&gt;
#include &lt;<a href="../headers/debug/assert.hpp.html">boost/preprocessor/debug/assert.hpp</a>&gt;
// lines are supposed to be counted
// in translation phase 1
#line 9
<a href="assert_msg.html">BOOST_PP_ASSERT_MSG</a>( \
BOOST_PP_EQUAL(__LINE__, 9), \
"incorrect line numbering detected" \
)
</pre></div>
</body>
</html>

50
doc/ref/assign_slot.html Normal file
View File

@ -0,0 +1,50 @@
<html>
<head>
<title>BOOST_PP_ASSIGN_SLOT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ASSIGN_SLOT</b> macro fully evaluates a numeric macro or expression.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>BOOST_PP_ASSIGN_SLOT</b>(<i>i</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>i</dt>
<dd>
The <i>slot</i> index that is to be assigned.&nbsp;
This value must be in the range of <i>1</i> to <b>BOOST_PP_LIMIT_SLOT_COUNT</b>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
Prior to use, the <i>named external argument</i> <b>BOOST_PP_VALUE</b> must be defined.&nbsp;
Also, it must expand to a numeric value that is in the range of <i>0</i> to <i>2</i>^<i>32</i> - <i>1</i>.
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_slot_count.html">BOOST_PP_LIMIT_SLOT_COUNT</a></li>
<li><a href="value.html">BOOST_PP_VALUE</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/slot/slot.hpp.html">&lt;boost/preprocessor/slot/slot.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/slot/slot.hpp.html">boost/preprocessor/slot/slot.hpp</a>&gt;
#define X() 4
#define <a href="value.html">BOOST_PP_VALUE</a> 1 + 2 + 3 + X()
#include <a href="assign_slot.html">BOOST_PP_ASSIGN_SLOT</a>(1)
#undef X
<a href="slot.html">BOOST_PP_SLOT</a>(1) // expands to 10
</pre></div>
</body>
</html>

54
doc/ref/bitand.html Normal file
View File

@ -0,0 +1,54 @@
<html>
<head>
<title>BOOST_PP_BITAND</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_BITAND</b> macro expands to the bitwise <i>AND</i> of its operands.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_BITAND</b>(<i>x</i>, <i>y</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>x</dt>
<dd>
The left operand of the operation.&nbsp;
This value must expand to <i>0</i> or <i>1</i>.
</dd>
<dt>y</dt>
<dd>
The right operand of the operation.&nbsp;
This value must expand to <i>0</i> or <i>1</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If both <i>x</i> and <i>y</i> are <i>1</i>, this macro expands to <i>1</i>.&nbsp;
Otherwise, it expands to <i>0</i>.
</div>
<div>
This macro <i>does not</i> perform a boolean conversion on either operand before performing the bitwise <i>AND</i> operation.&nbsp;
If that conversion is necessary, use <b>BOOST_PP_AND</b> instead.
</div>
<h4>See Also</h4>
<ul>
<li><a href="and.html">BOOST_PP_AND</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/logical/bitand.hpp.html">&lt;boost/preprocessor/logical/bitand.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/logical/bitand.hpp.html">boost/preprocessor/logical/bitand.hpp</a>&gt;
<a href="bitand.html">BOOST_PP_BITAND</a>(0, 0) // expands to 0
<a href="bitand.html">BOOST_PP_BITAND</a>(0, 1) // expands to 0
<a href="bitand.html">BOOST_PP_BITAND</a>(1, 0) // expands to 0
<a href="bitand.html">BOOST_PP_BITAND</a>(1, 1) // expands to 1
</pre></div>
</body>
</html>

54
doc/ref/bitnor.html Normal file
View File

@ -0,0 +1,54 @@
<html>
<head>
<title>BOOST_PP_BITNOR</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_BITNOR</b> macro expands to the bitwise <i>NOR</i> of its operands.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_BITNOR</b>(<i>x</i>, <i>y</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>x</dt>
<dd>
The left operand of the operation.&nbsp;
This value must expand to <i>0</i> or <i>1</i>.
</dd>
<dt>y</dt>
<dd>
The right operand of the operation.&nbsp;
This value must expand to <i>0</i> or <i>1</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If neither <i>x</i> nor <i>y</i> is <i>1</i>, this macro expands to <i>1</i>.&nbsp;
Otherwise, it expands to <i>0</i>.
</div>
<div>
This macro <i>does not</i> perform a boolean conversion on either operand before performing the bitwise <i>NOR</i> operation.&nbsp;
If that conversion is necessary, use <b>BOOST_PP_NOR</b> instead.
</div>
<h4>See Also</h4>
<ul>
<li><a href="nor.html">BOOST_PP_NOR</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/logical/bitnor.hpp.html">&lt;boost/preprocessor/logical/bitnor.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/logical/bitnor.hpp.html">boost/preprocessor/logical/bitnor.hpp</a>&gt;
<a href="bitnor.html">BOOST_PP_BITNOR</a>(0, 0) // expands to 1
<a href="bitnor.html">BOOST_PP_BITNOR</a>(0, 1) // expands to 0
<a href="bitnor.html">BOOST_PP_BITNOR</a>(1, 0) // expands to 0
<a href="bitnor.html">BOOST_PP_BITNOR</a>(1, 1) // expands to 0
</pre></div>
</body>
</html>

54
doc/ref/bitor.html Normal file
View File

@ -0,0 +1,54 @@
<html>
<head>
<title>BOOST_PP_BITOR</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_BITOR</b> macro expands to the bitwise <i>OR</i> of its operands.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_BITOR</b>(<i>x</i>, <i>y</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>x</dt>
<dd>
The left operand of the operation.&nbsp;
This value must expand to <i>0</i> or <i>1</i>.
</dd>
<dt>y</dt>
<dd>
The right operand of the operation.&nbsp;
This value must expand to <i>0</i> or <i>1</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If either <i>x</i> or <i>y</i> is <i>1</i>, this macro expands to <i>1</i>.&nbsp;
Otherwise, it expands to <i>0</i>.
</div>
<div>
This macro <i>does not</i> perform a boolean conversion on either operand before performing the bitwise <i>OR</i> operation.&nbsp;
If that conversion is necessary, use <b>BOOST_PP_OR</b> instead.
</div>
<h4>See Also</h4>
<ul>
<li><a href="or.html">BOOST_PP_OR</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/logical/bitor.hpp.html">&lt;boost/preprocessor/logical/bitor.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/logical/bitor.hpp.html">boost/preprocessor/logical/bitor.hpp</a>&gt;
<a href="bitor.html">BOOST_PP_BITOR</a>(0, 0) // expands to 0
<a href="bitor.html">BOOST_PP_BITOR</a>(0, 1) // expands to 1
<a href="bitor.html">BOOST_PP_BITOR</a>(1, 0) // expands to 1
<a href="bitor.html">BOOST_PP_BITOR</a>(1, 1) // expands to 1
</pre></div>
</body>
</html>

55
doc/ref/bitxor.html Normal file
View File

@ -0,0 +1,55 @@
<html>
<head>
<title>BOOST_PP_BITXOR</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_BITXOR</b> macro expands to the bitwise <i>XOR</i> of its operands.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_BITXOR</b>(<i>x</i>, <i>y</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>x</dt>
<dd>
The left operand of the operation.&nbsp;
This value must expand to <i>0</i> or <i>1</i>.
</dd>
<dt>y</dt>
<dd>
The right operand of the operation.&nbsp;
This value must expand to <i>0</i> or <i>1</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If either <i>x</i> or <i>y</i> is <i>1</i> exclusively, this macro expands to <i>1</i>.&nbsp;
Otherwise, it expands to <i>0</i>.
</div>
<div>
This macro <i>does not</i> perform a boolean conversion on either operand before performing the bitwise <i>OR</i> operation.&nbsp;
If that conversion is necessary, use <b>BOOST_PP_XOR</b> instead.
</div>
<h4>See Also</h4>
<ul>
<li><a href="xor.html">BOOST_PP_XOR</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/logical/bitxor.hpp.html">&lt;boost/preprocessor/logical/bitxor.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/logical/bitxor.hpp.html">boost/preprocessor/logical/bitxor.hpp</a>&gt;
<a href="bitxor.html">BOOST_PP_BITXOR</a>(0, 0) // expands to 0
<a href="bitxor.html">BOOST_PP_BITXOR</a>(0, 1) // expands to 1
<a href="bitxor.html">BOOST_PP_BITXOR</a>(1, 0) // expands to 1
<a href="bitxor.html">BOOST_PP_BITXOR</a>(1, 1) // expands to 0
</pre></div>
</body>
</html>

43
doc/ref/bool.html Normal file
View File

@ -0,0 +1,43 @@
<html>
<head>
<title>BOOST_PP_BOOL</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_BOOL</b> macro performs a boolean conversion on its operand.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_BOOL</b>(<i>x</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>x</dt>
<dd>
The value to be converted.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If <i>x</i> is <i>0</i>, this macro expands to <i>0</i>.&nbsp;
Otherwise it expands to <i>1</i>.
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/logical/bool.hpp.html">&lt;boost/preprocessor/logical/bool.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/logical/bool.hpp.html">boost/preprocessor/logical/bool.hpp</a>&gt;
<a href="bool.hpp">BOOST_PP_BOOL</a>(6) // expands to 1
<a href="bool.hpp">BOOST_PP_BOOL</a>(0) // expands to 0
</pre></div>
</body>
</html>

46
doc/ref/cat.html Normal file
View File

@ -0,0 +1,46 @@
<html>
<head>
<title>BOOST_PP_CAT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_CAT</b> macro concatenates its arguments after they have been expanded.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_CAT</b>(<i>a</i>, <i>b</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>a</dt>
<dd>
The left operand of the concatenation.
</dd>
<dt>b</dt>
<dd>
The right operand of the concatenation.
</dd>
</dl>
<h4>Remarks</h4>
<div>
The preprocessor token-pasting operator (<b>##</b>) prevents arguments from expanding.&nbsp;
This macro allows its arguments to expand before concatenation.
</div>
<div>
Concatenation must not result in an invocation of a macro that uses <b>BOOST_PP_CAT</b>.&nbsp;
If that happens, <b>BOOST_PP_CAT</b> will not expand the second time.
</div>
<!-- <h4>See Also</h4> -->
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/cat.hpp.html">&lt;boost/preprocessor/cat.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/cat.hpp.html">boost/preprocessor/cat.hpp</a>&gt;
<a href="cat.html">BOOST_PP_CAT</a>(x, <a href="cat.html">BOOST_PP_CAT</a>(y, z)) // expands to xyz
</pre></div>
</body>
</html>

32
doc/ref/comma.html Normal file
View File

@ -0,0 +1,32 @@
<html>
<head>
<title>BOOST_PP_COMMA</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_COMMA</b> macro expands to a comma.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_COMMA</b>()
</div>
<h4>Remarks</h4>
<div>
The preprocessor interprets commas as argument separators in macro invocations.&nbsp;
Because of this, commas require special handling.
</div>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/punctuation/comma.hpp.html">&lt;boost/preprocessor/punctuation/comma.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/control/if.hpp.html">boost/preprocessor/control/if.hpp</a>&gt;
#include &lt;<a href="../headers/facilities/empty.hpp.html">boost/preprocessor/facilities/empty.hpp</a>&gt;
#include &lt;<a href="../headers/punctuation/comma.hpp.html">boost/preprocessor/punctuation/comma.hpp</a>&gt;
<a href="if.html">BOOST_PP_IF</a>(1, <a href="comma.html">BOOST_PP_COMMA</a>, <a href="empty.html">BOOST_PP_EMPTY</a>)() // expands to ,
</pre></div>
</body>
</html>

49
doc/ref/comma_if.html Normal file
View File

@ -0,0 +1,49 @@
<html>
<head>
<title>BOOST_PP_COMMA_IF</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_COMMA_IF</b> macro conditionally expands to a comma.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_COMMA_IF</b>(<i>cond</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>cond</dt>
<dd>
The condition that determines if a the macro expands to a comma or nothing.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If <i>cond</i> expands to <i>0</i>, this macro expands to nothing.&nbsp;
Otherwise, it expands to a comma.
</div>
<div>
The preprocessor interprets commas as argument separators in macro invocations.&nbsp;
Because of this, commas require special handling.
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/punctuation/comma_if.hpp.html">&lt;boost/preprocessor/punctuation/comma_if.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/punctuation/comma_if.hpp.html">boost/preprocessor/punctuation/comma_if.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/repeat.hpp.html">boost/preprocessor/repetition/repeat.hpp</a>&gt;
#define MACRO(z, n, text) <a href="comma_if.html">BOOST_PP_COMMA_IF</a>(n) text
<a href="repeat.html">BOOST_PP_REPEAT</a>(3, MACRO, class) // expands to class, class, class
</pre></div>
</body>
</html>

47
doc/ref/compl.html Normal file
View File

@ -0,0 +1,47 @@
<html>
<head>
<title>BOOST_PP_COMPL</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_COMPL</b> macro performs a bitwise inversion (bitwise <i>NOT</i> or one's complement) on its operand.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_COMPL</b>(<i>x</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>x</dt>
<dd>
The value to be converted.&nbsp;
This value must expand to <i>0</i> or <i>1</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If <i>x</i> is <i>0</i>, this macro expands to <i>1</i>.&nbsp;
If <i>x</i> is <i>1</i>, this it expands to <i>0</i>.
</div>
<div>
This macro <i>does not</i> perform a boolean conversion on its operand before performing the inversion <i>OR</i> operation.&nbsp;
If that conversion is necessary, use <b>BOOST_PP_NOT</b> instead.
</div>
<h4>See Also</h4>
<ul>
<li><a href="not.html">BOOST_PP_NOT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/logical/compl.hpp.html">&lt;boost/preprocessor/logical/compl.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/logical/compl.hpp.html">boost/preprocessor/logical/compl.hpp</a>&gt;
<a href="compl.html">BOOST_PP_COMPL</a>(1) // expands to 0
<a href="compl.html">BOOST_PP_COMPL</a>(0) // expands to 1
</pre></div>
</body>
</html>

View File

@ -0,0 +1,33 @@
<html>
<head>
<title>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</b> is a user-defined macro that determines whether <b>BOOST_PP_LINE</b> outputs extended <i>file-iteration</i> state information.
</div>
<h4>Usage</h4>
<div class="code">
#define <b>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</b> <i>n</i>
</div>
<h4>Arguments</h4>
<dl>
<dt>n</dt>
<dd>
The value that determines if <b>BOOST_PP_LINE</b> outputs extended <i>file-iteration</i> information.&nbsp;
This value must be <i>0</i> or <i>1</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If <i>n</i> is <i>1</i>, <b>BOOST_PP_LINE</b> will output extended data.&nbsp;
By default, this macro is set to <i>0</i>.
</div>
<h4>See Also</h4>
<ul>
<li><a href="line.html">BOOST_PP_LINE</a></li>
</ul>
</body>
</html>

43
doc/ref/dec.html Normal file
View File

@ -0,0 +1,43 @@
<html>
<head>
<title>BOOST_PP_DEC</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_DEC</b> macro expands to one less than its argument.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_DEC</b>(<i>x</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>x</dt>
<dd>
The value to be decremented.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If <i>x</i> is <i>0</i>, the result is saturated to <i>0</i>.
</div>
<h4>See Also</h4>
<ul>
<li><a href="inc.html">BOOST_PP_INC</a></li>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/arithmetic/dec.hpp.html">&lt;boost/preprocessor/arithmetic/dec.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/arithmetic/dec.hpp.html">boost/preprocessor/arithmetic/dec.hpp</a>&gt;
<a href="dec.html">BOOST_PP_DEC</a>(<a href="dec.html">BOOST_PP_DEC</a>(6)) // expands to 4
<a href="dec.html">BOOST_PP_DEC</a>(0) // expands to 0
</pre></div>
</body>
</html>

71
doc/ref/deduce_d.html Normal file
View File

@ -0,0 +1,71 @@
<html>
<head>
<title>BOOST_PP_DEDUCE_D</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_DEDUCE_D</b> macro manually deduces the state of the <b>BOOST_PP_WHILE</b> construct.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_DEDUCE_D</b>()
</div>
<h4>Remarks</h4>
<div>
This macro is intended to avoid the use of <i>automatic-recursion</i> at deep expansion depths.&nbsp;
<i>Automatic-recursion</i> at such depths can be inefficient on some preprocessors.&nbsp;
It is not intended to be used directly with the invocation of macros with a <b>_D</b> suffix such as:
<div>
<b>BOOST_PP_ADD_D</b>(<b>BOOST_PP_DEDUCE_D</b>(), <i>x</i>, <i>y</i>)
</div>
If it is used in this context, the <b>_D</b> macro will fail.&nbsp;
The <b>_D</b> macros directly concatenate to the <i>d</i> parameter that is passed to them,
which would prevent <b>BOOST_PP_DEDUCE_D</b>() from expanding.&nbsp;
Furthermore, it is pointless to use this macro in a situation such as this
because it would already be too late to gain any efficiency.
</div>
<h4>See Also</h4>
<ul>
<li><a href="while.html">BOOST_PP_WHILE</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/control/deduce_d.hpp.html">&lt;boost/preprocessor/control/deduce_d.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/arithmetic/add.hpp.html">boost/preprocessor/arithmetic/add.hpp</a>&gt;
#include &lt;<a href="../headers/arithmetic/inc.hpp.html">boost/preprocessor/arithmetic/inc.hpp</a>&gt;
#include &lt;<a href="../headers/arithmetic/sub.hpp.html">boost/preprocessor/arithmetic/sub.hpp</a>&gt;
#include &lt;<a href="../headers/control/deduce_d.hpp.html">boost/preprocessor/control/deduce_d.hpp</a>&gt;
#include &lt;<a href="../headers/punctuation/comma_if.hpp.html">boost/preprocessor/punctuation/comma_if.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/repeat.hpp.html">boost/preprocessor/repetition/repeat.hpp</a>&gt;
#include &lt;<a href="../headers/tuple/elem.hpp.html">boost/preprocessor/tuple/elem.hpp</a>&gt;
#define RANGE(first, last) \
<a href="repeat.html">BOOST_PP_REPEAT</a>( \
<a href="inc.html">BOOST_PP_INC</a>( \
<a href="sub.html">BOOST_PP_SUB</a>(last, first) \
, \
RANGE_M, \
(first, <a href="deduce_d.html">BOOST_PP_DEDUCE_D</a>()) \
) \
/**/
#define RANGE_M(z, n, data) \
RANGE_M_2( \
n, \
<a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, data), \
<a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, data) \
) \
/**/
#define RANGE_M_2(n, first, d) \
<a href="comma_if.html">BOOST_PP_COMMA_IF</a>(n) <a href="add_d.html">BOOST_PP_ADD_D</a>(d, n, first) \
/**/
RANGE(5, 10) // expands to 5, 6, 7, 8, 9, 10
</pre></div>
</body>
</html>

37
doc/ref/deduce_r.html Normal file
View File

@ -0,0 +1,37 @@
<html>
<head>
<title>BOOST_PP_DEDUCE_R</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_DEDUCE_R</b> macro manually deduces the state of the <b>BOOST_PP_FOR</b> construct.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_DEDUCE_R</b>()
</div>
<h4>Remarks</h4>
<div>
This macro is intended to avoid the use of <i>automatic-recursion</i> at deep expansion depths.&nbsp;
<i>Automatic-recursion</i> at such depths can be inefficient on some preprocessors.&nbsp;
It is not intended to be used directly with the invocation of macros with a <b>_R</b> suffix such as:
<div>
<b>BOOST_PP_LIST_ENUM_R</b>(<b>BOOST_PP_DEDUCE_R</b>(), (a, (b, (c, <b>BOOST_PP_NIL</b>))))
</div>
If it is used in this context, the <b>_R</b> macro will fail.&nbsp;
The <b>_R</b> macros directly concatenate to the <i>r</i> parameter that is passed to them,
which would prevent <b>BOOST_PP_DEDUCE_R</b>() from expanding.&nbsp;
Furthermore, it is pointless to use this macro in a situation such as this
because it would already be too late to gain any efficiency.
</div>
<h4>See Also</h4>
<ul>
<li><a href="for.html">BOOST_PP_FOR</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/deduce_r.hpp.html">&lt;boost/preprocessor/repetition/deduce_r.hpp&gt;</a>
</div>
</body>
</html>

37
doc/ref/deduce_z.html Normal file
View File

@ -0,0 +1,37 @@
<html>
<head>
<title>BOOST_PP_DEDUCE_Z</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_DEDUCE_Z</b> macro manually deduces the state of the <b>BOOST_PP_REPEAT</b> construct.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_DEDUCE_Z</b>()
</div>
<h4>Remarks</h4>
<div>
This macro is intended to avoid the use of <i>automatic-recursion</i> at deep expansion depths.&nbsp;
<i>Automatic-recursion</i> at such depths can be inefficient on some preprocessors.&nbsp;
It is not intended to be used directly with the invocation of macros with a <b>_Z</b> suffix such as:
<div>
<b>BOOST_PP_ENUM_PARAMS_Z</b>(<b>BOOST_PP_DEDUCE_Z</b>(), (a, (b, (c, <b>BOOST_PP_NIL</b>))))
</div>
If it is used in this context, the <b>_Z</b> macro will fail.&nbsp;
The <b>_Z</b> macros directly concatenate to the <i>r</i> parameter that is passed to them,
which would prevent <b>BOOST_PP_DEDUCE_Z</b>() from expanding.&nbsp;
Furthermore, it is pointless to use this macro in a situation such as this
because it would already be too late to gain any efficiency.
</div>
<h4>See Also</h4>
<ul>
<li><a href="repeat.html">BOOST_PP_REPEAT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/deduce_z.hpp.html">&lt;boost/preprocessor/repetition/deduce_z.hpp&gt;</a>
</div>
</body>
</html>

52
doc/ref/div.html Normal file
View File

@ -0,0 +1,52 @@
<html>
<head>
<title>BOOST_PP_DIV</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_DIV</b> macro expands to the quotient of its arguments.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_DIV</b>(<i>x</i>, <i>y</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>x</dt>
<dd>
The dividend (numerator) of the operation.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
<dt>y</dt>
<dd>
The divisor (denominator) of the operation.&nbsp;
Valid values range from <i>1</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.&nbsp;
There is no longer any such restriction.&nbsp;
It is more efficient, however, to use <b>BOOST_PP_DIV_D</b> in such a situation.
</div>
<div>
If <i>y</i> is <i>0</i>, the result is undefined.
</div>
<h4>See Also</h4>
<ul>
<li><a href="div_d.html">BOOST_PP_DIV_D</a></li>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/arithmetic/div.hpp.html">&lt;boost/preprocessor/arithmetic/div.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/arithmetic/div.hpp.html">boost/preprocessor/arithmetic/div.hpp</a>&gt;
<a href="div.html">BOOST_PP_DIV</a>(11, 5) // expands to 2
</pre></div>
</body>
</html>

74
doc/ref/div_d.html Normal file
View File

@ -0,0 +1,74 @@
<html>
<head>
<title>BOOST_PP_DIV_D</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_DIV_D</b> macro expands to the quotient of its second and third arguments.&nbsp;
It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_DIV_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>d</dt>
<dd>
The next available <b>BOOST_PP_WHILE</b> iteration.&nbsp;
</dd>
<dt>x</dt>
<dd>
The dividend (numerator) of the operation.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
<dt>y</dt>
<dd>
The divisor (denominator) of the operation.&nbsp;
Valid values range from <i>1</i> to <b>BOOST_PP_LIMIT_MAG</b>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If <i>y</i> is <i>0</i>, the result is undefined.
</div>
<h4>See Also</h4>
<ul>
<li><a href="div.html">BOOST_PP_DIV</a></li>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/arithmetic/div.hpp.html">&lt;boost/preprocessor/arithmetic/div.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/arithmetic/dec.hpp.html">boost/preprocessor/arithmetic/dec.hpp</a>&gt;
#include &lt;<a href="../headers/arithmetic/div.hpp.html">boost/preprocessor/arithmetic/div.hpp</a>&gt;
#include &lt;<a href="../headers/control/while.hpp.html">boost/preprocessor/control/while.hpp</a>&gt;
#include &lt;<a href="../headers/tuple/elem.hpp.html">boost/preprocessor/tuple/elem.hpp</a>&gt;
#define PRED(d, data) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, data)
#define OP(d, data) \
( \
<a href="dec.html">BOOST_PP_DEC</a>( \
<a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, data) \
), \
<a href="div_d.html">BOOST_PP_DIV_D</a>( \
d, \
<a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, data), \
2 \
) \
) \
/**/
// halve 'x' 'n' times
#define HALVE(x, n) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, <a href="while.html">BOOST_PP_WHILE</a>(PRED, OP, (n, x)))
HALVE(8, 2) // expands to 2
HALVE(16, 1) // expands to 8
</pre></div>
</body>
</html>

36
doc/ref/empty.html Normal file
View File

@ -0,0 +1,36 @@
<html>
<head>
<title>BOOST_PP_EMPTY</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_EMPTY</b> macro is a nullary utility macro that expands to nothing.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_EMPTY</b>()
</div>
<h4>Remarks</h4>
<div>
This macro is helps avoid inefficient macro-expansion.&nbsp;
It is primarily useful as arguments to <b>BOOST_PP_IF</b> or <b>BOOST_PP_IIF</b>.
</div>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/facilities/empty.hpp.html">&lt;boost/preprocessor/facilities/empty.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/control/if.hpp.html">boost/preprocessor/control/if.hpp</a>&gt;
#include &lt;<a href="../headers/facilities/empty.hpp.html">boost/preprocessor/facilities/empty.hpp</a>&gt;
#define X() result
#define MACRO(c) <a href="if.html">BOOST_PP_IF</a>(c, X, <a href="empty.html">BOOST_PP_EMPTY</a>)()
MACRO(0) // expands to nothing
MACRO(1) // expands to result
</pre></div>
</body>
</html>

69
doc/ref/enum.html Normal file
View File

@ -0,0 +1,69 @@
<html>
<head>
<title>BOOST_PP_ENUM</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ENUM</b> macro generates a comma-separated list.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ENUM</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>count</dt>
<dd>
The number of repetitious calls to <i>macro</i>.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>macro</dt>
<dd>
A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).&nbsp;
This macro is expanded by <b>BOOST_PP_ENUM</b> with the next available repetition depth,
the current repetition number, and the auxiliary <i>data</i> argument.&nbsp;
</dd>
<dt>data</dt>
<dd>
Auxiliary data passed to <i>macro</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the comma-separated sequence:
<div>
<i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>), <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
</div>
</div>
<div>
The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.&nbsp;
Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.&nbsp;
Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
</div>
<div>
To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_ENUM_<i>z</i></b>.
</div>
<div>
Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.&nbsp;
This limitation no longer exists, as the library can automatically detect the next available repetition depth.
</div>
<h4>See Also</h4>
<ul>
<li><a href="enum_z.html">BOOST_PP_ENUM_<i>z</i></a></li>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/enum.hpp.html">&lt;boost/preprocessor/repetition/enum.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/repetition/enum.hpp.html">boost/preprocessor/repetition/enum.hpp</a>&gt;
#define TEXT(z, n, text) text
<a href="enum.html">BOOST_PP_ENUM</a>(4, TEXT, class) // expands to class, class, class, class
</pre></div>
</body>
</html>

View File

@ -0,0 +1,65 @@
<html>
<head>
<title>BOOST_PP_ENUM_BINARY_PARAMS</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ENUM_BINARY_PARAMS</b> macro generates a comma-separated list of binary parameters.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ENUM_BINARY_PARAMS</b>(<i>count</i>, <i>p1</i>, <i>p2</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>count</dt>
<dd>
The number of parameters to generate.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>p1</dt>
<dd>
The text of the first part of the parameter.&nbsp;
<b>BOOST_PP_ENUM_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
to generate parameters.
</dd>
<dt>p2</dt>
<dd>
The text of the first part of the parameter.&nbsp;
<b>BOOST_PP_ENUM_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
to generate parameters.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the comma-separated sequence:
<div>
<i>p1</i> ## <i>0</i> <i>p2</i> ## <i>0</i>, <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
</div>
</div>
<div>
To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_BINARY_PARAMS_Z</b>.
</div>
<div>
This macro is a replacement for both <b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b> and <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b>.
</div>
<h4>See Also</h4>
<ul>
<li><a href="enum_binary_params_z.html">BOOST_PP_ENUM_BINARY_PARAMS_Z</a></li>
<li><a href="enum_params_with_a_default.html">BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</a></li>
<li><a href="enum_params_with_defaults.html">BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</a></li>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/enum_binary_params.hpp.html">&lt;boost/preprocessor/repetition/enum_binary_params.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/repetition/enum_binary_params.hpp.html">boost/preprocessor/repetition/enum_binary_params.hpp</a>&gt;
<a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a>(3, T, p) // expands to T0 p0, T1 p1, T2 p2
</pre></div>
</body>
</html>

View File

@ -0,0 +1,82 @@
<html>
<head>
<title>BOOST_PP_ENUM_BINARY_PARAMS_Z</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ENUM_BINARY_PARAMS_Z</b> macro generates a comma-separated list of binary parameters.&nbsp;
It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ENUM_BINARY_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>p1</i>, <i>p2</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>z</dt>
<dd>
The next available <b>BOOST_PP_REPEAT</b> dimension.
</dd>
<dt>count</dt>
<dd>
The number of parameters to generate.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>p1</dt>
<dd>
The text of the first part of the parameter.&nbsp;
<b>BOOST_PP_ENUM_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
to generate parameters.
</dd>
<dt>p2</dt>
<dd>
The text of the first part of the parameter.&nbsp;
<b>BOOST_PP_ENUM_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
to generate parameters.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the comma-separated sequence:
<div>
<i>p1</i> ## <i>0</i> <i>p2</i> ## <i>0</i>, <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
</div>
</div>
<div>
This macro is a replacement for both <b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b> and <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b>.
</div>
<h4>See Also</h4>
<ul>
<li><a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a></li>
<li><a href="enum_params_with_a_default.html">BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</a></li>
<li><a href="enum_params_with_defaults.html">BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</a></li>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/enum_binary_params.hpp.html">&lt;boost/preprocessor/repetition/enum_binary_params.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/arithmetic/inc.hpp.html">boost/preprocessor/arithmetic/inc.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/enum_binary_params.hpp.html">boost/preprocessor/repetition/enum_binary_params.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/enum_params.hpp.html">boost/preprocessor/repetition/enum_params.hpp</a>&gt;
#define FUNCTION(z, n, _) \
template&lt;<a href="enum_params_z.html">BOOST_PP_ENUM_PARAMS_Z</a>(z, <a href="inc.html">BOOST_PP_INC</a>(n), class T)&gt; \
void f(<a href="enum_binary_params_z.html">BOOST_PP_ENUM_BINARY_PARAMS_Z</a>(z, <a href="inc.html">BOOST_PP_INC</a>(n), T, p)) { \
/* ... */ \
} \
/**/
<a href="repeat.html">BOOST_PP_REPEAT</a>(2, FUNCTION, nil)
/*
expands to...
template&lt;class T0&gt; void f(T0 p0) { }
template&lt;class T0, class T1&gt; void f(T0 p0, T1 p1) { }
*/
</pre></div>
</body>
</html>

58
doc/ref/enum_params.html Normal file
View File

@ -0,0 +1,58 @@
<html>
<head>
<title>BOOST_PP_ENUM_PARAMS</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ENUM_PARAMS</b> macro generates a comma-separated list of parameters.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ENUM_PARAMS</b>(<i>count</i>, <i>param</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>count</dt>
<dd>
The number of parameters to generate.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>param</dt>
<dd>
The text of the parameter.&nbsp;
<b>BOOST_PP_ENUM_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
to generate parameters.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the comma-separated sequence:
<div>
<i>param</i> ## <i>0</i>, <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
</div>
</div>
<div>
To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_PARAMS_Z</b>.
</div>
<div>
Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.&nbsp;
This limitation no longer exists, as the library can automatically detect the next available repetition depth.
</div>
<h4>See Also</h4>
<ul>
<li><a href="enum_params_z.html">BOOST_PP_ENUM_PARAMS_Z</a></li>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/enum_params.hpp.html">&lt;boost/preprocessor/repetition/enum_params.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/repetition/enum_params.hpp.html">boost/preprocessor/repetition/enum_params.hpp</a>&gt;
<a href="enum_params.html">BOOST_PP_ENUM_PARAMS</a>(3, class T) // expands to class T0, class T1, class T2
</pre></div>
</body>
</html>

View File

@ -0,0 +1,72 @@
<html>
<head>
<title>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b> macro generates a comma-separated list of parameters with a default argument.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b>(<i>count</i>, <i>param</i>, <i>def</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>count</dt>
<dd>
The number of parameters to generate.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>param</dt>
<dd>
The text of the parameter.&nbsp;
<b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
to generate parameters.
</dd>
<dt>def</dt>
<dd>
The default value that trails each parameter.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the comma-separated sequence:
<div>
<i>param</i> ## <i>0</i> = <i>def</i>, <i>param</i> ## <i>1</i> = <i>def</i>, ... <i>param</i> ## <i>count</i> - <i>1</i> = <i>def</i>
</div>
</div>
<div>
Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.&nbsp;
This limitation no longer exists, as the library can automatically detect the next available repetition depth.
</div>
<div>
This macro is deprecated.&nbsp;
It only exists for backward compatibility.&nbsp;
Use <b>BOOST_PP_ENUM_BINARY_PARAMS</b> with <b>BOOST_PP_INTERCEPT</b> instead:
<div>
<b>BOOST_PP_ENUM_BINARY_PARAMS</b>(<i>count</i>, <i>param</i>, = <i>def</i> <b>BOOST_PP_INTERCEPT</b>)
</div>
</div>
<h4>See Also</h4>
<ul>
<li><a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a></li>
<li><a href="intercept.html">BOOST_PP_INTERCEPT</a></li>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/enum_params_with_a_default.hpp.html">&lt;boost/preprocessor/repetition/enum_params_with_a_default.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/repetition/enum_params_with_a_default.hpp.html">boost/preprocessor/repetition/enum_params_with_a_default.hpp</a>&gt;
<a href="enum_params_with_a_default.html">BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</a>(3, class T, int)
// expands to T0 = int, T1 = int, T2 = int
<a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a>(3, class T, = int <a href="intercept.html">BOOST_PP_INTERCEPT</a>)
// expands to T0 = int, T1 = int, T2 = int
</pre></div>
</body>
</html>

View File

@ -0,0 +1,73 @@
<html>
<head>
<title>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b> macro generates a comma-separated list of parameters with default arguments.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b>(<i>count</i>, <i>param</i>, <i>def</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>count</dt>
<dd>
The number of parameters to generate.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>param</dt>
<dd>
The text of the parameter.&nbsp;
<b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
to generate parameters.
</dd>
<dt>def</dt>
<dd>
The default value that trails each parameter.
<b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
to generate default arguments.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the comma-separated sequence:
<div>
<i>param</i> ## <i>0</i> = <i>def</i> ## <i>0</i>, <i>param</i> ## <i>1</i> = <i>def</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i> = <i>def</i> ## <i>count</i> - <i>1</i>
</div>
</div>
<div>
Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.&nbsp;
This limitation no longer exists, as the library can automatically detect the next available repetition depth.
</div>
<div>
This macro is deprecated.&nbsp;
It only exists for backward compatibility.&nbsp;
Use <b>BOOST_PP_ENUM_BINARY_PARAMS</b> instead:
<div>
<b>BOOST_PP_ENUM_BINARY_PARAMS</b>(<i>count</i>, <i>param</i>, = <i>def</i>)
</div>
</div>
<h4>See Also</h4>
<ul>
<li><a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a></li>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/enum_params_with_defaults.hpp.html">&lt;boost/preprocessor/repetition/enum_params_with_defaults.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/repetition/enum_params_with_defaults.hpp.html">boost/preprocessor/repetition/enum_params_with_defaults.hpp</a>&gt;
<a href="enum_params_with_defaults.html">BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</a>(3, class T, U)
// expands to T0 = U0, T1 = U1, T2 = U2
<a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a>(3, class T, = U)
// expands to T0 = U0, T1 = U1, T2 = U2
</pre></div>
</body>
</html>

View File

@ -0,0 +1,71 @@
<html>
<head>
<title>BOOST_PP_ENUM_PARAMS_Z</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ENUM_PARAMS_Z</b> macro generates a comma-separated list of parameters.&nbsp;
It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ENUM_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>param</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>z</dt>
<dd>
The next available <b>BOOST_PP_REPEAT</b> dimension.
</dd>
<dt>count</dt>
<dd>
The number of parameters to generate.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>param</dt>
<dd>
The text of the parameter.&nbsp;
<b>BOOST_PP_ENUM_PARAMS_Z</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
to generate parameters.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the comma-separated sequence:
<div>
<i>param</i> ## <i>0</i>, <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
</div>
</div>
<h4>See Also</h4>
<ul>
<li><a href="enum_params.html">BOOST_PP_ENUM_PARAMS</a></li>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/enum_params.hpp.html">&lt;boost/preprocessor/repetition/enum_params.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div id="sample"><pre>
#include &lt;<a href="../headers/arithmetic/inc.hpp.html">boost/preprocessor/arithmetic/inc.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/enum_params.hpp.html">boost/preprocessor/repetition/enum_params.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/repeat.hpp.html">boost/preprocessor/repetition/repeat.hpp</a>&gt;
#define MACRO(z, n, _) \
template&lt; \
<a href="enum_params_z.html">BOOST_PP_ENUM_PARAMS_Z</a>(z, <a href="inc.html">BOOST_PP_INC</a>(n), class T) \
&gt; class X ## n { \
/* ... */ \
}; \
/**/
<a href="repeat.html">BOOST_PP_REPEAT</a>(2, MACRO, nil)
/*
expands to...
template&lt;class T0&gt; class X0 { };
template&lt;class T0, class T1&gt; class X1 { };
*/
</pre></div>
</body>
</html>

71
doc/ref/enum_shifted.html Normal file
View File

@ -0,0 +1,71 @@
<html>
<head>
<title>BOOST_PP_ENUM_SHIFTED</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ENUM_SHIFTED</b> macro generates a comma-separated, shifted list.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ENUM_SHIFTED</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>count</dt>
<dd>
The number of repetitious calls to <i>macro</i>.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>macro</dt>
<dd>
A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).&nbsp;
This macro is expanded by <b>BOOST_PP_ENUM_SHIFTED</b> with the next available repetition depth,
the current repetition number, and the auxiliary <i>data</i> argument.&nbsp;
</dd>
<dt>data</dt>
<dd>
Auxiliary data passed to <i>macro</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the comma-separated sequence:
<div>
<i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
</div>
</div>
<div>
The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.&nbsp;
Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.&nbsp;
Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
</div>
<div>
To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_ENUM_SHIFTED_<i>z</i></b>.
</div>
<div>
Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.&nbsp;
This limitation no longer exists, as the library can automatically detect the next available repetition depth.
</div>
<h4>See Also</h4>
<ul>
<li><a href="enum_shifted_z.html">BOOST_PP_ENUM_SHIFTED_<i>z</i></a></li>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/enum_shifted.hpp.html">&lt;boost/preprocessor/repetition/enum_shifted.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/repetition/enum.hpp.html">boost/preprocessor/repetition/enum.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/enum_shifted.hpp.html">boost/preprocessor/repetition/enum_shifted.hpp</a>&gt;
#define TYPE(z, n, type) type
<a href="enum.html">BOOST_PP_ENUM</a>(5, TYPE, int) // expands to int, int, int, int, int
<a href="enum_shifted.html">BOOST_PP_ENUM_SHIFTED</a>(5, TYPE, int) // expands to int, int, int, int
</pre></div>
</body>
</html>

View File

@ -0,0 +1,62 @@
<html>
<head>
<title>BOOST_PP_ENUM_SHIFTED_PARAMS</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ENUM_SHIFTED_PARAMS</b> macro generates a comma-separated, shifted list of parameters.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ENUM_SHIFTED_PARAMS</b>(<i>count</i>, <i>param</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>count</dt>
<dd>
The number of parameters to generate.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>param</dt>
<dd>
The text of the parameter.&nbsp;
<b>BOOST_PP_ENUM_SHIFTED_PARAMS</b> concatenates numbers ranging from <i>1</i> to <i>count</i> - <i>1</i>
to generate parameters.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the comma-separated sequence:
<div>
<i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
</div>
</div>
<div>
This macro facilitates a typical usage of the library.&nbsp;
Shifted parameter lists are common in template metaprograms.
</div>
<div>
To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</b>.
</div>
<div>
Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.&nbsp;
This limitation no longer exists, as the library can automatically detect the next available repetition depth.
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
<li><a href="enum_shifted_params_z.html">BOOST_PP_SHIFTED_ENUM_PARAMS_<i>z</i></a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/enum_shifted_params.hpp.html">&lt;boost/preprocessor/repetition/enum_shifted_params.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/repetition/enum_shifted_params.hpp.html">boost/preprocessor/repetition/enum_shifted_params.hpp</a>&gt;
<a href="enum_shifted_params.html">BOOST_PP_ENUM_SHIFTED_PARAMS</a>(3, class T) // expands to class T1, class T2
</pre></div>
</body>
</html>

View File

@ -0,0 +1,68 @@
<html>
<head>
<title>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</b> macro generates a comma-separated, shifted list of parameters.&nbsp;
It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>param</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>z</dt>
<dd>
The next available <b>BOOST_PP_REPEAT</b> dimension.
</dd>
<dt>count</dt>
<dd>
The number of parameters to generate.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>param</dt>
<dd>
The text of the parameter.&nbsp;
<b>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</b> concatenates numbers ranging from <i>1</i> to <i>count</i> - <i>1</i>
to generate parameters.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the comma-separated sequence:
<div>
<i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
</div>
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
<li><a href="enum_shifted_params.html">BOOST_PP_ENUM_SHIFTED_PARAMS</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/enum_shifted_params.hpp.html">&lt;boost/preprocessor/repetition/enum_shifted_params.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/repetition/enum_params.hpp.html">boost/preprocessor/repetition/enum_params.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/enum_shifted_params.hpp.html">boost/preprocessor/repetition/enum_shifted_params.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/repeat.hpp.html">boost/preprocessor/repetition/repeat.hpp</a>&gt;
int add(void) {
return 0;
}
#define ADD_F(z, n, _) \
int add_f(<a href="enum_params_z.html">BOOST_PP_ENUM_PARAMS_Z</a>(z, <a href="inc.html">BOOST_PP_INC</a>(n), int p)) { \
return p0 + add_f(<a href="enum_shifted_params_z.html">BOOST_PP_ENUM_SHIFTED_PARAMS_Z</a>(z, <a href="inc.html">BOOST_PP_INC</a>(n), p)); \
} \
/**/
<a href="repeat.html">BOOST_PP_REPEAT</a>(5, ADD_F, nil)
</pre></div>
</body>
</html>

View File

@ -0,0 +1,82 @@
<html>
<head>
<title>BOOST_PP_ENUM_SHIFTED_z</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ENUM_SHIFTED_<i>z</i></b> macro represents a reentry into the <b>BOOST_PP_ENUM_SHIFTED</b> repetition construct.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ENUM_SHIFTED_</b> ## <i>z</i>(<i>count</i>, <i>macro</i>, <i>data</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>z</dt>
<dd>
The next available <b>BOOST_PP_REPEAT</b> dimension.
</dd>
<dt>count</dt>
<dd>
The number of repetitious calls to <i>macro</i>.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>macro</dt>
<dd>
A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).&nbsp;
This macro is expanded by <b>BOOST_PP_ENUM_SHIFTED</b> with the next available repetition depth,
the current repetition number, and the auxiliary <i>data</i> argument.&nbsp;
</dd>
<dt>data</dt>
<dd>
Auxiliary data passed to <i>macro</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the sequence:
<div>
<i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
</div>
</div>
<div>
At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.&nbsp;
This happens when the <i>z</i> value is a macro invocation itself.&nbsp;
It needs a delay to allow it to expand.&nbsp;
The syntax in such a scenario becomes:
<div>
<b>BOOST_PP_CAT</b>(<b>BOOST_PP_ENUM_SHIFTED_</b>, <i>z</i>)(<i>count</i>, <i>macro</i>, <i>data</i>).
</div>
</div>
<h4>See Also</h4>
<ul>
<li><a href="cat.html">BOOST_PP_CAT</a></li>
<li><a href="enum_shifted.html">BOOST_PP_ENUM_SHIFTED</a></li>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/enum_shifted.hpp.html">&lt;boost/preprocessor/repetition/enum_shifted.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/arithmetic/inc.hpp.html">boost/preprocessor/arithmetic/inc.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/enum_shifted.hpp.html">boost/preprocessor/repetition/enum_shifted.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/repeat.hpp.html">boost/preprocessor/repetition/repeat.hpp</a>&gt;
#define TEXT(z, n, text) text
#define MACRO(z, n, data) \
( \
<a href="enum_shifted_z.html">BOOST_PP_ENUM_SHIFTED_</a> ## z( \
BOOST_PP_INC(n), \
TEXT, data \
) \
) \
/**/
<a href="repeat.html">BOOST_PP_REPEAT</a>(3, MACRO, class) // expands to () (class) (class, class)
</pre></div>
</body>
</html>

View File

@ -0,0 +1,72 @@
<html>
<head>
<title>BOOST_PP_ENUM_TRAILING</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ENUM_TRAILING</b> macro generates a comma-separated list with a leading comma.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ENUM_TRAILING</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>count</dt>
<dd>
The number of repetitious calls to <i>macro</i>.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>macro</dt>
<dd>
A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).&nbsp;
This macro is expanded by <b>BOOST_PP_ENUM</b> with the next available repetition depth,
the current repetition number, and the auxiliary <i>data</i> argument.&nbsp;
</dd>
<dt>data</dt>
<dd>
Auxiliary data passed to <i>macro</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the comma-separated sequence:
<div>
, <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>), <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
</div>
</div>
<div>
The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.&nbsp;
Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.&nbsp;
Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
</div>
<div>
To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_ENUM_TRAILING_<i>z</i></b>.
</div>
<h4>See Also</h4>
<ul>
<li><a href="enum_trailing_z.html">BOOST_PP_ENUM_TRAILING_<i>z</i></a></li>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/enum_trailing.hpp.html">&lt;boost/preprocessor/repetition/enum_trailing.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/repetition/enum_trailing.hpp.html">boost/preprocessor/repetition/enum_trailing.hpp</a>&gt;
#define TEXT(z, n, text) text
template&lt;class <a href="enum_trailing.html">BOOST_PP_ENUM_TRAILING</a>(3, TEXT, class)&gt;
class X { };
/*
expands to...
template&lt;class, class, class, class&gt;
class X { };
*/
</pre></div>
</body>
</html>

View File

@ -0,0 +1,72 @@
<html>
<head>
<title>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</b> macro generates a comma-separated list of binary parameters with a leading comma.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</b>(<i>count</i>, <i>p1</i>, <i>p2</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>count</dt>
<dd>
The number of parameters to generate.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>p1</dt>
<dd>
The text of the first part of the parameter.&nbsp;
<b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
to generate parameters.
</dd>
<dt>p2</dt>
<dd>
The text of the first part of the parameter.&nbsp;
<b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
to generate parameters.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the comma-separated sequence:
<div>
, <i>p1</i> ## <i>0</i> <i>p2</i> ## <i>0</i>, <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
</div>
</div>
<div>
To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</b>.
</div>
<h4>See Also</h4>
<ul>
<li><a href="enum_trailing_binary_params_z.html">BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</a></li>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/enum_trailing_binary_params.hpp.html">&lt;boost/preprocessor/repetition/enum_trailing_binary_params.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/facilities/intercept.hpp.html">boost/preprocessor/facilities/intercept.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/enum_trailing_binary_params.hpp.html">boost/preprocessor/repetition/enum_trailing_binary_params.hpp</a>&gt;
template&lt;class X <a href="enum_trailing_binary_params.html">BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</a>(4, class A, = X <a href="intercept.html">BOOST_PP_INTERCEPT</a>)&gt;
struct sample {
// ...
};
/* expands to...
template&lt;class X, class A0 = X, class A1 = X, class A2 = X, class A3 = X&gt;
struct sample {
// ...
}
*/
</pre></div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More