set -> seq

[SVN r16150]
This commit is contained in:
Paul Mensonides
2002-11-07 23:39:29 +00:00
parent 54bdb38619
commit 5be4c6ee5a
74 changed files with 3787 additions and 2492 deletions
+61 -41
View File
@@ -1,69 +1,89 @@
<html>
<head>
<title>BOOST_PP_SET_NIL</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_SET_NIL</b> macro is a placeholder macro for an empty <i>set</i>.&nbsp;
It is only valid if it is elements are appended to the end of this empty "set."&nbsp;
</div>
<h4>Usage</h4>
<head>
<title>BOOST_PP_SEQ_NIL</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_SEQ_NIL</b> macro is a placeholder macro for an empty <i>seq</i>.&nbsp;
It is only valid if it is elements are appended to the end of this empty
"seq."&nbsp;
</div>
<h4>
Usage
</h4>
<div class="code">
<b>BOOST_PP_SET_NIL</b>
<b>BOOST_PP_SEQ_NIL</b>
</div>
<h4>Remarks</h4>
<h4>
Remarks
</h4>
<div>
This macro is a utility macro intended as a empty starting point for appending to the tail.&nbsp;
It is <i>not</i> a nil <i>set</i>.&nbsp;
When an element is appended to this macro, it expands on the element and to the element--thereby removing itself.&nbsp;
For example, both <b>BOOST_PP_SET_NIL</b>(<i>x</i>)
and <b>BOOST_PP_SET_PUSH_BACK</b>(<b>BOOST_PP_SET_NIL</b>, <i>x</i>) expand to <i>x</i>.
This macro is a utility macro intended as a empty starting point for appending
to the tail.&nbsp; It is <i>not</i> a nil <i>seq</i>.&nbsp; When an element is
appended to this macro, it expands on the element and to the element--thereby
removing itself.&nbsp; For example, both <b>BOOST_PP_SEQ_NIL</b>(<i>x</i>) and <b>BOOST_PP_SEQ_PUSH_BACK</b>(<b>BOOST_PP_SEQ_NIL</b>,
<i>x</i>) expand to <i>x</i>.
</div>
<div>
If any <b>BOOST_PP_SET_</b>* macro (other than <b>BOOST_PP_SET_PUSH_BACK</b>) is invoked with an argument that contains <b>BOOST_PP_SET_NIL</b>,
the behavior is undefined and in most cases will result in obscure errors.
If any <b>BOOST_PP_SEQ_</b>* macro (other than <b>BOOST_PP_SEQ_PUSH_BACK</b>)
is invoked with an argument that contains <b>BOOST_PP_SEQ_NIL</b>, the behavior
is undefined and in most cases will result in obscure errors.
</div>
<div>
The closest thing available to <b>BOOST_PP_SET_NIL</b> for appending to the head is <b>BOOST_PP_EMPTY</b>.&nbsp;
After all the elements have been prepended, empty parenthesis can be invoked on the tail to remove the <b>BOOST_PP_EMPTY</b>.&nbsp;
As with <b>BOOST_PP_SET_NIL</b>, passing an argument that contains <b>BOOST_PP_EMPTY</b> to any <b>BOOST_PP_SET_</b>* macro (other than <b>BOOST_PP_SET_PUSH_FRONT</b>) is undefined.&nbsp;
The closest thing available to <b>BOOST_PP_SEQ_NIL</b> for appending to the
head is <b>BOOST_PP_EMPTY</b>.&nbsp; After all the elements have been
prepended, empty parenthesis can be invoked on the tail to remove the <b>BOOST_PP_EMPTY</b>.&nbsp;
As with <b>BOOST_PP_SEQ_NIL</b>, passing an argument that contains <b>BOOST_PP_EMPTY</b>
to any <b>BOOST_PP_SEQ_</b>* macro (other than <b>BOOST_PP_SEQ_PUSH_FRONT</b>)
is undefined.&nbsp;
</div>
<div>
(It is also possible to start with an extra element and pop it off when you have finished appending to it.)
(It is also possible to start with an extra element and pop it off when you
have finished appending to it.)
</div>
<div>
In C99, neither of these macros are necessary since it is legal to pass empty arguments.
In C99, neither of these macros are necessary since it is legal to pass empty
arguments.
</div>
<h4>See Also</h4>
<h4>
See Also
</h4>
<ul>
<li><a href="empty.html">BOOST_PP_EMPTY</a></li>
<li>
<a href="empty.html">BOOST_PP_EMPTY</a></li>
</ul>
<h4>Requirements</h4>
<h4>
Requirements
</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/set/set.hpp.html">&lt;boost/preprocessor/set/set.hpp&gt;</a>
<b>Header:</b> &nbsp;<a href="../headers/seq/seq.hpp.html">&lt;boost/preprocessor/seq/seq.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
<h4>
Sample Code
</h4>
<div>
<pre>
#include &lt;<a href="../headers/facilities/empty.hpp.html">boost/preprocessor/facilities/empty.hpp</a>&gt;
#include &lt;<a href="../headers/set/push_back.hpp.html">boost/preprocessor/set/push_back.hpp</a>&gt;
#include &lt;<a href="../headers/set/push_front.hpp.html">boost/preprocessor/set/push_front.hpp</a>&gt;
#include &lt;<a href="../headers/set/set.hpp.html">boost/preprocessor/set/set.hpp</a>&gt;
#include &lt;<a href="../headers/seq/push_back.hpp.html">boost/preprocessor/seq/push_back.hpp</a>&gt;
#include &lt;<a href="../headers/seq/push_front.hpp.html">boost/preprocessor/seq/push_front.hpp</a>&gt;
#include &lt;<a href="../headers/seq/seq.hpp.html">boost/preprocessor/seq/seq.hpp</a>&gt;
#define SET_L <a href="set_nil.html">BOOST_PP_SET_NIL</a>
#define SET_R <a href="empty.html">BOOST_PP_EMPTY</a>
#define SEQ_L <a href="seq_nil.html">BOOST_PP_SEQ_NIL</a>
#define SEQ_R <a href="empty.html">BOOST_PP_EMPTY</a>
<a href="set_push_back.html">BOOST_PP_SET_PUSH_BACK</a>(
<a href="set_push_back.html">BOOST_PP_SET_PUSH_BACK</a>(SET_L, a), b
<a href="seq_push_back.html">BOOST_PP_SEQ_PUSH_BACK</a>(
<a href="seq_push_back.html">BOOST_PP_SEQ_PUSH_BACK</a>(SEQ_L, a), b
)
// expands to (a)(b)
<a href="set_push_front.html">BOOST_PP_SET_PUSH_FRONT</a>(
<a href="set_push_front.html">BOOST_PP_SET_PUSH_FRONT</a>(SET_R, a), b
<a href="seq_push_front.html">BOOST_PP_SEQ_PUSH_FRONT</a>(
<a href="seq_push_front.html">BOOST_PP_SEQ_PUSH_FRONT</a>(SEQ_R, a), b
)()
// expands to (b)(a)
</pre></div>
</body>
</pre>
</div>
</body>
</html>