This commit was manufactured by cvs2svn to create branch 'RC_1_29_0'.

[SVN r15698]
This commit is contained in:
nobody
2002-10-03 23:21:49 +00:00
371 changed files with 17845 additions and 0 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

@ -0,0 +1,197 @@
# /* Copyright (C) 2002
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * Permission to copy, use, modify, sell and distribute this software is
# * granted provided this copyright notice appears in all copies. This
# * software is provided "as is" without express or implied warranty, and
# * with no claim as to its suitability for any purpose.
# */
#
# /* Revised by Paul Mensonides (2002) */
#
# /* See http://www.boost.org for most recent version. */
#
# /* This example implements over 2200 functions for 1-dimensional arithmetic
# * array manipulation in C. The idea is to use preprocessor data structures,
# * lists, and tuples for storing metainformation to be used for generating
# * the actual C code.
# *
# * Who needs templates anyway? :)
# *
# * Compile with any C compiler with a standards conforming preprocessor.
# */
#
# include <boost/preprocessor/comparison/less.hpp>
# include <boost/preprocessor/control/if.hpp>
# include <boost/preprocessor/list/at.hpp>
# include <boost/preprocessor/list/cat.hpp>
# include <boost/preprocessor/list/for_each_product.hpp>
# include <boost/preprocessor/logical/or.hpp>
# include <boost/preprocessor/tuple/to_list.hpp>
# include <boost/preprocessor/tuple/eat.hpp>
#
# /* Information about C operators */
#
# /* Accessors for the operator datatype. */
# define OP_SYMBOL(O) BOOST_PP_TUPLE_ELEM(5, 0, O)
# define OP_NAME(O) BOOST_PP_TUPLE_ELEM(5, 1, O)
# define OP_IS_FLOATING(O) BOOST_PP_TUPLE_ELEM(5, 2, O)
# define OP_IS_LOGICAL(O) BOOST_PP_TUPLE_ELEM(5, 3, O)
# define OP_IS_SHIFT(O) BOOST_PP_TUPLE_ELEM(5, 4, O)
#
# /* List of applicative unary operators. */
# define APPLICATIVE_UNARY_OPS \
BOOST_PP_TUPLE_TO_LIST( \
3, \
( \
( ! , logical_not, 1, 1, 0), \
( ~ , bitwise_not, 0, 0, 0), \
( - , neg, 1, 0, 0) \
) \
) \
/**/
#
# /* List of applicative binary operators. */
# define APPLICATIVE_BINARY_OPS \
BOOST_PP_TUPLE_TO_LIST( \
18, \
( \
( * , mul ,1 ,0 ,0), \
( / , div ,1 ,0 ,0), \
( % , mod ,0 ,0 ,0), \
( + , add ,1 ,0 ,0), \
( - , sub ,1 ,0 ,0), \
( << , shift_left ,0 ,0 ,1), \
( >> , shift_right ,0 ,0 ,1), \
( < , less ,1 ,1 ,0), \
( <= , less_equal ,1 ,1 ,0), \
( >= , greater_equal ,1 ,1 ,0), \
( > , greater ,1 ,1 ,0), \
( == , equal ,1 ,1 ,0), \
( != , not_equal ,1 ,1 ,0), \
( & , bitwise_and ,0 ,0 ,0), \
( | , bitwise_or ,0 ,0 ,0), \
( ^ , bitwise_xor ,0 ,0 ,0), \
( && , logical_and ,1 ,1 ,0), \
( || , logical_or ,1 ,1 ,0) \
) \
) \
/**/
#
# /* Information about C built-in types. */
#
# /* Accessors for the type datatype. */
# define TYPE_NAME(T) BOOST_PP_TUPLE_ELEM(4, 0, T)
# define TYPE_ABBREVIATION(T) BOOST_PP_TUPLE_ELEM(4, 1, T)
# define TYPE_IS_FLOATING(T) BOOST_PP_TUPLE_ELEM(4, 2, T)
# define TYPE_RANK(T) BOOST_PP_TUPLE_ELEM(4, 3, T)
#
# /* List of C built-in types. */
# define BUILTIN_TYPES \
BOOST_PP_TUPLE_TO_LIST( \
12, \
( \
( signed char ,sc, 0, 1), \
( char ,ch, 0, 1), \
( unsigned char ,uc, 0, 1), \
( short ,ss, 0, 2), \
( unsigned short ,us, 0, 2), \
TYPE_INT, \
( unsigned ,ui, 0, 4), \
( long ,sl, 0, 5), \
( unsigned long ,ul, 0, 6), \
( float ,fl, 1, 7), \
( double ,db, 1, 8), \
( long double ,ld, 1, 9) \
) \
) \
/**/
#
# /* Type int is needed in some type computations. */
# define TYPE_INT (int, si, 0, 3)
#
# /* Type computation macros. */
# define TYPE_OF_INTEGER_PROMOTION(T) \
BOOST_PP_IF( \
BOOST_PP_LESS(TYPE_RANK(T), TYPE_RANK(TYPE_INT)), \
TYPE_INT, T \
) \
/**/
# define TYPE_OF_USUAL_ARITHMETIC_CONVERSION(L, R) \
TYPE_OF_INTEGER_PROMOTION( \
BOOST_PP_IF( \
BOOST_PP_LESS(TYPE_RANK(L), TYPE_RANK(R)), \
R, L \
) \
) \
/**/
# define TYPE_OF_UNARY_OP(O, T) \
BOOST_PP_IF( \
OP_IS_LOGICAL(O), \
TYPE_INT, TYPE_OF_INTEGER_PROMOTION(T) \
) \
/**/
# define TYPE_OF_BINARY_OP(O, L, R) \
BOOST_PP_IF( \
OP_IS_LOGICAL(O), TYPE_INT, \
BOOST_PP_IF( \
OP_IS_SHIFT(O), \
TYPE_OF_INTEGER_PROMOTION(L), \
TYPE_OF_USUAL_ARITHMETIC_CONVERSION(L,R) \
) \
) \
/**/
# define IS_VALID_UNARY_OP_AND_TYPE_COMBINATION(O, T) \
BOOST_PP_IF( \
TYPE_IS_FLOATING(T), \
OP_IS_FLOATING(O), 1 \
) \
/**/
# define IS_VALID_BINARY_OP_AND_TYPE_COMBINATION(O, L, R) \
BOOST_PP_IF( \
BOOST_PP_OR(TYPE_IS_FLOATING(L), TYPE_IS_FLOATING(R)), \
OP_IS_FLOATING(O), 1 \
) \
/**/
#
# /* Generates code for all unary operators and integral types. */
# define UNARY_ARRAY_OP(_, OT) \
BOOST_PP_IF( \
IS_VALID_UNARY_OP_AND_TYPE_COMBINATION OT, \
UNARY_ARRAY_OP_CODE, BOOST_PP_TUPLE_EAT(2) \
) OT \
/**/
# define UNARY_ARRAY_OP_CODE(O, T) \
void BOOST_PP_LIST_CAT(BOOST_PP_TUPLE_TO_LIST(4, (array_, OP_NAME(O), _, TYPE_ABBREVIATION(T)))) \
(const TYPE_NAME(T)* in, TYPE_NAME(TYPE_OF_UNARY_OP(O, T))* out, unsigned n) { \
do { \
*out++ = OP_SYMBOL(O) *in++; \
} while (--n); \
} \
/**/
BOOST_PP_LIST_FOR_EACH_PRODUCT(UNARY_ARRAY_OP, 2, (APPLICATIVE_UNARY_OPS, BUILTIN_TYPES))
# /* Generates code for all binary operators and integral type pairs. */
# define BINARY_ARRAY_OP(_, OLR) \
BOOST_PP_IF( \
IS_VALID_BINARY_OP_AND_TYPE_COMBINATION OLR, \
BINARY_ARRAY_OP_CODE, BOOST_PP_TUPLE_EAT(3) \
) OLR \
/**/
# define BINARY_ARRAY_OP_CODE(O, L, R) \
void BOOST_PP_LIST_CAT( \
BOOST_PP_TUPLE_TO_LIST( \
6, (array_, OP_NAME(O), _, TYPE_ABBREVIATION(L), _, TYPE_ABBREVIATION(R)) \
) \
)(const TYPE_NAME(L)* lhs_in, const TYPE_NAME(R)* rhs_in, TYPE_NAME(TYPE_OF_BINARY_OP(O, L, R))* out, unsigned n) { \
do { \
*out++ = *lhs_in OP_SYMBOL(O) *rhs_in; \
++lhs_in; \
++rhs_in; \
} while (--n); \
} \
/**/
BOOST_PP_LIST_FOR_EACH_PRODUCT(BINARY_ARRAY_OP, 3, (APPLICATIVE_BINARY_OPS, BUILTIN_TYPES, BUILTIN_TYPES))

View File

@ -0,0 +1,52 @@
# /* Copyright (C) 2002
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * Permission to copy, use, modify, sell and distribute this software is
# * granted provided this copyright notice appears in all copies. This
# * software is provided "as is" without express or implied warranty, and
# * with no claim as to its suitability for any purpose.
# */
#
# /* Revised by Paul Mensonides (2002) */
#
# /* See http://www.boost.org for most recent version. */
#
# /* This example demonstrates the usage of lists and BOOST_PP_LIST_FOR_EACH(). */
#
# include <iostream>
# include <typeinfo>
#
# include <boost/preprocessor/list/for_each.hpp>
# include <boost/preprocessor/tuple/to_list.hpp>
#
# /* List of built-in types. (Strictly speaking wchar_t should be on the list.) */
#
# define BUILTIN_TYPES \
BOOST_PP_TUPLE_TO_LIST( \
13, \
( \
bool, \
char, signed char, unsigned char, \
unsigned short, short, \
int, unsigned, \
long, unsigned long, \
float, \
double, long double \
) \
) \
/**/
#
# define CATCH(R, _, T) \
catch (T t) { \
std::cerr << "Caught an " << typeid(t).name() << " = " << t; \
} \
/**/
int main() {
try {
throw 10;
}
BOOST_PP_LIST_FOR_EACH(CATCH, _, BUILTIN_TYPES)
return 0;
}

96
doc/examples/delay.c Normal file
View File

@ -0,0 +1,96 @@
# /* Copyright (C) 2002
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * Permission to copy, use, modify, sell and distribute this software is
# * granted provided this copyright notice appears in all copies. This
# * software is provided "as is" without express or implied warranty, and
# * with no claim as to its suitability for any purpose.
# */
#
# /* Revised by Paul Mensonides (2002) */
#
# /* See http://www.boost.org for most recent version. */
#
# /* The time complexity of DELAY(N) is O(2^N).
# *
# * Handy when recompiles are too fast to take a coffee break. :)
# *
# * Template metaprogramming can be used for implementing similar
# * delays. Unfortunately template instantiation consumes memory,
# * therefore compilers usually fail to fully compile long template
# * based delays, because they run out of memory.
# *
# * On many compilers (e.g. g++, MSVC++), this macro takes only a
# * small amount of memory to preprocess. On some compilers (e.g.
# * MWCW), however, this macro seems to consume huge amounts of
# * memory.
# */
#
# include <boost/preprocessor/arithmetic/dec.hpp>
# include <boost/preprocessor/cat.hpp>
# include <boost/preprocessor/control/while.hpp>
# include <boost/preprocessor/facilities/empty.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
#
# ifndef DELAY_MAX
# define DELAY_MAX 14
# endif
#
# define DELAY(N) BOOST_PP_TUPLE_ELEM(2, 0, (BOOST_PP_EMPTY, BOOST_PP_WHILE(DELAY_C, BOOST_PP_CAT(DELAY_F, N), BOOST_PP_DEC(N))))()
#
# define DELAY_C(D, N) N
#
# define DELAY_F0(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F1(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F2(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F3(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F4(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F5(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F6(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F7(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F8(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F9(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F10(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F11(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F12(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F13(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F14(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F15(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F16(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F17(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F18(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F19(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F20(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F21(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F22(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F23(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F24(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F25(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F26(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F27(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F28(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F29(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F30(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F31(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F32(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F33(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F34(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F35(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F36(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F37(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F38(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F39(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F40(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F41(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F42(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F43(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F44(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F45(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F46(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F47(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F48(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F49(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
# define DELAY_F50(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
DELAY(DELAY_MAX)

View File

@ -0,0 +1,62 @@
# /* Copyright (C) 2002
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * Permission to copy, use, modify, sell and distribute this software is
# * granted provided this copyright notice appears in all copies. This
# * software is provided "as is" without express or implied warranty, and
# * with no claim as to its suitability for any purpose.
# */
#
# /* Revised by Paul Mensonides (2002) */
#
# /* See http://www.boost.org for most recent version. */
#
# /* This example uses the preprocessor library to implement a generalized
# * macro for implementing Duff's Device.
# *
# * This example was inspired by an original generalized macro for
# * for implementing Duff's Device written by Joerg Walter.
# */
#
# include <assert.h>
#
# include <boost/preprocessor/repetition/repeat.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
#
# /* Expands to a Duff's Device. */
# define DUFFS_DEVICE(UNROLLING_FACTOR, COUNTER_TYPE, N, STATEMENT) \
do { \
COUNTER_TYPE duffs_device_initial_cnt = (N); \
if (duffs_device_initial_cnt > 0) { \
COUNTER_TYPE duffs_device_running_cnt = (duffs_device_initial_cnt + (UNROLLING_FACTOR - 1)) / UNROLLING_FACTOR; \
switch (duffs_device_initial_cnt % UNROLLING_FACTOR) { \
do { \
BOOST_PP_REPEAT(UNROLLING_FACTOR, DUFFS_DEVICE_C, (UNROLLING_FACTOR, { STATEMENT })) \
} while (--duffs_device_running_cnt); \
} \
} \
} while (0) \
/**/
#
# define DUFFS_DEVICE_C(Z, I, UNROLLING_FACTOR_STATEMENT) \
case (I ? BOOST_PP_TUPLE_ELEM(2, 0, UNROLLING_FACTOR_STATEMENT) - I : 0): \
BOOST_PP_TUPLE_ELEM(2, 1, UNROLLING_FACTOR_STATEMENT); \
/**/
#
# ifndef UNROLLING_FACTOR
# define UNROLLING_FACTOR 16
# endif
#
# ifndef N
# define N 1000
# endif
int main(void) {
int i = 0;
DUFFS_DEVICE(UNROLLING_FACTOR, int, 0, ++i;);
assert(i == 0);
DUFFS_DEVICE(UNROLLING_FACTOR, int, N, ++i;);
assert(i == N);
return 0;
}

View File

@ -0,0 +1,50 @@
# /* Copyright (C) 2002
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * Permission to copy, use, modify, sell and distribute this software is
# * granted provided this copyright notice appears in all copies. This
# * software is provided "as is" without express or implied warranty, and
# * with no claim as to its suitability for any purpose.
# */
#
# /* Revised by Paul Mensonides (2002) */
#
# /* See http://www.boost.org for most recent version. */
#
# /* This example demonstrates the usage of preprocessor lists for generating C++ code. */
#
# include <boost/preprocessor/facilities/empty.hpp>
# include <boost/preprocessor/list/at.hpp>
# include <boost/preprocessor/list/for_each_product.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
# include <boost/preprocessor/tuple/to_list.hpp>
#
# /* List of integral types. (Strictly speaking, wchar_t should be on the list.) */
# define INTEGRAL_TYPES \
BOOST_PP_TUPLE_TO_LIST( \
9, (char, signed char, unsigned char, short, unsigned short, int, unsigned, long, unsigned long) \
) \
/**/
#
# /* List of invokeable cv-qualifiers */
# define CV_QUALIFIERS \
BOOST_PP_TUPLE_TO_LIST( \
4, (BOOST_PP_EMPTY, const BOOST_PP_EMPTY, volatile BOOST_PP_EMPTY, const volatile BOOST_PP_EMPTY) \
) \
/**/
#
# /* Template for testing whether a type is an integral type. */
template<class T> struct is_integral {
enum { value = false };
};
# /* Macro for defining a specialization of is_integral<> template. */
# define IS_INTEGRAL_SPECIALIZATION(R, L) \
template<> struct is_integral<BOOST_PP_TUPLE_ELEM(2, 0, L)() BOOST_PP_TUPLE_ELEM(2, 1, L)> { \
enum { value = true }; \
}; \
/**/
BOOST_PP_LIST_FOR_EACH_PRODUCT(IS_INTEGRAL_SPECIALIZATION, 2, (CV_QUALIFIERS, INTEGRAL_TYPES))

92
doc/examples/linear_fib.c Normal file
View File

