Completed all changes from review.

This commit is contained in:
Rene Rivera committed 2013-04-02 21:40:46 -05:00
1 parent c22d44d0ce
commit b10e3490ec
25 files changed
+639 -1670

No files matched your search

+4 -2
View File
@@ -40,10 +40,12 @@
<dt><span class="section"><a href="predef/reference/boost_comp_compiler_macros.html"><code class="computeroutput"><span class="identifier">BOOST_COMP</span></code> compiler macros</a></span></dt>
<dt><span class="section"><a href="predef/reference/boost_lang_language_standards_ma.html"><code class="computeroutput"><span class="identifier">BOOST_LANG</span></code> language standards macros</a></span></dt>
<dt><span class="section"><a href="predef/reference/boost_lib_library_macros.html"><code class="computeroutput"><span class="identifier">BOOST_LIB</span></code> library macros</a></span></dt>
<dt><span class="section"><a href="predef/reference/boost_os_operating_system_macros.html"><code class="computeroutput"><span class="identifier">BOOST_OS_</span></code> operating system macros</a></span></dt>
<dt><span class="section"><a href="predef/reference/boost_os_operating_system_macros.html"><code class="computeroutput"><span class="identifier">BOOST_OS</span></code> operating system macros</a></span></dt>
<dt><span class="section"><a href="predef/reference/other_macros.html">Other macros</a></span></dt>
<dt><span class="section"><a href="predef/reference/version_definition_macros.html">Version definition
macros</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="predef/acknoledgements.html">Acknoledgements</a></span></dt>
</dl>
</div>
<div class="warning"><table border="0" summary="Warning">
@@ -57,7 +59,7 @@
</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: March 20, 2013 at 04:42:44 GMT</small></p></td>
<td align="left"><p><small>Last revised: April 03, 2013 at 02:20:25 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
+25 -8
View File
@@ -48,6 +48,13 @@
<li class="listitem">
If possible, the predef will be defined as the version number detected.
</li>
<li class="listitem">
The predef must define <code class="computeroutput"><span class="special">*</span><span class="identifier">_AVAILABLE</span></code>
macros.
</li>
<li class="listitem">
The predef must define a symbolic constant string name macro.
</li>
<li class="listitem">
The predef must declare itself, after being defined, for the testing system.
</li>
@@ -127,14 +134,24 @@ Documentation about what is detected.
that the predef was detected:
</p>
<pre class="programlisting"><span class="preprocessor">#if</span> <span class="special">(</span><span class="identifier">condition_a</span><span class="special">)</span>
<span class="preprocessor">#undef</span> <span class="identifier">BOOST_category_tag</span>
<span class="preprocessor">#if</span> <span class="special">(</span><span class="identifier">condition_b</span><span class="special">)</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_category_tag</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="identifier">major</span><span class="special">,</span><span class="identifier">minor</span><span class="special">,</span><span class="identifier">patch</span><span class="special">)</span>
<span class="preprocessor">#else</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_category_tag</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">1</span><span class="special">)</span>
<span class="preprocessor">#endif</span>
<span class="preprocessor"># undef</span> <span class="identifier">BOOST_category_tag</span>
<span class="preprocessor"># if</span> <span class="special">(</span><span class="identifier">condition_b</span><span class="special">)</span>
<span class="preprocessor"># define</span> <span class="identifier">BOOST_category_tag</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="identifier">major</span><span class="special">,</span><span class="identifier">minor</span><span class="special">,</span><span class="identifier">patch</span><span class="special">)</span>
<span class="preprocessor"># else</span>
<span class="preprocessor"># define</span> <span class="identifier">BOOST_category_tag</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">1</span><span class="special">)</span>
<span class="preprocessor"># endif</span>
<span class="preprocessor">#endif</span>
</pre>
<p>
We also need to provide the <code class="computeroutput"><span class="special">*</span><span class="identifier">_AVAILABLE</span></code> versions of the predef. And for
convenience we also want to provide a <code class="computeroutput"><span class="special">*</span><span class="identifier">_NAME</span></code> macro:
</p>
<pre class="programlisting"><span class="preprocessor">#if</span> <span class="identifier">BOOST_category_tag</span>
<span class="preprocessor"># define</span> <span class="identifier">BOOST_category_tag_AVAILABLE</span>
<span class="preprocessor">#endif</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_catagory_tag_NAME</span> <span class="string">"Name"</span>
</pre>
<p>
The testing of the predef macros is automated to generate checks for all the
defined predefs, whether detected or not. To do this we need to declare the
@@ -142,7 +159,7 @@ Documentation about what is detected.
the test programs they expand out specially to create informational output:
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">predef</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">test</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span>
<span class="identifier">BOOST_PREDEF_DECLARE_TEST</span><span class="special">(</span><span class="identifier">BOOST_category_tag</span><span class="special">,</span><span class="string">"Name"</span><span class="special">)</span>
<span class="identifier">BOOST_PREDEF_DECLARE_TEST</span><span class="special">(</span><span class="identifier">BOOST_category_tag</span><span class="special">,</span><span class="identifier">BOOST_category_tag_NAME</span><span class="special">)</span>
</pre>
<p>
And, of course, we last need to close out the include guard:
@@ -164,7 +181,7 @@ Documentation about what is detected.
by compilers. For example the EDG compiler uses a simple 3-digit version macro
(M,N,P). It can be decomesed and defined as:
</p>
<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_CXX_EDG</span> <span class="identifier">BOOST_PREDEF_MAKE_N_N_N</span><span class="special">(</span><span class="identifier">__EDG_VERSION__</span><span class="special">)</span>
<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_CCOMP_EDG</span> <span class="identifier">BOOST_PREDEF_MAKE_N_N_N</span><span class="special">(</span><span class="identifier">__EDG_VERSION__</span><span class="special">)</span>
</pre>
<p>
The decomposition macros are split into three types: decimal decomposition,
+19 -8
View File
@@ -18,12 +18,12 @@
<a name="predef.introduction"></a><a class="link" href="introduction.html" title="Introduction">Introduction</a>
</h2></div></div></div>
<p>
This library defines a set of compiler, architecture, operating system, and
library version numbers from the information it can gather of C++ predefined
macros or those defined in generally available headers. The idea for this library
grew out of a proposal to extend the Boost Config library to provide more,
and consistent, information than the feature definitions it supports. What
follows is an edited version of that brief proposal.
This library defines a set of compiler, architecture, operating system, library,
and other version numbers from the information it can gather of C, C++, Objective
C, and Objective C++ predefined macros or those defined in generally available
headers. The idea for this library grew out of a proposal to extend the Boost
Config library to provide more, and consistent, information than the feature
definitions it supports. What follows is an edited version of that brief proposal.
</p>
<h4>
<a name="predef.introduction.h0"></a>
@@ -63,18 +63,27 @@
<p>
The current Predef library is now, both an independent library, and expanded
in scope. It includes detection and definition of architectures, compilers,
languages, libraries, and operating systems. The key benefits are:
languages, libraries, operating systems, and endianness. The key benefits are:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Version numbers that are always defined so that one doesn't have to guard
with <code class="computeroutput"><span class="preprocessor">#ifdef</span></code>.
</li>
<li class="listitem">
Guard macros that can be used for <code class="computeroutput"><span class="preprocessor">#ifdef</span></code>
checks.
</li>
<li class="listitem">
All possible definitions are included with the single <code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">predef</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>
so that it's friendly to precompiled header usage.
</li>
<li class="listitem">
Specific definitions can be included, ex. <code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">predef</span><span class="special">/</span><span class="identifier">os</span><span class="special">/</span><span class="identifier">windows</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>
for single checks.
</li>
<li class="listitem">
Predefs can be directly used in both preprocessor and compiler expressions
for comparison to other similarly defined values.
@@ -155,7 +164,9 @@
</li>
<li class="listitem">
Along with the above, it might be good to add some user control as to which
headers are included with the top-level header.
headers are included with the top-level header. Although in the current
form of the library this is less of an issue as one can include the specific
headers one needs.
</li>
<li class="listitem">
Additionally, even if there is no auto-configure style option.. It would
+2 -1
View File
@@ -22,7 +22,8 @@
<dt><span class="section"><a href="reference/boost_comp_compiler_macros.html"><code class="computeroutput"><span class="identifier">BOOST_COMP</span></code> compiler macros</a></span></dt>
<dt><span class="section"><a href="reference/boost_lang_language_standards_ma.html"><code class="computeroutput"><span class="identifier">BOOST_LANG</span></code> language standards macros</a></span></dt>
<dt><span class="section"><a href="reference/boost_lib_library_macros.html"><code class="computeroutput"><span class="identifier">BOOST_LIB</span></code> library macros</a></span></dt>
<dt><span class="section"><a href="reference/boost_os_operating_system_macros.html"><code class="computeroutput"><span class="identifier">BOOST_OS_</span></code> operating system macros</a></span></dt>
<dt><span class="section"><a href="reference/boost_os_operating_system_macros.html"><code class="computeroutput"><span class="identifier">BOOST_OS</span></code> operating system macros</a></span></dt>
<dt><span class="section"><a href="reference/other_macros.html">Other macros</a></span></dt>
<dt><span class="section"><a href="reference/version_definition_macros.html">Version definition
macros</a></span></dt>
</dl></div>
@@ -19,9 +19,11 @@
</h3></div></div></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h0"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_alpha_http_en_wikiped"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_alpha_http_en_wikiped"><code class="computeroutput"><span class="identifier">BOOST_ARCH_ALPHA</span></code>, DEC
Alpha</a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_alpha"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_alpha"><code class="computeroutput"><span class="identifier">BOOST_ARCH_ALPHA</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/DEC_Alpha" target="_top">DEC Alpha</a> architecture.
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
@@ -116,91 +118,6 @@
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h1"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_amd64_http_en_wikiped"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_amd64_http_en_wikiped"><code class="computeroutput"><span class="identifier">BOOST_ARCH_AMD64</span></code>, Advanced
Micro Devices AMD 64 architecture.</a>
</h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Symbol
</p>
</th>
<th>
<p>
Version
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__amd64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__amd64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__x86_64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__x86_64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">_M_X64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h2"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_arm"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_arm"><code class="computeroutput"><span class="identifier">BOOST_ARCH_ARM</span></code></a>
</h5>
<p>
@@ -299,6 +216,81 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h2"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_blackfin"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_blackfin"><code class="computeroutput"><span class="identifier">BOOST_ARCH_BLACKFIN</span></code></a>
</h5>
<p>
Blackfin Processors from Analog Devices.
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Symbol
</p>
</th>
<th>
<p>
Version
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__bfin__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__BFIN__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">bfin</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BFIN</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h3"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_convex"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_convex"><code class="computeroutput"><span class="identifier">BOOST_ARCH_CONVEX</span></code></a>
</h5>
@@ -400,105 +392,6 @@
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h4"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_ia64"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_ia64"><code class="computeroutput"><span class="identifier">BOOST_ARCH_IA64</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/Ia64" target="_top">Intel IA-64</a> architecture.
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Symbol
</p>
</th>
<th>
<p>
Version
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__ia64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">_IA64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__IA64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__ia64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">_M_IA64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__itanium__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h5"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_m68k"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_m68k"><code class="computeroutput"><span class="identifier">BOOST_ARCH_M68K</span></code></a>
</h5>
<p>
@@ -765,7 +658,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h6"></a>
<a name="predef.reference.boost_arch_architecture_macros.h5"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_mips"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_mips"><code class="computeroutput"><span class="identifier">BOOST_ARCH_MIPS</span></code></a>
</h5>
<p>
@@ -949,7 +842,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h7"></a>
<a name="predef.reference.boost_arch_architecture_macros.h6"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_parisk"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_parisk"><code class="computeroutput"><span class="identifier">BOOST_ARCH_PARISK</span></code></a>
</h5>
<p>
@@ -1109,7 +1002,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h8"></a>
<a name="predef.reference.boost_arch_architecture_macros.h7"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_ppc"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_ppc"><code class="computeroutput"><span class="identifier">BOOST_ARCH_PPC</span></code></a>
</h5>
<p>
@@ -1316,7 +1209,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h9"></a>
<a name="predef.reference.boost_arch_architecture_macros.h8"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_pyramid"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_pyramid"><code class="computeroutput"><span class="identifier">BOOST_ARCH_PYRAMID</span></code></a>
</h5>
<p>
@@ -1353,7 +1246,7 @@
</tr></tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h10"></a>
<a name="predef.reference.boost_arch_architecture_macros.h9"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_rs6000"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_rs6000"><code class="computeroutput"><span class="identifier">BOOST_ARCH_RS6000</span></code></a>
</h5>
<p>
@@ -1440,7 +1333,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h11"></a>
<a name="predef.reference.boost_arch_architecture_macros.h10"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_sparc"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_sparc"><code class="computeroutput"><span class="identifier">BOOST_ARCH_SPARC</span></code></a>
</h5>
<p>
@@ -1515,7 +1408,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h12"></a>
<a name="predef.reference.boost_arch_architecture_macros.h11"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_sh"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_sh"><code class="computeroutput"><span class="identifier">BOOST_ARCH_SH</span></code></a>
</h5>
<p>
@@ -1627,7 +1520,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h13"></a>
<a name="predef.reference.boost_arch_architecture_macros.h12"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_sys370"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_sys370"><code class="computeroutput"><span class="identifier">BOOST_ARCH_SYS370</span></code></a>
</h5>
<p>
@@ -1678,7 +1571,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h14"></a>
<a name="predef.reference.boost_arch_architecture_macros.h13"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_sys390"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_sys390"><code class="computeroutput"><span class="identifier">BOOST_ARCH_SYS390</span></code></a>
</h5>
<p>
@@ -1729,9 +1622,56 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h15"></a>
<a name="predef.reference.boost_arch_architecture_macros.h14"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_x86"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_x86"><code class="computeroutput"><span class="identifier">BOOST_ARCH_X86</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/X86" target="_top">Intel x86</a> architecture.
This is a category to indicate that either <code class="computeroutput"><span class="identifier">BOOST_ARCH_X86_32</span></code>
or <code class="computeroutput"><span class="identifier">BOOST_ARCH_X86_64</span></code> is detected.
</p>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h15"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_z"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_z"><code class="computeroutput"><span class="identifier">BOOST_ARCH_Z</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/Z/Architecture" target="_top">z/Architecture</a>
architecture.
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Symbol
</p>
</th>
<th>
<p>
Version
</p>
</th>
</tr></thead>
<tbody><tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__SYSC_ZARCH__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr></tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h16"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_x86_32"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_x86_32"><code class="computeroutput"><span class="identifier">BOOST_ARCH_X86_32</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/X86" target="_top">Intel x86</a> architecture:
If available versions [3-6] are specifically detected.
@@ -1961,12 +1901,11 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h16"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_z"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_z"><code class="computeroutput"><span class="identifier">BOOST_ARCH_Z</span></code></a>
<a name="predef.reference.boost_arch_architecture_macros.h17"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_x86_64"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_x86_64"><code class="computeroutput"><span class="identifier">BOOST_ARCH_X86_64</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/Z/Architecture" target="_top">z/Architecture</a>
architecture.
<a href="http://en.wikipedia.org/wiki/Ia64" target="_top">Intel IA-64</a> architecture.
</p>
<div class="informaltable"><table class="table">
<colgroup>
@@ -1985,10 +1924,11 @@
</p>
</th>
</tr></thead>
<tbody><tr>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__SYSC_ZARCH__</span></code>
<code class="computeroutput"><span class="identifier">__x86_64</span></code>
</p>
</td>
<td>
@@ -1996,7 +1936,128 @@
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr></tbody>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__x86_64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__ia64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">_IA64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__IA64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__ia64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">_M_IA64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__itanium__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__amd64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__amd64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">_M_X64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
@@ -605,7 +605,7 @@
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_gccxml"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_gccxml"><code class="computeroutput"><span class="identifier">BOOST_COMP_GCCXML</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/XXX" target="_top">GCC XML</a> compiler.
<a href="http://www.gccxml.org/" target="_top">GCC XML</a> compiler.
</p>
<div class="informaltable"><table class="table">
<colgroup>
@@ -1279,84 +1279,6 @@
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h21"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_mingw"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_mingw"><code class="computeroutput"><span class="identifier">BOOST_COMP_MINGW</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/MinGW" target="_top">MinGW</a> compiler. Version
number available as major, minor, and patch.
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Symbol
</p>
</th>
<th>
<p>
Version
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__MINGW32__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__MINGW64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__MINGW64_VERSION_MAJOR</span></code>,
<code class="computeroutput"><span class="identifier">__MINGW64_VERSION_MINOR</span></code>
</p>
</td>
<td>
<p>
V.R.0
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__MINGW32_VERSION_MAJOR</span></code>,
<code class="computeroutput"><span class="identifier">__MINGW32_VERSION_MINOR</span></code>
</p>
</td>
<td>
<p>
V.R.0
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h22"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_mpw"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_mpw"><code class="computeroutput"><span class="identifier">BOOST_COMP_MPW</span></code></a>
</h5>
<p>
@@ -1432,7 +1354,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h23"></a>
<a name="predef.reference.boost_comp_compiler_macros.h22"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_palm"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_palm"><code class="computeroutput"><span class="identifier">BOOST_COMP_PALM</span></code></a>
</h5>
<p>
@@ -1483,7 +1405,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h24"></a>
<a name="predef.reference.boost_comp_compiler_macros.h23"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_pgi"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_pgi"><code class="computeroutput"><span class="identifier">BOOST_COMP_PGI</span></code></a>
</h5>
<p>
@@ -1535,7 +1457,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h25"></a>
<a name="predef.reference.boost_comp_compiler_macros.h24"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_sgi"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_sgi"><code class="computeroutput"><span class="identifier">BOOST_COMP_SGI</span></code></a>
</h5>
<p>
@@ -1611,7 +1533,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h26"></a>
<a name="predef.reference.boost_comp_compiler_macros.h25"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_sunpro"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_sunpro"><code class="computeroutput"><span class="identifier">BOOST_COMP_SUNPRO</span></code></a>
</h5>
<p>
@@ -1687,7 +1609,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h27"></a>
<a name="predef.reference.boost_comp_compiler_macros.h26"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_tendra"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_tendra"><code class="computeroutput"><span class="identifier">BOOST_COMP_TENDRA</span></code></a>
</h5>
<p>
@@ -1725,7 +1647,7 @@
</tr></tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h28"></a>
<a name="predef.reference.boost_comp_compiler_macros.h27"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_msvc"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_msvc"><code class="computeroutput"><span class="identifier">BOOST_COMP_MSVC</span></code></a>
</h5>
<p>
@@ -1789,7 +1711,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h29"></a>
<a name="predef.reference.boost_comp_compiler_macros.h28"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_watcom"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_watcom"><code class="computeroutput"><span class="identifier">BOOST_COMP_WATCOM</span></code></a>
</h5>
<p>
@@ -7,7 +7,7 @@
<link rel="home" href="../../index.html" title="Predef 1.0">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="boost_lang_language_standards_ma.html" title="BOOST_LANG language standards macros">
<link rel="next" href="boost_os_operating_system_macros.html" title="BOOST_OS_ operating system macros">
<link rel="next" href="boost_os_operating_system_macros.html" title="BOOST_OS operating system macros">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">
File diff suppressed because it is too large. Load diff
@@ -6,11 +6,12 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Predef 1.0">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="boost_os_operating_system_macros.html" title="BOOST_OS_ operating system macros">
<link rel="prev" href="other_macros.html" title="Other macros">
<link rel="next" href="../acknoledgements.html" title="Acknoledgements">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">
<a accesskey="p" href="boost_os_operating_system_macros.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a>
<a accesskey="p" href="other_macros.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../acknoledgements.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section predef_reference_version_definition_macros">
<div class="titlepage"><div><div><h3 class="title">
@@ -177,7 +178,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="boost_os_operating_system_macros.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a>
<a accesskey="p" href="other_macros.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../acknoledgements.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
+26 -10
View File
@@ -32,25 +32,29 @@
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_ARCHITECTURE_</span></code>for
system/CPU architecture one is compiling for.
<code class="computeroutput"><span class="identifier">BOOST_ARCH_</span></code>for system/CPU
architecture one is compiling for.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_CXX_</span></code> for the compiler
<code class="computeroutput"><span class="identifier">BOOST_COMP_</span></code> for the compiler
one is using.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_LANGUAGE_</span></code> for language
<code class="computeroutput"><span class="identifier">BOOST_LANG_</span></code> for language
standards one is compiling against.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_LIBC_</span></code> and <code class="computeroutput"><span class="identifier">BOOST_LIBSTD_</span></code> for the C and C++ standard
<code class="computeroutput"><span class="identifier">BOOST_LIB_C_</span></code> and <code class="computeroutput"><span class="identifier">BOOST_LIB_STD_</span></code> for the C and C++ standard
library in use.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_OS_</span></code> for the operating
system we are compiling to.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_ENDIAN_</span></code> for endianness
of the os and architecture combination.
</li>
</ul></div>
<div class="note"><table border="0" summary="Note">
<tr>
@@ -74,7 +78,7 @@
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
<span class="special">{</span>
<span class="keyword">if</span> <span class="special">(</span><span class="identifier">BOOST_CXX_GNUC</span> <span class="special">&gt;=</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">4</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">))</span>
<span class="keyword">if</span> <span class="special">(</span><span class="identifier">BOOST_COMP_GNUC</span> <span class="special">&gt;=</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">4</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">))</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"GCC compiler is at least version 4.0.0"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="keyword">else</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"GCC compiler is at older than version 4.0.0, or not a GCC compiler"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
@@ -84,7 +88,7 @@
<p>
As you might notice above the <code class="computeroutput"><span class="keyword">else</span></code>
clause also covers the case where the particular compiler is not detected.
But one can make the test specifically test for the detection. All predef definitions
But one can make the test also test for the detection. All predef definitions
are defined as a zero (0) expression when not detected. Hence one could use
the detection with a natural single condition. For example:
</p>
@@ -93,7 +97,7 @@
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
<span class="special">{</span>
<span class="keyword">if</span> <span class="special">(</span><span class="identifier">BOOST_CXX_GNUC</span><span class="special">)</span>
<span class="keyword">if</span> <span class="special">(</span><span class="identifier">BOOST_COMP_GNUC</span><span class="special">)</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"This is GNU GCC!"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="keyword">else</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Not GNU GCC."</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
@@ -107,8 +111,8 @@
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">predef</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
<span class="preprocessor">#if</span> <span class="identifier">BOOST_CXX_GNUC</span>
<span class="preprocessor">#if</span> <span class="identifier">BOOST_CXX_GNUC</span> <span class="special">&gt;=</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">4</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">)</span>
<span class="preprocessor">#if</span> <span class="identifier">BOOST_COMP_GNUC</span>
<span class="preprocessor">#if</span> <span class="identifier">BOOST_COMP_GNUC</span> <span class="special">&gt;=</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">4</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">)</span>
<span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">the_compiler</span> <span class="special">=</span> <span class="string">"GNU GCC, of at least version 4."</span>
<span class="preprocessor">#else</span>
<span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">the_compiler</span> <span class="special">=</span> <span class="string">"GNU GCC, less than version 4."</span>
@@ -123,6 +127,18 @@
<span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
In addition, for each version macro defined there is a <code class="computeroutput"><span class="special">*</span><span class="identifier">_AVAILABLE</span></code> macro defined only when the particular
aspect is detected. I.e. a definition equivalent to:
</p>
<pre class="programlisting"><span class="preprocessor">#if</span> <span class="identifier">BOOST_PREDEF_ABC</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_PREDEF_ABC_AVAILABLE</span>
<span class="preprocessor">#endif</span>
</pre>
<p>
Also for each aspect there is a macro defined with a descriptive name of what
the detection is.
</p>
<h4>
<a name="predef.using_the_predefs.h0"></a>
<span class="phrase"><a name="predef.using_the_predefs.using_the_boost_version_number_m"></a></span><a class="link" href="using_the_predefs.html#predef.using_the_predefs.using_the_boost_version_number_m">Using the