Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r71253 - in branches/pplib/variadics/libs/preprocessor/doc: ref topics
From: eldiener_at_[hidden]
Date: 2011-04-14 12:36:02


Author: eldiener
Date: 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
New Revision: 71253
URL: http://svn.boost.org/trac/boost/changeset/71253

Log:
Doc updates.
Added:
   branches/pplib/variadics/libs/preprocessor/doc/ref/array_enum.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/array_to_list.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/array_to_seq.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/array_to_tuple.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/limit_variadic.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/list_to_array.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/list_to_seq.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/overload.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/seq_to_list.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_enum.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_size.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_to_array.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_elem.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_size.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_to_array.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_to_list.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_to_seq.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_to_tuple.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/ref/variadics.html (contents, props changed)
   branches/pplib/variadics/libs/preprocessor/doc/topics/variadic_macros.html (contents, props changed)
Text files modified:
   branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_eat.html | 45 ++++++++--------
   branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_elem.html | 33 ++++++------
   branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_rem.html | 34 ++++++++-----
   branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_rem_ctor.html | 32 +++++++-----
   branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_reverse.html | 32 +++++++-----
   branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_to_list.html | 30 ++++++-----
   branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_to_seq.html | 103 ++++++++++++++++++---------------------
   7 files changed, 164 insertions(+), 145 deletions(-)

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/array_enum.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/array_enum.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_ENUM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_ENUM</b> macro converts an <i>array</i> to its comma-separated elements. The comma-separated elements are in the form of <i>variadic data</i>.<br>
+ </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_ARRAY_ENUM</b>(<i>array</i>) </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>array</dt>
+ <dd> The <i>array</i> whose elements are to be converted. </dd>
+</dl>
+<h4> Remarks </h4>
+<div> This macro expands to a comma-separated list of the elements in <i>array</i>.&nbsp;
+For example, <b>BOOST_PP_ARRAY_ENUM</b>((3,(<i>x,</i><i>y,</i><i>z</i>)))
+expands to...
+<div> <i>x</i>, <i>y</i>, <i>z</i> </div>
+</div>
+<h4> Requirements </h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/array/enum.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include &lt;boost/preprocessor/array/enum.hpp&gt;<br><br>#define ARRAY (5,(B,O,O,S,T))<br><br>BOOST_PP_ARRAY_ENUM(ARRAY) // expands to B, O, O, S, T<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/array_to_list.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/array_to_list.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_TO_LIST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_LIST</b>
+macro converts an <i>array</i> to a <i>list</i>. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_ARRAY_TO_LIST</b>(<i>array</i>)
+</div>
+<h4>Arguments</h4>
+<dl><dt>array</dt>
+ <dd> The <i>array</i> to be converted. </dd>
+</dl>
+ <ul>
+</ul>
+<h4>Requirements</h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/array/to_list.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include &lt;boost/preprocessor/array/to_list.hpp&gt;<br><br>BOOST_PP_ARRAY_TO_LIST((3, (x, y, z)))<br> // expands to (x, (y, (z, BOOST_PP_NIL)))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/array_to_seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/array_to_seq.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_TO_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_SEQ</b> macro
+converts an <i>array</i> to a <i>seq</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_ARRAY_TO_SEQ</b>(<i>array</i>)
+</div>
+<h4> Arguments </h4>
+<dl><dt>array</dt>
+ <dd> The <i>array</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/array/to_seq.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include &lt;boost/preprocessor/array/to_seq.hpp&gt;<br><br>BOOST_PP_ARRAY_TO_SEQ((3, (a, b, c))) // expands to (a)(b)(c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/array_to_tuple.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/array_to_tuple.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_TO_TUPLE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_TUPLE</b> macro
+converts an <i>array</i> to an <i>tuple</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_ARRAY_TO_TUPLE</b>(<i>array</i>) </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>array</dt>
+ <dd> The <i>array</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/array/to_tuple.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include &lt;boost/preprocessor/array/to_tuple.hpp&gt;<br><br>#define ARRAY (3,(a, b, c))<br><br>BOOST_PP_ARRAY_TO_TUPLE(ARRAY) // expands to (a, b, c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/limit_variadic.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/limit_variadic.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_VARIADIC</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_WHILE</b> macro
+defines the maximum number of <b>BOOST_PP_WHILE</b> iterations. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_LIMIT_WHILE</b> </div>
+<h4>Remarks</h4>
+<div> This macro currently expands to <i>256</i>. </div>
+<h4>Requirements</h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/config/limits.hpp>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright Housemarque Oy 2002</i>
+<br>
+<i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/list_to_array.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/list_to_array.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_LIST_TO_ARRAY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css"></head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_ARRAY</b> macro
+converts a <i>list</i> to an <i>array</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_LIST_TO_ARRAY</b>(<i>list</i>) </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>list</dt>
+ <dd> The <i>list</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/list/to_array.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include &lt;boost/preprocessor/list/to_array.hpp&gt;<br><br>#define LIST (a, (b, (c, BOOST_PP_NIL)))<br><br>BOOST_PP_LIST_TO_ARRAY(LIST) // expands to (3, (a, b, c))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/list_to_seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/list_to_seq.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_LIST_TO_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_SEQ</b> macro
+converts a <i>list</i> to a <i>seq</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_LIST_TO_SEQ</b>(<i>list</i>)
+</div>
+<h4> Arguments </h4>
+<dl><dt>list</dt>
+ <dd> The <i>list</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/list/to_seq.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include &lt;boost/preprocessor/list/to_seq.hpp&gt;<br><br>BOOST_PP_LIST_TO_SEQ((a, (b, (c, BOOST_PP_NIL)))) // expands to (a)(b)(c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/overload.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/overload.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_OVERLOAD</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_EMPTY</b> macro is a
+nullary utility macro that expands to nothing. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_EMPTY</b>() </div>
+<h4>Remarks</h4>
+<div> This macro is helps avoid inefficient macro-expansion.&nbsp; It
+is primarily useful as arguments to <b>BOOST_PP_IF</b> or <b>BOOST_PP_IIF</b>.
+</div>
+<h4>Requirements</h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/facilities/empty.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include &lt;boost/preprocessor/control/if.hpp&gt;<br>#include &lt;boost/preprocessor/facilities/empty.hpp&gt;<br><br>#define X() result<br>#define MACRO(c) BOOST_PP_IF(c, X, BOOST_PP_EMPTY)()<br><br>MACRO(0) // expands to nothing<br>MACRO(1) // expands to result<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright Housemarque Oy 2002</i>
+<br>
+<i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/seq_to_list.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/seq_to_list.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_SEQ_TO_LIST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_SEQ_TO_LIST</b>
+macro converts a <i>seq</i> to a <i>list</i>. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_SEQ_TO_LIST</b>(<i>seq</i>)
+</div>
+<h4>Arguments</h4>
+<dl><dt>seq</dt>
+ <dd> The <i>seq</i> to be converted. </dd>
+</dl><b>See Also</b>
+<ul>
+ <li>BOOST_PP_LIMIT_SEQ</li>
+</ul>
+<h4>Requirements</h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/seq/to_list.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include &lt;boost/preprocessor/seq/to_list.hpp&gt;<br><br>BOOST_PP_SEQ_TO_LIST((x)(y)(z))<br> // expands to (x, (y, (z, BOOST_PP_NIL)))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Modified: branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_eat.html
==============================================================================
--- branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_eat.html (original)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_eat.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -1,28 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
- <title>BOOST_PP_TUPLE_EAT</title>
+ <title>BOOST_PP_TUPLE_EAT</title>
         <link rel="stylesheet" type="text/css" href="../styles.css">
 </head>
 <body>
