2001-11-25 18:32:11 +00:00
|
|
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
|
|
|
<HTML><HEAD><TITLE>Boost PREPROCESSOR library</TITLE>
|
2002-01-20 16:49:07 +00:00
|
|
|
|
|
2001-11-25 18:32:11 +00:00
|
|
|
|
<BODY bgcolor="#FFFFFF">
|
2002-01-20 16:49:07 +00:00
|
|
|
|
|
|
|
|
|
<table border="1" bgcolor="#007F7F" cellpadding="2">
|
|
|
|
|
<tr>
|
|
|
|
|
<td bgcolor="#FFFFFF"><img src="../../../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
|
|
|
|
|
<td><a href="../../../index.htm"><font face="Arial" color="#FFFFFF"><big>Home </big></font></a></td>
|
|
|
|
|
<td><a href="../../libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries </big></font></a></td>
|
|
|
|
|
<td><a href="../../../people/people.htm"><font face="Arial" color="#FFFFFF"><big>People </big></font></a></td>
|
|
|
|
|
<td><a href="../../../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ </big></font></a></td>
|
|
|
|
|
<td><a href="../../../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More </big></font></a></td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
2001-11-25 18:32:11 +00:00
|
|
|
|
|
|
|
|
|
<h1>Boost PREPROCESSOR library</h1>
|
|
|
|
|
|
|
|
|
|
<p>C++ programming sometimes involves repeating lists of template or function
|
|
|
|
|
parameters. Such repetition is troublesome, because it tends to be done manually,
|
|
|
|
|
which means that the maximum number of parameters is bound into the design of
|
|
|
|
|
the program making it difficult to configure. Automating the repetition using
|
|
|
|
|
extra linguistic tools introduces another set of problems.</p>
|
|
|
|
|
<p>The C preprocessor is part of the C++ language and can manipulate and generate
|
|
|
|
|
tokens. Unfortunately the C preprocessor is also a very low level macro processor.
|
|
|
|
|
In particular, it doesn't directly support repetition or recursion. Fortunately
|
|
|
|
|
it is possible to perform finite repetition and recursion using a library of
|
|
|
|
|
preprocessor primitives.</p>
|
|
|
|
|
<p>The PREPROCESSOR library provides facilities for C preprocessor metaprogramming.
|
|
|
|
|
Preprocessor metaprogramming makes it possible to generate function and template
|
|
|
|
|
parameter lists and make libraries configurable through preprocessor definitions.</p>
|
|
|
|
|
<h2>Documentation</h2>
|
|
|
|
|
|
|
|
|
|
<DL>
|
|
|
|
|
<LI><A href="tutorial.htm">Tutorial</A>
|
2002-01-31 15:36:01 +00:00
|
|
|
|
<LI><A href="reference/index.htm">Reference</A>
|
2001-11-25 18:32:11 +00:00
|
|
|
|
<LI><a href="known_problems_with_cpp.htm">Widely known problems with the C preprocessor</a>
|
2001-11-26 11:57:49 +00:00
|
|
|
|
<LI><A href="keywords.txt">Keywords for syntax highlighting</A>
|
2001-11-25 18:32:11 +00:00
|
|
|
|
<LI><A href="references.htm">References</A>
|
|
|
|
|
<LI><A href="problems_with_compilers.htm">Known problems with specific compilers</A>
|
|
|
|
|
</DL>
|
|
|
|
|
|
|
|
|
|
<h3>Acknowledgements</h3>
|
|
|
|
|
|
|
|
|
|
<p>The original idea of passing two extra parameters to REPEAT, which makes it
|
|
|
|
|
possible to create preprocessor code on top of it, was due to Aleksey Gurtovoy.
|
|
|
|
|
The invokeable IDENTITY macro was also invented by him. He also suggested the
|
|
|
|
|
name for the library. Many thanks to Aleksey for his insights!</p>
|
|
|
|
|
<p>Thanks to everyone who participated in the review: David Abrahams, Beman Dawes,
|
|
|
|
|
Ronald Garcia, Douglas Gregor, Aleksey Gurtovoy, Jeremy Siek, and Daryle Walker.</p>
|
2002-01-30 08:10:52 +00:00
|
|
|
|
<p>Thanks to Chris Little and Mat Marcus for providing help with MWCW.</p>
|
2001-11-30 16:43:21 +00:00
|
|
|
|
<p>The PREPROCESSOR library has been developed by
|
|
|
|
|
<a href="../../../people/vesa_karvonen.htm">Vesa Karvonen</a>.</p>
|
2001-11-25 18:32:11 +00:00
|
|
|
|
|
|
|
|
|
<hr>
|
2001-12-03 21:20:27 +00:00
|
|
|
|
<p><EFBFBD> Copyright Housemarque Oy 2001</p>
|
2001-11-25 18:32:11 +00:00
|
|
|
|
<p>Permission to copy, use, modify, sell and distribute this document is granted
|
|
|
|
|
provided this copyright notice appears in all copies. This document is provided
|
|
|
|
|
"as is" without express or implied warranty, and with no claim as to its suitability
|
|
|
|
|
for any purpose. </p>
|
2001-11-30 16:43:21 +00:00
|
|
|
|
<p>Updated: <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan -->30 Nov 2001<!--webbot bot="Timestamp" i-checksum="15239" endspan -->
|
2001-11-25 18:32:11 +00:00
|
|
|
|
<p></p>
|
|
|
|
|
|
2001-11-30 16:43:21 +00:00
|
|
|
|
</BODY></HTML>
|