@ -0,0 +1,92 @@
# /* Copyright (C) 2002
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * Permission to copy, use, modify, sell and distribute this software is
# * granted provided this copyright notice appears in all copies. This
# * software is provided "as is" without express or implied warranty, and
# * with no claim as to its suitability for any purpose.
# */
#
# /* Revised by Paul Mensonides (2002) */
#
# /* See http://www.boost.org for most recent version. */
#
# /* This example shows how BOOST_PP_WHILE() can be used for implementing macros. */
#
# include <stdio.h>
#
# include <boost/preprocessor/arithmetic/add.hpp>
# include <boost/preprocessor/arithmetic/sub.hpp>
# include <boost/preprocessor/comparison/less_equal.hpp>
# include <boost/preprocessor/control/while.hpp>
# include <boost/preprocessor/list/adt.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
#
# /* First consider the following C implementation of Fibonacci. */
typedef struct linear_fib_state {
int a0, a1, n;
} linear_fib_state;
static int linear_fib_c(linear_fib_state p) {
return p.n;
}
static linear_fib_state linear_fib_f(linear_fib_state p) {
linear_fib_state r = { p.a1, p.a0 + p.a1, p.n - 1 };
return r;
}
static int linear_fib(int n) {
linear_fib_state p = { 0, 1, n };
while (linear_fib_c(p)) {
p = linear_fib_f(p);
}
return p.a0;
}
# /* Then consider the following preprocessor implementation of Fibonacci. */
#
# define LINEAR_FIB(n) LINEAR_FIB_D(1, n)
# /* Since the macro is implemented using BOOST_PP_WHILE, the actual
# * implementation takes a depth as a parameters so that it can be called
# * inside a BOOST_PP_WHILE. The above easy-to-use version simply uses 1
# * as the depth and cannot be called inside a BOOST_PP_WHILE.
# */
#
# define LINEAR_FIB_D(d, n) \
BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE_ ## d(LINEAR_FIB_C, LINEAR_FIB_F, (0, 1, n)))
# /* ^^^^ ^^^^^ ^^ ^^ ^^^^^^^
# * #1 #2 #3 #3 #4
# *
# * 1) The state is a 3-element tuple. After the iteration is finished, the first
# * element of the tuple is the result.
# *
# * 2) The WHILE primitive is "invoked" directly. BOOST_PP_WHILE(D, ...)
# * can't be used because it would not be expanded by the preprocessor.
# *
# * 3) ???_C is the condition and ???_F is the iteration macro.
# */
#
# define LINEAR_FIB_C(d, p) \
/* p.n */ BOOST_PP_TUPLE_ELEM(3, 2, p) \
/**/
#
# define LINEAR_FIB_F(d, p) \
( \
/* p.a1 */ BOOST_PP_TUPLE_ELEM(3, 1, p), \
/* p.a0 + p.a1 */ BOOST_PP_ADD_D(d, BOOST_PP_TUPLE_ELEM(3, 0, p), BOOST_PP_TUPLE_ELEM(3, 1, p)), \
/* ^^ ^ \
* BOOST_PP_ADD() uses BOOST_PP_WHILE(). Therefore we \
* pass the recursion depth explicitly to BOOST_PP_ADD_D(). \
*/ \
/* p.n - 1 */ BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(3, 2, p)) \
) \
/**/
int main() {
printf("linear_fib(10) = %d\n", linear_fib(10));
printf("LINEAR_FIB(10) = %d\n", LINEAR_FIB(10));
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,20 @@
<html>
<head>
<title>arithmetic/add.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>arithmetic/add.hpp</b> header defines macros for addition.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/arithmetic/add.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/add.html">BOOST_PP_ADD</a></li>
<li><a href="../../ref/add_d.html">BOOST_PP_ADD_D</a></li>
</ul>
</body>
</html>

View File

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

View File

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

View File

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

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>arithmetic/mod.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>arithmetic/mod.hpp</b> header defines macros for modulus.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/arithmetic/mod.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/mod.html">BOOST_PP_MOD</a></li>
<li><a href="../../ref/mod_d.html">BOOST_PP_MOD_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>arithmetic/mul.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>arithmetic/mul.hpp</b> header defines macros for multiplication.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/arithmetic/mul.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/mul.html">BOOST_PP_MUL</a></li>
<li><a href="../../ref/mul_d.html">BOOST_PP_MUL_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>arithmetic/sub.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>arithmetic/sub.hpp</b> header defines macros for subtraction.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/arithmetic/sub.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/sub.html">BOOST_PP_SUB</a></li>
<li><a href="../../ref/sub_d.html">BOOST_PP_SUB_D</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,19 @@
<html>
<head>
<title>array/data.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>array/data.hpp</b> header defines a macro to extract the <i>tuple</i> data from an <i>array</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/array/data.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/array_data.html">BOOST_PP_ARRAY_DATA</a></li>
</ul>
</body>
</html>

View File

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

View File

@ -0,0 +1,19 @@
<html>
<head>
<title>array/size.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>array/size.hpp</b> header defines a macro that extracts the size of an <i>array</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/array/size.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/array_size.html">BOOST_PP_ARRAY_SIZE</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,20 @@
<html>
<head>
<title>comparison/equal.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>comparison/equal.hpp</b> header defines macros that compare for equality.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/comparison/equal.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/equal.html">BOOST_PP_EQUAL</a></li>
<li><a href="../../ref/equal_d.html">BOOST_PP_EQUAL_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>comparison/greater.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>comparison/greater.hpp</b> header defines macros that compare for greater magnitude.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/comparison/greater.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/greater.html">BOOST_PP_GREATER</a></li>
<li><a href="../../ref/greater_d.html">BOOST_PP_GREATER_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>comparison/greater_equal.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>comparison/greater_equal.hpp</b> header defines macros that compare for equality or greater magnitude.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/comparison/greater_equal.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/greater_equal.html">BOOST_PP_GREATER_EQUAL</a></li>
<li><a href="../../ref/greater_equal_d.html">BOOST_PP_GREATER_EQUAL_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>comparison/less.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>comparison/less.hpp</b> header defines macros that compare for lesser magnitude.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/comparison/less.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/less.html">BOOST_PP_LESS</a></li>
<li><a href="../../ref/less_d.html">BOOST_PP_LESS_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>comparison/less_equal.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>comparison/less_equal.hpp</b> header defines macros that compare for equality or lesser magnitude.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/comparison/less_equal.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/less_equal.html">BOOST_PP_LESS_EQUAL</a></li>
<li><a href="../../ref/less_equal_d.html">BOOST_PP_LESS_EQUAL_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>comparison/not_equal.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>comparison/not_equal.hpp</b> header defines macros that compare for equality.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/comparison/not_equal.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/not_equal.html">BOOST_PP_NOT_EQUAL</a></li>
<li><a href="../../ref/not_equal_d.html">BOOST_PP_NOT_EQUAL_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,28 @@
<html>
<head>
<title>config/limits.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>config/limits.hpp</b> header defines various library limits.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/config/limits.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/limit_dim.html">BOOST_PP_LIMIT_DIM</a></li>
<li><a href="../../ref/limit_for.html">BOOST_PP_LIMIT_FOR</a></li>
<li><a href="../../ref/limit_iteration.html">BOOST_PP_LIMIT_ITERATION</a></li>
<li><a href="../../ref/limit_iteration_dim.html">BOOST_PP_LIMIT_ITERATION_DIM</a></li>
<li><a href="../../ref/limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
<li><a href="../../ref/limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
<li><a href="../../ref/limit_slot_count.html">BOOST_PP_LIMIT_SLOT_COUNT</a></li>
<li><a href="../../ref/limit_slot_sig.html">BOOST_PP_LIMIT_SLOT_SIG</a></li>
<li><a href="../../ref/limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
<li><a href="../../ref/limit_while.html">BOOST_PP_LIMIT_WHILE</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,19 @@
<html>
<head>
<title>control/deduce_d.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>control/deduce_d.hpp</b> header defines a macro to manually deduce the current state of the <b>BOOST_PP_WHILE</b> construct.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/control/deduce_d.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/deduce_d.html">BOOST_PP_DEDUCE_D</a></li>
</ul>
</body>
</html>

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>control/while.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>control/while.hpp</b> header defines a looping contruct.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/control/while.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/while.html">BOOST_PP_WHILE</a></li>
<li><a href="../../ref/while_d.html">BOOST_PP_WHILE_<i>d</i></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>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>debug/assert.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>debug/assert.hpp</b> header defines macros for preprocessing-time assertions.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/debug/assert.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/assert.html">BOOST_PP_ASSERT</a></li>
<li><a href="../../ref/assert_msg.html">BOOST_PP_ASSERT_MSG</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,19 @@
<html>
<head>
<title>debug/line.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>debug/line.hpp</b> header defines macros for preprocessing-time assertions.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/debug/line.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/line.html">BOOST_PP_LINE</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>

View File

@ -0,0 +1,19 @@
<html>
<head>
<title>facilities/apply.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>facilities/apply.hpp</b> header defines facilities that abstract the difference between an argument and nothing.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/facilities/apply.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/apply.html">BOOST_PP_APPLY</a></li>
</ul>
</body>
</html>

View File

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

View File

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

View File

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

View File

@ -0,0 +1,19 @@
<html>
<head>
<title>facilities/intercept.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>facilities/intercept.hpp</b> header defines a utility macro to intercept a numeric concatenation.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/facilities/intercept.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/intercept.html">BOOST_PP_INTERCEPT</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,32 @@
<html>
<head>
<title>iteration/iterate.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>iteration/iterate.hpp</b> header defines a macros to interface with the <i>file-iteration</i> mechanism.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/iteration/iterate.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/frame_finish.html">BOOST_PP_FRAME_FINISH</a></li>
<li><a href="../../ref/frame_flags.html">BOOST_PP_FRAME_FLAGS</a></li>
<li><a href="../../ref/frame_iteration.html">BOOST_PP_FRAME_ITERATION</a></li>
<li><a href="../../ref/frame_start.html">BOOST_PP_FRAME_START</a></li>
<li><a href="../../ref/iterate.html">BOOST_PP_ITERATE</a></li>
<li><a href="../../ref/iteration.html">BOOST_PP_ITERATION</a></li>
<li><a href="../../ref/iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a></li>
<li><a href="../../ref/iteration_finish.html">BOOST_PP_ITERATION_FINISH</a></li>
<li><a href="../../ref/iteration_flags.html">BOOST_PP_ITERATION_FLAGS</a></li>
<li><a href="../../ref/iteration_start.html">BOOST_PP_ITERATION_START</a></li>
<li><a href="../../ref/relative_finish.html">BOOST_PP_RELATIVE_FINISH</a></li>
<li><a href="../../ref/relative_flags.html">BOOST_PP_RELATIVE_FLAGS</a></li>
<li><a href="../../ref/relative_iteration.html">BOOST_PP_RELATIVE_ITERATION</a></li>
<li><a href="../../ref/relative_start.html">BOOST_PP_RELATIVE_START</a></li>
</ul>
</body>
</html>

View File

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

View File

@ -0,0 +1,19 @@
<html>
<head>
<title>iteration/self.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>iteration/self.hpp</b> header defines a macro to facilitate self-inclusion.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/iteration/self.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/include_self.html">BOOST_PP_INCLUDE_SELF</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,24 @@
<html>
<head>
<title>list/adt.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/adt.hpp</b> header defines basic operations for manipulating <i>lists</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/adt.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_cons.html">BOOST_PP_LIST_CONS</a></li>
<li><a href="../../ref/list_first.html">BOOST_PP_LIST_FIRST</a></li>
<li><a href="../../ref/list_is_cons.html">BOOST_PP_LIST_IS_CONS</a></li>
<li><a href="../../ref/list_is_nil.html">BOOST_PP_LIST_IS_NIL</a></li>
<li><a href="../../ref/list_nil.html">BOOST_PP_LIST_NIL</a></li>
<li><a href="../../ref/list_rest.html">BOOST_PP_LIST_REST</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/append.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/append.hpp</b> header defines macros for appending one <i>list</i> to another.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/append.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_append.html">BOOST_PP_LIST_APPEND</a></li>
<li><a href="../../ref/list_append_d.html">BOOST_PP_LIST_APPEND_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/at.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/at.hpp</b> header defines macros for extracting an element from a <i>list</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/at.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_at.html">BOOST_PP_LIST_AT</a></li>
<li><a href="../../ref/list_at_d.html">BOOST_PP_LIST_AT_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/cat.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/cat.hpp</b> header defines macros for concatenating all elements in a <i>list</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/cat.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_cat.html">BOOST_PP_LIST_CAT</a></li>
<li><a href="../../ref/list_cat_d.html">BOOST_PP_LIST_CAT_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/enum.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/enum.hpp</b> header defines macros to convert a <i>list</i> to a comma-separated list.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/enum.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_enum.html">BOOST_PP_LIST_ENUM</a></li>
<li><a href="../../ref/list_enum_r.html">BOOST_PP_LIST_ENUM_R</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/filter.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/filter.hpp</b> header defines macros to filter a <i>list</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/filter.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_filter.html">BOOST_PP_LIST_FILTER</a></li>
<li><a href="../../ref/list_filter_d.html">BOOST_PP_LIST_FILTER_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/first_n.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/first_n.hpp</b> header defines macros for extracting a group of elements from the beginning of a <i>list</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/first_n.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_first_n.html">BOOST_PP_LIST_FIRST_N</a></li>
<li><a href="../../ref/list_first_n_d.html">BOOST_PP_LIST_FIRST_N_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,23 @@
<html>
<head>
<title>list/fold_left.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/fold_left.hpp</b> header defines folding (or accumulating) a <i>list</i> left-to-right.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/fold_left.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a></li>
<li><a href="../../ref/list_fold_left_2nd.html">BOOST_PP_LIST_FOLD_LEFT_2ND</a></li>
<li><a href="../../ref/list_fold_left_2nd_d.html">BOOST_PP_LIST_FOLD_LEFT_2ND_D</a></li>
<li><a href="../../ref/list_fold_left_d.html">BOOST_PP_LIST_FOLD_LEFT_<i>d</i></a></li>
<li><a href="../../ref/list_fold_left_d_old.html">BOOST_PP_LIST_FOLD_LEFT_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,23 @@
<html>
<head>
<title>list/fold_right.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/fold_right.hpp</b> header defines folding (or accumulating) a <i>list</i> right-to-left.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/fold_right.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a></li>
<li><a href="../../ref/list_fold_right_2nd.html">BOOST_PP_LIST_FOLD_RIGHT_2ND</a></li>
<li><a href="../../ref/list_fold_right_2nd_d.html">BOOST_PP_LIST_FOLD_RIGHT_2ND_D</a></li>
<li><a href="../../ref/list_fold_right_d.html">BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></a></li>
<li><a href="../../ref/list_fold_right_d_old.html">BOOST_PP_LIST_FOLD_RIGHT_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/for_each.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/for_each.hpp</b> header defines macros to repeat a macro for each element in a <i>list</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/for_each.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_for_each.html">BOOST_PP_LIST_FOR_EACH</a></li>
<li><a href="../../ref/list_for_each_r.html">BOOST_PP_LIST_FOR_EACH_R</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/for_each_i.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/for_each_i.hpp</b> header defines macros to repeat a macro for each element in a <i>list</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/for_each_i.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_for_each_i.html">BOOST_PP_LIST_FOR_EACH_I</a></li>
<li><a href="../../ref/list_for_each_i_r.html">BOOST_PP_LIST_FOR_EACH_I_R</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/for_each_product.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/for_each_product.hpp</b> header defines macros to repeat a macro for each cartesian product of several <i>lists</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/for_each_product.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_for_each_product.html">BOOST_PP_LIST_FOR_EACH_PRODUCT</a></li>
<li><a href="../../ref/list_for_each_product_r.html">BOOST_PP_LIST_FOR_EACH_PRODUCT_R</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/rest_n.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/rest_n.hpp</b> header defines macros for extracting a group of elements from the end of a <i>list</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/rest_n.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_rest_n.html">BOOST_PP_LIST_REST_N</a></li>
<li><a href="../../ref/list_rest_n_d.html">BOOST_PP_LIST_REST_N_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/reverse.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/reverse.hpp</b> header defines macros to reverse a <i>list</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/reverse.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_reverse.html">BOOST_PP_LIST_REVERSE</a></li>
<li><a href="../../ref/list_reverse_d.html">BOOST_PP_LIST_REVERSE_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/size.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/size.hpp</b> header defines macros to calculate the size of a <i>list</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/size.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_size.html">BOOST_PP_LIST_SIZE</a></li>
<li><a href="../../ref/list_size_d.html">BOOST_PP_LIST_SIZE_D</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/to_tuple.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/to_tuple.hpp</b> header defines macros to convert a <i>list</i> to a <i>tuple</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/to_tuple.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/to_tuple.html">BOOST_PP_LIST_TO_TUPLE</a></li>
<li><a href="../../ref/to_tuple_r.html">BOOST_PP_LIST_TO_TUPLE_R</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>list/transform.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>list/transform.hpp</b> header defines macros to transform a <i>list</i>.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/list/transform.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/list_transform.html">BOOST_PP_LIST_TRANSFORM</a></li>
<li><a href="../../ref/list_transform_d.html">BOOST_PP_LIST_TRANSFORM_D</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>

View File

@ -0,0 +1,19 @@
<html>
<head>
<title>logical/and.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>logical/and.hpp</b> header defines a macro that expands to the logical <i>AND</i> of its operands.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/logical/and.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/and.html">BOOST_PP_AND</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,19 @@
<html>
<head>
<title>logical/bitand.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>logical/bitand.hpp</b> header defines a macro that expands to the bitwise <i>AND</i> of its operands.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/logical/bitand.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/bitand.html">BOOST_PP_BITAND</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,19 @@
<html>
<head>
<title>logical/bitnor.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>logical/bitnor.hpp</b> header defines a macro that expands to the bitwise <i>NOR</i> of its operands.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/logical/bitnor.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/bitnor.html">BOOST_PP_BITNOR</a></li>
</ul>
</body>
</html>

View File

@ -0,0 +1,19 @@
<html>
<head>
<title>logical/bitor.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>logical/bitor.hpp</b> header defines a macro that expands to the bitwise <i>OR</i> of its operands.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/logical/bitor.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/bitor.html">BOOST_PP_BITOR</a></li>
</ul>
</body>
</html>

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