- <div style="margin-left: 0px;">
- The <b>BOOST_PP_TUPLE_EAT</b> macro expands to a macro that eats a <i>tuple</i> of the specified size.
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_EAT</b> macro expands to a macro that eats a <i>tuple</i>.
         </div>
         <h4>Usage</h4>
                 <div class="code">
- <b>BOOST_PP_TUPLE_EAT</b>(<i>size</i>)
- </div>
+ <b>BOOST_PP_TUPLE_EAT</b>(<i>size</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_EAT</b>(<i>size</i>) <sup>(v)</sup><b></b><br>
+</div>
         <h4>Arguments</h4>
                 <dl>
                         <dt>size</dt>
                         <dd>
                                 The size of the <i>tuple</i> to be eaten.&nbsp;
- Valid <i>tuple</i> sizes range from <i>0</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.&nbsp;
+ Valid <i>tuple</i> sizes range from <i>0</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
                         </dd>
                 </dl>
         <h4>Remarks</h4>
                 <div>
- The <i>size</i> argument must be the actual size of the <i>tuple</i>.
- </div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i> in the non-variadic version. <br>
+<br>For the variadic version <sup>(v)</sup>&nbsp;the
+size may be left out
+completely so that the macro can be invoked as BOOST_PP_TUPLE_EAT(); you may get a warning from some compilers, but the
+functionality will still work. If you specify a size in the variadic
+version, it will be ignored, but the warning from some compilers will
+not occur.<br>
+ </div>
         <h4>See Also</h4>
                 <ul>
                         <li>BOOST_PP_LIMIT_TUPLE</li>
@@ -32,27 +43,17 @@
                         <b>Header:</b> &nbsp;<boost/preprocessor/tuple/eat.hpp>
                 </div>
         <h4>Sample Code</h4>
-<div><pre>
-#include &lt;boost/preprocessor/control/if.hpp&gt;
-#include &lt;boost/preprocessor/tuple/eat.hpp&gt;
-
-#define OP(a, b) (a b)
-
-#define MACRO(n) BOOST_PP_IF(n, OP, BOOST_PP_TUPLE_EAT(2))(1, 2)
-
-MACRO(0) // expands to nothing
-MACRO(1) // expands to (1, 2)
-</pre></div>
+<div><pre>#include &lt;boost/preprocessor/control/if.hpp&gt;<br>#include &lt;boost/preprocessor/tuple/eat.hpp&gt;<br><br>#define OP(a, b) (a b)<br><br>#define MACRO(n) BOOST_PP_IF(n, OP, BOOST_PP_TUPLE_EAT(2))(1, 2)<br><br>// or for the variadic version <sup>(v)</sup><br><br>#define MACRO(n) BOOST_PP_IF(n, OP, BOOST_PP_TUPLE_EAT())(1, 2)<br><br>MACRO(0) // expands to nothing<br>MACRO(1) // expands to (1, 2)<br></pre></div>
         <hr size="1">
         <div style="margin-left: 0px;">
                 <i>© Copyright Housemarque Oy 2002</i>
- </br><i>© Copyright Paul Mensonides 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
         </div>
         <div style="margin-left: 0px;">
                 <p><small>Distributed under the Boost Software License, Version 1.0. (See
                 accompanying file LICENSE_1_0.txt or
- copy at <a href=
- "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
         </div>
 </body>
 </html>

Modified: branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_elem.html
==============================================================================
--- branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_elem.html (original)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_elem.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -1,16 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
- <title>BOOST_PP_TUPLE_ELEM</title>
+ <title>BOOST_PP_TUPLE_ELEM</title>
         <link rel="stylesheet" type="text/css" href="../styles.css">
 </head>
 <body>
- <div style="margin-left: 0px;">
+ <div style="margin-left: 0px;">
                 The <b>BOOST_PP_TUPLE_ELEM</b> macro extracts an element from a <i>tuple</i>.
         </div>
         <h4>Usage</h4>
                 <div class="code">
- <b>BOOST_PP_TUPLE_ELEM</b>(<i>size</i>, <i>i</i>, <i>tuple</i>)
- </div>
+ <b>BOOST_PP_TUPLE_ELEM</b>(<i>size</i>, <i>i</i>, <i>tuple</i>)<sup></sup><br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_ELEM</b>(<i>...</i>) <sup>(v)</sup><b></b><br>
+</div>
         <h4>Arguments</h4>
                 <dl>
                         <dt>size</dt>
@@ -31,7 +36,10 @@
         <h4>Remarks</h4>
                 <div>
                         The <i>size</i> argument must be the actual size of the <i>tuple</i>,
- and <i>i</i> must be less than the size of the <i>tuple</i>.
+ and <i>i</i> must be less than the size of the <i>tuple</i>. <br>
+ <br>You can
+ invoke the variadic version as BOOST_PP_TUPLE_ELEM(<i>i</i>,<i>tuple</i>) or
+ BOOST_PP_TUPLE_ELEM(<i>size</i>,<i>i</i>,<i>tuple</i>).
                 </div>
         <h4>See Also</h4>
                 <ul>
@@ -42,24 +50,17 @@
                         <b>Header:</b> &nbsp;<boost/preprocessor/tuple/elem.hpp>
                 </div>
         <h4>Sample Code</h4>
-<div><pre>
-#include &lt;boost/preprocessor/tuple/elem.hpp&gt;
-
-#define TUPLE (a, b, c, d)
-
-BOOST_PP_TUPLE_ELEM(4, 0, TUPLE) // expands to a
-BOOST_PP_TUPLE_ELEM(4, 3, TUPLE) // expands to d
-</pre></div>
+<div><pre>#include &lt;boost/preprocessor/tuple/elem.hpp&gt;<br><br>#define TUPLE (a, b, c, d)<br><br>BOOST_PP_TUPLE_ELEM(4, 0, TUPLE) // expands to a<br>BOOST_PP_TUPLE_ELEM(4, 3, TUPLE) // expands to d<br><br>// or for the variadic version <sup>(v)</sup><br><br>BOOST_PP_TUPLE_ELEM(0, TUPLE) // expands to a in the variadic version<br>BOOST_PP_TUPLE_ELEM(3, TUPLE) // expands to d in the variadic version<br></pre></div>
         <hr size="1">
         <div style="margin-left: 0px;">
                 <i>© Copyright Housemarque Oy 2002</i>
- </br><i>© Copyright Paul Mensonides 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+ </i><i>© Copyright Edward Diener 2011</i><br>
         </div>
         <div style="margin-left: 0px;">
                 <p><small>Distributed under the Boost Software License, Version 1.0. (See
                 accompanying file LICENSE_1_0.txt or
- copy at <a href=
- "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
         </div>
 </body>
 </html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_enum.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_enum.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,56 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_ENUM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_ENUM</b> macro&nbsp;converts a <i>tuple</i> to its comma-separated elements. The comma-separated elements are in the form of <i>variadic data</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_TUPLE_ENUM</b>(<i>size,tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_ENUM</b>(<i>...</i>) <sup>(v)</sup><b></b><br>
+</div>
+<h4> Arguments </h4>
+<dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i>.&nbsp;
+ Valid <i>tuple</i> sizes range from <i>0</i> to <b>BOOST_PP_LIMIT_TUPLE</b>. <br>
+ </dd>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> whose elements are to be converted. </dd>
+</dl>
+<h4> Remarks </h4>
+<div>
+<br>You can
+invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_ENUM(<i>tuple</i>) or
+BOOST_PP_TUPLE_ENUM(<i>size</i>,<i>tuple</i>).<br>
+</div>
+<h4>See Also</h4>
+<ul>
+<li>BOOST_PP_LIMIT_TUPLE<br>
+</li>
+</ul>
+<h4> Requirements </h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/tuple/enum.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include &lt;boost/preprocessor/tuple/enum.hpp&gt;<br><br>#define TUPLE (B,O,O,S,T)<br><br>BOOST_PP_TUPLE_ENUM(5,TUPLE) // expands to B, O, O, S, T<br><br>// or for the variadic version <sup>(v)<br><br></sup>BOOST_PP_TUPLE_ENUM(TUPLE) // expands to B, O, O, S, T<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright Housemarque Oy 2002</i>
+<br>
+<i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
+ </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Modified: branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_rem.html
==============================================================================
--- branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_rem.html (original)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_rem.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -1,15 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
- <title>BOOST_PP_TUPLE_REM</title>
+ <title>BOOST_PP_TUPLE_REM</title>
         <link rel="stylesheet" type="text/css" href="../styles.css">
 </head>
 <body>
- <div style="margin-left: 0px;">
- The <b>BOOST_PP_TUPLE_REM</b> macro expands to a macro that removes the parentheses from a <i>tuple</i> of the specified size.
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_REM</b> macro expands to a macro that removes the parentheses from a <i>tuple</i>.
         </div>
         <h4>Usage</h4>
                 <div class="code">
- <b>BOOST_PP_TUPLE_REM</b>(<i>size</i>)
+ <b>BOOST_PP_TUPLE_REM</b>(<i>size</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_REM</b>(<i>size</i>) <sup>(v)</sup><br>
                 </div>
         <h4>Arguments</h4>
                 <dl>
@@ -21,7 +26,14 @@
                 </dl>
         <h4>Remarks</h4>
                 <div>
- The <i>size</i> argument must be the actual size of the <i>tuple</i>.
+ The <i>size</i> argument must be the actual size of the <i>tuple</i> in the non-variadic version.<br>
+<br>
+For the variadic version <sup>(v)</sup>&nbsp;the
+size may be left out
+completely so that the macro can be invoked as BOOST_PP_TUPLE_REM(); you may get a warning from some compilers, but the
+functionality will still work. If you specify a size in the variadic
+version, it will be ignored, but the warning from some compilers will
+not occur.<br>
                 </div>
         <h4>See Also</h4>
                 <ul>
@@ -32,21 +44,17 @@
                         <b>Header:</b> &nbsp;<boost/preprocessor/tuple/rem.hpp>
                 </div>
         <h4>Sample Code</h4>
-<div><pre>
-#include &lt;boost/preprocessor/tuple/rem.hpp&gt;
-
-BOOST_PP_TUPLE_REM(3)(x, y, z) // expands to x, y, z
-</pre></div>
+<div><pre>#include &lt;boost/preprocessor/tuple/rem.hpp&gt;<br><br>BOOST_PP_TUPLE_REM(3)(x, y, z) // expands to x, y, z<br><br>// or for the variadic version <sup>(v)</sup><br><br>BOOST_PP_TUPLE_REM()(x, y, z) // expands to x, y, z<br></pre></div>
         <hr size="1">
         <div style="margin-left: 0px;">
                 <i>© Copyright Housemarque Oy 2002</i>
- </br><i>© Copyright Paul Mensonides 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
         </div>
         <div style="margin-left: 0px;">
                 <p><small>Distributed under the Boost Software License, Version 1.0. (See
                 accompanying file LICENSE_1_0.txt or
- copy at <a href=
- "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
         </div>
 </body>
 </html>

Modified: branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_rem_ctor.html
==============================================================================
--- branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_rem_ctor.html (original)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_rem_ctor.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -1,15 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
- <title>BOOST_PP_TUPLE_REM_CTOR</title>
+ <title>BOOST_PP_TUPLE_REM_CTOR</title>
         <link rel="stylesheet" type="text/css" href="../styles.css">
 </head>
 <body>
- <div style="margin-left: 0px;">
- The <b>BOOST_PP_TUPLE_REM_CTOR</b> macro removes the parentheses from a <i>tuple</i> of the specified size.
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_REM_CTOR</b> macro removes the parentheses from a <i>tuple</i>.
         </div>
         <h4>Usage</h4>
                 <div class="code">
- <b>BOOST_PP_TUPLE_REM_CTOR</b>(<i>size</i>, <i>tuple</i>)
+ <b>BOOST_PP_TUPLE_REM_CTOR</b>(<i>size</i>, <i>tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_REM_CTOR</b>(<i>...</i>) <sup>(v)</sup><br>
                 </div>
         <h4>Arguments</h4>
                 <dl>
@@ -25,7 +30,11 @@
                 </dl>
         <h4>Remarks</h4>
                 <div>
- The <i>size</i> argument must be the actual size of <i>tuple</i>.
+ The <i>size</i> argument must be the actual size of <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_REM_CTOR(<i>tuple</i>) or
+BOOST_PP_TUPLE_REM_CTOR(<i>size</i>,<i>tuple</i>).<br>
                 </div>
         <h4>See Also</h4>
                 <ul>
@@ -36,21 +45,18 @@
                         <b>Header:</b> &nbsp;<boost/preprocessor/tuple/rem.hpp>
                 </div>
         <h4>Sample Code</h4>
-<div><pre>
-#include &lt;boost/preprocessor/tuple/rem.hpp&gt;
-
-BOOST_PP_TUPLE_REM_CTOR(3, (x, y, z)) // expands to x, y, z
-</pre></div>
+<div><pre>#include &lt;boost/preprocessor/tuple/rem.hpp&gt;<br><br>BOOST_PP_TUPLE_REM_CTOR(3, (x, y, z)) // expands to x, y, z<br><br>// or for the variadic version <sup>(v)<br><br></sup>BOOST_PP_TUPLE_REM_CTOR((x, y, z)) // expands to x, y, z<br></pre></div>
         <hr size="1">
         <div style="margin-left: 0px;">
                 <i>© Copyright Housemarque Oy 2002</i>
- </br><i>© Copyright Paul Mensonides 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
+
         </div>
         <div style="margin-left: 0px;">
                 <p><small>Distributed under the Boost Software License, Version 1.0. (See
                 accompanying file LICENSE_1_0.txt or
- copy at <a href=
- "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
         </div>
 </body>
 </html>

Modified: branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_reverse.html
==============================================================================
--- branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_reverse.html (original)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_reverse.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -1,15 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
- <title>BOOST_PP_TUPLE_REVERSE</title>
+ <title>BOOST_PP_TUPLE_REVERSE</title>
         <link rel="stylesheet" type="text/css" href="../styles.css">
 </head>
 <body>
- <div style="margin-left: 0px;">
- The <b>BOOST_PP_TUPLE_REVERSE</b> macro reverses a <i>tuple</i> of the specified size.
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_REVERSE</b> macro reverses a <i>tuple</i>.
         </div>
         <h4>Usage</h4>
                 <div class="code">
- <b>BOOST_PP_TUPLE_REVERSE</b>(<i>size</i>, <i>tuple</i>)
+ <b>BOOST_PP_TUPLE_REVERSE</b>(<i>size</i>, <i>tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_REVERSE</b>(<i>...</i>) <sup>(v)</sup><br>
+
                 </div>
         <h4>Arguments</h4>
                 <dl>
@@ -25,7 +31,11 @@
                 </dl>
         <h4>Remarks</h4>
                 <div>
- The <i>size</i> argument must be the actual size of the <i>tuple</i>.
+ The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_REVERSE(<i>tuple</i>) or
+BOOST_PP_TUPLE_REVERSE(<i>size</i>,<i>tuple</i>).<br>
                 </div>
         <h4>See Also</h4>
                 <ul>
@@ -36,21 +46,17 @@
                         <b>Header:</b> &nbsp;<boost/preprocessor/tuple/reverse.hpp>
                 </div>
         <h4>Sample Code</h4>
-<div><pre>
-#include &lt;boost/preprocessor/tuple/reverse.hpp&gt;
-
-BOOST_PP_TUPLE_REVERSE(3, (x, y, z)) // expands to (z, y, x)
-</pre></div>
+<div><pre>#include &lt;boost/preprocessor/tuple/reverse.hpp&gt;<br><br>BOOST_PP_TUPLE_REVERSE(3, (x, y, z)) // expands to (z, y, x)<br><br>// or for the variadic version <sup>(v)<br><br></sup>BOOST_PP_TUPLE_REVERSE((x, y, z)) // expands to (z, y, x)<br></pre></div>
         <hr size="1">
         <div style="margin-left: 0px;">
                 <i>© Copyright Housemarque Oy 2002</i>
- </br><i>© Copyright Paul Mensonides 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
         </div>
         <div style="margin-left: 0px;">
                 <p><small>Distributed under the Boost Software License, Version 1.0. (See
                 accompanying file LICENSE_1_0.txt or
- copy at <a href=
- "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
         </div>
 </body>
 </html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_size.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_size.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_SIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_SIZE</b> macro
+expands to the size of the <i>tuple</i> passed to it. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>) <sup>(v)</sup><br>
+ </div>
+<h4>Arguments</h4>
+<dl>
+ <dt>tuple</dt>
+ <dd> A <i>tuple</i> whose size is to be extracted. </dd>
+</dl>
+<h4>Requirements</h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/tuple/size.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include &lt;boost/preprocessor/tuple/size.hpp&gt;<br><br>#define TUPLE (x, y, z)<br><br>BOOST_PP_TUPLE_SIZE(TUPLE) // expands to 3<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_to_array.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_to_array.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_TO_ARRAY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_TO_ARRAY</b>
+macro
+converts a <i>tuple</i> to an <i>array</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_TUPLE_TO_ARRAY</b>(<i>size,tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_TO_ARRAY</b>(<i>...</i>) <sup>(v)</sup><br>
+</div>
+<h4> Arguments </h4>
+<dl>
+ <dt>size</dt>
+ <dd> The size of the <i>tuple</i>.&nbsp; Valid <i>tuple</i> sizes
+range from <i>0</i> to <b>BOOST_PP_LIMIT_TUPLE</b>. <br>
+ </dd>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> to be converted.</dd>
+</dl>
+<h4>Remarks</h4>
+<div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_TO_ARRAY(<i>tuple</i>) or
+BOOST_PP_TUPLE_TO_ARRAY(<i>size</i>,<i>tuple</i>).
+</div>
+<h4> Requirements </h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/tuple/to_array.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include &lt;boost/preprocessor/tuple/to_array.hpp&gt;<br><br>#define TUPLE (a,b,c)<br><br>BOOST_PP_TUPLE_TO_ARRAY(3,TUPLE) // expands to (3, (a, b, c))<br><br>// or for the variadic version <sup>(v)<br><br></sup>BOOST_PP_TUPLE_TO_ARRAY(TUPLE) // expands to (3, (a, b, c))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2011</i>
+</div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Modified: branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_to_list.html
==============================================================================
--- branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_to_list.html (original)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_to_list.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -1,15 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
- <title>BOOST_PP_TUPLE_TO_LIST</title>
+ <title>BOOST_PP_TUPLE_TO_LIST</title>
         <link rel="stylesheet" type="text/css" href="../styles.css">
 </head>
 <body>
- <div style="margin-left: 0px;">
+ <div style="margin-left: 0px;">
                 The <b>BOOST_PP_TUPLE_TO_LIST</b> macro converts a <i>tuple</i> to a <i>list</i>.
         </div>
         <h4>Usage</h4>
                 <div class="code">
- <b>BOOST_PP_TUPLE_TO_LIST</b>(<i>size</i>, <i>tuple</i>)
+ <b>BOOST_PP_TUPLE_TO_LIST</b>(<i>size</i>, <i>tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_TO_LIST</b>(<i>...</i>) <sup>(v)</sup><br>
                 </div>
         <h4>Arguments</h4>
                 <dl>
@@ -25,7 +30,11 @@
                 </dl>
         <h4>Remarks</h4>
                 <div>
- The <i>size</i> argument must be the actual size of the <i>tuple</i>.
+ The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_TO_LIST(<i>tuple</i>) or
+BOOST_PP_TUPLE_TO_LIST(<i>size</i>,<i>tuple</i>).<br>
                 </div>
         <h4>See Also</h4>
                 <ul>
@@ -36,22 +45,17 @@
                         <b>Header:</b> &nbsp;<boost/preprocessor/tuple/to_list.hpp>
                 </div>
         <h4>Sample Code</h4>
-<div><pre>
-#include &lt;boost/preprocessor/tuple/to_list.hpp&gt;
-
-BOOST_PP_TUPLE_TO_LIST(3, (x, y, z))
- // expands to (x, (y, (z, BOOST_PP_NIL)))
-</pre></div>
+<div><pre>#include &lt;boost/preprocessor/tuple/to_list.hpp&gt;<br><br>BOOST_PP_TUPLE_TO_LIST(3, (x, y, z))<br> // expands to (x, (y, (z, BOOST_PP_NIL)))<br><br>// or for the variadic version <sup>(v)<br><br></sup>BOOST_PP_TUPLE_TO_LIST((x, y, z))<br> // expands to (x, (y, (z, BOOST_PP_NIL)))<br></pre></div>
         <hr size="1">
         <div style="margin-left: 0px;">
                 <i>© Copyright Housemarque Oy 2002</i>
- </br><i>© Copyright Paul Mensonides 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
         </div>
         <div style="margin-left: 0px;">
                 <p><small>Distributed under the Boost Software License, Version 1.0. (See
                 accompanying file LICENSE_1_0.txt or
- copy at <a href=
- "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
         </div>
 </body>
 </html>

Modified: branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_to_seq.html
==============================================================================
--- branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_to_seq.html (original)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/tuple_to_seq.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -1,57 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <title>BOOST_PP_TUPLE_TO_SEQ</title>
- <link rel="stylesheet" type="text/css" href="../styles.css">
- </head>
- <body>
- <div style="margin-left: 0px;">
- The <b>BOOST_PP_TUPLE_TO_SEQ</b> macro converts a <i>tuple</i> to an <i>seq</i>.
- </div>
- <h4>
- Usage
- </h4>
- <div class="code">
- <b>BOOST_PP_TUPLE_TO_SEQ</b>(<i>size</i>, <i>tuple</i>)
- </div>
- <h4>
- Arguments
- </h4>
- <dl>
- <dt>size</dt>
- <dd>
- The number of elements in <i>tuple</i>.
- </dd>
- <dt>tuple</dt>
- <dd>
- The <i>tuple</i> to be converted.
- </dd>
- </dl>
- <h4>
- Requirements
- </h4>
- <div>
- <b>Header:</b> &nbsp;<boost/preprocessor/tuple/to_seq.hpp>
- </div>
- <h4>
- Sample Code
- </h4>
- <div>
- <pre>
-#include &lt;boost/preprocessor/tuple/to_seq.hpp&gt;
-
-BOOST_PP_TUPLE_TO_SEQ(3, (a, b, c)) // expands to (a)(b)(c)
-</pre>
- </div>
- <hr size="1">
- <div style="margin-left: 0px;">
- <i>© Copyright Housemarque Oy 2002</i>
- </br><i>© Copyright Paul Mensonides 2002</i>
- </div>
- <div style="margin-left: 0px;">
- <p><small>Distributed under the Boost Software License, Version 1.0. (See
- accompanying file LICENSE_1_0.txt or
- copy at <a href=
- "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
- </div>
- </body>
+<head>
+ <title>BOOST_PP_TUPLE_TO_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_TO_SEQ</b> macro
+converts a <i>tuple</i> to an <i>seq</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_TUPLE_TO_SEQ</b>(<i>size</i>, <i>tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_TO_SEQ</b>(<i>...</i>) <sup>(v)</sup><br>
+</div>
+<h4> Arguments </h4>
+<dl>
+ <dt>size</dt>
+ <dd> The number of elements in <i>tuple</i>. </dd>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> to be converted. </dd>
+</dl>
+<h4>Remarks</h4>
+<div> The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_TO_SEQ(<i>tuple</i>) or
+BOOST_PP_TUPLE_TO_SEQ(<i>size</i>,<i>tuple</i>).
+</div>
+<h4>Requirements </h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/tuple/to_seq.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include &lt;boost/preprocessor/tuple/to_seq.hpp&gt;<br><br>BOOST_PP_TUPLE_TO_SEQ(3, (a, b, c)) // expands to (a)(b)(c)<br><br>// or for the variadic version <sup>(v)<br><br></sup>BOOST_PP_TUPLE_TO_SEQ((a, b, c)) // expands to (a)(b)(c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright Housemarque Oy 2002</i>
+<br>
+<i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
+ </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
 </html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_elem.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_elem.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_ELEM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_ELEM</b> variadic macro
+extracts an element from <i>variadic data</i>. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_ELEM</b>(<i>i</i>, <i>...</i>) <sup>(v)</sup><br>
+ </div>
+<h4>Arguments</h4>
+<dl><dt>i</dt>
+ <dd> The zero-based index into the <i>variadic data</i> of the element to be
+extracted.&nbsp; Valid values range from <i>0</i> to the size of the variadic data - 1.
+ </dd>
+ <dt>...<br>
+</dt>
+ <dd> The <i>variadic data</i> from which an element is to be extracted. </dd>
+</dl>
+<h4>Remarks</h4>
+<div>The index <i>i</i> must be less than the size of the <i>variadic data</i>. </div>
+<h4>See Also</h4>
+<ul>
+ <li>BOOST_PP_LIMIT_VARIADIC</li>
+</ul>
+<h4>Requirements</h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/variadic/elem.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include &lt;boost/preprocessor/variadic/elem.hpp&gt;<br><br>#define VAR_DATA a, b, c, d<br><br>BOOST_PP_VARIADIC_ELEM(0, VAR_DATA) // expands to a<br>BOOST_PP_VARIADIC_ELEM(3, VAR_DATA) // expands to d<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_size.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_size.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_SIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_SIZE</b> variadic macro
+expands to the size of the <i>variadic data </i>passed to it. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_SIZE</b>(<i>...</i>) <sup>(v)</sup><br>
+ </div>
+<h4>Arguments</h4>
+<dl>
+ <dt>...<br>
+</dt>
+ <dd>&nbsp; <i>Variadic data </i>whose size is to be extracted. </dd>
+</dl>
+<h4>Requirements</h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/variadic/size.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include &lt;boost/preprocessor/variadic/size.hpp&gt;<br><br>#define VAR_DATA x, y, z<br><br>BOOST_PP_VARIADIC_SIZE(VAR_DATA) // expands to 3<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_to_array.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_to_array.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_TO_ARRAY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_ARRAY</b> variadic macro
+converts <i>variadic data</i> to an <i>array</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_TO_ARRAY</b>(<i>...</i>) <sup>(v)</sup><br>
+ </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>...</dt>
+ <dd> The <i>variadic data</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/variadic/to_array.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include &lt;boost/preprocessor/variadic/to_array.hpp&gt;<br><br>#define VAR_DATA a, b, c<br><br>BOOST_PP_VARIADIC_TO_ARRAY(VAR_DATA) // expands to (3, (a, b, c))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_to_list.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_to_list.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_TO_LIST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_LIST</b>
+variadic macro converts <i>variadic data</i> to a <i>list</i>. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_TO_LIST</b>(<i>...</i>) <sup>(v)</sup><br>
+ </div>
+<h4>Arguments</h4>
+<dl><dt>...</dt>
+ <dd> The <i>variadic data</i> to be converted.<br>
+</dd>
+</dl><h4>Requirements</h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/variadic/to_list.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include &lt;boost/preprocessor/variadic/to_list.hpp&gt;<br><br>BOOST_PP_VARIADIC_TO_LIST(x, y, z)<br> // expands to (x, (y, (z, BOOST_PP_NIL)))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_to_seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_to_seq.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_TO_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_SEQ</b> variadic macro
+converts a <i>variadic data</i> to a <i>seq</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_TO_SEQ</b>(<i>...</i>) <sup>(v)</sup><br>
+ </div>
+<h4> Arguments </h4>
+<dl><dt>...<br>
+</dt>
+ <dd> The <i>variadic data</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/variadic/to_seq.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include &lt;boost/preprocessor/variadic/to_seq.hpp&gt;<br><br>BOOST_PP_VARIADIC_TO_SEQ(a, b, c) // expands to (a)(b)(c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_to_tuple.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/variadic_to_tuple.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_TO_TUPLE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_TUPLE</b> variadic macro
+converts <i>variadic data </i>to a <i>tuple</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_TO_TUPLE</b>(<i>...</i>)<sup> (v)</sup> </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>...<br>
+</dt>
+ <dd> The <i>variadic data</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/variadic/to_tuple.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include &lt;boost/preprocessor/variadic/to_tuple.hpp&gt;<br><br>#define VAR_DATA a, b, c<br><br>BOOST_PP_VARIADIC_TO_TUPLE(VAR_DATA) // expands to (a, b, c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/ref/variadics.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/ref/variadics.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"><title>BOOST_PP_VARIADICS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADICS </b>macro specifies whether variadic macro support exists.<br>
+</div>
+<h4>Usage</h4>
+<div class="code"><b>BOOST_PP_VARIADICS</b><br>
+</div><b>Remarks</b>
+<div> The macro is an <i>object-like</i> macro. It is used in internal
+code to check for the presence of variadic macro support. It can be
+used by the end-user for the same purpose. The macro equals 1 if
+variadic macros are supported and 0 if they are not. </div><b>Requirements</b>
+<div> <b>Header:</b> &nbsp;<boost/preprocessor/config/variadics.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include &lt;boost/preprocessor/config/variadics.hpp&gt;<br><br>#if BOOST_PP_VARIADICS<br>#define SOME_MACRO(...) // replacement list<br>#else<br>#define SOME_MACRO(param1,param2) // replacement list<br>#endif<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>

Added: branches/pplib/variadics/libs/preprocessor/doc/topics/variadic_macros.html
==============================================================================
--- (empty file)
+++ branches/pplib/variadics/libs/preprocessor/doc/topics/variadic_macros.html 2011-04-14 12:35:58 EDT (Thu, 14 Apr 2011)
@@ -0,0 +1,223 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+ <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
+ <title>variadic_macros.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ <style>
+ u { font-weight: normal; text-decoration: none; }
+ </style>
+</head><body>
+<h4>Variadic Macros</h4>
+<div> Variadic macros are supported by a number of compilers. They are
+macros of the form:
+</div>
+<div class="code">
+<pre>#define SOME_MACRO(ZeroOrMoreParameters,...) macro expansion possible specifying __VA_ARGS__<br></pre>
+</div>
+<div> The '...' in the parameter list represents the variadic
+data when the macro is invoked and the __VA_ARGS__ in the expansion
+represents the variadic data in the expansion of the macro. Variadic
+data is of the form of 1 or more preprocessor tokens separated by
+commas.<br>
+<br>
+The '...' must be the last parameter in the macro definition and there
+may be 0 or more non-variadic parameters preceding it.<br>
+<br>
+In the expansion of the macro __VA_ARGS__ may be specified 0 or more
+times to represent the variadic data. The variadic data in the
+expansion is a comma separated list of preprocessor tokens representing
+the variadic data which the invoker of the macro enters as the last
+arguments to the macro.<br>
+</div>
+<h4>Example<u> - Creating and invoking a variadic macro.</u></h4>
+<div class="code">
+<pre>#define INITIALIZE_INT_ARRAY(array_name,...) \ <br> static int array_name[] = { __VA_ARGS__ }; \ <br> /**/<br><br> INITIALIZE_INT_ARRAY(myname,45,789,33510,9346,2)<br></pre>
+</div>
+<u> <span style="font-weight: bold;">Preprocessor Library Support<br>
+</span></u>
+<div>The library offers support for variadic macros for those compilers
+which support the feature. The library can automatically detect whether
+a compiler supports variadic macros and sets the macro
+BOOST_PP_VARIADICS accordingly to 1 if the compiler supports variadic
+macros or 0 if the compiler does not support variadic macros.<br>
+<br>
+The end-user can #define BOOST_PP_VARIADICS to 1 or 0 himself in a
+translation unit, before including any preprocessor header files, to
+prevent the library from attempting to detect whether the compiler
+supports variadic macros. This has the effect of manually turning on or
+off variadic macro support in the library. Of course if one manually
+turns on variadic macro support in the library, and one's compiler does
+not support variadic macros, functionality in the library which uses
+variadic macros will fail with error messages from the compiler.<br>
+<br>
+When BOOST_PP_VARIADICS is 1, the library offers some extended
+functionality
+by using variadic macros, and also offers extended support for working
+with variadic data.<br>
+<br>
+Support for working with variadic
+data is largely centered on being able to convert variadic data to
+other library data types, since the
+functionality for working with those Boost preprocessor library data
+types is much greater than that for working with variadic data directly.<br>
+</div>
+<h4>Notation For Variadic Macros<br>
+</h4>
+<div>In the documentation, headers which have variadic macros, and
+variadic macros themselves, have a notation of '(v)' appended to them.
+For the variadic macros themselves this signifies thatBOOST_PP_VARIADICS must be 1 for those variadic macros to be usable. For variadic macros which have a non-variadic equivalent, the non-variadic equivalent will be used if
+BOOST_PP_VARIADICS is set to 0 and the non-variadic version of the
+macro does not have a '(v)' appended to its name in the documentation.
+</div>
+<h4>Extended Functionality Using Variadic Macros<br>
+</h4>
+<div>Some macros in the library offer extended
+functionality through the use of variadic macros.<br>
+<br>
+The variadic macro version offers the same functionality
+as the non-variadic version, but because of the ability of the variadic
+parameters to encompass a variable number of arguments, it also offers
+an enhanced syntax using the same macro name.<br>
+<br>
+The macros in the library which offer this enhanced functionality are
+all
+centered on <i>tuple</i> manipulation. With variadic macros it is
+possible to
+manipulate tuples without having to know the size of the tuple. So
+while the invoker can still specify the size when using tuple macro
+functionality, there are variadic versions of each of the tuple macros,
+with the exact same name as the non-variadic macro, where the size need
+not be specified.<br>
+</div>
+<h4>Extended Support For Variadic Data</h4>
+<div>The library offers extended support for working with variadic data
+which goes beyond the functionality offered by the C++ specification
+for variadic macros. It does this through preprocessor programming and
+by using some of the other functionality in the library itself. Header
+and macro names
+in the library which offer extended support for working with variadic
+data, and need the compiler to support variadic macros, are marked with
+a (v)<sup> </sup>to indicate a variadic macro.<br>
+<br>
+The form of the functionality which the library offers is centered on
+two macros which work with variadic data itself, and a set of macros
+which convert between variadic data and other library data
+types.<br>
+<br>
+The two macros are BOOST_PP_VARIADIC_ELEM and BOOST_PP_VARIADIC_SIZE,
+which respectively return a particular token of variadic data and the
+number of tokens of variadic data.<br>
+<br>
+The macros for converting variadic data to the library's data types are
+BOOST_PP_VARIADIC_TO_ARRAY, BOOST_PP_VARIADIC_TO_LIST,
+BOOST_PP_VARIADIC_TO_SEQ, and BOOST_PP_VARIADIC_TO_TUPLE.<br>
+<br>
+All of these macros need compiler support for variadic data and only
+exist if BOOST_PP_VARIADICS is 1. <br>
+<br>
+The remaining four macros, which convert from a library data type
+to comma-separated preprocessor tokens, which is the form of
+variadic data, do not need compiler support for variadic
+macros. These functions are BOOST_PP_ARRAY_ENUM, BOOST_PP_LIST_ENUM,
+BOOST_PP_SEQ_ENUM, and BOOST_PP_TUPLE_ENUM. However if one wishes to
+use this variadic data reliably as arguments to other macros, one needs
+variadic macro support.<br>
+</div>
+<u style="font-weight: bold;"> Using Variadic Data</u>
+<div>Variadic data exists in the
+form of comma-separated preprocessor tokens. This is the case whether
+the variadic data comes from the __VA_ARGS__ of a variadic macro, from
+the conversion of a library's data type to variadic data, or the
+manual construction of comma-separated preprocessing tokens by the
+programmer writing a macro.<br>
+<br>
+The easiest way to work with
+variadic data internally is to convert it to a library data type.
+Library data types, whether an <i>array</i>, <i>list</i>, <i>sequence</i>,
+or <i>tuple</i>, have a rich set of functionality for manipulating
+data whereas
+variadic data functionality in the library only allows one to access
+the variadic data as a whole or to access a single token of the
+variadic data at a time.<br>
+<br>
+The user of the library still may
+choose to pass variadic data back into internal macros rather than
+convert it to other library data types. There is no problem passing
+variadic data as a whole to variadic macros as the last parameter of
+the macro. However: <br>
+<br>
+<span style="font-weight: bold;">Attempting to pass variadic data as a
+whole directly into a non-variadic macro is not guaranteed to work and
+may fail.<br>
+</span><br>
+This occurs because of a preprocessor weakness in a number
+of compilers, currently most notably Visual C++. Even passing variadic
+data as arguments to a non-variadic macro when it is not represented in
+the form of&nbsp; __VA_ARGS__ may fail with certain compilers.<br>
+<br>
+What follows are very simple examples, showing how variadic data can be
+passed to a non-variadic macro.<br>
+<br>
+First an example of what NOT to do.<br>
+</div>
+<h4>Example<u> - Passing variadic data as a whole to a non-variadic
+macro. DO NOT DO.</u></h4>
+<h4>
+</h4>
+<div class="code">
+<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following should not be done and is not guaranteed to work with compilers. */<br><br><span style="font-weight: bold;"><span style="font-family: monospace;"></span></span>int xx = MACRO_ARG_2(VAR_MACRO(2,3));<br></pre>
+</div>
+<div> There are two ways to pass variadic data to a non-variadic macro.
+The
+first of these is to pass the individual tokens of the variadic data
+separately to the non-variadic macro using the BOOST_PP_VARIADIC_ELEM
+macro in the library.<br>
+</div>
+<h4>Example<u> - Passing individual variadic data tokens to a
+non-variadic macro.<br>
+</u></h4>
+<div class="code">
+<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following will work correctly */<br><br>int xx = MACRO_ARG_2<br> (<br> BOOST_PP_VARIADIC_ELEM(0,VAR_MACRO(2,3)),<br> BOOST_PP_VARIADIC_ELEM(1,VAR_MACRO(2,3))<br> );</pre>
+</div>
+<div>The second way is to use a macro in the library called
+BOOST_PP_OVERLOAD.
+This macro allows one to "overload" a variadic macro to non-variadic
+macros of different numbers of parameters, using a common prefix.
+</div>
+<h4>Example<u> - Passing variadic data as a whole to BOOST_PP_OVERLOAD
+and on to a non-variadic macro.<br>
+</u></h4>
+<div class="code">
+<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following will work correctly */<br><br>int xx = BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3));<br><br>/* For Visual C++ it is necessary to do this */<br><br>int xx = BOOST_PP_CAT(BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3)),BOOST_PP_EMPTY());&nbsp;</pre>
+</div>
+<div>Although these techniques will work when passing variadic data to
+non-variadic macros, it is much better and less problematical to
+work internally with the existing library data types and to only use
+variadic
+macros as an interface for end-users when there is a need to have a
+macro which takes a
+variable number of parameters.<br>
+</div>
+<b>See</b> <b>Also</b><br>
+<ul>
+ <li>BOOST_PP_VARIADICS</li>
+ <li>Tuple Macros<br>
+ </li>
+ <li><a href="../headers/variadic.html">Variadic Macros<br>
+ </a></li>
+ <li>BOOST_PP_ARRAY_ENUM</li>
+ <li>BOOST_PP_LIST_ENUM</li>
+ <li>BOOST_PP_SEQ_ENUM</li>
+ <li>BOOST_PP_TUPLE_ENUM</li>
+ <li>BOOST_PP_OVERLOAD<br>
+ </li>
+</ul>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright Edward Diener
+2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body></html>


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk