PREPROCESSOR -> PP. WHILE documented.

[SVN r12162]
This commit is contained in:
Vesa Karvonen
2001-12-28 11:06:53 +00:00
parent 5991b00456
commit d8b52a3a42
90 changed files with 3441 additions and 1889 deletions

View File

@ -76,7 +76,7 @@ vec<T,n>&
<hr>
<p><strong><a name="UNUSED"></a><a href="tutorial.htm#UNUSED">EXAMPLE</a>:</strong>
Use BOOST_PREPROCESSOR_EMPTY() as an unused parameter in Local Macro instantiations</p>
Use BOOST_PP_EMPTY() as an unused parameter in Local Macro instantiations</p>
<blockquote>
<pre>template&lt;class base&gt;
@ -100,7 +100,7 @@ const typename implement_subscript_using_begin_subscript&lt;base&gt;::value_type
</blockquote>
<hr>
<p><b><a name="CAT"></a><a href="tutorial.htm#CAT">EXAMPLE:</a></b> Use BOOST_PREPROCESSOR_CAT instead of ## when necessary</p>
<p><b><a name="CAT"></a><a href="tutorial.htm#CAT">EXAMPLE:</a></b> Use BOOST_PP_CAT instead of ## when necessary</p>
<blockquote>
<pre>enum
@ -113,7 +113,7 @@ typedef char
</pre>
</blockquote>
<hr>
<p><b><a name="STRINGIZE"></a><a href="tutorial.htm#STRINGIZE">EXAMPLE:</a></b> Use BOOST_PREPROCESSOR_STRINGIZE instead of # whenever necessary</p>
<p><b><a name="STRINGIZE"></a><a href="tutorial.htm#STRINGIZE">EXAMPLE:</a></b> Use BOOST_PP_STRINGIZE instead of # whenever necessary</p>
<blockquote>
<pre>#pragma message("examples.cpp" "(" "20" ") : " "TBD!")</pre>
</blockquote>
@ -121,12 +121,12 @@ typedef char
<p><strong><a name="ENUM_PARAMS"></a><a href="tutorial.htm#ENUM_PARAMS">EXAMPLE</a>:</strong>
Use:</p>
<ul>
<li> BOOST_PREPROCESSOR_ENUM_PARAMS,</li>
<li> BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT,</li>
<li> BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS,</li>
<li> BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS, or</li>
<li>BOOST_PREPROCESSOR_REPEAT, and</li>
<li> BOOST_PREPROCESSOR_COMMA_IF</li>
<li> BOOST_PP_ENUM_PARAMS,</li>
<li> BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT,</li>
<li> BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS,</li>
<li> BOOST_PP_ENUM_SHIFTED_PARAMS, or</li>
<li>BOOST_PP_REPEAT, and</li>
<li> BOOST_PP_COMMA_IF</li>
</ul>
<p>to avoid O(N) repetition on lists in general</p>
<blockquote>
@ -177,7 +177,7 @@ public:
<hr>
<p><strong><a name="Token Look-Up"></a><a href="tutorial.htm#Token Look-Up">EXAMPLE</a>:</strong>
Use BOOST_PREPROCESSOR_REPEAT and a Token Look-Up Function to eliminate categorical
Use BOOST_PP_REPEAT and a Token Look-Up Function to eliminate categorical
repetition</p>
<blockquote>
@ -238,7 +238,7 @@ catch (long double t)
<hr>
<p><strong><a name="2ND_REPEAT"></a><a href="tutorial.htm#2ND_REPEAT">EXAMPLE</a>:</strong>
Use BOOST_PREPROCESSOR_REPEAT_2ND to avoid O(N*N) repetition</p>
Use BOOST_PP_REPEAT_2ND to avoid O(N*N) repetition</p>
<blockquote>
<pre>vec()
@ -302,7 +302,7 @@ vec(T a0, T a1, T a2, T a3, T a4, T a5, T a6, T a7)
<p>
<hr>
<p><a name="IF"></a><a href="tutorial.htm#IF"><b>EXAMPLE:</b></a>
Use BOOST_PREPROCESSOR_IF to implement special case for the first element</p>
Use BOOST_PP_IF to implement special case for the first element</p>
<blockquote>
<pre>false == false;

View File

@ -1,40 +1,41 @@
BOOST_PREPROCESSOR_ADD
BOOST_PREPROCESSOR_AND
BOOST_PREPROCESSOR_ASSERT_MSG
BOOST_PREPROCESSOR_BOOL
BOOST_PREPROCESSOR_CAT
BOOST_PREPROCESSOR_COMMA
BOOST_PREPROCESSOR_COMMA_IF
BOOST_PREPROCESSOR_DEC
BOOST_PREPROCESSOR_DIV
BOOST_PREPROCESSOR_EMPTY
BOOST_PREPROCESSOR_ENUM_PARAMS
BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT
BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS
BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS
BOOST_PREPROCESSOR_EQUAL
BOOST_PREPROCESSOR_GREATER
BOOST_PREPROCESSOR_GREATER_EQUAL
BOOST_PREPROCESSOR_IDENTITY
BOOST_PREPROCESSOR_IF
BOOST_PREPROCESSOR_INC
BOOST_PREPROCESSOR_LESS
BOOST_PREPROCESSOR_LESS_EQUAL
BOOST_PREPROCESSOR_LIMIT_DIM
BOOST_PREPROCESSOR_LIMIT_MAG
BOOST_PREPROCESSOR_LIMIT_TUPLE
BOOST_PREPROCESSOR_MAX
BOOST_PREPROCESSOR_MIN
BOOST_PREPROCESSOR_MOD
BOOST_PREPROCESSOR_MUL
BOOST_PREPROCESSOR_NOR
BOOST_PREPROCESSOR_NOT
BOOST_PREPROCESSOR_NOT_EQUAL
BOOST_PREPROCESSOR_OR
BOOST_PREPROCESSOR_REPEAT
BOOST_PREPROCESSOR_REPEAT_2ND
BOOST_PREPROCESSOR_REPEAT_3RD
BOOST_PREPROCESSOR_STRINGIZE
BOOST_PREPROCESSOR_SUB
BOOST_PREPROCESSOR_TUPLE_ELEM
BOOST_PREPROCESSOR_XOR
BOOST_PP_ADD
BOOST_PP_AND
BOOST_PP_ASSERT_MSG
BOOST_PP_BOOL
BOOST_PP_CAT
BOOST_PP_COMMA
BOOST_PP_COMMA_IF
BOOST_PP_DEC
BOOST_PP_DIV
BOOST_PP_EMPTY
BOOST_PP_ENUM_PARAMS
BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT
BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS
BOOST_PP_ENUM_SHIFTED_PARAMS
BOOST_PP_EQUAL
BOOST_PP_GREATER
BOOST_PP_GREATER_EQUAL
BOOST_PP_IDENTITY
BOOST_PP_IF
BOOST_PP_INC
BOOST_PP_LESS
BOOST_PP_LESS_EQUAL
BOOST_PP_LIMIT_DIM
BOOST_PP_LIMIT_MAG
BOOST_PP_LIMIT_TUPLE
BOOST_PP_MAX
BOOST_PP_MIN
BOOST_PP_MOD
BOOST_PP_MUL
BOOST_PP_NOR
BOOST_PP_NOT
BOOST_PP_NOT_EQUAL
BOOST_PP_OR
BOOST_PP_REPEAT
BOOST_PP_REPEAT_2ND
BOOST_PP_REPEAT_3RD
BOOST_PP_STRINGIZE
BOOST_PP_SUB
BOOST_PP_TUPLE_ELEM
BOOST_PP_WHILE
BOOST_PP_XOR

View File

@ -2,20 +2,6 @@ If you have suggestions for additions or improvements to this library,
please e-mail such suggestions to boost@yahoogroups.com, but also cc
them to vesa.karvonen@housemarque.fi.
Issues:
- case studies
- more isolated examples & less complex examples in tutorial
-> Please e-mail suggestions to vesa.karvonen@housemarque.fi
Resolved for now:
- explanations of tricky issues with macro replacement
- how macros are expanded, step-by-step examples
- delay of # and ##
- recursion prohibition
-> Just refer to the standard. It is not the purpose of the documentation to teach C++.
- arithmetic
- The preprocessor limitations seem to make it impossible to achieve both:
- O(1) _size_ implementation of ADD, SUB, MUL, DIV, ...
- ease of use
-> I have choosen ease of use and used O(N) size implementations
Current R&D:
- Faster arithmetic
- Data structures (cons list)

View File

@ -46,8 +46,8 @@ int c IDENTITY_MACRO(IDENTITY_MACRO(COMMA_TOKEN))() d; // this doesn't
macro that does work on MWCW:</p>
<blockquote>
<pre>#define NUMBERED_EXPRESSION(n, x) \
BOOST_PREPROCESSOR_CAT(BOOST_, \
BOOST_PREPROCESSOR_IF( \
BOOST_PP_CAT(BOOST_, \
BOOST_PP_IF( \
n \
, PREPROCESSOR_IDENTITY(x##n) \
, PREPROCESSOR_EMPTY \
@ -74,11 +74,11 @@ typedef char yes_type;
#define IS_FUNCTION_HELPER(I,A)\
template\
&ltBOOST_PREPROCESSOR_ENUM_PARAMS(BOOST_PREPROCESSOR_INC(I),class P)&gt;\
&ltBOOST_PP_ENUM_PARAMS(BOOST_PP_INC(I),class P)&gt;\
yes_type is_function_helper(\
P0 (*)(BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS(BOOST_PREPROCESSOR_INC(I),P)));
P0 (*)(BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_INC(I),P)));
BOOST_PREPROCESSOR_REPEAT_2ND(BOOST_PREPROCESSOR_INC(IS_FUNCTION_HELPER_TEST_MAX),IS_FUNCTION_HELPER,A)
BOOST_PP_REPEAT_2ND(BOOST_PP_INC(IS_FUNCTION_HELPER_TEST_MAX),IS_FUNCTION_HELPER,A)
#undef IS_FUNCTION_HELPER
</pre></blockquote>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>add.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="add_8hpp.html#a0">BOOST_PREPROCESSOR_ADD</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="add_8hpp.html#a0">BOOST_PP_ADD</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the sum of X and Y.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="add_8hpp.html#a1">BOOST_PREPROCESSOR_ADD</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="add_8hpp.html#a0">BOOST_PP_ADD</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/arithmetic/add.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="add.hpp::BOOST_PREPROCESSOR_ADD"></a><p>
<a name="a0" doxytag="add.hpp::BOOST_PP_ADD"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_ADD</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the sum of X and Y.
<p>
For example, <a class="el" href="add_8hpp.html#a0">BOOST_PP_ADD</a>(4,3) expands to 7 (a single token). </td>
</tr>
</table>
<a name="a1" doxytag="add.hpp::BOOST_PREPROCESSOR_ADD"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to the sum of X and Y.
Obsolete. Use <a class="el" href="add_8hpp.html#a0">BOOST_PP_ADD</a>().
<p>
</td>
</tr>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>and.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="and_8hpp.html#a0">BOOST_PREPROCESSOR_AND</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="and_8hpp.html#a0">BOOST_PP_AND</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the logical AND of the operands.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="and_8hpp.html#a1">BOOST_PREPROCESSOR_AND</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="and_8hpp.html#a0">BOOST_PP_AND</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/logical/and.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="and.hpp::BOOST_PREPROCESSOR_AND"></a><p>
<a name="a0" doxytag="and.hpp::BOOST_PP_AND"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_AND</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the logical AND of the operands.
<p>
For example, <a class="el" href="and_8hpp.html#a0">BOOST_PP_AND</a>(0,5) expands to 0 (a single token). </td>
</tr>
</table>
<a name="a1" doxytag="and.hpp::BOOST_PREPROCESSOR_AND"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to the logical AND of the operands.
Obsolete. Use <a class="el" href="and_8hpp.html#a0">BOOST_PP_AND</a>().
<p>
</td>
</tr>

View File

@ -11,6 +11,8 @@
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/arithmetic.hpp">Click here to see the header.</a>
<p>
Includes all arithmetic headers.
<p>
<hr>
<p><EFBFBD> Copyright Housemarque Oy 2001</p>
<p>Permission to copy, use, modify, sell and distribute this document is granted

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>assert_msg.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="assert__msg_8hpp.html#a0">BOOST_PREPROCESSOR_ASSERT_MSG</a>(C, MSG)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="assert__msg_8hpp.html#a0">BOOST_PP_ASSERT_MSG</a>(C, MSG)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to nothing if C != 0 and to MSG if C == 0.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="assert__msg_8hpp.html#a1">BOOST_PREPROCESSOR_ASSERT_MSG</a>(C, MSG)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="assert__msg_8hpp.html#a0">BOOST_PP_ASSERT_MSG</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/assert_msg.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="assert_msg.hpp::BOOST_PREPROCESSOR_ASSERT_MSG"></a><p>
<a name="a0" doxytag="assert_msg.hpp::BOOST_PP_ASSERT_MSG"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_ASSERT_MSG</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">C, <tr>
<td></td>
<td></td>
<td class="md" nowrap>MSG&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to nothing if C != 0 and to MSG if C == 0.
<p>
</td>
</tr>
</table>
<a name="a1" doxytag="assert_msg.hpp::BOOST_PREPROCESSOR_ASSERT_MSG"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to nothing if C != 0 and to MSG if C == 0.
Obsolete. Use <a class="el" href="assert__msg_8hpp.html#a0">BOOST_PP_ASSERT_MSG</a>().
<p>
</td>
</tr>

View File

@ -8,14 +8,45 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>bool.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="bool_8hpp.html#a0">BOOST_PREPROCESSOR_BOOL</a>(X)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="bool_8hpp.html#a0">BOOST_PP_BOOL</a>(X)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to 0 if X == 0 and 1 if X != 0.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="bool_8hpp.html#a1">BOOST_PREPROCESSOR_BOOL</a>(X)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="bool_8hpp.html#a0">BOOST_PP_BOOL</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/logical/bool.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="bool.hpp::BOOST_PREPROCESSOR_BOOL"></a><p>
<a name="a0" doxytag="bool.hpp::BOOST_PP_BOOL"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_BOOL</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to 0 if X == 0 and 1 if X != 0.
<p>
</td>
</tr>
</table>
<a name="a1" doxytag="bool.hpp::BOOST_PREPROCESSOR_BOOL"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -39,7 +70,7 @@
<td>
<p>
Expands to 0 if X == 0 and 1 if X != 0.
Obsolete. Use <a class="el" href="bool_8hpp.html#a0">BOOST_PP_BOOL</a>().
<p>
</td>
</tr>

View File

@ -8,20 +8,22 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>cat.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cat_8hpp.html#a0">BOOST_PREPROCESSOR_CAT</a>(L, R)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cat_8hpp.html#a0">BOOST_PP_CAT</a>(L, R)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Delays the catenation of L and R.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cat_8hpp.html#a1">BOOST_PREPROCESSOR_CAT</a>(L, R)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="cat_8hpp.html#a0">BOOST_PP_CAT</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/cat.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="cat.hpp::BOOST_PREPROCESSOR_CAT"></a><p>
<a name="a0" doxytag="cat.hpp::BOOST_PP_CAT"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_CAT</td>
<td class="md" nowrap valign="top"> #define BOOST_PP_CAT</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">L, <tr>
<td></td>
@ -49,11 +51,11 @@ Example:
<pre><div class="fragment"><pre>
#define STATIC_ASSERT(EXPR)\
enum\
{ BOOST_PREPROCESSOR_CAT(static_check_,__LINE__) = (EXPR) ? 1 : -1\
{ BOOST_PP_CAT(static_check_,__LINE__) = (EXPR) ? 1 : -1\
};\
typedef char\
BOOST_PREPROCESSOR_CAT(static_assert_,__LINE__)\
[ BOOST_PREPROCESSOR_CAT(static_check_,__LINE__)\
BOOST_PP_CAT(static_assert_,__LINE__)\
[ BOOST_PP_CAT(static_check_,__LINE__)\
]
// ...
@ -73,7 +75,7 @@ The above expands to:
];
</pre></div></pre>
<p>
Using <a class="el" href="cat_8hpp.html#a0">BOOST_PREPROCESSOR_CAT</a>() above lets the preprocessor expand the __LINE__. If the above code would use the ## operator directly then __LINE__ would not be expanded and the above would expand to:
Using <a class="el" href="cat_8hpp.html#a0">BOOST_PP_CAT</a>() above lets the PP expand the __LINE__. If the above code would use the ## operator directly then __LINE__ would not be expanded and the above would expand to:
<p>
<pre><div class="fragment"><pre>
enum
@ -86,6 +88,38 @@ Using <a class="el" href="cat_8hpp.html#a0">BOOST_PREPROCESSOR_CAT</a>() above l
</pre></div></pre> </td>
</tr>
</table>
<a name="a1" doxytag="cat.hpp::BOOST_PREPROCESSOR_CAT"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_CAT</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">L, <tr>
<td></td>
<td></td>
<td class="md" nowrap>R&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Obsolete. Use <a class="el" href="cat_8hpp.html#a0">BOOST_PP_CAT</a>().
<p>
</td>
</tr>
</table>
<hr>
<p><EFBFBD> Copyright Housemarque Oy 2001</p>
<p>Permission to copy, use, modify, sell and distribute this document is granted

View File

@ -8,14 +8,45 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>comma.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="comma_8hpp.html#a0">BOOST_PREPROCESSOR_COMMA</a>()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to a comma. Can be used with <a class="el" href="if_8hpp.html#a0">BOOST_PREPROCESSOR_IF</a>().</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="comma_8hpp.html#a0">BOOST_PP_COMMA</a>()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to a comma. Can be used with <a class="el" href="if_8hpp.html#a0">BOOST_PP_IF</a>().</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="comma_8hpp.html#a1">BOOST_PREPROCESSOR_COMMA</a>()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="comma_8hpp.html#a0">BOOST_PP_COMMA</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/comma.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="comma.hpp::BOOST_PREPROCESSOR_COMMA"></a><p>
<a name="a0" doxytag="comma.hpp::BOOST_PP_COMMA"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_COMMA</td>
<td class="md" valign="top">(&nbsp;</td>
&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to a comma. Can be used with <a class="el" href="if_8hpp.html#a0">BOOST_PP_IF</a>().
<p>
See <a class="el" href="comma__if_8hpp.html#a0">BOOST_PP_COMMA_IF</a>(). </td>
</tr>
</table>
<a name="a1" doxytag="comma.hpp::BOOST_PREPROCESSOR_COMMA"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -39,9 +70,9 @@
<td>
<p>
Expands to a comma. Can be used with <a class="el" href="if_8hpp.html#a0">BOOST_PREPROCESSOR_IF</a>().
Obsolete. Use <a class="el" href="comma_8hpp.html#a0">BOOST_PP_COMMA</a>().
<p>
See <a class="el" href="comma__if_8hpp.html#a0">BOOST_PREPROCESSOR_COMMA_IF</a>(). </td>
</td>
</tr>
</table>
<hr>

View File

@ -8,14 +8,45 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>comma_if.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="comma__if_8hpp.html#a0">BOOST_PREPROCESSOR_COMMA_IF</a>(C)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="comma__if_8hpp.html#a0">BOOST_PP_COMMA_IF</a>(C)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to a comma if C != 0 and nothing if C == 0.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="comma__if_8hpp.html#a1">BOOST_PREPROCESSOR_COMMA_IF</a>(C)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="comma__if_8hpp.html#a0">BOOST_PP_COMMA_IF</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/comma_if.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="comma_if.hpp::BOOST_PREPROCESSOR_COMMA_IF"></a><p>
<a name="a0" doxytag="comma_if.hpp::BOOST_PP_COMMA_IF"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_COMMA_IF</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">C&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to a comma if C != 0 and nothing if C == 0.
<p>
</td>
</tr>
</table>
<a name="a1" doxytag="comma_if.hpp::BOOST_PREPROCESSOR_COMMA_IF"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -39,7 +70,7 @@
<td>
<p>
Expands to a comma if C != 0 and nothing if C == 0.
Obsolete. Use <a class="el" href="comma__if_8hpp.html#a0">BOOST_PP_COMMA_IF</a>().
<p>
</td>
</tr>

View File

@ -11,6 +11,8 @@
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/comparison.hpp">Click here to see the header.</a>
<p>
Includes all comparison headers.
<p>
<hr>
<p><EFBFBD> Copyright Housemarque Oy 2001</p>
<p>Permission to copy, use, modify, sell and distribute this document is granted

View File

@ -8,14 +8,49 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>dec.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="dec_8hpp.html#a0">BOOST_PREPROCESSOR_DEC</a>(X)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="dec_8hpp.html#a0">BOOST_PP_DEC</a>(X)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Decrements X expanding to a single token.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="dec_8hpp.html#a1">BOOST_PREPROCESSOR_DEC</a>(X)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="dec_8hpp.html#a0">BOOST_PP_DEC</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/dec.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="dec.hpp::BOOST_PREPROCESSOR_DEC"></a><p>
<a name="a0" doxytag="dec.hpp::BOOST_PP_DEC"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_DEC</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Decrements X expanding to a single token.
<p>
For example, <a class="el" href="dec_8hpp.html#a0">BOOST_PP_DEC</a>(3) expands to 2 (a single token).
<p>
<a class="el" href="dec_8hpp.html#a0">BOOST_PP_DEC</a>() uses saturation arithmetic. Decrementing 0 yeilds a 0.
<p>
Only decimal integer literals in the range [0,BOOST_PP_LIMIT_MAG] are supported. </td>
</tr>
</table>
<a name="a1" doxytag="dec.hpp::BOOST_PREPROCESSOR_DEC"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -39,11 +74,9 @@
<td>
<p>
Decrements X expanding to a single token.
Obsolete. Use <a class="el" href="dec_8hpp.html#a0">BOOST_PP_DEC</a>().
<p>
<a class="el" href="dec_8hpp.html#a0">BOOST_PREPROCESSOR_DEC</a>() uses saturation arithmetic. Decrementing 0 yeilds a 0.
<p>
Only decimal integer literals in the range [0,BOOST_PREPROCESSOR_LIMIT_MAG] are supported. </td>
</td>
</tr>
</table>
<hr>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>div.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="div_8hpp.html#a0">BOOST_PREPROCESSOR_DIV</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="div_8hpp.html#a0">BOOST_PP_DIV</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the quotient of X and Y.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="div_8hpp.html#a1">BOOST_PREPROCESSOR_DIV</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="div_8hpp.html#a0">BOOST_PP_DIV</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/arithmetic/div.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="div.hpp::BOOST_PREPROCESSOR_DIV"></a><p>
<a name="a0" doxytag="div.hpp::BOOST_PP_DIV"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_DIV</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the quotient of X and Y.
<p>
For example, <a class="el" href="div_8hpp.html#a0">BOOST_PP_DIV</a>(4,3) expands to 1 (a single token). </td>
</tr>
</table>
<a name="a1" doxytag="div.hpp::BOOST_PREPROCESSOR_DIV"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to the quotient of X and Y.
Obsolete. Use <a class="el" href="div_8hpp.html#a0">BOOST_PP_DIV</a>().
<p>
</td>
</tr>

View File

@ -8,20 +8,22 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>empty.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="empty_8hpp.html#a0">BOOST_PREPROCESSOR_EMPTY</a>()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to nothing. Used with <a class="el" href="if_8hpp.html#a0">BOOST_PREPROCESSOR_IF</a>() and as an unused parameter.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="empty_8hpp.html#a0">BOOST_PP_EMPTY</a>()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to nothing. Used with <a class="el" href="if_8hpp.html#a0">BOOST_PP_IF</a>() and as an unused parameter.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="empty_8hpp.html#a1">BOOST_PREPROCESSOR_EMPTY</a>()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="empty_8hpp.html#a0">BOOST_PP_EMPTY</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/empty.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="empty.hpp::BOOST_PREPROCESSOR_EMPTY"></a><p>
<a name="a0" doxytag="empty.hpp::BOOST_PP_EMPTY"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_EMPTY</td>
<td class="md" nowrap valign="top"> #define BOOST_PP_EMPTY</td>
<td class="md" valign="top">(&nbsp;</td>
&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
@ -39,19 +41,19 @@
<td>
<p>
Expands to nothing. Used with <a class="el" href="if_8hpp.html#a0">BOOST_PREPROCESSOR_IF</a>() and as an unused parameter.
Expands to nothing. Used with <a class="el" href="if_8hpp.html#a0">BOOST_PP_IF</a>() and as an unused parameter.
<p>
Example usage as the implementation of <a class="el" href="comma__if_8hpp.html#a0">BOOST_PREPROCESSOR_COMMA_IF</a>(C):
Example usage as the implementation of <a class="el" href="comma__if_8hpp.html#a0">BOOST_PP_COMMA_IF</a>(C):
<p>
<pre><div class="fragment"><pre>
#define BOOST_PREPROCESSOR_COMMA_IF(C)\
BOOST_PREPROCESSOR_IF(C,BOOST_PREPROCESSOR_COMMA,BOOST_PREPROCESSOR_EMPTY)()
#define BOOST_PP_COMMA_IF(C)\
BOOST_PP_IF(C,BOOST_PP_COMMA,BOOST_PP_EMPTY)()
</pre></div></pre>
<p>
Example usage as an unused macro parameter:
<p>
<pre><div class="fragment"><pre>
#define BOOST_PREPROCESSOR_DEF(CV)\
#define BOOST_PP_DEF(CV)\
template&lt;class base&gt; \
CV typename implement_subscript_using_begin_subscript&lt;base&gt;::value_type&amp;\
implement_subscript_using_begin_subscript&lt;base&gt;::operator[]\
@ -61,9 +63,9 @@ Example usage as an unused macro parameter:
{ return base::begin()[i]; \
}
BOOST_PREPROCESSOR_DEF(BOOST_PREPROCESSOR_EMPTY())
BOOST_PREPROCESSOR_DEF(const)
#undef BOOST_PREPROCESSOR_DEF
BOOST_PP_DEF(BOOST_PP_EMPTY())
BOOST_PP_DEF(const)
#undef BOOST_PP_DEF
</pre></div></pre>
<p>
The above expands to:
@ -91,6 +93,35 @@ The above expands to:
In case you wonder, the above code is part of a generalized layer for implementing the subscripting operators of a random access container. </td>
</tr>
</table>
<a name="a1" doxytag="empty.hpp::BOOST_PREPROCESSOR_EMPTY"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_EMPTY</td>
<td class="md" valign="top">(&nbsp;</td>
&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Obsolete. Use <a class="el" href="empty_8hpp.html#a0">BOOST_PP_EMPTY</a>().
<p>
</td>
</tr>
</table>
<hr>
<p><EFBFBD> Copyright Housemarque Oy 2001</p>
<p>Permission to copy, use, modify, sell and distribute this document is granted

View File

@ -8,20 +8,22 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>enum_params.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="enum__params_8hpp.html#a0">BOOST_PREPROCESSOR_ENUM_PARAMS</a>(N, P)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="enum__params_8hpp.html#a0">BOOST_PP_ENUM_PARAMS</a>(N, P)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Generates a comma separated list of parameters.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="enum__params_8hpp.html#a1">BOOST_PREPROCESSOR_ENUM_PARAMS</a>(N, P)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="enum__params_8hpp.html#a0">BOOST_PP_ENUM_PARAMS</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/enum_params.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="enum_params.hpp::BOOST_PREPROCESSOR_ENUM_PARAMS"></a><p>
<a name="a0" doxytag="enum_params.hpp::BOOST_PP_ENUM_PARAMS"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_ENUM_PARAMS</td>
<td class="md" nowrap valign="top"> #define BOOST_PP_ENUM_PARAMS</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">N, <tr>
<td></td>
@ -50,7 +52,39 @@ In other words, expands to the sequence:
P##0, P##1, ..., P##N-1
</pre></div></pre>
<p>
NOTE: The implementation uses <a class="el" href="repeat_8hpp.html#a0">BOOST_PREPROCESSOR_REPEAT</a>(). </td>
NOTE: The implementation uses <a class="el" href="repeat_8hpp.html#a0">BOOST_PP_REPEAT</a>(). </td>
</tr>
</table>
<a name="a1" doxytag="enum_params.hpp::BOOST_PREPROCESSOR_ENUM_PARAMS"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_ENUM_PARAMS</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">N, <tr>
<td></td>
<td></td>
<td class="md" nowrap>P&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Obsolete. Use <a class="el" href="enum__params_8hpp.html#a0">BOOST_PP_ENUM_PARAMS</a>().
<p>
</td>
</tr>
</table>
<hr>

View File

@ -8,20 +8,22 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>enum_shifted_params.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="enum__shifted__params_8hpp.html#a0">BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS</a>(N, P)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="enum__shifted__params_8hpp.html#a0">BOOST_PP_ENUM_SHIFTED_PARAMS</a>(N, P)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Generates a comma separated list of shifted actual parameters.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="enum__shifted__params_8hpp.html#a1">BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS</a>(N, P)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="enum__shifted__params_8hpp.html#a0">BOOST_PP_ENUM_SHIFTED_PARAMS</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/enum_shifted_params.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="enum_shifted_params.hpp::BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS"></a><p>
<a name="a0" doxytag="enum_shifted_params.hpp::BOOST_PP_ENUM_SHIFTED_PARAMS"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS</td>
<td class="md" nowrap valign="top"> #define BOOST_PP_ENUM_SHIFTED_PARAMS</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">N, <tr>
<td></td>
@ -50,13 +52,45 @@ In other words, expands to the sequence:
P##1, P##2, ..., P##N-1
</pre></div></pre>
<p>
NOTE: The implementation uses <a class="el" href="repeat_8hpp.html#a0">BOOST_PREPROCESSOR_REPEAT</a>().
NOTE: The implementation uses <a class="el" href="repeat_8hpp.html#a0">BOOST_PP_REPEAT</a>().
<p>
RATIONALE:<ul>
<li>This macro facilitates a typical usage of the library. Shifted parameter lists are common in template metaprograms. </ul>
</td>
</tr>
</table>
<a name="a1" doxytag="enum_shifted_params.hpp::BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">N, <tr>
<td></td>
<td></td>
<td class="md" nowrap>P&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Obsolete. Use <a class="el" href="enum__shifted__params_8hpp.html#a0">BOOST_PP_ENUM_SHIFTED_PARAMS</a>().
<p>
</td>
</tr>
</table>
<hr>
<p><EFBFBD> Copyright Housemarque Oy 2001</p>
<p>Permission to copy, use, modify, sell and distribute this document is granted

View File

@ -8,20 +8,22 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>enum_params_with_a_default.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="enum_params_with_a_default.htm#a0">BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT</a>(N, P, D)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="enum_params_with_a_default.htm#a0">BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</a>(N, P, D)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Generates a comma separated list of parameters with a default.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="enum_params_with_a_default.htm#a1">BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT</a>(N, P, D)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="enum_params_with_a_default.htm#a0">BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/enum_params_with_a_default.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="enum_params_with_a_default.hpp::BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT"></a><p>
<a name="a0" doxytag="enum_params_with_a_default.hpp::BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT</td>
<td class="md" nowrap valign="top"> #define BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">N, <tr>
<td></td>
@ -53,7 +55,42 @@ In other words, expands to the sequence:
P##0 = D, P##1 = D, ..., P##N-1 = D
</pre></div></pre>
<p>
NOTE: The implementation uses <a class="el" href="repeat_8hpp.html#a0">BOOST_PREPROCESSOR_REPEAT</a>(). </td>
NOTE: The implementation uses <a class="el" href="repeat_8hpp.html#a0">BOOST_PP_REPEAT</a>(). </td>
</tr>
</table>
<a name="a1" doxytag="enum_params_with_a_default.hpp::BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">N, <tr>
<td></td>
<td></td>
<td class="md" nowrap>P, <tr>
<td></td>
<td></td>
<td class="md" nowrap>D&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Obsolete. Use <a class="el" href="enum_params_with_a_default.htm#a0">BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</a>().
<p>
</td>
</tr>
</table>
<hr>

View File

@ -8,20 +8,22 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>enum_params_with_defaults.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="enum_params_with_defaults.htm#a0">BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS</a>(N, P, D)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="enum_params_with_defaults.htm#a0">BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</a>(N, P, D)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Generates a comma separated list of parameters with defaults.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="enum_params_with_defaults.htm#a1">BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS</a>(N, P, D)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="enum_params_with_defaults.htm#a0">BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/enum_params_with_defaults.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="enum_params_with_defaults.hpp::BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS"></a><p>
<a name="a0" doxytag="enum_params_with_defaults.hpp::BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS</td>
<td class="md" nowrap valign="top"> #define BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">N, <tr>
<td></td>
@ -53,7 +55,42 @@ In other words, expands to the sequence:
P##0 = D##0, P##1 = D##1, ..., P##N-1 = D##N-1
</pre></div></pre>
<p>
NOTE: The implementation uses <a class="el" href="repeat_8hpp.html#a0">BOOST_PREPROCESSOR_REPEAT</a>(). </td>
NOTE: The implementation uses <a class="el" href="repeat_8hpp.html#a0">BOOST_PP_REPEAT</a>(). </td>
</tr>
</table>
<a name="a1" doxytag="enum_params_with_defaults.hpp::BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">N, <tr>
<td></td>
<td></td>
<td class="md" nowrap>P, <tr>
<td></td>
<td></td>
<td class="md" nowrap>D&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Obsolete. Use <a class="el" href="enum_params_with_defaults.htm#a0">BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</a>().
<p>
</td>
</tr>
</table>
<hr>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>equal.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="equal_8hpp.html#a0">BOOST_PREPROCESSOR_EQUAL</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="equal_8hpp.html#a0">BOOST_PP_EQUAL</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to 1 if X==Y and 0 otherwise.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="equal_8hpp.html#a1">BOOST_PREPROCESSOR_EQUAL</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="equal_8hpp.html#a0">BOOST_PP_EQUAL</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/comparison/equal.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="equal.hpp::BOOST_PREPROCESSOR_EQUAL"></a><p>
<a name="a0" doxytag="equal.hpp::BOOST_PP_EQUAL"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_EQUAL</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to 1 if X==Y and 0 otherwise.
<p>
</td>
</tr>
</table>
<a name="a1" doxytag="equal.hpp::BOOST_PREPROCESSOR_EQUAL"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to 1 if X==Y and 0 otherwise.
Obsolete. Use <a class="el" href="equal_8hpp.html#a0">BOOST_PP_EQUAL</a>().
<p>
</td>
</tr>

View File

@ -7,48 +7,88 @@
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>Boost PREPROCESSOR library: Reference File Members</h1>Here is a list of all file members with links to the files they belong to:<ul>
<li>BOOST_PREPROCESSOR_ADD
: <a class="el" href="add_8hpp.html#a0">add.hpp</a><li>BOOST_PREPROCESSOR_AND
: <a class="el" href="and_8hpp.html#a0">and.hpp</a><li>BOOST_PREPROCESSOR_ASSERT_MSG
: <a class="el" href="assert__msg_8hpp.html#a0">assert_msg.hpp</a><li>BOOST_PREPROCESSOR_BOOL
: <a class="el" href="bool_8hpp.html#a0">bool.hpp</a><li>BOOST_PREPROCESSOR_CAT
: <a class="el" href="cat_8hpp.html#a0">cat.hpp</a><li>BOOST_PREPROCESSOR_COMMA
: <a class="el" href="comma_8hpp.html#a0">comma.hpp</a><li>BOOST_PREPROCESSOR_COMMA_IF
: <a class="el" href="comma__if_8hpp.html#a0">comma_if.hpp</a><li>BOOST_PREPROCESSOR_DEC
: <a class="el" href="dec_8hpp.html#a0">dec.hpp</a><li>BOOST_PREPROCESSOR_DIV
: <a class="el" href="div_8hpp.html#a0">div.hpp</a><li>BOOST_PREPROCESSOR_EMPTY
: <a class="el" href="empty_8hpp.html#a0">empty.hpp</a><li>BOOST_PREPROCESSOR_ENUM_PARAMS
: <a class="el" href="enum__params_8hpp.html#a0">enum_params.hpp</a><li>BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT
: <a class="el" href="enum_params_with_a_default.htm#a0">enum_params_with_a_default.hpp</a><li>BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS
: <a class="el" href="enum_params_with_defaults.htm#a0">enum_params_with_defaults.hpp</a><li>BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS
: <a class="el" href="enum__shifted__params_8hpp.html#a0">enum_shifted_params.hpp</a><li>BOOST_PREPROCESSOR_EQUAL
: <a class="el" href="equal_8hpp.html#a0">equal.hpp</a><li>BOOST_PREPROCESSOR_GREATER
: <a class="el" href="greater_8hpp.html#a0">greater.hpp</a><li>BOOST_PREPROCESSOR_GREATER_EQUAL
: <a class="el" href="greater__equal_8hpp.html#a0">greater_equal.hpp</a><li>BOOST_PREPROCESSOR_IDENTITY
: <a class="el" href="identity_8hpp.html#a0">identity.hpp</a><li>BOOST_PREPROCESSOR_IF
: <a class="el" href="if_8hpp.html#a0">if.hpp</a><li>BOOST_PREPROCESSOR_INC
: <a class="el" href="inc_8hpp.html#a0">inc.hpp</a><li>BOOST_PREPROCESSOR_LESS
: <a class="el" href="less_8hpp.html#a0">less.hpp</a><li>BOOST_PREPROCESSOR_LESS_EQUAL
: <a class="el" href="less__equal_8hpp.html#a0">less_equal.hpp</a><li>BOOST_PREPROCESSOR_LIMIT_DIM
: <a class="el" href="limits_8hpp.html#a0">limits.hpp</a><li>BOOST_PREPROCESSOR_LIMIT_MAG
: <a class="el" href="limits_8hpp.html#a1">limits.hpp</a><li>BOOST_PREPROCESSOR_LIMIT_TUPLE
: <a class="el" href="limits_8hpp.html#a2">limits.hpp</a><li>BOOST_PREPROCESSOR_MAX
: <a class="el" href="max_8hpp.html#a0">max.hpp</a><li>BOOST_PREPROCESSOR_MIN
: <a class="el" href="min_8hpp.html#a0">min.hpp</a><li>BOOST_PREPROCESSOR_MOD
: <a class="el" href="mod_8hpp.html#a0">mod.hpp</a><li>BOOST_PREPROCESSOR_MUL
: <a class="el" href="mul_8hpp.html#a0">mul.hpp</a><li>BOOST_PREPROCESSOR_NOR
: <a class="el" href="nor_8hpp.html#a0">nor.hpp</a><li>BOOST_PREPROCESSOR_NOT
: <a class="el" href="not_8hpp.html#a0">not.hpp</a><li>BOOST_PREPROCESSOR_NOT_EQUAL
: <a class="el" href="not__equal_8hpp.html#a0">not_equal.hpp</a><li>BOOST_PREPROCESSOR_OR
: <a class="el" href="or_8hpp.html#a0">or.hpp</a><li>BOOST_PREPROCESSOR_REPEAT
: <a class="el" href="repeat_8hpp.html#a0">repeat.hpp</a><li>BOOST_PREPROCESSOR_REPEAT_2ND
: <a class="el" href="repeat__2nd_8hpp.html#a0">repeat_2nd.hpp</a><li>BOOST_PREPROCESSOR_REPEAT_3RD
: <a class="el" href="repeat__3rd_8hpp.html#a0">repeat_3rd.hpp</a><li>BOOST_PREPROCESSOR_STRINGIZE
: <a class="el" href="stringize_8hpp.html#a0">stringize.hpp</a><li>BOOST_PREPROCESSOR_SUB
: <a class="el" href="sub_8hpp.html#a0">sub.hpp</a><li>BOOST_PREPROCESSOR_TUPLE_ELEM
: <a class="el" href="tuple_8hpp.html#a0">tuple.hpp</a><li>BOOST_PREPROCESSOR_WHILE
: <a class="el" href="while_8hpp.html#a0">while.hpp</a><li>BOOST_PREPROCESSOR_XOR
: <a class="el" href="xor_8hpp.html#a0">xor.hpp</a></ul>
<li>BOOST_PP_ADD
: <a class="el" href="add_8hpp.html#a0">add.hpp</a><li>BOOST_PP_AND
: <a class="el" href="and_8hpp.html#a0">and.hpp</a><li>BOOST_PP_ASSERT_MSG
: <a class="el" href="assert__msg_8hpp.html#a0">assert_msg.hpp</a><li>BOOST_PP_BOOL
: <a class="el" href="bool_8hpp.html#a0">bool.hpp</a><li>BOOST_PP_CAT
: <a class="el" href="cat_8hpp.html#a0">cat.hpp</a><li>BOOST_PP_COMMA
: <a class="el" href="comma_8hpp.html#a0">comma.hpp</a><li>BOOST_PP_COMMA_IF
: <a class="el" href="comma__if_8hpp.html#a0">comma_if.hpp</a><li>BOOST_PP_DEC
: <a class="el" href="dec_8hpp.html#a0">dec.hpp</a><li>BOOST_PP_DIV
: <a class="el" href="div_8hpp.html#a0">div.hpp</a><li>BOOST_PP_EMPTY
: <a class="el" href="empty_8hpp.html#a0">empty.hpp</a><li>BOOST_PP_ENUM_PARAMS
: <a class="el" href="enum__params_8hpp.html#a0">enum_params.hpp</a><li>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT
: <a class="el" href="enum_params_with_a_default.htm#a0">enum_params_with_a_default.hpp</a><li>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS
: <a class="el" href="enum_params_with_defaults.htm#a0">enum_params_with_defaults.hpp</a><li>BOOST_PP_ENUM_SHIFTED_PARAMS
: <a class="el" href="enum__shifted__params_8hpp.html#a0">enum_shifted_params.hpp</a><li>BOOST_PP_EQUAL
: <a class="el" href="equal_8hpp.html#a0">equal.hpp</a><li>BOOST_PP_GREATER
: <a class="el" href="greater_8hpp.html#a0">greater.hpp</a><li>BOOST_PP_GREATER_EQUAL
: <a class="el" href="greater__equal_8hpp.html#a0">greater_equal.hpp</a><li>BOOST_PP_IDENTITY
: <a class="el" href="identity_8hpp.html#a0">identity.hpp</a><li>BOOST_PP_IF
: <a class="el" href="if_8hpp.html#a0">if.hpp</a><li>BOOST_PP_INC
: <a class="el" href="inc_8hpp.html#a0">inc.hpp</a><li>BOOST_PP_LESS
: <a class="el" href="less_8hpp.html#a0">less.hpp</a><li>BOOST_PP_LESS_EQUAL
: <a class="el" href="less__equal_8hpp.html#a0">less_equal.hpp</a><li>BOOST_PP_LIMIT_DIM
: <a class="el" href="limits_8hpp.html#a0">limits.hpp</a><li>BOOST_PP_LIMIT_MAG
: <a class="el" href="limits_8hpp.html#a1">limits.hpp</a><li>BOOST_PP_LIMIT_TUPLE
: <a class="el" href="limits_8hpp.html#a2">limits.hpp</a><li>BOOST_PP_MAX
: <a class="el" href="max_8hpp.html#a0">max.hpp</a><li>BOOST_PP_MIN
: <a class="el" href="min_8hpp.html#a0">min.hpp</a><li>BOOST_PP_MOD
: <a class="el" href="mod_8hpp.html#a0">mod.hpp</a><li>BOOST_PP_MUL
: <a class="el" href="mul_8hpp.html#a0">mul.hpp</a><li>BOOST_PP_NOR
: <a class="el" href="nor_8hpp.html#a0">nor.hpp</a><li>BOOST_PP_NOT
: <a class="el" href="not_8hpp.html#a0">not.hpp</a><li>BOOST_PP_NOT_EQUAL
: <a class="el" href="not__equal_8hpp.html#a0">not_equal.hpp</a><li>BOOST_PP_OR
: <a class="el" href="or_8hpp.html#a0">or.hpp</a><li>BOOST_PP_REPEAT
: <a class="el" href="repeat_8hpp.html#a0">repeat.hpp</a><li>BOOST_PP_REPEAT_2ND
: <a class="el" href="repeat__2nd_8hpp.html#a0">repeat_2nd.hpp</a><li>BOOST_PP_REPEAT_3RD
: <a class="el" href="repeat__3rd_8hpp.html#a0">repeat_3rd.hpp</a><li>BOOST_PP_STRINGIZE
: <a class="el" href="stringize_8hpp.html#a0">stringize.hpp</a><li>BOOST_PP_SUB
: <a class="el" href="sub_8hpp.html#a0">sub.hpp</a><li>BOOST_PP_TUPLE_ELEM
: <a class="el" href="tuple_8hpp.html#a0">tuple.hpp</a><li>BOOST_PP_WHILE
: <a class="el" href="while_8hpp.html#a0">while.hpp</a><li>BOOST_PP_XOR
: <a class="el" href="xor_8hpp.html#a0">xor.hpp</a><li>BOOST_PREPROCESSOR_ADD
: <a class="el" href="add_8hpp.html#a1">add.hpp</a><li>BOOST_PREPROCESSOR_AND
: <a class="el" href="and_8hpp.html#a1">and.hpp</a><li>BOOST_PREPROCESSOR_ASSERT_MSG
: <a class="el" href="assert__msg_8hpp.html#a1">assert_msg.hpp</a><li>BOOST_PREPROCESSOR_BOOL
: <a class="el" href="bool_8hpp.html#a1">bool.hpp</a><li>BOOST_PREPROCESSOR_CAT
: <a class="el" href="cat_8hpp.html#a1">cat.hpp</a><li>BOOST_PREPROCESSOR_COMMA
: <a class="el" href="comma_8hpp.html#a1">comma.hpp</a><li>BOOST_PREPROCESSOR_COMMA_IF
: <a class="el" href="comma__if_8hpp.html#a1">comma_if.hpp</a><li>BOOST_PREPROCESSOR_DEC
: <a class="el" href="dec_8hpp.html#a1">dec.hpp</a><li>BOOST_PREPROCESSOR_DIV
: <a class="el" href="div_8hpp.html#a1">div.hpp</a><li>BOOST_PREPROCESSOR_EMPTY
: <a class="el" href="empty_8hpp.html#a1">empty.hpp</a><li>BOOST_PREPROCESSOR_ENUM_PARAMS
: <a class="el" href="enum__params_8hpp.html#a1">enum_params.hpp</a><li>BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT
: <a class="el" href="enum_params_with_a_default.htm#a1">enum_params_with_a_default.hpp</a><li>BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS
: <a class="el" href="enum_params_with_defaults.htm#a1">enum_params_with_defaults.hpp</a><li>BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS
: <a class="el" href="enum__shifted__params_8hpp.html#a1">enum_shifted_params.hpp</a><li>BOOST_PREPROCESSOR_EQUAL
: <a class="el" href="equal_8hpp.html#a1">equal.hpp</a><li>BOOST_PREPROCESSOR_GREATER
: <a class="el" href="greater_8hpp.html#a1">greater.hpp</a><li>BOOST_PREPROCESSOR_GREATER_EQUAL
: <a class="el" href="greater__equal_8hpp.html#a1">greater_equal.hpp</a><li>BOOST_PREPROCESSOR_IDENTITY
: <a class="el" href="identity_8hpp.html#a1">identity.hpp</a><li>BOOST_PREPROCESSOR_IF
: <a class="el" href="if_8hpp.html#a1">if.hpp</a><li>BOOST_PREPROCESSOR_INC
: <a class="el" href="inc_8hpp.html#a1">inc.hpp</a><li>BOOST_PREPROCESSOR_LESS
: <a class="el" href="less_8hpp.html#a1">less.hpp</a><li>BOOST_PREPROCESSOR_LESS_EQUAL
: <a class="el" href="less__equal_8hpp.html#a1">less_equal.hpp</a><li>BOOST_PREPROCESSOR_LIMIT_DIM
: <a class="el" href="limits_8hpp.html#a3">limits.hpp</a><li>BOOST_PREPROCESSOR_LIMIT_MAG
: <a class="el" href="limits_8hpp.html#a4">limits.hpp</a><li>BOOST_PREPROCESSOR_LIMIT_TUPLE
: <a class="el" href="limits_8hpp.html#a5">limits.hpp</a><li>BOOST_PREPROCESSOR_MAX
: <a class="el" href="max_8hpp.html#a1">max.hpp</a><li>BOOST_PREPROCESSOR_MIN
: <a class="el" href="min_8hpp.html#a1">min.hpp</a><li>BOOST_PREPROCESSOR_MOD
: <a class="el" href="mod_8hpp.html#a1">mod.hpp</a><li>BOOST_PREPROCESSOR_MUL
: <a class="el" href="mul_8hpp.html#a1">mul.hpp</a><li>BOOST_PREPROCESSOR_NOR
: <a class="el" href="nor_8hpp.html#a1">nor.hpp</a><li>BOOST_PREPROCESSOR_NOT
: <a class="el" href="not_8hpp.html#a1">not.hpp</a><li>BOOST_PREPROCESSOR_NOT_EQUAL
: <a class="el" href="not__equal_8hpp.html#a1">not_equal.hpp</a><li>BOOST_PREPROCESSOR_OR
: <a class="el" href="or_8hpp.html#a1">or.hpp</a><li>BOOST_PREPROCESSOR_REPEAT
: <a class="el" href="repeat_8hpp.html#a1">repeat.hpp</a><li>BOOST_PREPROCESSOR_REPEAT_2ND
: <a class="el" href="repeat__2nd_8hpp.html#a1">repeat_2nd.hpp</a><li>BOOST_PREPROCESSOR_REPEAT_3RD
: <a class="el" href="repeat__3rd_8hpp.html#a1">repeat_3rd.hpp</a><li>BOOST_PREPROCESSOR_STRINGIZE
: <a class="el" href="stringize_8hpp.html#a1">stringize.hpp</a><li>BOOST_PREPROCESSOR_SUB
: <a class="el" href="sub_8hpp.html#a1">sub.hpp</a><li>BOOST_PREPROCESSOR_TUPLE_ELEM
: <a class="el" href="tuple_8hpp.html#a1">tuple.hpp</a><li>BOOST_PREPROCESSOR_XOR
: <a class="el" href="xor_8hpp.html#a1">xor.hpp</a></ul>
<hr>
<p><EFBFBD> Copyright Housemarque Oy 2001</p>
<p>Permission to copy, use, modify, sell and distribute this document is granted

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>greater.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="greater_8hpp.html#a0">BOOST_PREPROCESSOR_GREATER</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="greater_8hpp.html#a0">BOOST_PP_GREATER</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to 1 if X&gt;Y and 0 otherwise.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="greater_8hpp.html#a1">BOOST_PREPROCESSOR_GREATER</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="greater_8hpp.html#a0">BOOST_PP_GREATER</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/comparison/greater.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="greater.hpp::BOOST_PREPROCESSOR_GREATER"></a><p>
<a name="a0" doxytag="greater.hpp::BOOST_PP_GREATER"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_GREATER</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to 1 if X&gt;Y and 0 otherwise.
<p>
</td>
</tr>
</table>
<a name="a1" doxytag="greater.hpp::BOOST_PREPROCESSOR_GREATER"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to 1 if X&gt;Y and 0 otherwise.
Obsolete. Use <a class="el" href="greater_8hpp.html#a0">BOOST_PP_GREATER</a>().
<p>
</td>
</tr>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>greater_equal.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="greater__equal_8hpp.html#a0">BOOST_PREPROCESSOR_GREATER_EQUAL</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="greater__equal_8hpp.html#a0">BOOST_PP_GREATER_EQUAL</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to 1 if X&gt;=Y and 0 otherwise.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="greater__equal_8hpp.html#a1">BOOST_PREPROCESSOR_GREATER_EQUAL</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="greater__equal_8hpp.html#a0">BOOST_PP_GREATER_EQUAL</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/comparison/greater_equal.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="greater_equal.hpp::BOOST_PREPROCESSOR_GREATER_EQUAL"></a><p>
<a name="a0" doxytag="greater_equal.hpp::BOOST_PP_GREATER_EQUAL"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_GREATER_EQUAL</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to 1 if X&gt;=Y and 0 otherwise.
<p>
</td>
</tr>
</table>
<a name="a1" doxytag="greater_equal.hpp::BOOST_PREPROCESSOR_GREATER_EQUAL"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to 1 if X&gt;=Y and 0 otherwise.
Obsolete. Use <a class="el" href="greater__equal_8hpp.html#a0">BOOST_PP_GREATER_EQUAL</a>().
<p>
</td>
</tr>

View File

@ -8,14 +8,60 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>identity.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="identity_8hpp.html#a0">BOOST_PREPROCESSOR_IDENTITY</a>(X)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="identity_8hpp.html#a0">BOOST_PP_IDENTITY</a>(X)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to X once invoked.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="identity_8hpp.html#a1">BOOST_PREPROCESSOR_IDENTITY</a>(X)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="identity_8hpp.html#a0">BOOST_PP_IDENTITY</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/identity.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="identity.hpp::BOOST_PREPROCESSOR_IDENTITY"></a><p>
<a name="a0" doxytag="identity.hpp::BOOST_PP_IDENTITY"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_IDENTITY</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to X once invoked.
<p>
Designed to be used with <a class="el" href="if_8hpp.html#a0">BOOST_PP_IF</a>(), when one of the clauses need to be invoked.
<p>
Example:
<p>
<pre><div class="fragment"><pre>
BOOST_PP_IDENTITY(X)()
// ^^ NOTE!
</pre></div></pre>
<p>
The above expands to:
<p>
<pre><div class="fragment"><pre>
X
</pre></div></pre>
<p>
NOTE: If <a class="el" href="identity_8hpp.html#a0">BOOST_PP_IDENTITY</a>() is not invoked, the expansion will not be usable. </td>
</tr>
</table>
<a name="a1" doxytag="identity.hpp::BOOST_PREPROCESSOR_IDENTITY"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -39,24 +85,9 @@
<td>
<p>
Expands to X once invoked.
Obsolete. Use <a class="el" href="identity_8hpp.html#a0">BOOST_PP_IDENTITY</a>().
<p>
Designed to be used with <a class="el" href="if_8hpp.html#a0">BOOST_PREPROCESSOR_IF</a>(), when one of the clauses need to be invoked.
<p>
Example:
<p>
<pre><div class="fragment"><pre>
BOOST_PREPROCESSOR_IDENTITY(X)()
// ^^ NOTE!
</pre></div></pre>
<p>
The above expands to:
<p>
<pre><div class="fragment"><pre>
X
</pre></div></pre>
<p>
NOTE: If <a class="el" href="identity_8hpp.html#a0">BOOST_PREPROCESSOR_IDENTITY</a>() is not invoked, the expansion will not be usable. </td>
</td>
</tr>
</table>
<hr>

View File

@ -8,14 +8,51 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>if.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="if_8hpp.html#a0">BOOST_PREPROCESSOR_IF</a>(C, T, E)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="if_8hpp.html#a0">BOOST_PP_IF</a>(C, T, E)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to T if C != 0 and E if C == 0.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="if_8hpp.html#a1">BOOST_PREPROCESSOR_IF</a>(C, T, E)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="if_8hpp.html#a0">BOOST_PP_IF</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/if.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="if.hpp::BOOST_PREPROCESSOR_IF"></a><p>
<a name="a0" doxytag="if.hpp::BOOST_PP_IF"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_IF</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">C, <tr>
<td></td>
<td></td>
<td class="md" nowrap>T, <tr>
<td></td>
<td></td>
<td class="md" nowrap>E&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to T if C != 0 and E if C == 0.
<p>
<a class="el" href="if_8hpp.html#a0">BOOST_PP_IF</a>() enables convenient generation of lists using <a class="el" href="repeat_8hpp.html#a0">BOOST_PP_REPEAT</a>(). </td>
</tr>
</table>
<a name="a1" doxytag="if.hpp::BOOST_PREPROCESSOR_IF"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -45,9 +82,9 @@
<td>
<p>
Expands to T if C != 0 and E if C == 0.
Obsolete. Use <a class="el" href="if_8hpp.html#a0">BOOST_PP_IF</a>().
<p>
<a class="el" href="if_8hpp.html#a0">BOOST_PREPROCESSOR_IF</a>() enables convenient generation of lists using <a class="el" href="repeat_8hpp.html#a0">BOOST_PREPROCESSOR_REPEAT</a>(). </td>
</td>
</tr>
</table>
<hr>

View File

@ -8,14 +8,49 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>inc.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="inc_8hpp.html#a0">BOOST_PREPROCESSOR_INC</a>(X)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="inc_8hpp.html#a0">BOOST_PP_INC</a>(X)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Increments X expanding to a single token.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="inc_8hpp.html#a1">BOOST_PREPROCESSOR_INC</a>(X)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="inc_8hpp.html#a0">BOOST_PP_INC</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/inc.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="inc.hpp::BOOST_PREPROCESSOR_INC"></a><p>
<a name="a0" doxytag="inc.hpp::BOOST_PP_INC"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_INC</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Increments X expanding to a single token.
<p>
For example, <a class="el" href="inc_8hpp.html#a0">BOOST_PP_INC</a>(3) expands to 4 (a single token).
<p>
<a class="el" href="inc_8hpp.html#a0">BOOST_PP_INC</a>() uses saturation arithmetic. Incrementing a BOOST_PP_LIMIT_MAG yields a BOOST_PP_LIMIT_MAG.
<p>
Only decimal integer literals in the range [0,BOOST_PP_LIMIT_MAG] are supported. </td>
</tr>
</table>
<a name="a1" doxytag="inc.hpp::BOOST_PREPROCESSOR_INC"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -39,11 +74,9 @@
<td>
<p>
Increments X expanding to a single token.
Obsolete. Use <a class="el" href="inc_8hpp.html#a0">BOOST_PP_INC</a>().
<p>
<a class="el" href="inc_8hpp.html#a0">BOOST_PREPROCESSOR_INC</a>() uses saturation arithmetic. Incrementing a BOOST_PREPROCESSOR_LIMIT_MAG yields a BOOST_PREPROCESSOR_LIMIT_MAG.
<p>
Only decimal integer literals in the range [0,BOOST_PREPROCESSOR_LIMIT_MAG] are supported. </td>
</td>
</tr>
</table>
<hr>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>less.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="less_8hpp.html#a0">BOOST_PREPROCESSOR_LESS</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="less_8hpp.html#a0">BOOST_PP_LESS</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to 1 if X&lt;Y and 0 otherwise.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="less_8hpp.html#a1">BOOST_PREPROCESSOR_LESS</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="less_8hpp.html#a0">BOOST_PP_LESS</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/comparison/less.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="less.hpp::BOOST_PREPROCESSOR_LESS"></a><p>
<a name="a0" doxytag="less.hpp::BOOST_PP_LESS"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_LESS</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to 1 if X&lt;Y and 0 otherwise.
<p>
</td>
</tr>
</table>
<a name="a1" doxytag="less.hpp::BOOST_PREPROCESSOR_LESS"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to 1 if X&lt;Y and 0 otherwise.
Obsolete. Use <a class="el" href="less_8hpp.html#a0">BOOST_PP_LESS</a>().
<p>
</td>
</tr>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>less_equal.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="less__equal_8hpp.html#a0">BOOST_PREPROCESSOR_LESS_EQUAL</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="less__equal_8hpp.html#a0">BOOST_PP_LESS_EQUAL</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to 1 if X&lt;=Y and 0 otherwise.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="less__equal_8hpp.html#a1">BOOST_PREPROCESSOR_LESS_EQUAL</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="less__equal_8hpp.html#a0">BOOST_PP_LESS_EQUAL</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/comparison/less_equal.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="less_equal.hpp::BOOST_PREPROCESSOR_LESS_EQUAL"></a><p>
<a name="a0" doxytag="less_equal.hpp::BOOST_PP_LESS_EQUAL"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_LESS_EQUAL</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to 1 if X&lt;=Y and 0 otherwise.
<p>
</td>
</tr>
</table>
<a name="a1" doxytag="less_equal.hpp::BOOST_PREPROCESSOR_LESS_EQUAL"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to 1 if X&lt;=Y and 0 otherwise.
Obsolete. Use <a class="el" href="less__equal_8hpp.html#a0">BOOST_PP_LESS_EQUAL</a>().
<p>
</td>
</tr>

View File

@ -8,18 +8,100 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>limits.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="limits_8hpp.html#a0">BOOST_PREPROCESSOR_LIMIT_DIM</a></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="limits_8hpp.html#a0">BOOST_PP_LIMIT_DIM</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the number of dimensions of repeat supported by the library.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="limits_8hpp.html#a1">BOOST_PREPROCESSOR_LIMIT_MAG</a></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="limits_8hpp.html#a1">BOOST_PP_LIMIT_MAG</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the maximum straight numeric literal supported by the library.</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="limits_8hpp.html#a2">BOOST_PREPROCESSOR_LIMIT_TUPLE</a></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="limits_8hpp.html#a2">BOOST_PP_LIMIT_TUPLE</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the maximum tuple length supported by the library.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="limits_8hpp.html#a3">BOOST_PREPROCESSOR_LIMIT_DIM</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use BOOST_PP_LIMIT_DIM.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="limits_8hpp.html#a4">BOOST_PREPROCESSOR_LIMIT_MAG</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use BOOST_PP_LIMIT_MAG.</em> <a href="#a4">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="limits_8hpp.html#a5">BOOST_PREPROCESSOR_LIMIT_TUPLE</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use BOOST_PP_LIMIT_TUPLE.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/limits.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="limits.hpp::BOOST_PREPROCESSOR_LIMIT_DIM"></a><p>
<a name="a0" doxytag="limits.hpp::BOOST_PP_LIMIT_DIM"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_LIMIT_DIM
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the number of dimensions of repeat supported by the library.
<p>
The repeat macros are named <a class="el" href="repeat_8hpp.html#a0">BOOST_PP_REPEAT</a>(), <a class="el" href="repeat__2nd_8hpp.html#a0">BOOST_PP_REPEAT_2ND</a>(), <a class="el" href="repeat__3rd_8hpp.html#a0">BOOST_PP_REPEAT_3RD</a>(), ... </td>
</tr>
</table>
<a name="a1" doxytag="limits.hpp::BOOST_PP_LIMIT_MAG"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_LIMIT_MAG
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the maximum straight numeric literal supported by the library.
<p>
This is also the limit of the repetition primitives (BOOST_PP_ENUM family and BOOST_PP_REPEAT family).
<p>
NOTES:<ul>
<li>Only decimal integer literals in the range [0,BOOST_PP_LIMIT_MAG] are supported.<li>All arithmetic operations (ADD,SUB,MUL,DIV) use saturation arithmetic.<li>The maximum repetition count supported by the library may not be reached due to compiler limitations. </ul>
</td>
</tr>
</table>
<a name="a2" doxytag="limits.hpp::BOOST_PP_LIMIT_TUPLE"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_LIMIT_TUPLE
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the maximum tuple length supported by the library.
<p>
</td>
</tr>
</table>
<a name="a3" doxytag="limits.hpp::BOOST_PREPROCESSOR_LIMIT_DIM"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -38,12 +120,12 @@
<td>
<p>
Expands to the number of dimensions of repeat supported by the library.
Obsolete. Use BOOST_PP_LIMIT_DIM.
<p>
</td>
</tr>
</table>
<a name="a1" doxytag="limits.hpp::BOOST_PREPROCESSOR_LIMIT_MAG"></a><p>
<a name="a4" doxytag="limits.hpp::BOOST_PREPROCESSOR_LIMIT_MAG"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -62,14 +144,12 @@ Expands to the number of dimensions of repeat supported by the library.
<td>
<p>
Expands to the maximum straight numeric literal supported by the library.
Obsolete. Use BOOST_PP_LIMIT_MAG.
<p>
NOTES:<ul>
<li>Only decimal integer literals in the range [0,BOOST_PREPROCESSOR_LIMIT_MAG] are supported.<li>All arithmetic operations (ADD,SUB,MUL,DIV) use saturation arithmetic.<li>The maximum repetition count supported by the library may not be reached due to compiler limitations. </ul>
</td>
</tr>
</table>
<a name="a2" doxytag="limits.hpp::BOOST_PREPROCESSOR_LIMIT_TUPLE"></a><p>
<a name="a5" doxytag="limits.hpp::BOOST_PREPROCESSOR_LIMIT_TUPLE"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -88,7 +168,7 @@ NOTES:<ul>
<td>
<p>
Expands to the maximum tuple length supported by the library.
Obsolete. Use BOOST_PP_LIMIT_TUPLE.
<p>
</td>
</tr>

View File

@ -11,6 +11,8 @@
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/logical.hpp">Click here to see the header.</a>
<p>
Includes all logical headers.
<p>
<hr>
<p><EFBFBD> Copyright Housemarque Oy 2001</p>
<p>Permission to copy, use, modify, sell and distribute this document is granted

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>max.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="max_8hpp.html#a0">BOOST_PREPROCESSOR_MAX</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="max_8hpp.html#a0">BOOST_PP_MAX</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the maximum of X and Y.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="max_8hpp.html#a1">BOOST_PREPROCESSOR_MAX</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="max_8hpp.html#a0">BOOST_PP_MAX</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/max.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="max.hpp::BOOST_PREPROCESSOR_MAX"></a><p>
<a name="a0" doxytag="max.hpp::BOOST_PP_MAX"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_MAX</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the maximum of X and Y.
<p>
For example, <a class="el" href="max_8hpp.html#a0">BOOST_PP_MAX</a>(5,7) expands to 7 (a single token). </td>
</tr>
</table>
<a name="a1" doxytag="max.hpp::BOOST_PREPROCESSOR_MAX"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to the maximum of X and Y.
Obsolete. Use <a class="el" href="max_8hpp.html#a0">BOOST_PP_MAX</a>().
<p>
</td>
</tr>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>min.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="min_8hpp.html#a0">BOOST_PREPROCESSOR_MIN</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="min_8hpp.html#a0">BOOST_PP_MIN</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the minimum of X and Y.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="min_8hpp.html#a1">BOOST_PREPROCESSOR_MIN</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="min_8hpp.html#a0">BOOST_PP_MIN</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/min.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="min.hpp::BOOST_PREPROCESSOR_MIN"></a><p>
<a name="a0" doxytag="min.hpp::BOOST_PP_MIN"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_MIN</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the minimum of X and Y.
<p>
For example, <a class="el" href="min_8hpp.html#a0">BOOST_PP_MIN</a>(5,7) expands to 5 (a single token). </td>
</tr>
</table>
<a name="a1" doxytag="min.hpp::BOOST_PREPROCESSOR_MIN"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to the minimum of X and Y.
Obsolete. Use <a class="el" href="min_8hpp.html#a0">BOOST_PP_MIN</a>().
<p>
</td>
</tr>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>mod.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="mod_8hpp.html#a0">BOOST_PREPROCESSOR_MOD</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="mod_8hpp.html#a0">BOOST_PP_MOD</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the remainder of X and Y.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="mod_8hpp.html#a1">BOOST_PREPROCESSOR_MOD</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="mod_8hpp.html#a0">BOOST_PP_MOD</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/arithmetic/mod.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="mod.hpp::BOOST_PREPROCESSOR_MOD"></a><p>
<a name="a0" doxytag="mod.hpp::BOOST_PP_MOD"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_MOD</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the remainder of X and Y.
<p>
For example, <a class="el" href="mod_8hpp.html#a0">BOOST_PP_MOD</a>(4,3) expands to 1 (a single token). </td>
</tr>
</table>
<a name="a1" doxytag="mod.hpp::BOOST_PREPROCESSOR_MOD"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to the remainder of X and Y.
Obsolete. Use <a class="el" href="mod_8hpp.html#a0">BOOST_PP_MOD</a>().
<p>
</td>
</tr>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>mul.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="mul_8hpp.html#a0">BOOST_PREPROCESSOR_MUL</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="mul_8hpp.html#a0">BOOST_PP_MUL</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the product of X and Y.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="mul_8hpp.html#a1">BOOST_PREPROCESSOR_MUL</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="mul_8hpp.html#a0">BOOST_PP_MUL</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/arithmetic/mul.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="mul.hpp::BOOST_PREPROCESSOR_MUL"></a><p>
<a name="a0" doxytag="mul.hpp::BOOST_PP_MUL"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_MUL</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the product of X and Y.
<p>
For example, <a class="el" href="mul_8hpp.html#a0">BOOST_PP_MUL</a>(4,3) expands to 12 (a single token). </td>
</tr>
</table>
<a name="a1" doxytag="mul.hpp::BOOST_PREPROCESSOR_MUL"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to the product of X and Y.
Obsolete. Use <a class="el" href="mul_8hpp.html#a0">BOOST_PP_MUL</a>().
<p>
</td>
</tr>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>nor.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="nor_8hpp.html#a0">BOOST_PREPROCESSOR_NOR</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="nor_8hpp.html#a0">BOOST_PP_NOR</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the logical NEITHER OR of the operands.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="nor_8hpp.html#a1">BOOST_PREPROCESSOR_NOR</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="nor_8hpp.html#a0">BOOST_PP_NOR</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/logical/nor.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="nor.hpp::BOOST_PREPROCESSOR_NOR"></a><p>
<a name="a0" doxytag="nor.hpp::BOOST_PP_NOR"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_NOR</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the logical NEITHER OR of the operands.
<p>
For example, <a class="el" href="nor_8hpp.html#a0">BOOST_PP_NOR</a>(0,5) expands to 0 (a single token). </td>
</tr>
</table>
<a name="a1" doxytag="nor.hpp::BOOST_PREPROCESSOR_NOR"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to the logical NEITHER OR of the operands.
Obsolete. Use <a class="el" href="nor_8hpp.html#a0">BOOST_PP_NOR</a>().
<p>
</td>
</tr>

View File

@ -8,14 +8,45 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>not.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="not_8hpp.html#a0">BOOST_PREPROCESSOR_NOT</a>(X)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="not_8hpp.html#a0">BOOST_PP_NOT</a>(X)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the logical NOT of the operand.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="not_8hpp.html#a1">BOOST_PREPROCESSOR_NOT</a>(X)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="not_8hpp.html#a0">BOOST_PP_NOT</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/logical/not.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="not.hpp::BOOST_PREPROCESSOR_NOT"></a><p>
<a name="a0" doxytag="not.hpp::BOOST_PP_NOT"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_NOT</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the logical NOT of the operand.
<p>
For example, <a class="el" href="not_8hpp.html#a0">BOOST_PP_NOT</a>(0) expands to 1 (a single token). </td>
</tr>
</table>
<a name="a1" doxytag="not.hpp::BOOST_PREPROCESSOR_NOT"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -39,7 +70,7 @@
<td>
<p>
Expands to the logical NOT of the operand.
Obsolete. Use <a class="el" href="not_8hpp.html#a0">BOOST_PP_NOT</a>().
<p>
</td>
</tr>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>not_equal.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="not__equal_8hpp.html#a0">BOOST_PREPROCESSOR_NOT_EQUAL</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="not__equal_8hpp.html#a0">BOOST_PP_NOT_EQUAL</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to 1 if X!=Y and 0 otherwise.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="not__equal_8hpp.html#a1">BOOST_PREPROCESSOR_NOT_EQUAL</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="not__equal_8hpp.html#a0">BOOST_PP_NOT_EQUAL</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/comparison/not_equal.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="not_equal.hpp::BOOST_PREPROCESSOR_NOT_EQUAL"></a><p>
<a name="a0" doxytag="not_equal.hpp::BOOST_PP_NOT_EQUAL"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_NOT_EQUAL</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to 1 if X!=Y and 0 otherwise.
<p>
</td>
</tr>
</table>
<a name="a1" doxytag="not_equal.hpp::BOOST_PREPROCESSOR_NOT_EQUAL"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to 1 if X!=Y and 0 otherwise.
Obsolete. Use <a class="el" href="not__equal_8hpp.html#a0">BOOST_PP_NOT_EQUAL</a>().
<p>
</td>
</tr>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>or.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="or_8hpp.html#a0">BOOST_PREPROCESSOR_OR</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="or_8hpp.html#a0">BOOST_PP_OR</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the logical OR of the operands.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="or_8hpp.html#a1">BOOST_PREPROCESSOR_OR</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="or_8hpp.html#a0">BOOST_PP_OR</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/logical/or.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="or.hpp::BOOST_PREPROCESSOR_OR"></a><p>
<a name="a0" doxytag="or.hpp::BOOST_PP_OR"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_OR</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the logical OR of the operands.
<p>
For example, <a class="el" href="or_8hpp.html#a0">BOOST_PP_OR</a>(0,2) expands to 1 (a single token). </td>
</tr>
</table>
<a name="a1" doxytag="or.hpp::BOOST_PREPROCESSOR_OR"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to the logical OR of the operands.
Obsolete. Use <a class="el" href="or_8hpp.html#a0">BOOST_PP_OR</a>().
<p>
</td>
</tr>

View File

@ -8,20 +8,22 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>repeat.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="repeat_8hpp.html#a0">BOOST_PREPROCESSOR_REPEAT</a>(N, M, P)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="repeat_8hpp.html#a0">BOOST_PP_REPEAT</a>(N, M, P)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Repeats the macro M(I,P) for I = 0 to N-1.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="repeat_8hpp.html#a1">BOOST_PREPROCESSOR_REPEAT</a>(N, M, P)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="repeat_8hpp.html#a0">BOOST_PP_REPEAT</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/repeat.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="repeat.hpp::BOOST_PREPROCESSOR_REPEAT"></a><p>
<a name="a0" doxytag="repeat.hpp::BOOST_PP_REPEAT"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_REPEAT</td>
<td class="md" nowrap valign="top"> #define BOOST_PP_REPEAT</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">N, <tr>
<td></td>
@ -53,7 +55,42 @@ In other words, expands to the sequence:
M(0,P) M(1,P) ... M(N-1,P)
</pre></div></pre>
<p>
See BOOST_PREPROCESSOR_LIMIT_MAG. </td>
See BOOST_PP_LIMIT_MAG. </td>
</tr>
</table>
<a name="a1" doxytag="repeat.hpp::BOOST_PREPROCESSOR_REPEAT"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_REPEAT</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">N, <tr>
<td></td>
<td></td>
<td class="md" nowrap>M, <tr>
<td></td>
<td></td>
<td class="md" nowrap>P&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Obsolete. Use <a class="el" href="repeat_8hpp.html#a0">BOOST_PP_REPEAT</a>().
<p>
</td>
</tr>
</table>
<hr>

View File

@ -8,14 +8,51 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>repeat_2nd.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="repeat__2nd_8hpp.html#a0">BOOST_PREPROCESSOR_REPEAT_2ND</a>(N, M, P)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Same as <a class="el" href="repeat_8hpp.html#a0">BOOST_PREPROCESSOR_REPEAT</a>(), but implemented independently.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="repeat__2nd_8hpp.html#a0">BOOST_PP_REPEAT_2ND</a>(N, M, P)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Same as <a class="el" href="repeat_8hpp.html#a0">BOOST_PP_REPEAT</a>(), but implemented independently.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="repeat__2nd_8hpp.html#a1">BOOST_PREPROCESSOR_REPEAT_2ND</a>(N, M, P)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="repeat__2nd_8hpp.html#a0">BOOST_PP_REPEAT_2ND</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/repeat_2nd.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="repeat_2nd.hpp::BOOST_PREPROCESSOR_REPEAT_2ND"></a><p>
<a name="a0" doxytag="repeat_2nd.hpp::BOOST_PP_REPEAT_2ND"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_REPEAT_2ND</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">N, <tr>
<td></td>
<td></td>
<td class="md" nowrap>M, <tr>
<td></td>
<td></td>
<td class="md" nowrap>P&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Same as <a class="el" href="repeat_8hpp.html#a0">BOOST_PP_REPEAT</a>(), but implemented independently.
<p>
</td>
</tr>
</table>
<a name="a1" doxytag="repeat_2nd.hpp::BOOST_PREPROCESSOR_REPEAT_2ND"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -45,7 +82,7 @@
<td>
<p>
Same as <a class="el" href="repeat_8hpp.html#a0">BOOST_PREPROCESSOR_REPEAT</a>(), but implemented independently.
Obsolete. Use <a class="el" href="repeat__2nd_8hpp.html#a0">BOOST_PP_REPEAT_2ND</a>().
<p>
</td>
</tr>

View File

@ -8,14 +8,51 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>repeat_3rd.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="repeat__3rd_8hpp.html#a0">BOOST_PREPROCESSOR_REPEAT_3RD</a>(N, M, P)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Same as <a class="el" href="repeat_8hpp.html#a0">BOOST_PREPROCESSOR_REPEAT</a>(), but implemented independently.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="repeat__3rd_8hpp.html#a0">BOOST_PP_REPEAT_3RD</a>(N, M, P)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Same as <a class="el" href="repeat_8hpp.html#a0">BOOST_PP_REPEAT</a>(), but implemented independently.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="repeat__3rd_8hpp.html#a1">BOOST_PREPROCESSOR_REPEAT_3RD</a>(N, M, P)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="repeat__3rd_8hpp.html#a0">BOOST_PP_REPEAT_3RD</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/repeat_3rd.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="repeat_3rd.hpp::BOOST_PREPROCESSOR_REPEAT_3RD"></a><p>
<a name="a0" doxytag="repeat_3rd.hpp::BOOST_PP_REPEAT_3RD"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_REPEAT_3RD</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">N, <tr>
<td></td>
<td></td>
<td class="md" nowrap>M, <tr>
<td></td>
<td></td>
<td class="md" nowrap>P&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Same as <a class="el" href="repeat_8hpp.html#a0">BOOST_PP_REPEAT</a>(), but implemented independently.
<p>
</td>
</tr>
</table>
<a name="a1" doxytag="repeat_3rd.hpp::BOOST_PREPROCESSOR_REPEAT_3RD"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -45,7 +82,7 @@
<td>
<p>
Same as <a class="el" href="repeat_8hpp.html#a0">BOOST_PREPROCESSOR_REPEAT</a>(), but implemented independently.
Obsolete. Use <a class="el" href="repeat__3rd_8hpp.html#a0">BOOST_PP_REPEAT_3RD</a>().
<p>
</td>
</tr>

View File

@ -8,20 +8,22 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>stringize.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="stringize_8hpp.html#a0">BOOST_PREPROCESSOR_STRINGIZE</a>(E)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="stringize_8hpp.html#a0">BOOST_PP_STRINGIZE</a>(E)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Delays the stringization of E.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="stringize_8hpp.html#a1">BOOST_PREPROCESSOR_STRINGIZE</a>(E)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="stringize_8hpp.html#a0">BOOST_PP_STRINGIZE</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/stringize.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="stringize.hpp::BOOST_PREPROCESSOR_STRINGIZE"></a><p>
<a name="a0" doxytag="stringize.hpp::BOOST_PP_STRINGIZE"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_STRINGIZE</td>
<td class="md" nowrap valign="top"> #define BOOST_PP_STRINGIZE</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">E&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
@ -45,7 +47,7 @@ Example:
<p>
<pre><div class="fragment"><pre>
#define NOTE(STR)\
message(__FILE__ "(" BOOST_PREPROCESSOR_STRINGIZE(__LINE__) ") : " STR)
message(__FILE__ "(" BOOST_PP_STRINGIZE(__LINE__) ") : " STR)
// ...
@ -58,13 +60,42 @@ The above expands to:
#pragma message("examples.cpp" "(" "20" ") : " "TBD!")
</pre></div></pre>
<p>
The use of <a class="el" href="stringize_8hpp.html#a0">BOOST_PREPROCESSOR_STRINGIZE</a>() above lets the preprocessor expand the __LINE__ before stringizing it. If # would be used directly, the code would expand to:
The use of <a class="el" href="stringize_8hpp.html#a0">BOOST_PP_STRINGIZE</a>() above lets the PP expand the __LINE__ before stringizing it. If # would be used directly, the code would expand to:
<p>
<pre><div class="fragment"><pre>
#pragma message("examples.cpp" "(" "__LINE__" ") : " "TBD!")
</pre></div></pre> </td>
</tr>
</table>
<a name="a1" doxytag="stringize.hpp::BOOST_PREPROCESSOR_STRINGIZE"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_STRINGIZE</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">E&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Obsolete. Use <a class="el" href="stringize_8hpp.html#a0">BOOST_PP_STRINGIZE</a>().
<p>
</td>
</tr>
</table>
<hr>
<p><EFBFBD> Copyright Housemarque Oy 2001</p>
<p>Permission to copy, use, modify, sell and distribute this document is granted

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>sub.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="sub_8hpp.html#a0">BOOST_PREPROCESSOR_SUB</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="sub_8hpp.html#a0">BOOST_PP_SUB</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the difference of X and Y.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="sub_8hpp.html#a1">BOOST_PREPROCESSOR_SUB</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="sub_8hpp.html#a0">BOOST_PP_SUB</a>(X,Y).</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/arithmetic/sub.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="sub.hpp::BOOST_PREPROCESSOR_SUB"></a><p>
<a name="a0" doxytag="sub.hpp::BOOST_PP_SUB"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_SUB</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the difference of X and Y.
<p>
For example, <a class="el" href="sub_8hpp.html#a0">BOOST_PP_SUB</a>(4,3) expands to 1 (a single token). </td>
</tr>
</table>
<a name="a1" doxytag="sub.hpp::BOOST_PREPROCESSOR_SUB"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to the difference of X and Y.
Obsolete. Use <a class="el" href="sub_8hpp.html#a0">BOOST_PP_SUB</a>(X,Y).
<p>
</td>
</tr>

View File

@ -8,14 +8,73 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>tuple.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="tuple_8hpp.html#a0">BOOST_PREPROCESSOR_TUPLE_ELEM</a>(N, I, T)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="tuple_8hpp.html#a0">BOOST_PP_TUPLE_ELEM</a>(N, I, T)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the I:th element of an N-tuple.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="tuple_8hpp.html#a1">BOOST_PREPROCESSOR_TUPLE_ELEM</a>(N, I, T)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="tuple_8hpp.html#a0">BOOST_PP_TUPLE_ELEM</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/tuple.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="tuple.hpp::BOOST_PREPROCESSOR_TUPLE_ELEM"></a><p>
<a name="a0" doxytag="tuple.hpp::BOOST_PP_TUPLE_ELEM"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_TUPLE_ELEM</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">N, <tr>
<td></td>
<td></td>
<td class="md" nowrap>I, <tr>
<td></td>
<td></td>
<td class="md" nowrap>T&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the I:th element of an N-tuple.
<p>
Tuples can be used for representing structured data.
<p>
Examples of tuples:
<p>
<pre><div class="fragment"><pre>
2-tuple: (A, B)
3-tuple: (1, 2, 3)
4-tuple: (A B C, D, EF, 34)
</pre></div></pre>
<p>
Example:
<p>
<pre><div class="fragment"><pre>
BOOST_PP_TUPLE_ELEM(2,1,(A,B))
</pre></div></pre>
<p>
The above expands to:
<p>
<pre><div class="fragment"><pre>
B
</pre></div></pre>
<p>
See also BOOST_PP_LIMIT_TUPLE. </td>
</tr>
</table>
<a name="a1" doxytag="tuple.hpp::BOOST_PREPROCESSOR_TUPLE_ELEM"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -45,27 +104,9 @@
<td>
<p>
Expands to the I:th element of an N-tuple.
Obsolete. Use <a class="el" href="tuple_8hpp.html#a0">BOOST_PP_TUPLE_ELEM</a>().
<p>
Examples of tuples:
<p>
<pre><div class="fragment"><pre>
2-tuple: (A, B)
3-tuple: (1, 2, 3)
4-tuple: (A B C, D, EF, 34)
</pre></div></pre>
<p>
Example:
<p>
<pre><div class="fragment"><pre>
BOOST_PREPROCESSOR_TUPLE_ELEM(2,1,(A,B))
</pre></div></pre>
<p>
The above expands to:
<p>
<pre><div class="fragment"><pre>
B
</pre></div></pre> </td>
</td>
</tr>
</table>
<hr>

View File

@ -8,20 +8,20 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>while.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="while_8hpp.html#a0">BOOST_PREPROCESSOR_WHILE</a>(C, F, X)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>CURRENTLY THIS FEATURE IS FOR INTERNAL USE ONLY!</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="while_8hpp.html#a0">BOOST_PP_WHILE</a>(C, F, X)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Iterates F(D,X) while C(D,X) is true.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/while.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="while.hpp::BOOST_PREPROCESSOR_WHILE"></a><p>
<a name="a0" doxytag="while.hpp::BOOST_PP_WHILE"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_WHILE</td>
<td class="md" nowrap valign="top"> #define BOOST_PP_WHILE</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">C, <tr>
<td></td>
@ -45,10 +45,84 @@
<td>
<p>
CURRENTLY THIS FEATURE IS FOR INTERNAL USE ONLY!
Iterates F(D,X) while C(D,X) is true.
<p>
<h3>Legend</h3>
<p>
<b>X</b> is the current state of iteration. The state is usually a tuple.
<p>
<b>C</b> is the condition for iteration. It must expand to a decimal integer literal.
<p>
<b>F</b> is the iterated function. Note that if the state is a tuple, then F(D,X) usually expands to a tuple of the same number of elements.
<p>
<b>D</b> is the recursion depth and should only be used as a parameter to other functions implemented using <a class="el" href="while_8hpp.html#a0">BOOST_PP_WHILE</a>(). Such functions include <a class="el" href="add_8hpp.html#a0">BOOST_PP_ADD</a>() and other arithmetic operations. For each function implemented using <a class="el" href="while_8hpp.html#a0">BOOST_PP_WHILE</a>(), there is a version of the function, distinguished by the _D suffix (e.g. BOOST_PP_ADD_D()), that accepts an additional recursion depth as the first parameter. This technique is necessary to avoid recursively expanding the same macro again, which is not permitted by the C/C++ preprocessor.
<p>
NOTE: The value of the D parameter may exceed BOOST_PP_LIMIT_MAG.
<p>
<h3>Usage</h3>
<p>
Using <a class="el" href="while_8hpp.html#a0">BOOST_PP_WHILE</a>() is a bit tricky. This is due to the C/C++ preprocessor limitations. It is recommended to take a look at the implementations of the various PREPROCESSOR library primitives such as <a class="el" href="add_8hpp.html#a0">BOOST_PP_ADD</a>() for additional examples.
<p>
Here is a trivial example that simply counts down from N to 0 ultimately expanding to a 0:
<p>
<pre><div class="fragment"><pre>
#define COUNT_DOWN(N) BOOST_PP_WHILE(COUNT_DOWN_C,COUNT_DOWN_F,N)
// Above is the function we are implementing using BOOST_PP_WHILE().
#define COUNT_DOWN_C(D,N) N
// Above is the Condition. It expands to the current N.
#define COUNT_DOWN_F(D,N) BOOST_PP_DEC(N)
// Above is the iteration Function. It decrements N.
COUNT_DOWN(50)
// The above expands to 0.
</pre></div></pre>
<p>
For a more complex example, let's take a look at an implementation of <a class="el" href="mul_8hpp.html#a0">BOOST_PP_MUL</a>().
<p>
<pre><div class="fragment"><pre>
#define BOOST_PP_MUL(X,Y) BOOST_PP_MUL_D(0,X,Y)
// Since the function is implemented using WHILE, the actual implementation
// takes a depth as a parameter so that it can be called inside a WHILE.
// The above easy-to-use version simply uses 0 as the depth and can not be
// called inside a WHILE.
#define BOOST_PP_MUL_D(D,X,Y)\
BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_WHILE##D(BOOST_PP_MUL_C,BOOST_PP_MUL_F,(0,X,Y)))
// ^^^ ^^^ ^^ ^^ ^^^^^^^
// #1 #2 #3 #3 #1
//
// #1) The state is a 3-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 C/C++ preprocessor.
//
// #3) ???_C is the condition and ???_F is the iteration function.
#define BOOST_PP_MUL_C(D,P)\
BOOST_PP_TUPLE_ELEM(3,2,P)
// Iteration is finished when the counter reaches 0.
#define BOOST_PP_MUL_F(D,P)\
( BOOST_PP_ADD_D(D,BOOST_PP_TUPLE_ELEM(3,0,P),BOOST_PP_TUPLE_ELEM(3,1,P))\
, BOOST_PP_TUPLE_ELEM(3,1,P)\
, BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(3,2,P))\
)
// ( The result is increased by the multiplier.
// , The multiplier is retained without change.
// , The counter is decreased.
// )
</pre></div></pre>
<p>
<h3>Implementation</h3>
<p>
RATIONALE:<ul>
<li>The maximum iteration depth is 2*BOOST_PREPROCESSOR_LIMIT_MAG+1 to make it theoretically possible to compute BOOST_PREPROCESSOR_LIMIT_MAG^2. </ul>
<li>The maximum iteration depth is greater than 2*BOOST_PP_LIMIT_MAG to make it possible to compute N*N functions. </ul>
</td>
</tr>
</table>

View File

@ -8,14 +8,48 @@
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>xor.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="xor_8hpp.html#a0">BOOST_PREPROCESSOR_XOR</a>(X, Y)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="xor_8hpp.html#a0">BOOST_PP_XOR</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Expands to the logical EXCLUSIVE OR of the operands.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="xor_8hpp.html#a1">BOOST_PREPROCESSOR_XOR</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete. Use <a class="el" href="xor_8hpp.html#a0">BOOST_PP_XOR</a>().</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a href="../../../../boost/preprocessor/logical/xor.hpp">Click here to see the header.</a>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="xor.hpp::BOOST_PREPROCESSOR_XOR"></a><p>
<a name="a0" doxytag="xor.hpp::BOOST_PP_XOR"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define BOOST_PP_XOR</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Expands to the logical EXCLUSIVE OR of the operands.
<p>
For example, <a class="el" href="xor_8hpp.html#a0">BOOST_PP_XOR</a>(1,2) expands to 0 (a single token). </td>
</tr>
</table>
<a name="a1" doxytag="xor.hpp::BOOST_PREPROCESSOR_XOR"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@ -42,7 +76,7 @@
<td>
<p>
Expands to the logical EXCLUSIVE OR of the operands.
Obsolete. Use <a class="el" href="xor_8hpp.html#a0">BOOST_PP_XOR</a>().
<p>
</td>
</tr>

View File

@ -15,15 +15,15 @@
<li><a href="#Techniques">Preprocessor Metaprogramming Techniques</a>
<ul>
<li><a href="#Local Macro">Use a Local Macro to avoid small scale repetition</a></li>
<li><a href="#UNUSED">Use BOOST_PREPROCESSOR_EMPTY() as an unused parameter in Local Macro
<li><a href="#UNUSED">Use BOOST_PP_EMPTY() as an unused parameter in Local Macro
instantiations</a></li>
<li><a href="#CAT">Use BOOST_PREPROCESSOR_CAT instead of ## when necessary</a></li>
<li><a href="#STRINGIZE">Use BOOST_PREPROCESSOR_STRINGIZE instead of # whenever necessary</a></li>
<li><a href="#CAT">Use BOOST_PP_CAT instead of ## when necessary</a></li>
<li><a href="#STRINGIZE">Use BOOST_PP_STRINGIZE instead of # whenever necessary</a></li>
<li><a href="#ENUM_PARAMS">Avoid O(N) repetition on lists in general</a></li>
<li><a href="#Conditional Define">Use a Conditional Define to enable user configuration of code repetition</a></li>
<li><a href="#Token Look-Up">Use Token Look-Up Function to eliminate categorical repetition</a></li>
<li><a href="#2ND_REPEAT">Use BOOST_PREPROCESSOR_REPEAT_2ND to avoid O(N*N) repetition</a></li>
<li><a href="#IF">Use BOOST_PREPROCESSOR_IF to implement special case for the first element</a>
<li><a href="#2ND_REPEAT">Use BOOST_PP_REPEAT_2ND to avoid O(N*N) repetition</a></li>
<li><a href="#IF">Use BOOST_PP_IF to implement special case for the first element</a>
<li><a href="#Arithmetic">Use arithmetic, logical and comparison operations when necessary</a>
</li>
</ul>
@ -99,10 +99,10 @@ yes_type is_function_tester(R (*)(A0, A1, A2));
<blockquote>
<pre>#define IS_FUNCTION_TESTER(N,_)\
template&lt;class R BOOST_PREPROCESSOR_COMMA_IF(N) BOOST_PREPROCESSOR_ENUM_PARAMS(N, class A)&gt;\
yes_type is_function_tester(R (*)(BOOST_PREPROCESSOR_ENUM_PARAMS(N,A)));
template&lt;class R BOOST_PP_COMMA_IF(N) BOOST_PP_ENUM_PARAMS(N, class A)&gt;\
yes_type is_function_tester(R (*)(BOOST_PP_ENUM_PARAMS(N,A)));
BOOST_PREPROCESSOR_REPEAT_2ND(BOOST_PREPROCESSOR_INC(MAX_IS_FUNCTION_TESTER_PARAMS),IS_FUNCTION_TESTER,_)
BOOST_PP_REPEAT_2ND(BOOST_PP_INC(MAX_IS_FUNCTION_TESTER_PARAMS),IS_FUNCTION_TESTER,_)
#undef IS_FUNCTION_TESTER
</pre>
</blockquote>
@ -118,29 +118,29 @@ BOOST_PREPROCESSOR_REPEAT_2ND(BOOST_PREPROCESSOR_INC(MAX_IS_FUNCTION_TESTER_PARA
Use a Local Macro to avoid small scale repetition</P>
<blockquote>
<pre>#define BOOST_PREPROCESSOR_DEF(OP)\
template&lt;class T, int n&gt; \
vec&lt;T,n&gt;&amp; \
operator OP##= \
( vec&lt;T,n&gt;&amp; \
lhs \
, const vec&lt;T,n&gt;&amp; \
rhs \
) \
{ for (int i=0; i&lt;n; ++i) \
lhs(i) OP##= rhs(i); \
return lhs; \
<pre>#define BOOST_PP_DEF(OP) \
template&lt;class T, int n&gt; \
vec&lt;T,n&gt;&amp; \
operator OP##= \
( vec&lt;T,n&gt;&amp; \
lhs \
, const vec&lt;T,n&gt;&amp; \
rhs \
) \
{ for (int i=0; i&lt;n; ++i)\
lhs(i) OP##= rhs(i); \
return lhs; \
}
BOOST_PREPROCESSOR_DEF(+)
BOOST_PREPROCESSOR_DEF(-)
BOOST_PREPROCESSOR_DEF(*)
BOOST_PREPROCESSOR_DEF(/)
#undef BOOST_PREPROCESSOR_DEF
BOOST_PP_DEF(+)
BOOST_PP_DEF(-)
BOOST_PP_DEF(*)
BOOST_PP_DEF(/)
#undef BOOST_PP_DEF
</pre>
</blockquote>
<P><B>TIP:</B> It is usually okay to use a standard macro name like BOOST_PREPROCESSOR_DEF
<P><B>TIP:</B> It is usually okay to use a standard macro name like BOOST_PP_DEF
for this kind of code, because the macro is both defined and undefined in the
immediate site of its use.</P>
<P><B>TIP:</B> It is easier to verify proper use of
@ -154,55 +154,55 @@ the line continuation operator when they are aligned.</P>
metaprogramming.</P>
<HR>
<P><B><a name="UNUSED"></a><a href="examples_preprocessed.htm#UNUSED">EXAMPLE</a>:</B>
Use BOOST_PREPROCESSOR_EMPTY() as an unused parameter in Local Macro instantiations</P>
Use BOOST_PP_EMPTY() as an unused parameter in Local Macro instantiations</P>
<blockquote>
<pre>#define BOOST_PREPROCESSOR_DEF(CV)\
template&lt;class base&gt; \
<pre>#define BOOST_PP_DEF(CV) \
template&lt;class base&gt; \
CV typename implement_subscript_using_begin_subscript&lt;base&gt;::value_type&amp;\
implement_subscript_using_begin_subscript&lt;base&gt;::operator[]\
( index_type \
i \
) CV \
{ return base::begin()[i]; \
( index_type \
i \
) CV \
{ return base::begin()[i];\
}
BOOST_PREPROCESSOR_DEF(BOOST_PREPROCESSOR_EMPTY())
BOOST_PREPROCESSOR_DEF(const)
#undef BOOST_PREPROCESSOR_DEF
BOOST_PP_DEF(BOOST_PP_EMPTY())
BOOST_PP_DEF(const)
#undef BOOST_PP_DEF
</pre>
</blockquote>
<P><B>HOW:</B> BOOST_PREPROCESSOR_EMPTY() expands to nothing and can be used as
<P><B>HOW:</B> BOOST_PP_EMPTY() expands to nothing and can be used as
an unused parameter.</P>
<P><b>NOTE:</b> BOOST_PREPROCESSOR_EMPTY without the () never gets expanded. The
<P><b>NOTE:</b> BOOST_PP_EMPTY without the () never gets expanded. The
() is necessary to invoke a function-like macro.</P>
<B>CAVEAT:</B> You can not safely use concatenation while using BOOST_PREPROCESSOR_EMPTY().
<B>CAVEAT:</B> You can not safely use concatenation while using BOOST_PP_EMPTY().
<P><B>TIP:</B> Occasionally one or two lines are
considerably longer than the rest. It can often save some work to not align all
of the line continuation operators without making the code too unreadable.</P>
<P><B>TIP:</B> Use syntax highlighting on preprocessor metaprogramming macro and
parameter identifiers such as</P>
<ul>
<li> BOOST_PREPROCESSOR_DEF,</li>
<li>BOOST_PREPROCESSOR_EMPTY,</li>
<li> BOOST_PREPROCESSOR_REPEAT,</li>
<li> BOOST_PP_DEF,</li>
<li>BOOST_PP_EMPTY,</li>
<li> BOOST_PP_REPEAT,</li>
<li> OP,</li>
<li> CV,</li>
<li> ...</li>
</ul>
<p>It can greatly improve readability.</p>
<HR>
<P><a name="CAT"></a><a href="examples_preprocessed.htm#CAT"><B>EXAMPLE:</B></a> Use BOOST_PREPROCESSOR_CAT instead of ## when necessary</P>
<P><a name="CAT"></a><a href="examples_preprocessed.htm#CAT"><B>EXAMPLE:</B></a> Use BOOST_PP_CAT instead of ## when necessary</P>
<blockquote>
<pre>#define STATIC_ASSERT(EXPR)\
enum\
{ BOOST_PREPROCESSOR_CAT(static_check_,__LINE__) = (EXPR) ? 1 : -1\
{ BOOST_PP_CAT(static_check_,__LINE__) = (EXPR) ? 1 : -1\
};\
typedef char\
BOOST_PREPROCESSOR_CAT(static_assert_,__LINE__)\
[ BOOST_PREPROCESSOR_CAT(static_check_,__LINE__)\
BOOST_PP_CAT(static_assert_,__LINE__)\
[ BOOST_PP_CAT(static_check_,__LINE__)\
]
// ...
@ -215,10 +215,10 @@ STATIC_ASSERT(sizeof(int) &lt;= sizeof(long));
prevents the&nbsp;preprocessor from performing macro expansion, therefore it
is often necessary to delay token concatenation.</P>
<hr>
<p><a name="STRINGIZE"></a><a href="examples_preprocessed.htm#STRINGIZE"><B>EXAMPLE:</B></a> Use BOOST_PREPROCESSOR_STRINGIZE instead of # whenever necessary</p>
<p><a name="STRINGIZE"></a><a href="examples_preprocessed.htm#STRINGIZE"><B>EXAMPLE:</B></a> Use BOOST_PP_STRINGIZE instead of # whenever necessary</p>
<blockquote>
<pre>#define NOTE(STR)\
message(__FILE__ &quot;(&quot; BOOST_PREPROCESSOR_STRINGIZE(__LINE__) &quot;) : &quot; STR)
message(__FILE__ &quot;(&quot; BOOST_PP_STRINGIZE(__LINE__) &quot;) : &quot; STR)
// ...
@ -232,19 +232,19 @@ STATIC_ASSERT(sizeof(int) &lt;= sizeof(long));
<P><B><a name="ENUM_PARAMS"></a><a href="examples_preprocessed.htm#ENUM_PARAMS">EXAMPLE</a>:</B>
Use:</P>
<ul>
<li> BOOST_PREPROCESSOR_ENUM_PARAMS,</li>
<li> BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT,</li>
<li> BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS,</li>
<li> BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS, or</li>
<li>BOOST_PREPROCESSOR_REPEAT, and</li>
<li> BOOST_PREPROCESSOR_COMMA_IF</li>
<li> BOOST_PP_ENUM_PARAMS,</li>
<li> BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT,</li>
<li> BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS,</li>
<li> BOOST_PP_ENUM_SHIFTED_PARAMS, or</li>
<li>BOOST_PP_REPEAT, and</li>
<li> BOOST_PP_COMMA_IF</li>
</ul>
<p>to avoid O(N) repetition on lists in general</p>
<blockquote>
<pre>struct make_type_list_end;
template
&lt; BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT
&lt; BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT
( MAKE_TYPE_LIST_MAX_LENGTH
, class T
, make_type_list_end
@ -269,7 +269,7 @@ public:
&lt; end
, type_identity&lt;end&gt;
, make_type_list
&lt; BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS
&lt; BOOST_PP_ENUM_SHIFTED_PARAMS
( MAKE_TYPE_LIST_MAX_LENGTH
, T
)
@ -281,24 +281,24 @@ public:
</pre>
</blockquote>
<P><B>HOW:</B> BOOST_PREPROCESSOR_REPEAT uses simulated recursion (pseudo code):</P>
<P><B>HOW:</B> BOOST_PP_REPEAT uses simulated recursion (pseudo code):</P>
<blockquote>
<pre>#define BOOST_PREPROCESSOR_REPEAT(N,M,P) BOOST_PREPROCESSOR_REPEAT##N(M,P)
#define BOOST_PREPROCESSOR_REPEAT0(M,P)
#define BOOST_PREPROCESSOR_REPEAT1(M,P) M(0,P)
#define BOOST_PREPROCESSOR_REPEAT2(M,P) M(0,P) M(1,P)
#define BOOST_PREPROCESSOR_REPEAT3(M,P) BOOST_PREPROCESSOR_REPEAT2(M,P) M(2,P)
#define BOOST_PREPROCESSOR_REPEAT4(M,P) BOOST_PREPROCESSOR_REPEAT3(M,P) M(3,P)
<pre>#define BOOST_PP_REPEAT(N,M,P) BOOST_PP_REPEAT##N(M,P)
#define BOOST_PP_REPEAT0(M,P)
#define BOOST_PP_REPEAT1(M,P) M(0,P)
#define BOOST_PP_REPEAT2(M,P) M(0,P) M(1,P)
#define BOOST_PP_REPEAT3(M,P) BOOST_PP_REPEAT2(M,P) M(2,P)
#define BOOST_PP_REPEAT4(M,P) BOOST_PP_REPEAT3(M,P) M(3,P)
// ...
</pre>
</blockquote>
<P>BOOST_PREPROCESSOR_ENUM_PARAMS variations use BOOST_PREPROCESSOR_REPEAT</P>
<P>BOOST_PP_ENUM_PARAMS variations use BOOST_PP_REPEAT</P>
<P>BOOST_PREPROCESSOR_COMMA_IF(I) expands to a comma if I != 0.</P>
<P>BOOST_PP_COMMA_IF(I) expands to a comma if I != 0.</P>
<P>BOOST_PREPROCESSOR_INC(I) expands essentially to "I+1" and BOOST_PREPROCESSOR_DEC(I)
<P>BOOST_PP_INC(I) expands essentially to "I+1" and BOOST_PP_DEC(I)
expands essentially to "I-1".</P>
<HR>
@ -318,7 +318,7 @@ enable user configuration of code repetition based on need rather than some
code.</P>
<HR>
<P><B><a name="Token Look-Up"></a><a href="examples_preprocessed.htm#Token Look-Up">EXAMPLE</a>:</B>
Use BOOST_PREPROCESSOR_REPEAT and a Token Look-Up Function to eliminate categorical
Use BOOST_PP_REPEAT and a Token Look-Up Function to eliminate categorical
repetition</P>
<blockquote>
@ -341,17 +341,17 @@ enable user configuration of code repetition based on need rather than some
// ...
#define BOOST_PREPROCESSOR_DEF(I,_)\
#define BOOST_PP_DEF(I,_)\
catch (ARITHMETIC_TYPE(I) t)\
{ report_typeid(t);\
report_value(t);\
}
BOOST_PREPROCESSOR_REPEAT
BOOST_PP_REPEAT
( ARITHMETIC_TYPE_CNT
, BOOST_PREPROCESSOR_DEF
, BOOST_PP_DEF
, _
)
#undef BOOST_PREPROCESSOR_DEF
#undef BOOST_PP_DEF
// ...
</pre>
@ -363,7 +363,7 @@ categorical repetition of operator tokens can not be completely eliminated by
using template metaprogramming.</P>
<HR>
<P><B><a name="2ND_REPEAT"></a><a href="examples_preprocessed.htm#2ND_REPEAT">EXAMPLE</a>:</B>
Use BOOST_PREPROCESSOR_REPEAT_2ND to avoid O(N*N) repetition</P>
Use BOOST_PP_REPEAT_2ND to avoid O(N*N) repetition</P>
<blockquote>
<pre>#ifndef MAX_VEC_ARG_CNT
@ -372,16 +372,16 @@ using template metaprogramming.</P>
// ...
#define ARG_FUN(I,_) BOOST_PREPROCESSOR_COMMA_IF(I) T a##I
#define ARG_FUN(I,_) BOOST_PP_COMMA_IF(I) T a##I
#define ASSIGN_FUN(I,_) (*this)[I] = a##I;
#define DEF_VEC_CTOR_FUN(I,_)\
vec( BOOST_PREPROCESSOR_REPEAT(I,ARG_FUN,_) )\
{ BOOST_PREPROCESSOR_REPEAT(I,ASSIGN_FUN,_)\
vec( BOOST_PP_REPEAT(I,ARG_FUN,_) )\
{ BOOST_PP_REPEAT(I,ASSIGN_FUN,_)\
}
BOOST_PREPROCESSOR_REPEAT_2ND
( BOOST_PREPROCESSOR_INC(MAX_VEC_ARG_CNT)
BOOST_PP_REPEAT_2ND
( BOOST_PP_INC(MAX_VEC_ARG_CNT)
, DEF_VEC_CTOR_FUN
, _
)
@ -395,46 +395,47 @@ BOOST_PREPROCESSOR_REPEAT_2ND
</blockquote>
<P><B>HOW:</B> BOOST_PREPROCESSOR_REPEAT_2ND is implemented separately, so it
is possible to combine BOOST_PREPROCESSOR_REPEAT and BOOST_PREPROCESSOR_REPEAT_2ND.</P>
<P><B>HOW:</B> BOOST_PP_REPEAT_2ND is implemented separately, so it
is possible to combine BOOST_PP_REPEAT and BOOST_PP_REPEAT_2ND.</P>
<HR>
<P><a name="IF"></a><a href="examples_preprocessed.htm#IF"><B>EXAMPLE:</B></a> Use BOOST_PREPROCESSOR_IF to implement special case for the first element</P>
<P><a name="IF"></a><a href="examples_preprocessed.htm#IF"><B>EXAMPLE:</B></a> Use BOOST_PP_IF to implement special case for the first element</P>
<blockquote>
<pre>#define BOOST_PREPROCESSOR_COMMA_IF(C)\
BOOST_PREPROCESSOR_IF(C,BOOST_PREPROCESSOR_COMMA,BOOST_PREPROCESSOR_EMPTY)()
<pre>#define BOOST_PP_COMMA_IF(C)\
BOOST_PP_IF(C,BOOST_PP_COMMA,BOOST_PP_EMPTY)()
BOOST_PREPROCESSOR_IF(0,true,false) == false;
BOOST_PREPROCESSOR_IF(1,true,false) == true;
BOOST_PP_IF(0,true,false) == false;
BOOST_PP_IF(1,true,false) == true;
</pre>
</blockquote>
<P>BOOST_PREPROCESSOR_IF enables convenient generation of lists using BOOST_PREPROCESSOR_REPEAT.</P>
<P>BOOST_PP_IF enables convenient generation of lists using BOOST_PP_REPEAT.</P>
<P><B>NOTE:</B> THEN and ELSE don't have to be macros. However, if at least one
of them is a function-like macro and you want it to be expanded conditionally,
you have to make the other parameter a function-like macro, too. This can often
be done using BOOST_PREPROCESSOR_IDENTITY. Consider the following example (by
be done using BOOST_PP_IDENTITY. Consider the following example (by
Aleksey Gurtovoy):</P>
<blockquote>
<pre>#define NUMBERED_EXPRESSION(I,X) \
BOOST_PREPROCESSOR_IF \
( I \
, BOOST_PREPROCESSOR_IDENTITY(X##I)\
, BOOST_PREPROCESSOR_EMPTY \
)()</pre></blockquote>
<pre>#define NUMBERED_EXPRESSION(I,X)\
BOOST_PP_IF \
( I \
, BOOST_PP_IDENTITY(X##I) \
, BOOST_PP_EMPTY \
)()</pre>
</blockquote>
<P><b>NOTE:</b> Like in the above implementation of COMMA_IF, the result of IF
is often invoked and not the THEN and ELSE parameters. If the parameters were
invoked, the code would not expand correctly, because the EMPTY parameter would
get expanded to nothing before the IF would be properly expanded.</P>
<P><b>HOW:</b> BOOST_PREPROCESSOR_IF is defined for the entire repeat range (pseudo
<P><b>HOW:</b> BOOST_PP_IF is defined for the entire repeat range (pseudo
code):</P>
<blockquote>
<pre>#define BOOST_PREPROCESSOR_IF(C,THEN,ELSE) BOOST_PREPROCESSOR_IF##C(THEN,ELSE)
#define BOOST_PREPROCESSOR_IF0(THEN,ELSE) ELSE
#define BOOST_PREPROCESSOR_IF1(THEN,ELSE) THEN
#define BOOST_PREPROCESSOR_IF2(THEN,ELSE) THEN
<pre>#define BOOST_PP_IF(C,THEN,ELSE) BOOST_PP_IF##C(THEN,ELSE)
#define BOOST_PP_IF0(THEN,ELSE) ELSE
#define BOOST_PP_IF1(THEN,ELSE) THEN
#define BOOST_PP_IF2(THEN,ELSE) THEN
// ...
</pre>
</blockquote>
@ -444,25 +445,25 @@ BOOST_PREPROCESSOR_IF(1,true,false) == true;
<p><a name="Arithmetic"></a><a href="examples_preprocessed.htm#Arithmetic"><B>EXAMPLE:</B></a> Use arithmetic, logical and comparison operations when necessary</p>
<P>The PREPROCESSOR library supports saturated arithmetic, logical and
comparison operations on decimal integer literals in the range [0,BOOST_PREPROCESSOR_LIMIT_MAG].</p>
comparison operations on decimal integer literals in the range [0,BOOST_PP_LIMIT_MAG].</p>
<p>Suppose that you want to generate a numbered lists with a special element inserted
at a desired position. For example: E0, E1, S, E2. Consider the following example:</p>
<blockquote>
<pre>#define SPECIAL_NUMBERED_LIST(N,I,ELEM,SPECIAL)\
BOOST_PREPROCESSOR_ASSERT_MSG(BOOST_PREPROCESSOR_LESS(I,N),BAD PARAMS FOR SPECIAL_NUMBERED_LIST!)\
BOOST_PREPROCESSOR_ENUM_PARAMS(I,ELEM)\
BOOST_PREPROCESSOR_COMMA_IF(I) SPECIAL\
BOOST_PREPROCESSOR_REPEAT(BOOST_PREPROCESSOR_SUB(\
BOOST_PREPROCESSOR_DEC(N),I),SPECIAL_NUMBERED_LIST_HELPER,(ELEM,I))
BOOST_PP_ASSERT_MSG(BOOST_PP_LESS(I,N),BAD PARAMS FOR SPECIAL_NUMBERED_LIST!)\
BOOST_PP_ENUM_PARAMS(I,ELEM)\
BOOST_PP_COMMA_IF(I) SPECIAL\
BOOST_PP_REPEAT(BOOST_PP_SUB(\
BOOST_PP_DEC(N),I),SPECIAL_NUMBERED_LIST_HELPER,(ELEM,I))
#define SPECIAL_NUMBERED_LIST_HELPER(I,ELEM_BASE)\
,\
BOOST_PREPROCESSOR_CAT\
( BOOST_PREPROCESSOR_TUPLE_ELEM(2,0,ELEM_BASE)\
, BOOST_PREPROCESSOR_ADD\
BOOST_PP_CAT\
( BOOST_PP_TUPLE_ELEM(2,0,ELEM_BASE)\
, BOOST_PP_ADD\
( I\
, BOOST_PREPROCESSOR_TUPLE_ELEM(2,1,ELEM_BASE)\
, BOOST_PP_TUPLE_ELEM(2,1,ELEM_BASE)\
)\
)