Remove externals for Predef library.. Now using a custom script to hard-link across from git to svn.

[SVN r85179]
This commit is contained in:
Rene Rivera
2013-08-01 03:46:04 +00:00
parent 20682e83dc
commit 2892c3e85b
165 changed files with 15240 additions and 0 deletions

53
doc/build.jam Normal file
View File

@ -0,0 +1,53 @@
# Copyright Redshift Software, Inc. 2011
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
using quickbook ;
import path ;
if ! $(BOOST_ROOT)
{
BOOST_ROOT = [ modules.peek : BOOST_ROOT ] ;
}
if $(BOOST_PREDEF_ROOT)
{
path-constant BOOST_PREDEF_INCLUDE_ROOT : $(BOOST_PREDEF_ROOT)/include ;
}
else
{
path-constant BOOST_PREDEF_INCLUDE_ROOT : $(BOOST_ROOT) ;
}
local BOOST_PREDEF_HEADERS = [ path.glob-tree $(BOOST_PREDEF_INCLUDE_ROOT)/boost/predef : *.h ] ;
xml predef
:
predef.qbk
:
<dependency>$(BOOST_PREDEF_INCLUDE_ROOT)/boost/predef.h
<dependency>$(BOOST_PREDEF_HEADERS)
;
explicit predef ;
boostbook standalone
:
predef
:
<xsl:param>boost.root=../../..
#<xsl:param>generate.section.toc.level=3
<xsl:param>chunk.section.depth=2
<xsl:param>chunk.first.sections=1
<dependency>images
<dependency>callouts
<dependency>css
;
install images : [ glob $(BOOST_ROOT)/doc/src/images/*.png ] : <location>html/images ;
explicit images ;
install callouts : [ glob $(BOOST_ROOT)/doc/src/images/callouts/*.png ] : <location>html/images/callouts ;
explicit callouts ;
install css : [ glob $(BOOST_ROOT)/doc/src/*.css ] : <location>html ;
explicit css ;

646
doc/html/boostbook.css Normal file
View File

@ -0,0 +1,646 @@
/*=============================================================================
Copyright (c) 2004 Joel de Guzman
http://spirit.sourceforge.net/
Distributed under the Boost Software License, Version 1.0. (See accompany-
ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
=============================================================================*/
/*=============================================================================
Body defaults
=============================================================================*/
body
{
margin: 1em;
font-family: sans-serif;
}
/*=============================================================================
Paragraphs
=============================================================================*/
p
{
text-align: left;
font-size: 10pt;
line-height: 1.15;
}
/*=============================================================================
Program listings
=============================================================================*/
/* Code on paragraphs */
p tt.computeroutput
{
font-size: 9pt;
}
pre.synopsis
{
font-size: 9pt;
margin: 1pc 4% 0pc 4%;
padding: 0.5pc 0.5pc 0.5pc 0.5pc;
}
.programlisting,
.screen
{
font-size: 9pt;
display: block;
margin: 1pc 4% 0pc 4%;
padding: 0.5pc 0.5pc 0.5pc 0.5pc;
}
/* Program listings in tables don't get borders */
td .programlisting,
td .screen
{
margin: 0pc 0pc 0pc 0pc;
padding: 0pc 0pc 0pc 0pc;
}
/*=============================================================================
Headings
=============================================================================*/
h1, h2, h3, h4, h5, h6
{
text-align: left;
margin: 1em 0em 0.5em 0em;
font-weight: bold;
}
h1 { font-size: 140%; }
h2 { font-weight: bold; font-size: 140%; }
h3 { font-weight: bold; font-size: 130%; }
h4 { font-weight: bold; font-size: 120%; }
h5 { font-weight: normal; font-style: italic; font-size: 110%; }
h6 { font-weight: normal; font-style: italic; font-size: 100%; }
/* Top page titles */
title,
h1.title,
h2.title
h3.title,
h4.title,
h5.title,
h6.title,
.refentrytitle
{
font-weight: bold;
margin-bottom: 1pc;
}
h1.title { font-size: 140% }
h2.title { font-size: 140% }
h3.title { font-size: 130% }
h4.title { font-size: 120% }
h5.title { font-size: 110% }
h6.title { font-size: 100% }
.section h1
{
margin: 0em 0em 0.5em 0em;
font-size: 140%;
}
.section h2 { font-size: 140% }
.section h3 { font-size: 130% }
.section h4 { font-size: 120% }
.section h5 { font-size: 110% }
.section h6 { font-size: 100% }
/* Code on titles */
h1 tt.computeroutput { font-size: 140% }
h2 tt.computeroutput { font-size: 140% }
h3 tt.computeroutput { font-size: 130% }
h4 tt.computeroutput { font-size: 130% }
h5 tt.computeroutput { font-size: 130% }
h6 tt.computeroutput { font-size: 130% }
/*=============================================================================
Author
=============================================================================*/
h3.author
{
font-size: 100%
}
/*=============================================================================
Lists
=============================================================================*/
li
{
font-size: 10pt;
line-height: 1.3;
}
/* Unordered lists */
ul
{
text-align: left;
}
/* Ordered lists */
ol
{
text-align: left;
}
/*=============================================================================
Links
=============================================================================*/
a
{
text-decoration: none; /* no underline */
}
a:hover
{
text-decoration: underline;
}
/*=============================================================================
Spirit style navigation
=============================================================================*/
.spirit-nav
{
text-align: right;
}
.spirit-nav a
{
color: white;
padding-left: 0.5em;
}
.spirit-nav img
{
border-width: 0px;
}
/*=============================================================================
Copyright footer
=============================================================================*/
.copyright-footer
{
text-align: right;
font-size: 70%;
}
.copyright-footer p
{
text-align: right;
font-size: 80%;
}
/*=============================================================================
Table of contents
=============================================================================*/
div.toc
{
margin: 1pc 4% 0pc 4%;
padding: 0.1pc 1pc 0.1pc 1pc;
font-size: 80%;
line-height: 1.15;
}
.boost-toc
{
float: right;
padding: 0.5pc;
}
/* Code on toc */
.toc .computeroutput { font-size: 120% }
/* No margin on nested menus */
.toc dl dl { margin: 0; }
/*=============================================================================
Tables
=============================================================================*/
.table-title,
div.table p.title
{
margin-left: 4%;
padding-right: 0.5em;
padding-left: 0.5em;
}
.informaltable table,
.table table
{
width: 92%;
margin-left: 4%;
margin-right: 4%;
}
div.informaltable table,
div.table table
{
padding: 4px;
}
/* Table Cells */
div.informaltable table tr td,
div.table table tr td
{
padding: 0.5em;
text-align: left;
font-size: 9pt;
}
div.informaltable table tr th,
div.table table tr th
{
padding: 0.5em 0.5em 0.5em 0.5em;
border: 1pt solid white;
font-size: 80%;
}
table.simplelist
{
width: auto !important;
margin: 0em !important;
padding: 0em !important;
border: none !important;
}
table.simplelist td
{
margin: 0em !important;
padding: 0em !important;
text-align: left !important;
font-size: 9pt !important;
border: none !important;
}
/*=============================================================================
Blurbs
=============================================================================*/
div.note,
div.tip,
div.important,
div.caution,
div.warning,
p.blurb
{
font-size: 9pt; /* A little bit smaller than the main text */
line-height: 1.2;
display: block;
margin: 1pc 4% 0pc 4%;
padding: 0.5pc 0.5pc 0.5pc 0.5pc;
}
p.blurb img
{
padding: 1pt;
}
/*=============================================================================
Variable Lists
=============================================================================*/
div.variablelist
{
margin: 1em 0;
}
/* Make the terms in definition lists bold */
div.variablelist dl dt,
span.term
{
font-weight: bold;
font-size: 10pt;
}
div.variablelist table tbody tr td
{
text-align: left;
vertical-align: top;
padding: 0em 2em 0em 0em;
font-size: 10pt;
margin: 0em 0em 0.5em 0em;
line-height: 1;
}
div.variablelist dl dt
{
margin-bottom: 0.2em;
}
div.variablelist dl dd
{
margin: 0em 0em 0.5em 2em;
font-size: 10pt;
}
div.variablelist table tbody tr td p,
div.variablelist dl dd p
{
margin: 0em 0em 0.5em 0em;
line-height: 1;
}
/*=============================================================================
Misc
=============================================================================*/
/* Title of books and articles in bibliographies */
span.title
{
font-style: italic;
}
span.underline
{
text-decoration: underline;
}
span.strikethrough
{
text-decoration: line-through;
}
/* Copyright, Legal Notice */
div div.legalnotice p
{
text-align: left
}
/*=============================================================================
Colors
=============================================================================*/
@media screen
{
body {
background-color: #FFFFFF;
color: #000000;
}
/* Syntax Highlighting */
.keyword { color: #0000AA; }
.identifier { color: #000000; }
.special { color: #707070; }
.preprocessor { color: #402080; }
.char { color: teal; }
.comment { color: #800000; }
.string { color: teal; }
.number { color: teal; }
.white_bkd { background-color: #FFFFFF; }
.dk_grey_bkd { background-color: #999999; }
/* Links */
a, a .keyword, a .identifier, a .special, a .preprocessor
a .char, a .comment, a .string, a .number
{
color: #005a9c;
}
a:visited, a:visited .keyword, a:visited .identifier,
a:visited .special, a:visited .preprocessor a:visited .char,
a:visited .comment, a:visited .string, a:visited .number
{
color: #9c5a9c;
}
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover,
h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
{
text-decoration: none; /* no underline */
color: #000000;
}
/* Copyright, Legal Notice */
.copyright
{
color: #666666;
font-size: small;
}
div div.legalnotice p
{
color: #666666;
}
/* Program listing */
pre.synopsis
{
border: 1px solid #DCDCDC;
}
.programlisting,
.screen
{
border: 1px solid #DCDCDC;
}
td .programlisting,
td .screen
{
border: 0px solid #DCDCDC;
}
/* Blurbs */
div.note,
div.tip,
div.important,
div.caution,
div.warning,
p.blurb
{
border: 1px solid #DCDCDC;
}
/* Table of contents */
div.toc
{
border: 1px solid #DCDCDC;
}
/* Tables */
div.informaltable table tr td,
div.table table tr td
{
border: 1px solid #DCDCDC;
}
div.informaltable table tr th,
div.table table tr th
{
background-color: #F0F0F0;
border: 1px solid #DCDCDC;
}
.copyright-footer
{
color: #8F8F8F;
}
/* Misc */
span.highlight
{
color: #00A000;
}
}
@media print
{
/* Links */
a
{
color: black;
}
a:visited
{
color: black;
}
.spirit-nav
{
display: none;
}
/* Program listing */
pre.synopsis
{
border: 1px solid gray;
}
.programlisting,
.screen
{
border: 1px solid gray;
}
td .programlisting,
td .screen
{
border: 0px solid #DCDCDC;
}
/* Table of contents */
div.toc
{
border: 1px solid gray;
}
.informaltable table,
.table table
{
border: 1px solid gray;
border-collapse: collapse;
}
/* Tables */
div.informaltable table tr td,
div.table table tr td
{
border: 1px solid gray;
}
div.informaltable table tr th,
div.table table tr th
{
border: 1px solid gray;
}
table.simplelist tr td
{
border: none !important;
}
/* Misc */
span.highlight
{
font-weight: bold;
}
}
/*=============================================================================
Images
=============================================================================*/
span.inlinemediaobject img
{
vertical-align: middle;
}
/*==============================================================================
Super and Subscript: style so that line spacing isn't effected, see
http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=1&postId=5341
==============================================================================*/
sup,
sub {
height: 0;
line-height: 1;
vertical-align: baseline;
position: relative;
}
/* For internet explorer: */
* html sup,
* html sub {
vertical-align: bottom;
}
sup {
bottom: 1ex;
}
sub {
top: .5ex;
}
/*==============================================================================
Indexes: pretty much the same as the TOC.
==============================================================================*/
.index
{
font-size: 80%;
padding-top: 0px;
padding-bottom: 0px;
margin-top: 0px;
margin-bottom: 0px;
margin-left: 0px;
}
.index ul
{
padding-left: 3em;
}
.index p
{
padding: 2px;
margin: 2px;
}
.index-entry-level-0
{
font-weight: bold;
}
.index em
{
font-weight: bold;
}

275
doc/html/docutils.css Normal file
View File

@ -0,0 +1,275 @@
/*
:Author: David Goodger
:Contact: goodger@python.org
:Date: $Date: 2007-04-16 23:44:59 -0500 (Mon, 16 Apr 2007) $
:Revision: $Revision: 37457 $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }

BIN
doc/html/images/alert.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 603 B

BIN
doc/html/images/blank.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

BIN
doc/html/images/caution.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
doc/html/images/draft.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
doc/html/images/home.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

BIN
doc/html/images/next.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
doc/html/images/note.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

BIN
doc/html/images/prev.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
doc/html/images/smiley.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

BIN
doc/html/images/tip.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

BIN
doc/html/images/up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
doc/html/images/warning.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

59
doc/html/index.html Normal file
View File

@ -0,0 +1,59 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Predef 1.0</title>
<link rel="stylesheet" href="boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="Predef 1.0">
<link rel="next" href="predef/introduction.html" title="Introduction">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav"><a accesskey="n" href="predef/introduction.html"><img src="images/next.png" alt="Next"></a></div>
<div class="article">
<div class="titlepage">
<div>
<div><h2 class="title">
<a name="predef"></a>Predef 1.0</h2></div>
<div><div class="authorgroup"><div class="author"><h3 class="author">
<span class="firstname">Rene</span> <span class="surname">Rivera</span>
</h3></div></div></div>
<div><p class="copyright">Copyright &#169; 2005 Rene Rivera</p></div>
<div><p class="copyright">Copyright &#169; 2008-2013 Redshift Software Inc</p></div>
<div><div class="legalnotice">
<a name="predef.legal"></a><p>
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" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></div>
</div>
<hr>
</div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl class="toc">
<dt><span class="section"><a href="predef/introduction.html">Introduction</a></span></dt>
<dt><span class="section"><a href="predef/using_the_predefs.html">Using the predefs</a></span></dt>
<dt><span class="section"><a href="predef/adding_new_predefs.html">Adding new predefs</a></span></dt>
<dt><span class="section"><a href="predef/reference.html">Reference</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="predef/reference/boost_arch_architecture_macros.html"><code class="computeroutput"><span class="identifier">BOOST_ARCH</span></code> architecture macros</a></span></dt>
<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/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>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: July 28, 2013 at 17:05:40 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
<div class="spirit-nav"><a accesskey="n" href="predef/introduction.html"><img src="images/next.png" alt="Next"></a></div>
</body>
</html>

23
doc/html/minimal.css Normal file
View File

@ -0,0 +1,23 @@
/*
<20> Copyright Beman Dawes, 2007
Distributed under the Boost Software License, Version 1.0.
See www.boost.org/LICENSE_1_0.txt
*/
body {
font-family: sans-serif;
margin: 1em;
max-width : 8.5in;
}
table { margin: 0.5em; }
pre { background-color:#D7EEFF }
ins { background-color:#A0FFA0 }
del { background-color:#FFA0A0 }
/*** end ***/

View File

@ -0,0 +1,49 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Acknoledgements</title>
<link rel="stylesheet" href="../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Predef 1.0">
<link rel="up" href="../index.html" title="Predef 1.0">
<link rel="prev" href="reference/version_definition_macros.html" title="Version definition macros">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">
<a accesskey="p" href="reference/version_definition_macros.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="predef.acknoledgements"></a><a class="link" href="acknoledgements.html" title="Acknoledgements">Acknoledgements</a>
</h2></div></div></div>
<p>
The comprehensiveness of this library would not be possible without the existance
of the indispensible resource that is the <a href="http://sourceforge.net/p/predef/" target="_top">Pre-defined
C/C++ Compiler Macros</a> Project. It was, and continues to be, the primary
source of the definitions that make up this library. Thanks to Bjorn Reese
and all the volunteers that make that resource possible.
</p>
<p>
This library would be an incoherent mess if it weren't for Boost community
that provided invaluable feedback for the eight years that it took to polish
into a useable form. In particular I would like to thank: Mathias Gaunard,
Robert Stewart, Jo&#235;l Lamotte, Lars Viklund, Nathan Ridge, Artyom Beilis, Joshua
Boyce, Gottlob Frege, Thomas Heller, Edward Diener, Dave Abrahams, Iain Denniston,
Dan Price, Ioannis Papadopoulos, and Robert Ramey. And thanks to Joel Falcou
for managing the review of this library.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2005 Rene Rivera<br>Copyright &#169; 2008-2013 Redshift Software Inc<p>
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" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="reference/version_definition_macros.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,206 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Adding new predefs</title>
<link rel="stylesheet" href="../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Predef 1.0">
<link rel="up" href="../index.html" title="Predef 1.0">
<link rel="prev" href="using_the_predefs.html" title="Using the predefs">
<link rel="next" href="reference.html" title="Reference">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">
<a accesskey="p" href="using_the_predefs.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="reference.html"><img src="../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="predef.adding_new_predefs"></a><a class="link" href="adding_new_predefs.html" title="Adding new predefs">Adding new predefs</a>
</h2></div></div></div>
<p>
We know that a library like this one will be an eternal work-in-progress. And
as such we expect, and look forward to, others contributing corrections and
additions to the predefs. With that in mind we need to keep a consistent way
of defining the new predefs. Hence all current, and future, predefs follow
the same structure and requirements.
</p>
<h4>
<a name="predef.adding_new_predefs.h0"></a>
<span class="phrase"><a name="predef.adding_new_predefs.requirements_of_the_header"></a></span><a class="link" href="adding_new_predefs.html#predef.adding_new_predefs.requirements_of_the_header">Requirements
of the header</a>
</h4>
<p>
All predefs need to follow a set of requirements:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
The headers must use the Boost Software License.
</li>
<li class="listitem">
The predef must, by default, be defined as <code class="computeroutput"><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">0</span><span class="special">)</span></code>.
</li>
<li class="listitem">
The predef must be redefined to a non-zero value once detected.
</li>
<li class="listitem">
The predef must, by default, be defined to <code class="computeroutput"><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></code> when the predef is detected.
</li>
<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>
</ul></div>
<p>
And there are some extra guidelines that predef headers should follow:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
The detection should avoid including extra headers that might otherwise
not be included by default.
</li>
<li class="listitem">
If the detection must include a header, prefer guarding it within the detection
if possible.
</li>
<li class="listitem">
If the detection must include headers unconditionally, and has a choice
of headers to include, prefer the ones with the least impact. I.e. include
the one with the minimal set of definitions and other dependencies.
</li>
</ul></div>
<h4>
<a name="predef.adding_new_predefs.h1"></a>
<span class="phrase"><a name="predef.adding_new_predefs.structure_of_the_header"></a></span><a class="link" href="adding_new_predefs.html#predef.adding_new_predefs.structure_of_the_header">Structure
of the header</a>
</h4>
<p>
For general consistency it's suggested that new predef headers follow the structure
below, as current predef headers do. First we have the copyright and license
statement, followed by the include guard:
</p>
<pre class="programlisting"><span class="comment">/*
Copyright Jane Doe YYYY
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/</span>
<span class="preprocessor">#ifndef</span> <span class="identifier">BOOST_PREDEF_category_tag_H</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_PREDEF_category_tag_H</span>
</pre>
<p>
Depending on how you are defining the predef you will at minimum have to include
the <code class="computeroutput"><span class="identifier">version_number</span><span class="special">.</span><span class="identifier">h</span></code> header. But you might also want to include
the <code class="computeroutput"><span class="identifier">make</span><span class="special">.</span><span class="identifier">h</span></code> header for the version number decomposing
utility macros:
</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">version_number</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">boost</span><span class="special">/</span><span class="identifier">predef</span><span class="special">/</span><span class="identifier">make</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span>
</pre>
<p>
The Predef library uses Quickbook for documentation and for the individual
predefs to appear in the reference section we add in-code documentation followed
by the zero-value default definition of the predef macro. We strongly recommend
this particular placement of the documentation and default definition because
some development environments automatically interpret this and provide in-line
help for the macro. In particular this works for the popular Eclipse IDE:
</p>
<pre class="programlisting"><span class="comment">/*`
[heading `BOOST_category_tag`]
Documentation about what is detected.
*/</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">0</span><span class="special">)</span>
</pre>
<p>
Next is the detection and definition of the particular predef. The structure
for this is to do a single overall check (<code class="computeroutput"><span class="identifier">condition_a</span></code>)
and place further version detection inside this. The first action inside the
overall check is to "<code class="computeroutput"><span class="preprocessor">#undef</span>
<span class="identifier">BOOST_category_tag</span></code>" which undefines
the zero-value default. The rest is up to the you how to do the checks for
defining the version. But at minimum it must "<code class="computeroutput"><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></code>" as the fallback to minimally indicate
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">#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
predef to the test system. This declaration is empty for regular use. And during
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="identifier">BOOST_category_tag_NAME</span><span class="special">)</span>
</pre>
<p>
And, of course, we last need to close out the include guard:
</p>
<pre class="programlisting"><span class="preprocessor">#endif</span>
</pre>
<h4>
<a name="predef.adding_new_predefs.h2"></a>
<span class="phrase"><a name="predef.adding_new_predefs.using_utility_pattern_macros"></a></span><a class="link" href="adding_new_predefs.html#predef.adding_new_predefs.using_utility_pattern_macros">Using utility
pattern macros</a>
</h4>
<p>
By including:
</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">make</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span>
</pre>
<p>
One will get a set of utlity macros to decompose common version macros as defined
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_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,
hexadecimal decomposition, and date decomposition. They follow the format of
using "N" for decimal, "F" for hexadecimal, and "Y",
"M", "D" for dates.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2005 Rene Rivera<br>Copyright &#169; 2008-2013 Redshift Software Inc<p>
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" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="using_the_predefs.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="reference.html"><img src="../images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,205 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Introduction</title>
<link rel="stylesheet" href="../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Predef 1.0">
<link rel="up" href="../index.html" title="Predef 1.0">
<link rel="prev" href="../index.html" title="Predef 1.0">
<link rel="next" href="using_the_predefs.html" title="Using the predefs">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">
<a accesskey="p" href="../index.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="using_the_predefs.html"><img src="../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<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, 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>
<span class="phrase"><a name="predef.introduction.proposal"></a></span><a class="link" href="introduction.html#predef.introduction.proposal">Proposal</a>
</h4>
<p>
The idea is to define a set of macros to identify compilers and consistently
represent their version. This includes:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
A unique BOOST_VERSION_NUMBER(major,minor,patch) macro to specify version
numbers (unfortunately, the name BOOST_VERSION is already taken to designate
the version number of boost itself).
</li>
<li class="listitem">
A compiler identification macro, suitable for use in <code class="computeroutput"><span class="preprocessor">#if</span></code>/<code class="computeroutput"><span class="preprocessor">#elif</span></code> directives, for each of the supported
compilers. All macros would be defined, regardless of the compiler. The
one macro corresponding to the compiler being used would be defined, in
terms of BOOST_VERSION_NUMBER, to carry the exact compiler version. All
other macros would expand to an expression evaluating to false (for instance,
the token 0) to indicate that the corresponding compiler is not present.
</li>
<li class="listitem">
"Null values" could be set, for all macros, in boost/config/select_compiler.hpp;
then, for each compiler the corresponding identification macro would be
#undef and re-#defined in the corresponding boost/compiler/(cc).hpp; however
in the context of the Boost.Config infrastructure using a "prefix"
header (to be introduced) or boost/config/suffix.hpp is a better solution.
</li>
</ul></div>
<h4>
<a name="predef.introduction.h1"></a>
<span class="phrase"><a name="predef.introduction.current_library"></a></span><a class="link" href="introduction.html#predef.introduction.current_library">Current
Library</a>
</h4>
<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, 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.
</li>
<li class="listitem">
The headers are usable from multiple languages, that support the C preprocessor.
In particular C++, C, Objective C, and Objective C++.
</li>
</ul></div>
<h4>
<a name="predef.introduction.h2"></a>
<span class="phrase"><a name="predef.introduction.design_choices"></a></span><a class="link" href="introduction.html#predef.introduction.design_choices">Design
choices</a>
</h4>
<p>
An important design choice concerns how to represent compiler versions by means
of a single integer number suitable for use in preprocessing directives. Let's
do some calculation. The "basic" signed type for preprocessing constant-expressions
is long in C90 (and C++, as of 2006) and intmax_t in C99. The type long shall
at least be able to represent the number <code class="literal">+2 147 483 647</code>.
This means the most significant digit can only be 0, 1 or 2; and if we want
all decimal digits to be able to vary between 0 and 9, the largest range we
can consider is <code class="literal">[0, 999 999 999]</code>. Distributing evenly, this
means 3 decimal digits for each version number part.
</p>
<p>
So we can:
</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
use an uneven distribution or
</li>
<li class="listitem">
use more bits (a larger type) or
</li>
<li class="listitem">
use 3/3/3 and have the particular compiler/platform/stdlib deal with setting
the numbers within the 3-digit range.
</li>
</ol></div>
<p>
It appears relatively safe to go for the first option and set it at 2/2/5.
That covers CodeWarrior and others, which are up to and past 10 for the major
number. Some compilers use the build number in lieu of the patch one; five
digits (which is already reached by VC++ 8) seems a reasonable limit even in
this case.
</p>
<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top"><p>
A 2/2/6 scheme would allow for bigger patch/build numbers at the cost, for
instance, of limiting the major version number to 20 (or, with further constraints,
to 21).
</p></td></tr>
</table></div>
<p>
It might reassure the reader that this decision is actually encoded in one
place in the code; the definition of <code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER</span></code>.
</p>
<h4>
<a name="predef.introduction.h3"></a>
<span class="phrase"><a name="predef.introduction.future_work"></a></span><a class="link" href="introduction.html#predef.introduction.future_work">Future
work</a>
</h4>
<p>
Even though the basics of this library are done, there is much work that can
be done:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Right now we limit the detection of libraries to known built-in predefined
macros, and to guaranteed to exist system and library headers. It might
be interesting to add something like auto-configuration predefs. This way
we can add definitions for user specific libraries and features.
</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. 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
be good to add optionally included headers so that user can get consistent
version number definitions for libraries they use.
</li>
<li class="listitem">
Having a consistent set of version number definitions opens the door to
improving the user level syntax of libraries that do checks against version
numbers. Specifically Boost Config's <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span></code>
macro would benefit from a more readable syntax. As would the <code class="computeroutput"><span class="identifier">BOOST_TESTED_AT</span></code> detail macro.
</li>
<li class="listitem">
And obviously there's lots of work to do in reformulating the existing
Boost libraries to use the Predef library once it's accepted.
</li>
<li class="listitem">
And there's the continuing work of adding definitions for present and future
compilers, platforms, architectures, languages, and libraries.
</li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2005 Rene Rivera<br>Copyright &#169; 2008-2013 Redshift Software Inc<p>
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" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../index.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="using_the_predefs.html"><img src="../images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,44 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Reference</title>
<link rel="stylesheet" href="../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Predef 1.0">
<link rel="up" href="../index.html" title="Predef 1.0">
<link rel="prev" href="adding_new_predefs.html" title="Adding new predefs">
<link rel="next" href="reference/boost_arch_architecture_macros.html" title="BOOST_ARCH architecture macros">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">
<a accesskey="p" href="adding_new_predefs.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="reference/boost_arch_architecture_macros.html"><img src="../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="predef.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="reference/boost_arch_architecture_macros.html"><code class="computeroutput"><span class="identifier">BOOST_ARCH</span></code> architecture macros</a></span></dt>
<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/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>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2005 Rene Rivera<br>Copyright &#169; 2008-2013 Redshift Software Inc<p>
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" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="adding_new_predefs.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="reference/boost_arch_architecture_macros.html"><img src="../images/next.png" alt="Next"></a>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,334 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_LANG language standards macros</title>
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
<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_comp_compiler_macros.html" title="BOOST_COMP compiler macros">
<link rel="next" href="boost_lib_library_macros.html" title="BOOST_LIB library macros">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">
<a accesskey="p" href="boost_comp_compiler_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="boost_lib_library_macros.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="predef.reference.boost_lang_language_standards_ma"></a><a class="link" href="boost_lang_language_standards_ma.html" title="BOOST_LANG language standards macros"><code class="computeroutput"><span class="identifier">BOOST_LANG</span></code> language standards macros</a>
</h3></div></div></div>
<h5>
<a name="predef.reference.boost_lang_language_standards_ma.h0"></a>
<span class="phrase"><a name="predef.reference.boost_lang_language_standards_ma.boost_lang_objc"></a></span><a class="link" href="boost_lang_language_standards_ma.html#predef.reference.boost_lang_language_standards_ma.boost_lang_objc"><code class="computeroutput"><span class="identifier">BOOST_LANG_OBJC</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/Objective-C" target="_top">Objective-C</a>
language.
</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">__OBJC__</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_lang_language_standards_ma.h1"></a>
<span class="phrase"><a name="predef.reference.boost_lang_language_standards_ma.boost_lang_stdc"></a></span><a class="link" href="boost_lang_language_standards_ma.html#predef.reference.boost_lang_language_standards_ma.boost_lang_stdc"><code class="computeroutput"><span class="identifier">BOOST_LANG_STDC</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/C_(programming_language)" target="_top">Standard
C</a> language. If available, the year of the standard is detected as
YYYY.MM.1 from the Epoc date.
</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">__STDC__</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">__STDC_VERSION__</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lang_language_standards_ma.h2"></a>
<span class="phrase"><a name="predef.reference.boost_lang_language_standards_ma.boost_lang_stdcpp"></a></span><a class="link" href="boost_lang_language_standards_ma.html#predef.reference.boost_lang_language_standards_ma.boost_lang_stdcpp"><code class="computeroutput"><span class="identifier">BOOST_LANG_STDCPP</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/C%2B%2B" target="_top">Standard C++</a> language.
If available, the year of the standard is detected as YYYY.MM.1 from the
Epoc date. Because of the way the C++ standardization process works the defined
version year will not be the commonly known year of the standard. Specifically
the defined versions are:
</p>
<div class="table">
<a name="predef.reference.boost_lang_language_standards_ma.detected_version_number_vs_c_sta"></a><p class="title"><b>Table&#160;1.&#160;Detected Version Number vs. C++ Standard Year</b></p>
<div class="table-contents"><table class="table" summary="Detected Version Number vs. C++ Standard Year">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Detected Version Number
</p>
</th>
<th>
<p>
Standard Year
</p>
</th>
<th>
<p>
C++ Standard
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
27.11.1
</p>
</td>
<td>
<p>
1998
</p>
</td>
<td>
<p>
ISO/IEC 14882:1998
</p>
</td>
</tr>
<tr>
<td>
<p>
41.12.1
</p>
</td>
<td>
<p>
2011
</p>
</td>
<td>
<p>
ISO/IEC 14882:2011
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break"><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">__cplusplus</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">__cplusplus</span></code>
</p>
</td>
<td>
<p>
YYYY.MM.1
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lang_language_standards_ma.h3"></a>
<span class="phrase"><a name="predef.reference.boost_lang_language_standards_ma.boost_lang_stdcppcli"></a></span><a class="link" href="boost_lang_language_standards_ma.html#predef.reference.boost_lang_language_standards_ma.boost_lang_stdcppcli"><code class="computeroutput"><span class="identifier">BOOST_LANG_STDCPPCLI</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/C%2B%2B/CLI" target="_top">Standard C++/CLI</a>
language. If available, the year of the standard is detected as YYYY.MM.1
from the Epoc date.
</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">__cplusplus_cli</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">__cplusplus_cli</span></code>
</p>
</td>
<td>
<p>
YYYY.MM.1
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lang_language_standards_ma.h4"></a>
<span class="phrase"><a name="predef.reference.boost_lang_language_standards_ma.boost_lang_stdecpp"></a></span><a class="link" href="boost_lang_language_standards_ma.html#predef.reference.boost_lang_language_standards_ma.boost_lang_stdecpp"><code class="computeroutput"><span class="identifier">BOOST_LANG_STDECPP</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/Embedded_C%2B%2B" target="_top">Standard Embedded
C++</a> language.
</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">__embedded_cplusplus</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>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2005 Rene Rivera<br>Copyright &#169; 2008-2013 Redshift Software Inc<p>
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" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="boost_comp_compiler_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="boost_lib_library_macros.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,896 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_LIB library macros</title>
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
<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_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">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">
<a accesskey="p" href="boost_lang_language_standards_ma.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="boost_os_operating_system_macros.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="predef.reference.boost_lib_library_macros"></a><a class="link" href="boost_lib_library_macros.html" title="BOOST_LIB library macros"><code class="computeroutput"><span class="identifier">BOOST_LIB</span></code> library macros</a>
</h3></div></div></div>
<h5>
<a name="predef.reference.boost_lib_library_macros.h0"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_c_gnu"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_c_gnu"><code class="computeroutput"><span class="identifier">BOOST_LIB_C_GNU</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/Glibc" target="_top">GNU glibc</a> Standard
C library. Version number available as major, and minor.
</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">__GLIBC__</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">__GNU_LIBRARY__</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">__GLIBC__</span></code>, <code class="computeroutput"><span class="identifier">__GLIBC_MINOR__</span></code>
</p>
</td>
<td>
<p>
V.R.0
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__GNU_LIBRARY__</span></code>,
<code class="computeroutput"><span class="identifier">__GNU_LIBRARY_MINOR__</span></code>
</p>
</td>
<td>
<p>
V.R.0
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lib_library_macros.h1"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_c_uc"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_c_uc"><code class="computeroutput"><span class="identifier">BOOST_LIB_C_UC</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/Uclibc" target="_top">uClibc</a> Standard
C library.
</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">__UCLIBC__</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">__UCLIBC_MAJOR__</span></code>,
<code class="computeroutput"><span class="identifier">__UCLIBC_MINOR__</span></code>,
<code class="computeroutput"><span class="identifier">__UCLIBC_SUBLEVEL__</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lib_library_macros.h2"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_c_vms"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_c_vms"><code class="computeroutput"><span class="identifier">BOOST_LIB_C_VMS</span></code></a>
</h5>
<p>
VMS libc Standard C library. 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">__CRTL_VER</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">__CRTL_VER</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lib_library_macros.h3"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_c_zos"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_c_zos"><code class="computeroutput"><span class="identifier">BOOST_LIB_C_ZOS</span></code></a>
</h5>
<p>
z/OS libc Standard C library. 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">__LIBREL__</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">__LIBREL__</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__TARGET_LIB__</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lib_library_macros.h4"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_cxx"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_cxx"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_CXX</span></code></a>
</h5>
<p>
<a href="http://libcxx.llvm.org/" target="_top">libc++</a> C++ Standard Library.
</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">_LIBCPP_VERSION</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">_LIBCPP_VERSION</span></code>
</p>
</td>
<td>
<p>
V.0.P
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lib_library_macros.h5"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_dinkumware"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_dinkumware"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_DINKUMWARE</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/Dinkumware" target="_top">Dinkumware</a> Standard
C++ Library. If available version number 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">_YVALS</span></code>, <code class="computeroutput"><span class="identifier">__IBMCPP__</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">_CPPLIB_VER</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">_CPPLIB_VER</span></code>
</p>
</td>
<td>
<p>
V.R.0
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lib_library_macros.h6"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_como"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_como"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_COMO</span></code></a>
</h5>
<p>
<a href="http://www.comeaucomputing.com/libcomo/" target="_top">Comeau Computing</a>
Standard C++ Library. Version number available as major.
</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">__LIBCOMO__</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">__LIBCOMO_VERSION__</span></code>
</p>
</td>
<td>
<p>
V.0.0
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lib_library_macros.h7"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_msipl"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_msipl"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_MSIPL</span></code></a>
</h5>
<p>
<a href="http://modena.us/" target="_top">Modena Software Lib++</a> Standard C++
Library.
</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">MSIPL_COMPILE_H</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">__MSIPL_COMPILE_H</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_lib_library_macros.h8"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_msl"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_msl"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_MSL</span></code></a>
</h5>
<p>
<a href="http://www.freescale.com/" target="_top">Metrowerks</a> Standard C++ Library.
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">__MSL_CPP__</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">__MSL__</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">__MSL_CPP__</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__MSL__</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lib_library_macros.h9"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_rw"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_rw"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_RW</span></code></a>
</h5>
<p>
<a href="http://stdcxx.apache.org/" target="_top">Roguewave</a> Standard C++ library.
If available version number 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">__STD_RWCOMPILER_H__</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">_RWSTD_VER</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">_RWSTD_VER</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lib_library_macros.h10"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_sgi"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_sgi"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_SGI</span></code></a>
</h5>
<p>
<a href="http://www.sgi.com/tech/stl/" target="_top">SGI</a> Standard C++ library.
If available version number 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">__STL_CONFIG_H</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">__SGI_STL</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lib_library_macros.h11"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_gnu"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_gnu"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_GNU</span></code></a>
</h5>
<p>
<a href="http://gcc.gnu.org/libstdc++/" target="_top">GNU libstdc++</a> Standard
C++ library. Version number available as year (from 1970), month, and day.
</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">__GLIBCXX__</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">__GLIBCPP__</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">__GLIBCXX__</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__GLIBCPP__</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lib_library_macros.h12"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_stlport"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_stlport"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_STLPORT</span></code></a>
</h5>
<p>
<a href="http://sourceforge.net/projects/stlport/" target="_top">STLport Standard C++</a>
library. 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">__SGI_STL_PORT</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">_STLPORT_VERSION</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">_STLPORT_MAJOR</span></code>,
<code class="computeroutput"><span class="identifier">_STLPORT_MINOR</span></code>,
<code class="computeroutput"><span class="identifier">_STLPORT_PATCHLEVEL</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">_STLPORT_VERSION</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__SGI_STL_PORT</span></code>
</p>
</td>
<td>
<p>
V.R.P
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_lib_library_macros.h13"></a>
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_ibm"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_ibm"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_IBM</span></code></a>
</h5>
<p>
<a href="http://www.ibm.com/software/awdtools/xlcpp/" target="_top">IBM VACPP Standard
C++</a> library.
</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">__IBMCPP__</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>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2005 Rene Rivera<br>Copyright &#169; 2008-2013 Redshift Software Inc<p>
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" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="boost_lang_language_standards_ma.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="boost_os_operating_system_macros.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,84 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Other macros</title>
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
<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="next" href="version_definition_macros.html" title="Version definition macros">
</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="n" href="version_definition_macros.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="predef.reference.other_macros"></a><a class="link" href="other_macros.html" title="Other macros">Other macros</a>
</h3></div></div></div>
<h5>
<a name="predef.reference.other_macros.h0"></a>
<span class="phrase"><a name="predef.reference.other_macros.boost_endian"></a></span><a class="link" href="other_macros.html#predef.reference.other_macros.boost_endian"><code class="computeroutput"><span class="identifier">BOOST_ENDIAN_</span><span class="special">*</span></code></a>
</h5>
<p>
Detection of endian memory ordering. There are four defined macros in this
header that define the various generally possible endian memory orderings:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_ENDIAN_BIG_BYTE</span></code>,
byte-swapped big-endian.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_ENDIAN_BIG_WORD</span></code>,
word-swapped big-endian.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_ENDIAN_LITTLE_BYTE</span></code>,
byte-swapped little-endian.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_ENDIAN_LITTLE_WORD</span></code>,
word-swapped little-endian.
</li>
</ul></div>
<p>
The detection is conservative in that it only identifies endianness that
it knows for certain. In particular bi-endianness is not indicated as is
it not practically possible to determine the endianness from anything but
an operating system provided header. And the currently known headers do not
define that programatic bi-endianness is available.
</p>
<p>
This implementation is a compilation of various publicly available information
and acquired knowledge:
</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
The indispensable documentation of "Pre-defined Compiler Macros"
<a href="http://sourceforge.net/p/predef/wiki/Endianness" target="_top">Endianness</a>.
</li>
<li class="listitem">
The various endian specifications available in the <a href="http://wikipedia.org/" target="_top">Wikipedia</a>
computer architecture pages.
</li>
<li class="listitem">
Generally available searches for headers that define endianness.
</li>
</ol></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2005 Rene Rivera<br>Copyright &#169; 2008-2013 Redshift Software Inc<p>
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" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</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="n" href="version_definition_macros.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,184 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Version definition macros</title>
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
<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="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="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">
<div class="titlepage"><div><div><h3 class="title">
<a name="predef.reference.version_definition_macros"></a><a class="link" href="version_definition_macros.html" title="Version definition macros">Version definition
macros</a>
</h3></div></div></div>
<h5>
<a name="predef.reference.version_definition_macros.h0"></a>
<span class="phrase"><a name="predef.reference.version_definition_macros.boost_version_number"></a></span><a class="link" href="version_definition_macros.html#predef.reference.version_definition_macros.boost_version_number"><code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER</span></code></a>
</h5>
<pre class="programlisting"><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>
</pre>
<p>
Defines standard version numbers, with these properties:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Decimal base whole numbers in the range [0,1000000000). The number range
is designed to allow for a (2,2,5) triplet. Which fits within a 32 bit
value.
</li>
<li class="listitem">
The <code class="computeroutput"><span class="identifier">major</span></code> number can
be in the [0,99] range.
</li>
<li class="listitem">
The <code class="computeroutput"><span class="identifier">minor</span></code> number can
be in the [0,99] range.
</li>
<li class="listitem">
The <code class="computeroutput"><span class="identifier">patch</span></code> number can
be in the [0,99999] range.
</li>
<li class="listitem">
Values can be specified in any base. As the defined value is an constant
expression.
</li>
<li class="listitem">
Value can be directly used in both preprocessor and compiler expressions
for comparison to other similarly defined values.
</li>
<li class="listitem">
The implementation enforces the individual ranges for the major, minor,
and patch numbers. And values over the ranges are truncated (modulo).
</li>
</ul></div>
<h5>
<a name="predef.reference.version_definition_macros.h1"></a>
<span class="phrase"><a name="predef.reference.version_definition_macros.boost_predef_make_macros"></a></span><a class="link" href="version_definition_macros.html#predef.reference.version_definition_macros.boost_predef_make_macros"><code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_</span><span class="special">..</span></code>
macros</a>
</h5>
<p>
These set of macros decompose common vendor version number macros which are
composed version, revision, and patch digits. The naming convention indicates:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
The base of the specified version number. "<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X</span></code>"
for hexadecimal digits, and "<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10</span></code>"
for decimal digits.
</li>
<li class="listitem">
The format of the vendor version number. Where "<code class="computeroutput"><span class="identifier">V</span></code>"
indicates the version digits, "<code class="computeroutput"><span class="identifier">R</span></code>"
indicates the revision digits, "<code class="computeroutput"><span class="identifier">P</span></code>"
indicates the patch digits, and "<code class="computeroutput"><span class="number">0</span></code>"
indicates an ignored digit.
</li>
</ul></div>
<p>
Macros are:
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VRP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VVRP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VRPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VVRR</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VRRPPPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VVRRP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VRRPP000</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VPPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VRP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VRP000</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VRPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VRR</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VRRPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VRR000</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VV00</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VVRR</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VVRRPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VVRR0PP00</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VVRR0PPPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VVRR00PP00</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<h5>
<a name="predef.reference.version_definition_macros.h2"></a>
<span class="phrase"><a name="predef.reference.version_definition_macros.boost_predef_make_date_macros"></a></span><a class="link" href="version_definition_macros.html#predef.reference.version_definition_macros.boost_predef_make_date_macros"><code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_</span><span class="special">*..</span></code>
date macros</a>
</h5>
<p>
Date decomposition macros return a date in the relative to the 1970 Epoch
date. If the month is not available, January 1st is used as the month and
day. If the day is not available, but the month is, the 1st of the month
is used as the day.
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_DATE</span><span class="special">(</span><span class="identifier">Y</span><span class="special">,</span><span class="identifier">M</span><span class="special">,</span><span class="identifier">D</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_YYYYMMDD</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_YYYY</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_YYYYMM</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2005 Rene Rivera<br>Copyright &#169; 2008-2013 Redshift Software Inc<p>
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" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<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>

View File

@ -0,0 +1,203 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Using the predefs</title>
<link rel="stylesheet" href="../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Predef 1.0">
<link rel="up" href="../index.html" title="Predef 1.0">
<link rel="prev" href="introduction.html" title="Introduction">
<link rel="next" href="adding_new_predefs.html" title="Adding new predefs">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">
<a accesskey="p" href="introduction.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="adding_new_predefs.html"><img src="../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="predef.using_the_predefs"></a><a class="link" href="using_the_predefs.html" title="Using the predefs">Using the predefs</a>
</h2></div></div></div>
<p>
To use the automatically defined predefs one needs to only include the single
top-level header:
</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">h</span><span class="special">&gt;</span>
</pre>
<p>
This defines <span class="bold"><strong>all</strong></span> the version macros known
to the library. For each macro it will be defined to either a <span class="emphasis"><em>zero</em></span>
valued expression for when the particular item is not detected, and to a <span class="emphasis"><em>positive</em></span>
value if it is detected. The predef macros fall onto five categories each with
macros of a particular prefix:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<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_COMP_</span></code> for the compiler
one is using.
</li>
<li class="listitem">
<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_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>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top"><p>
The detected definitions are for the configuration one is targeting during
the compile. In particular in a cross-compile this means the target system,
and not the host system.
</p></td></tr>
</table></div>
<p>
One uses the individual definitions to compare against specific versions by
comparing against the <code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER</span></code>
macro. For example, to make a choice based on the version of the GCC C++ compiler
one would:
</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">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="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_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>
<span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<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 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>
<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="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_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>
<span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
And since the predef's are preprocessor definitions the same is possible from
the preprocessor:
</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">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_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>
<span class="preprocessor">#endif</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">"Not GNU GCC."</span>
<span class="preprocessor">#endif</span>
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</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="identifier">the_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>
<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
<code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER</span></code> macro</a>
</h4>
<p>
All the predefs are defined to be a use of the <code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER</span></code>
macro. The macro takes individual major, minor, and patch value expressions:
</p>
<pre class="programlisting"><span class="preprocessor">#define</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="special">...</span>
</pre>
<p>
The arguments are:
</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
Major version number, as a constant value expression in the range [0,99].
</li>
<li class="listitem">
Minor version number, as a constant value expression in the range [0,99].
</li>
<li class="listitem">
Patch-level version number, as a constant value expression in the range
[0,99999].
</li>
</ol></div>
<p>
The ranges for each are "enforced" by the use of a modulo ("%"),
i.e. truncation, as opposed to a clamp. And hence this means that the limits
are enforced only enough to keep from having out-of-range problems. But not
enough to prevent other kinds of problems. Like exceeding the range and getting
false detections, or non-detections. It is up to the individual predefs to
ensure correct usage beyond the range guarantee.
</p>
<p>
The values for the arguments can be any preprocessor valid constant value expression.
Only constant value arithmetic is used in the definition of the <code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER</span></code> macro and in any of
the other predef macros. This means that any allowed base is possible, i.e.
binary, octal, decimal, and hexadecimal. For example:
</p>
<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">MY_APPLICATION_VERSION_NUMBER</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">2</span><span class="special">,</span><span class="number">0xA</span><span class="special">,</span><span class="number">015</span><span class="special">)</span>
</pre>
<p>
Is equivalent to:
</p>
<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">MY_APPLICATION_VERSION_NUMBER</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">2</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">13</span><span class="special">)</span>
</pre>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2005 Rene Rivera<br>Copyright &#169; 2008-2013 Redshift Software Inc<p>
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" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="introduction.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="adding_new_predefs.html"><img src="../images/next.png" alt="Next"></a>
</div>
</body>
</html>

11
doc/html/reference.css Normal file
View File

@ -0,0 +1,11 @@
/*============================================================================
Copyright 2003-2004 Douglas Gregor
Distributed under the Boost Software License, Version 1.0. (See accompany-
ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
============================================================================*/
PRE.synopsis {
background-color: #e0ffff;
border: thin solid blue;
padding: 1em
}

478
doc/predef.qbk Normal file
View File

@ -0,0 +1,478 @@
[article Predef
[quickbook 1.7]
[version 1.0]
[authors [Rivera, Rene]]
[copyright 2005 Rene Rivera, 2008-2013 Redshift Software Inc]
[purpose Identification and specification of predefined macros.]
[license
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
[@http://www.boost.org/LICENSE_1_0.txt])
]
[source-mode c++]
]
[section Introduction]
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.
[heading Proposal]
The idea is to define a set of macros to identify compilers and
consistently represent their version. This includes:
* A unique BOOST_VERSION_NUMBER(major,minor,patch) macro to specify version
numbers (unfortunately, the name BOOST_VERSION is already taken to designate
the version number of boost itself).
* A compiler identification macro, suitable for use in `#if`/`#elif` directives,
for each of the supported compilers. All macros would be defined, regardless
of the compiler. The one macro corresponding to the compiler being used would
be defined, in terms of BOOST_VERSION_NUMBER, to carry the exact compiler
version. All other macros would expand to an expression evaluating to false
(for instance, the token 0) to indicate that the corresponding compiler is not
present.
* "Null values" could be set, for all macros, in
boost/config/select_compiler.hpp; then, for each compiler the corresponding
identification macro would be #undef and re-#defined in the corresponding
boost/compiler/(cc).hpp; however in the context of the Boost.Config
infrastructure using a "prefix" header (to be introduced) or
boost/config/suffix.hpp is a better solution.
[heading Current Library]
The current Predef library is now, both an independent library, and expanded
in scope. It includes detection and definition of architectures, compilers,
languages, libraries, operating systems, and endianness. The key benefits are:
* Version numbers that are always defined so that one doesn't have to guard
with `#ifdef`.
* Guard macros that can be used for `#ifdef` checks.
* All possible definitions are included with the single `#include <boost/predef.h>`
so that it's friendly to precompiled header usage.
* Specific definitions can be included, ex. `#include <boost/predef/os/windows.h>`
for single checks.
* Predefs can be directly used in both preprocessor and compiler expressions
for comparison to other similarly defined values.
* The headers are usable from multiple languages, that support the C preprocessor.
In particular C++, C, Objective C, and Objective C++.
[heading Design choices]
An important design choice concerns how to represent compiler versions by means
of a single integer number suitable for use in preprocessing directives. Let's
do some calculation. The "basic" signed type for preprocessing
constant-expressions is long in C90 (and C++, as of 2006) and intmax_t in C99.
The type long shall at least be able to represent the number [^+2 147 483 647].
This means the most significant digit can only be 0, 1 or 2; and if we want all
decimal digits to be able to vary between 0 and 9, the largest range we can
consider is [^\[0, 999 999 999\]]. Distributing evenly, this means 3 decimal
digits for each version number part.
So we can:
# use an uneven distribution or
# use more bits (a larger type) or
# use 3/3/3 and have the particular compiler/platform/stdlib deal with setting
the numbers within the 3-digit range.
It appears relatively safe to go for the first option and set it at 2/2/5. That
covers CodeWarrior and others, which are up to and past 10 for the major number.
Some compilers use the build number in lieu of the patch one; five digits
(which is already reached by VC++ 8) seems a reasonable limit even in this case.
[note A 2/2/6 scheme would allow for bigger patch/build numbers at the cost,
for instance, of limiting the major version number to 20 (or, with further
constraints, to 21).]
It might reassure the reader that this decision is actually encoded in one place
in the code; the definition of `BOOST_VERSION_NUMBER`.
[heading Future work]
Even though the basics of this library are done, there is much work that can be
done:
* Right now we limit the detection of libraries to known built-in predefined
macros, and to guaranteed to exist system and library headers. It might be
interesting to add something like auto-configuration predefs. This way we can
add definitions for user specific libraries and features.
* Along with the above, it might be good to add some user control as to which
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.
* Additionally, even if there is no auto-configure style option.. It would be
good to add optionally included headers so that user can get consistent
version number definitions for libraries they use.
* Having a consistent set of version number definitions opens the door to
improving the user level syntax of libraries that do checks against version
numbers. Specifically Boost Config's `BOOST_WORKAROUND` macro would benefit
from a more readable syntax. As would the `BOOST_TESTED_AT` detail macro.
* And obviously there's lots of work to do in reformulating the existing
Boost libraries to use the Predef library once it's accepted.
* And there's the continuing work of adding definitions for present and
future compilers, platforms, architectures, languages, and libraries.
[endsect] [/Introduction]
[section Using the predefs]
To use the automatically defined predefs one needs to only include the
single top-level header:
``
#include <boost/predef.h>
``
This defines [*all] the version macros known to the library. For each
macro it will be defined to either a /zero/ valued expression for when
the particular item is not detected, and to a /positive/ value if it
is detected. The predef macros fall onto five categories each with
macros of a particular prefix:
* `BOOST_ARCH_`for system/CPU architecture one is compiling for.
* `BOOST_COMP_` for the compiler one is using.
* `BOOST_LANG_` for language standards one is compiling against.
* `BOOST_LIB_C_` and `BOOST_LIB_STD_` for the C and C++ standard library
in use.
* `BOOST_OS_` for the operating system we are compiling to.
* `BOOST_ENDIAN_` for endianness of the os and architecture combination.
[note The detected definitions are for the configuration one is targeting
during the compile. In particular in a cross-compile this means the target
system, and not the host system.]
One uses the individual definitions to compare against specific versions
by comparing against the `BOOST_VERSION_NUMBER` macro. For example, to make
a choice based on the version of the GCC C++ compiler one would:
``
#include <boost/predef.h>
#include <iostream>
int main()
{
if (BOOST_COMP_GNUC >= BOOST_VERSION_NUMBER(4,0,0))
std::cout << "GCC compiler is at least version 4.0.0" << std::endl;
else
std::cout << "GCC compiler is at older than version 4.0.0, or not a GCC compiler" << std::endl;
return 0;
}
``
As you might notice above the `else` clause also covers the case where
the particular compiler is not detected. 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:
``
#include <boost/predef.h>
#include <iostream>
int main()
{
if (BOOST_COMP_GNUC)
std::cout << "This is GNU GCC!" << std::endl;
else
std::cout << "Not GNU GCC." << std::endl;
return 0;
}
``
And since the predef's are preprocessor definitions the same is possible
from the preprocessor:
``
#include <boost/predef.h>
#include <iostream>
#if BOOST_COMP_GNUC
#if BOOST_COMP_GNUC >= BOOST_VERSION_NUMBER(4,0,0)
const char * the_compiler = "GNU GCC, of at least version 4."
#else
const char * the_compiler = "GNU GCC, less than version 4."
#endif
#else
const char * the_compiler = "Not GNU GCC."
#endif
int main()
{
std::cout << the_compiler << std::endl;
return 0;
}
``
In addition, for each version macro defined there is a
`*_AVAILABLE` macro defined only when the particular aspect is
detected. I.e. a definition equivalent to:
``
#if BOOST_PREDEF_ABC
#define BOOST_PREDEF_ABC_AVAILABLE
#endif
``
Also for each aspect there is a macro defined with a descriptive
name of what the detection is.
[heading Using the `BOOST_VERSION_NUMBER` macro]
All the predefs are defined to be a use of the `BOOST_VERSION_NUMBER` macro.
The macro takes individual major, minor, and patch value expressions:
``
#define BOOST_VERSION_NUMBER( major, minor, patch ) ...
``
The arguments are:
# Major version number, as a constant value expression in the range [0,99].
# Minor version number, as a constant value expression in the range [0,99].
# Patch-level version number, as a constant value expression in the
range [0,99999].
The ranges for each are "enforced" by the use of a modulo ("%"), i.e. truncation,
as opposed to a clamp. And hence this means that the limits are enforced only
enough to keep from having out-of-range problems. But not enough to prevent
other kinds of problems. Like exceeding the range and getting false detections,
or non-detections. It is up to the individual predefs to ensure correct
usage beyond the range guarantee.
The values for the arguments can be any preprocessor valid constant value expression.
Only constant value arithmetic is used in the definition of the `BOOST_VERSION_NUMBER`
macro and in any of the other predef macros. This means that any allowed base is
possible, i.e. binary, octal, decimal, and hexadecimal. For example:
``
#define MY_APPLICATION_VERSION_NUMBER BOOST_VERSION_NUMBER(2,0xA,015)
``
Is equivalent to:
``
#define MY_APPLICATION_VERSION_NUMBER BOOST_VERSION_NUMBER(2,10,13)
``
[endsect]
[section Adding new predefs]
We know that a library like this one will be an eternal work-in-progress. And
as such we expect, and look forward to, others contributing corrections and
additions to the predefs. With that in mind we need to keep a consistent way
of defining the new predefs. Hence all current, and future, predefs follow
the same structure and requirements.
[heading Requirements of the header]
All predefs need to follow a set of requirements:
* The headers must use the Boost Software License.
* The predef must, by default, be defined as `BOOST_VERSION_NUMBER(0,0,0)`.
* The predef must be redefined to a non-zero value once detected.
* The predef must, by default, be defined to `BOOST_VERSION_NUMBER(0,0,1)`
when the predef is detected.
* If possible, the predef will be defined as the version number detected.
* The predef must define `*_AVAILABLE` macros.
* The predef must define a symbolic constant string name macro.
* The predef must declare itself, after being defined, for the testing
system.
And there are some extra guidelines that predef headers should follow:
* The detection should avoid including extra headers that might otherwise
not be included by default.
* If the detection must include a header, prefer guarding it within the
detection if possible.
* If the detection must include headers unconditionally, and has a choice
of headers to include, prefer the ones with the least impact. I.e.
include the one with the minimal set of definitions and other
dependencies.
[heading Structure of the header]
For general consistency it's suggested that new predef headers follow the
structure below, as current predef headers do. First we have the copyright
and license statement, followed by the include guard:
``
/*
Copyright Jane Doe YYYY
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_category_tag_H
#define BOOST_PREDEF_category_tag_H
``
Depending on how you are defining the predef you will at minimum have
to include the `version_number.h` header. But you might also want to
include the `make.h` header for the version number decomposing utility
macros:
``
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
``
The Predef library uses Quickbook for documentation and for the
individual predefs to appear in the reference section we add in-code
documentation followed by the zero-value default definition of the
predef macro. We strongly recommend this particular placement of the
documentation and default definition because some development
environments automatically interpret this and provide in-line help
for the macro. In particular this works for the popular Eclipse IDE:
``
/*`
[heading `BOOST_category_tag`]
Documentation about what is detected.
*/
#define BOOST_category_tag BOOST_VERSION_NUMBER(0,0,0)
``
Next is the detection and definition of the particular predef. The
structure for this is to do a single overall check (`condition_a`) and
place further version detection inside this. The first action inside
the overall check is to "`#undef BOOST_category_tag`" which undefines
the zero-value default. The rest is up to the you how to do the checks
for defining the version. But at minimum it must
"`#define BOOST_category_tag BOOST_VERSION_NUMBER(0,0,1)`" as the fallback
to minimally indicate that the predef was detected:
``
#if (condition_a)
# undef BOOST_category_tag
# if (condition_b)
# define BOOST_category_tag BOOST_VERSION_NUMBER(major,minor,patch)
# else
# define BOOST_category_tag BOOST_VERSION_NUMBER(0,0,1)
# endif
#endif
``
We also need to provide the `*_AVAILABLE` versions of the predef. And
for convenience we also want to provide a `*_NAME` macro:
``
#if BOOST_category_tag
# define BOOST_category_tag_AVAILABLE
#endif
#define BOOST_catagory_tag_NAME "Name"
``
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 predef to the test system. This declaration is empty for
regular use. And during the test programs they expand out specially
to create informational output:
``
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_category_tag,BOOST_category_tag_NAME)
``
And, of course, we last need to close out the include guard:
``
#endif
``
[heading Using utility pattern macros]
By including:
``
#include <boost/predef/make.h>
``
One will get a set of utlity macros to decompose common version
macros as defined by compilers. For example the EDG compiler
uses a simple 3-digit version macro (M,N,P). It can be decomesed
and defined as:
``
#define BOOST_CCOMP_EDG BOOST_PREDEF_MAKE_N_N_N(__EDG_VERSION__)
``
The decomposition macros are split into three types: decimal
decomposition, hexadecimal decomposition, and date decomposition.
They follow the format of using "N" for decimal, "F" for hexadecimal,
and "Y", "M", "D" for dates.
[endsect]
[def __predef_symbol__ Symbol]
[def __predef_version__ Version]
[def __predef_detection__ *detection*]
[section Reference]
[section `BOOST_ARCH` architecture macros]
[include ../include/boost/predef/architecture/*.h]
[include ../include/boost/predef/architecture/x86/*.h]
[endsect]
[section `BOOST_COMP` compiler macros]
[include ../include/boost/predef/compiler/*.h]
[endsect]
[section `BOOST_LANG` language standards macros]
[include ../include/boost/predef/language/*.h]
[endsect]
[section `BOOST_LIB` library macros]
[include ../include/boost/predef/library/c/*.h]
[include ../include/boost/predef/library/std/*.h]
[endsect]
[section `BOOST_OS` operating system macros]
[include ../include/boost/predef/os/*.h]
[include ../include/boost/predef/os/bsd/*.h]
[endsect]
[section Other macros]
[include ../include/boost/predef/other/*.h]
[endsect]
[section Version definition macros]
[include ../include/boost/predef/version_number.h]
[include ../include/boost/predef/make.h]
[endsect]
[endsect]
[section Acknoledgements]
The comprehensiveness of this library would not be
possible without the existance of the indispensible
resource that is the
[@http://sourceforge.net/p/predef/ Pre-defined C/C++ Compiler Macros]
Project. It was, and continues to be, the primary source
of the definitions that make up this library. Thanks
to Bjorn Reese and all the volunteers that make that
resource possible.
This library would be an incoherent mess if it weren't for
Boost community that provided invaluable feedback for the
eight years that it took to polish into a useable form.
In particular I would like to thank: Mathias Gaunard,
Robert Stewart, Joël Lamotte, Lars Viklund, Nathan Ridge,
Artyom Beilis, Joshua Boyce, Gottlob Frege, Thomas Heller,
Edward Diener, Dave Abrahams, Iain Denniston, Dan Price,
Ioannis Papadopoulos, and Robert Ramey. And thanks to
Joel Falcou for managing the review of this library.
[endsect]

View File

@ -0,0 +1,30 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_H
#define BOOST_PREDEF_ARCHITECTURE_H
#include <boost/predef/architecture/alpha.h>
#include <boost/predef/architecture/arm.h>
#include <boost/predef/architecture/blackfin.h>
#include <boost/predef/architecture/convex.h>
#include <boost/predef/architecture/ia64.h>
#include <boost/predef/architecture/m68k.h>
#include <boost/predef/architecture/mips.h>
#include <boost/predef/architecture/parisc.h>
#include <boost/predef/architecture/ppc.h>
#include <boost/predef/architecture/pyramid.h>
#include <boost/predef/architecture/rs6k.h>
#include <boost/predef/architecture/sparc.h>
#include <boost/predef/architecture/superh.h>
#include <boost/predef/architecture/sys370.h>
#include <boost/predef/architecture/sys390.h>
#include <boost/predef/architecture/x86.h>
#include <boost/predef/architecture/z.h>
/*#include <boost/predef/architecture/.h>*/
#endif

View File

@ -0,0 +1,60 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_ALPHA_H
#define BOOST_PREDEF_ARCHITECTURE_ALPHA_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_ALPHA`]
[@http://en.wikipedia.org/wiki/DEC_Alpha DEC Alpha] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__alpha__`] [__predef_detection__]]
[[`__alpha`] [__predef_detection__]]
[[`_M_ALPHA`] [__predef_detection__]]
[[`__alpha_ev4__`] [4.0.0]]
[[`__alpha_ev5__`] [5.0.0]]
[[`__alpha_ev6__`] [6.0.0]]
]
*/
#define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__alpha__) || defined(__alpha) || \
defined(_M_ALPHA)
# undef BOOST_ARCH_ALPHA
# if !defined(BOOST_ARCH_ALPHA) && defined(__alpha_ev4__)
# define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER(4,0,0)
# endif
# if !defined(BOOST_ARCH_ALPHA) && defined(__alpha_ev5__)
# define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER(5,0,0)
# endif
# if !defined(BOOST_ARCH_ALPHA) && defined(__alpha_ev6__)
# define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER(6,0,0)
# endif
# if !defined(BOOST_ARCH_ALPHA)
# define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_ARCH_ALPHA
# define BOOST_ARCH_ALPHA_AVAILABLE
#endif
#define BOOST_ARCH_ALPHA_NAME "DEC Alpha"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_ALPHA,BOOST_ARCH_ALPHA_NAME)
#endif

View File

@ -0,0 +1,58 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_ARM_H
#define BOOST_PREDEF_ARCHITECTURE_ARM_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_ARM`]
[@http://en.wikipedia.org/wiki/ARM_architecture ARM] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__arm__`] [__predef_detection__]]
[[`__thumb__`] [__predef_detection__]]
[[`__TARGET_ARCH_ARM`] [__predef_detection__]]
[[`__TARGET_ARCH_THUMB`] [__predef_detection__]]
[[`__TARGET_ARCH_ARM`] [V.0.0]]
[[`__TARGET_ARCH_THUMB`] [V.0.0]]
]
*/
#define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__arm__) || defined(__thumb__) || \
defined(__TARGET_ARCH_ARM) || defined(__TARGET_ARCH_THUMB)
# undef BOOST_ARCH_ARM
# if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_ARM)
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_ARM,0,0)
# endif
# if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_THUMB)
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_THUMB,0,0)
# endif
# if !defined(BOOST_ARCH_ARM)
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_ARCH_ARM
# define BOOST_ARCH_ARM_AVAILABLE
#endif
#define BOOST_ARCH_ARM_NAME "ARM"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_ARM,BOOST_ARCH_ARM_NAME)
#endif

View File

@ -0,0 +1,47 @@
/*
Copyright Redshift Software Inc 2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_BLACKFIN_H
#define BOOST_PREDEF_ARCHITECTURE_BLACKFIN_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_BLACKFIN`]
Blackfin Processors from Analog Devices.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__bfin__`] [__predef_detection__]]
[[`__BFIN__`] [__predef_detection__]]
[[`bfin`] [__predef_detection__]]
[[`BFIN`] [__predef_detection__]]
]
*/
#define BOOST_ARCH_BLACKFIN BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__bfin__) || defined(__BFIN__) || \
defined(bfin) || defined(BFIN)
# undef BOOST_ARCH_BLACKFIN
# define BOOST_ARCH_BLACKFIN BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_ARCH_BLACKFIN
# define BOOST_ARCH_BLACKFIN_AVAILABLE
#endif
#define BOOST_ARCH_BLACKFIN_NAME "Blackfin"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_BLACKFIN,BOOST_ARCH_BLACKFIN_NAME)
#endif

View File

@ -0,0 +1,67 @@
/*
Copyright Redshift Software Inc 2011-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_CONVEX_H
#define BOOST_PREDEF_ARCHITECTURE_CONVEX_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_CONVEX`]
[@http://en.wikipedia.org/wiki/Convex_Computer Convex Computer] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__convex__`] [__predef_detection__]]
[[`__convex_c1__`] [1.0.0]]
[[`__convex_c2__`] [2.0.0]]
[[`__convex_c32__`] [3.2.0]]
[[`__convex_c34__`] [3.4.0]]
[[`__convex_c38__`] [3.8.0]]
]
*/
#define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__convex__)
# undef BOOST_ARCH_CONVEX
# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c1__)
# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(1,0,0)
# endif
# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c2__)
# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(2,0,0)
# endif
# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c32__)
# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(3,2,0)
# endif
# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c34__)
# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(3,4,0)
# endif
# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c38__)
# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(3,8,0)
# endif
# if !defined(BOOST_ARCH_CONVEX)
# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_ARCH_CONVEX
# define BOOST_ARCH_CONVEX_AVAILABLE
#endif
#define BOOST_ARCH_CONVEX_NAME "Convex Computer"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_CONVEX,BOOST_ARCH_CONVEX_NAME)
#endif

View File

@ -0,0 +1,49 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_IA64_H
#define BOOST_PREDEF_ARCHITECTURE_IA64_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_IA64`]
[@http://en.wikipedia.org/wiki/Ia64 Intel Itanium 64] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__ia64__`] [__predef_detection__]]
[[`_IA64`] [__predef_detection__]]
[[`__IA64__`] [__predef_detection__]]
[[`__ia64`] [__predef_detection__]]
[[`_M_IA64`] [__predef_detection__]]
[[`__itanium__`] [__predef_detection__]]
]
*/
#define BOOST_ARCH_IA64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__ia64__) || defined(_IA64) || \
defined(__IA64__) || defined(__ia64) || \
defined(_M_IA64) || defined(__itanium__)
# undef BOOST_ARCH_IA64
# define BOOST_ARCH_IA64 BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_ARCH_IA64
# define BOOST_ARCH_IA64_AVAILABLE
#endif
#define BOOST_ARCH_IA64_NAME "Intel Itanium 64"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_IA64,BOOST_ARCH_IA64_NAME)
#endif

View File

@ -0,0 +1,83 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_M68K_H
#define BOOST_PREDEF_ARCHITECTURE_M68K_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_M68K`]
[@http://en.wikipedia.org/wiki/M68k Motorola 68k] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__m68k__`] [__predef_detection__]]
[[`M68000`] [__predef_detection__]]
[[`__mc68060__`] [6.0.0]]
[[`mc68060`] [6.0.0]]
[[`__mc68060`] [6.0.0]]
[[`__mc68040__`] [4.0.0]]
[[`mc68040`] [4.0.0]]
[[`__mc68040`] [4.0.0]]
[[`__mc68030__`] [3.0.0]]
[[`mc68030`] [3.0.0]]
[[`__mc68030`] [3.0.0]]
[[`__mc68020__`] [2.0.0]]
[[`mc68020`] [2.0.0]]
[[`__mc68020`] [2.0.0]]
[[`__mc68010__`] [1.0.0]]
[[`mc68010`] [1.0.0]]
[[`__mc68010`] [1.0.0]]
[[`__mc68000__`] [0.0.1]]
[[`mc68000`] [0.0.1]]
[[`__mc68000`] [0.0.1]]
]
*/
#define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__m68k__) || defined(M68000)
# undef BOOST_ARCH_M68K
# if !defined(BOOST_ARCH_M68K) && (defined(__mc68060__) || defined(mc68060) || defined(__mc68060))
# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(6,0,0)
# endif
# if !defined(BOOST_ARCH_M68K) && (defined(__mc68040__) || defined(mc68040) || defined(__mc68040))
# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(4,0,0)
# endif
# if !defined(BOOST_ARCH_M68K) && (defined(__mc68030__) || defined(mc68030) || defined(__mc68030))
# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(3,0,0)
# endif
# if !defined(BOOST_ARCH_M68K) && (defined(__mc68020__) || defined(mc68020) || defined(__mc68020))
# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(2,0,0)
# endif
# if !defined(BOOST_ARCH_M68K) && (defined(__mc68010__) || defined(mc68010) || defined(__mc68010))
# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(1,0,0)
# endif
# if !defined(BOOST_ARCH_M68K) && (defined(__mc68000__) || defined(mc68000) || defined(__mc68000))
# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_AVAILABLE
# endif
# if !defined(BOOST_ARCH_M68K)
# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_ARCH_M68K
# define BOOST_ARCH_M68K_AVAILABLE
#endif
#define BOOST_ARCH_M68K_NAME "Motorola 68k"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_M68K,BOOST_ARCH_M68K_NAME)
#endif

View File

@ -0,0 +1,74 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_MIPS_H
#define BOOST_PREDEF_ARCHITECTURE_MIPS_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_MIPS`]
[@http://en.wikipedia.org/wiki/MIPS_architecture MIPS] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__mips__`] [__predef_detection__]]
[[`__mips`] [__predef_detection__]]
[[`__MIPS__`] [__predef_detection__]]
[[`__mips`] [V.0.0]]
[[`_MIPS_ISA_MIPS1`] [1.0.0]]
[[`_R3000`] [1.0.0]]
[[`_MIPS_ISA_MIPS2`] [2.0.0]]
[[`__MIPS_ISA2__`] [2.0.0]]
[[`_R4000`] [2.0.0]]
[[`_MIPS_ISA_MIPS3`] [3.0.0]]
[[`__MIPS_ISA3__`] [3.0.0]]
[[`_MIPS_ISA_MIPS4`] [4.0.0]]
[[`__MIPS_ISA4__`] [4.0.0]]
]
*/
#define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__mips__) || defined(__mips) || \
defined(__MIPS__)
# undef BOOST_ARCH_MIPS
# if !defined(BOOST_ARCH_MIPS) && (defined(__mips))
# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(__mips,0,0)
# endif
# if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS1) || defined(_R3000))
# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(1,0,0)
# endif
# if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS2) || defined(__MIPS_ISA2__) || defined(_R4000))
# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(2,0,0)
# endif
# if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS3) || defined(__MIPS_ISA3__))
# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(3,0,0)
# endif
# if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS4) || defined(__MIPS_ISA4__))
# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(4,0,0)
# endif
# if !defined(BOOST_ARCH_MIPS)
# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_ARCH_MIPS
# define BOOST_ARCH_MIPS_AVAILABLE
#endif
#define BOOST_ARCH_MIPS_NAME "MIPS"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_MIPS,BOOST_ARCH_MIPS_NAME)
#endif

View File

@ -0,0 +1,65 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_PARISC_H
#define BOOST_PREDEF_ARCHITECTURE_PARISC_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_PARISK`]
[@http://en.wikipedia.org/wiki/PA-RISC_family HP/PA RISC] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__hppa__`] [__predef_detection__]]
[[`__hppa`] [__predef_detection__]]
[[`__HPPA__`] [__predef_detection__]]
[[`_PA_RISC1_0`] [1.0.0]]
[[`_PA_RISC1_1`] [1.1.0]]
[[`__HPPA11__`] [1.1.0]]
[[`__PA7100__`] [1.1.0]]
[[`_PA_RISC2_0`] [2.0.0]]
[[`__RISC2_0__`] [2.0.0]]
[[`__HPPA20__`] [2.0.0]]
[[`__PA8000__`] [2.0.0]]
]
*/
#define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__hppa__) || defined(__hppa) || defined(__HPPA__)
# undef BOOST_ARCH_PARISC
# if !defined(BOOST_ARCH_PARISC) && (defined(_PA_RISC1_0))
# define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER(1,0,0)
# endif
# if !defined(BOOST_ARCH_PARISC) && (defined(_PA_RISC1_1) || defined(__HPPA11__) || defined(__PA7100__))
# define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER(1,1,0)
# endif
# if !defined(BOOST_ARCH_PARISC) && (defined(_PA_RISC2_0) || defined(__RISC2_0__) || defined(__HPPA20__) || defined(__PA8000__))
# define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER(2,0,0)
# endif
# if !defined(BOOST_ARCH_PARISC)
# define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_ARCH_PARISC
# define BOOST_ARCH_PARISC_AVAILABLE
#endif
#define BOOST_ARCH_PARISC_NAME "HP/PA RISC"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PARISC,BOOST_ARCH_PARISC_NAME)
#endif

View File

@ -0,0 +1,73 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_PPC_H
#define BOOST_PREDEF_ARCHITECTURE_PPC_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_PPC`]
[@http://en.wikipedia.org/wiki/PowerPC PowerPC] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__powerpc`] [__predef_detection__]]
[[`__powerpc__`] [__predef_detection__]]
[[`__POWERPC__`] [__predef_detection__]]
[[`__ppc__`] [__predef_detection__]]
[[`_M_PPC`] [__predef_detection__]]
[[`_ARCH_PPC`] [__predef_detection__]]
[[`__PPCGECKO__`] [__predef_detection__]]
[[`__PPCBROADWAY__`] [__predef_detection__]]
[[`_XENON`] [__predef_detection__]]
[[`__ppc601__`] [6.1.0]]
[[`_ARCH_601`] [6.1.0]]
[[`__ppc603__`] [6.3.0]]
[[`_ARCH_603`] [6.3.0]]
[[`__ppc604__`] [6.4.0]]
[[`__ppc604__`] [6.4.0]]
]
*/
#define BOOST_ARCH_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__powerpc) || defined(__powerpc__) || \
defined(__POWERPC__) || defined(__ppc__) || \
defined(_M_PPC) || defined(_ARCH_PPC) || \
defined(__PPCGECKO__) || defined(__PPCBROADWAY__) || \
defined(_XENON)
# undef BOOST_ARCH_PPC
# if !defined (BOOST_ARCH_PPC) && (defined(__ppc601__) || defined(_ARCH_601))
# define BOOST_ARCH_PPC BOOST_VERSION_NUMBER(6,1,0)
# endif
# if !defined (BOOST_ARCH_PPC) && (defined(__ppc603__) || defined(_ARCH_603))
# define BOOST_ARCH_PPC BOOST_VERSION_NUMBER(6,3,0)
# endif
# if !defined (BOOST_ARCH_PPC) && (defined(__ppc604__) || defined(__ppc604__))
# define BOOST_ARCH_PPC BOOST_VERSION_NUMBER(6,4,0)
# endif
# if !defined (BOOST_ARCH_PPC)
# define BOOST_ARCH_PPC BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_ARCH_PPC
# define BOOST_ARCH_PPC_AVAILABLE
#endif
#define BOOST_ARCH_PPC_NAME "PowerPC"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PPC,BOOST_ARCH_PPC_NAME)
#endif

View File

@ -0,0 +1,43 @@
/*
Copyright Redshift Software Inc 2011-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_PYRAMID_H
#define BOOST_PREDEF_ARCHITECTURE_PYRAMID_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_PYRAMID`]
Pyramid 9810 architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`pyr`] [__predef_detection__]]
]
*/
#define BOOST_ARCH_PYRAMID BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(pyr)
# undef BOOST_ARCH_PYRAMID
# define BOOST_ARCH_PYRAMID BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_ARCH_PYRAMID
# define BOOST_ARCH_PYRAMID_AVAILABLE
#endif
#define BOOST_ARCH_PYRAMID_NAME "Pyramid 9810"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PYRAMID,BOOST_ARCH_PYRAMID_NAME)
#endif

View File

@ -0,0 +1,56 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_RS6K_H
#define BOOST_PREDEF_ARCHITECTURE_RS6K_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_RS6000`]
[@http://en.wikipedia.org/wiki/RS/6000 RS/6000] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__THW_RS6000`] [__predef_detection__]]
[[`_IBMR2`] [__predef_detection__]]
[[`_POWER`] [__predef_detection__]]
[[`_ARCH_PWR`] [__predef_detection__]]
[[`_ARCH_PWR2`] [__predef_detection__]]
]
*/
#define BOOST_ARCH_RS6000 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__THW_RS6000) || defined(_IBMR2) || \
defined(_POWER) || defined(_ARCH_PWR) || \
defined(_ARCH_PWR2)
# undef BOOST_ARCH_RS6000
# define BOOST_ARCH_RS6000 BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_ARCH_RS6000
# define BOOST_ARCH_RS6000_AVAILABLE
#endif
#define BOOST_ARCH_RS6000_NAME "RS/6000"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_RS6000,BOOST_ARCH_RS6000_NAME)
#define BOOST_ARCH_PWR BOOST_ARCH_RS6000
#if BOOST_ARCH_PWR
# define BOOST_ARCH_PWR_AVAILABLE
#endif
#define BOOST_ARCH_PWR_NAME BOOST_ARCH_RS6000_NAME
#endif

View File

@ -0,0 +1,55 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_SPARC_H
#define BOOST_PREDEF_ARCHITECTURE_SPARC_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_SPARC`]
[@http://en.wikipedia.org/wiki/SPARC SPARC] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__sparc__`] [__predef_detection__]]
[[`__sparc`] [__predef_detection__]]
[[`__sparcv9`] [9.0.0]]
[[`__sparcv8`] [8.0.0]]
]
*/
#define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__sparc__) || defined(__sparc)
# undef BOOST_ARCH_SPARC
# if !defined(BOOST_ARCH_SPARC) && defined(__sparcv9)
# define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(9,0,0)
# endif
# if !defined(BOOST_ARCH_SPARC) && defined(__sparcv8)
# define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(8,0,0)
# endif
# if !defined(BOOST_ARCH_SPARC) &&
# define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_ARCH_SPARC
# define BOOST_ARCH_SPARC_AVAILABLE
#endif
#define BOOST_ARCH_SPARC_NAME "SPARC"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SPARC,BOOST_ARCH_SPARC_NAME)
#endif

View File

@ -0,0 +1,68 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_SUPERH_H
#define BOOST_PREDEF_ARCHITECTURE_SUPERH_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_SH`]
[@http://en.wikipedia.org/wiki/SuperH SuperH] architecture:
If available versions \[1-5\] are specifically detected.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__sh__`] [__predef_detection__]]
[[`__SH5__`] [5.0.0]]
[[`__SH4__`] [4.0.0]]
[[`__sh3__`] [3.0.0]]
[[`__SH3__`] [3.0.0]]
[[`__sh2__`] [2.0.0]]
[[`__sh1__`] [1.0.0]]
]
*/
#define BOOST_ARCH_SH BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__sh__)
# undef BOOST_ARCH_SH
# if !defined(BOOST_ARCH_SH) && (defined(__SH5__))
# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(5,0,0)
# endif
# if !defined(BOOST_ARCH_SH) && (defined(__SH4__))
# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(4,0,0)
# endif
# if !defined(BOOST_ARCH_SH) && (defined(__sh3__) || defined(__SH3__))
# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(3,0,0)
# endif
# if !defined(BOOST_ARCH_SH) && (defined(__sh2__))
# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(2,0,0)
# endif
# if !defined(BOOST_ARCH_SH) && (defined(__sh1__))
# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(1,0,0)
# endif
# if !defined(BOOST_ARCH_SH)
# define BOOST_ARCH_SH BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_ARCH_SH
# define BOOST_ARCH_SH_AVAILABLE
#endif
#define BOOST_ARCH_SH_NAME "SuperH"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SH,BOOST_ARCH_SH_NAME)
#endif

View File

@ -0,0 +1,44 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_SYS370_H
#define BOOST_PREDEF_ARCHITECTURE_SYS370_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_SYS370`]
[@http://en.wikipedia.org/wiki/System/370 System/370] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__370__`] [__predef_detection__]]
[[`__THW_370__`] [__predef_detection__]]
]
*/
#define BOOST_ARCH_SYS370 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__370__) || defined(__THW_370__)
# undef BOOST_ARCH_SYS370
# define BOOST_ARCH_SYS370 BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_ARCH_SYS370
# define BOOST_ARCH_SYS370_AVAILABLE
#endif
#define BOOST_ARCH_SYS370_NAME "System/370"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SYS370,BOOST_ARCH_SYS370_NAME)
#endif

View File

@ -0,0 +1,44 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_SYS390_H
#define BOOST_PREDEF_ARCHITECTURE_SYS390_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_SYS390`]
[@http://en.wikipedia.org/wiki/System/390 System/390] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__s390__`] [__predef_detection__]]
[[`__s390x__`] [__predef_detection__]]
]
*/
#define BOOST_ARCH_SYS390 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__s390__) || defined(__s390x__)
# undef BOOST_ARCH_SYS390
# define BOOST_ARCH_SYS390 BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_ARCH_SYS390
# define BOOST_ARCH_SYS390_AVAILABLE
#endif
#define BOOST_ARCH_SYS390_NAME "System/390"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SYS390,BOOST_ARCH_SYS390_NAME)
#endif

View File

@ -0,0 +1,38 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_X86_H
#define BOOST_PREDEF_ARCHITECTURE_X86_H
#include <boost/predef/architecture/x86/32.h>
#include <boost/predef/architecture/x86/64.h>
/*`
[heading `BOOST_ARCH_X86`]
[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture. This is
a category to indicate that either `BOOST_ARCH_X86_32` or
`BOOST_ARCH_X86_64` is detected.
*/
#define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if BOOST_ARCH_X86_32 || BOOST_ARCH_X86_64
# undef BOOST_ARCH_X86
# define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_ARCH_X86
# define BOOST_ARCH_X86_AVAILABLE
#endif
#define BOOST_ARCH_X86_NAME "Intel x86"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86,BOOST_ARCH_X86_NAME)
#endif

View File

@ -0,0 +1,87 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_X86_32_H
#define BOOST_PREDEF_ARCHITECTURE_X86_32_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_X86_32`]
[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture:
If available versions \[3-6\] are specifically detected.
[table
[[__predef_symbol__] [__predef_version__]]
[[`i386`] [__predef_detection__]]
[[`__i386__`] [__predef_detection__]]
[[`__i486__`] [__predef_detection__]]
[[`__i586__`] [__predef_detection__]]
[[`__i686__`] [__predef_detection__]]
[[`__i386`] [__predef_detection__]]
[[`_M_IX86`] [__predef_detection__]]
[[`_X86_`] [__predef_detection__]]
[[`__THW_INTEL__`] [__predef_detection__]]
[[`__I86__`] [__predef_detection__]]
[[`__INTEL__`] [__predef_detection__]]
[[`__I86__`] [V.0.0]]
[[`_M_IX86`] [V.0.0]]
[[`__i686__`] [6.0.0]]
[[`__i586__`] [5.0.0]]
[[`__i486__`] [4.0.0]]
[[`__i386__`] [3.0.0]]
]
*/
#define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(i386) || defined(__i386__) || \
defined(__i486__) || defined(__i586__) || \
defined(__i686__) || defined(__i386) || \
defined(_M_IX86) || defined(_X86_) || \
defined(__THW_INTEL__) || defined(__I86__) || \
defined(__INTEL__)
# undef BOOST_ARCH_X86_32
# if !defined(BOOST_ARCH_X86_32) && defined(__I86__)
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(__I86__,0,0)
# endif
# if !defined(BOOST_ARCH_X86_32) && defined(_M_IX86)
# define BOOST_ARCH_X86_32 BOOST_PREDEF_MAKE_10_VV00(_M_IX86)
# endif
# if !defined(BOOST_ARCH_X86_32) && defined(__i686__)
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(6,0,0)
# endif
# if !defined(BOOST_ARCH_X86_32) && defined(__i586__)
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(5,0,0)
# endif
# if !defined(BOOST_ARCH_X86_32) && defined(__i486__)
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(4,0,0)
# endif
# if !defined(BOOST_ARCH_X86_32) && defined(__i386__)
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(3,0,0)
# endif
# if !defined(BOOST_ARCH_X86_32)
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_ARCH_X86_32
# define BOOST_ARCH_X86_32_AVAILABLE
#endif
#define BOOST_ARCH_X86_32_NAME "Intel x86-32"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86_32,BOOST_ARCH_X86_32_NAME)
#include <boost/predef/architecture/x86.h>
#endif

View File

@ -0,0 +1,50 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_X86_64_H
#define BOOST_PREDEF_ARCHITECTURE_X86_64_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_X86_64`]
[@http://en.wikipedia.org/wiki/Ia64 Intel IA-64] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__x86_64`] [__predef_detection__]]
[[`__x86_64__`] [__predef_detection__]]
[[`__amd64__`] [__predef_detection__]]
[[`__amd64`] [__predef_detection__]]
[[`_M_X64`] [__predef_detection__]]
]
*/
#define BOOST_ARCH_X86_64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__x86_64) || defined(__x86_64__) || \
defined(__amd64__) || defined(__amd64) || \
defined(_M_X64)
# undef BOOST_ARCH_X86_64
# define BOOST_ARCH_X86_64 BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_ARCH_X86_64
# define BOOST_ARCH_X86_64_AVAILABLE
#endif
#define BOOST_ARCH_X86_64_NAME "Intel x86-64"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86_64,BOOST_ARCH_X86_64_NAME)
#include <boost/predef/architecture/x86.h>
#endif

View File

@ -0,0 +1,43 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_Z_H
#define BOOST_PREDEF_ARCHITECTURE_Z_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_Z`]
[@http://en.wikipedia.org/wiki/Z/Architecture z/Architecture] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__SYSC_ZARCH__`] [__predef_detection__]]
]
*/
#define BOOST_ARCH_Z BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__SYSC_ZARCH__)
# undef BOOST_ARCH_Z
# define BOOST_ARCH_Z BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_ARCH_Z
# define BOOST_ARCH_Z_AVAILABLE
#endif
#define BOOST_ARCH_Z_NAME "z/Architecture"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_Z,BOOST_ARCH_Z_NAME)
#endif

View File

@ -0,0 +1,41 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_H
#define BOOST_PREDEF_COMPILER_H
#include <boost/predef/compiler/borland.h>
#include <boost/predef/compiler/clang.h>
#include <boost/predef/compiler/comeau.h>
#include <boost/predef/compiler/compaq.h>
#include <boost/predef/compiler/diab.h>
#include <boost/predef/compiler/digitalmars.h>
#include <boost/predef/compiler/dignus.h>
#include <boost/predef/compiler/edg.h>
#include <boost/predef/compiler/ekopath.h>
#include <boost/predef/compiler/gcc_xml.h>
#include <boost/predef/compiler/gcc.h>
#include <boost/predef/compiler/greenhills.h>
#include <boost/predef/compiler/hp_acc.h>
#include <boost/predef/compiler/iar.h>
#include <boost/predef/compiler/ibm.h>
#include <boost/predef/compiler/intel.h>
#include <boost/predef/compiler/kai.h>
#include <boost/predef/compiler/llvm.h>
#include <boost/predef/compiler/metaware.h>
#include <boost/predef/compiler/metrowerks.h>
#include <boost/predef/compiler/microtec.h>
#include <boost/predef/compiler/mpw.h>
#include <boost/predef/compiler/palm.h>
#include <boost/predef/compiler/pgi.h>
#include <boost/predef/compiler/sgi_mipspro.h>
#include <boost/predef/compiler/sunpro.h>
#include <boost/predef/compiler/tendra.h>
#include <boost/predef/compiler/visualc.h>
#include <boost/predef/compiler/watcom.h>
#endif

View File

@ -0,0 +1,53 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_BORLAND_H
#define BOOST_PREDEF_COMPILER_BORLAND_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_BORLAND`]
[@http://en.wikipedia.org/wiki/C_plus_plus_builder Borland C++] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__BORLANDC__`] [__predef_detection__]]
[[`__CODEGEARC__`] [__predef_detection__]]
[[`__BORLANDC__`] [V.R.P]]
[[`__CODEGEARC__`] [V.R.P]]
]
*/
#define BOOST_COMP_BORLAND BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__BORLANDC__) || defined(__CODEGEARC__)
# undef BOOST_COMP_BORLAND
# if !defined(BOOST_COMP_BORLAND) && (defined(__CODEGEARC__))
# define BOOST_COMP_BORLAND BOOST_PREDEF_MAKE_0X_VVRP(__CODEGEARC__)
# endif
# if !defined(BOOST_COMP_BORLAND)
# define BOOST_COMP_BORLAND BOOST_PREDEF_MAKE_0X_VVRP(__BORLANDC__)
# endif
#endif
#if BOOST_COMP_BORLAND
# define BOOST_COMP_BORLAND_AVAILABLE
#endif
#define BOOST_COMP_BORLAND_NAME "Borland C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_BORLAND,BOOST_COMP_BORLAND_NAME)
#endif

View File

@ -0,0 +1,46 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_CLANG_H
#define BOOST_PREDEF_COMPILER_CLANG_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_CLANG`]
[@http://en.wikipedia.org/wiki/Clang Clang] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__clang__`] [__predef_detection__]]
[[`__clang_major__`, `__clang_minor__`, `__clang_patchlevel__`] [V.R.P]]
]
*/
#define BOOST_COMP_CLANG BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__clang__)
# undef BOOST_COMP_CLANG
# define BOOST_COMP_CLANG BOOST_VERSION_NUMBER(__clang_major__,__clang_minor__,__clang_patchlevel__)
#endif
#if BOOST_COMP_CLANG
# define BOOST_COMP_CLANG_AVAILABLE
#endif
#define BOOST_COMP_CLANG_NAME "Clang"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_CLANG,BOOST_COMP_CLANG_NAME)
#endif

View File

@ -0,0 +1,51 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_COMEAU_H
#define BOOST_PREDEF_COMPILER_COMEAU_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
#define BOOST_COMP_COMO BOOST_VERSION_NUMBER_NOT_AVAILABLE
/*`
[heading `BOOST_COMP_COMO`]
[@http://en.wikipedia.org/wiki/Comeau_C/C%2B%2B Comeau C++] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__COMO__`] [__predef_detection__]]
[[`__COMO_VERSION__`] [V.R.P]]
]
*/
#if defined(__COMO__)
# undef BOOST_COMP_COMO
# if !defined(BOOST_COMP_COMO) && defined(__CONO_VERSION__)
# define BOOST_COMP_COMO BOOST_PREDEF_MAKE_0X_VRP(__COMO_VERSION__)
# endif
# if !defined(BOOST_COMP_COMO)
# define BOOST_COMP_COMO BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_COMP_COMO
# define BOOST_COMP_COMO_AVAILABLE
#endif
#define BOOST_COMP_COMO_NAME "Comeau C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_COMO,BOOST_COMP_COMO_NAME)
#endif

View File

@ -0,0 +1,56 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_COMPAQ_H
#define BOOST_PREDEF_COMPILER_COMPAQ_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_DEC`]
[@http://www.openvms.compaq.com/openvms/brochures/deccplus/ Compaq C/C++] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__DECCXX`] [__predef_detection__]]
[[`__DECC`] [__predef_detection__]]
[[`__DECCXX_VER`] [V.R.P]]
[[`__DECC_VER`] [V.R.P]]
]
*/
#define BOOST_COMP_DEC BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__DECC) || defined(__DECCXX)
# undef BOOST_COMP_DEC
# if !defined(BOOST_COMP_DEC) && defined(__DECCXX_VER)
# define BOOST_COMP_DEC BOOST_PREDEF_MAKE_10_VVRR0PP00(__DECCXX_VER)
# endif
# if !defined(BOOST_COMP_DEC) && defined(__DECC_VER)
# define BOOST_COMP_DEC BOOST_PREDEF_MAKE_10_VVRR0PP00(__DECC_VER)
# endif
# if !defined(BOOST_COMP_DEC)
# define BOOST_COM_DEV BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_COMP_DEC
# define BOOST_COMP_DEC_AVAILABLE
#endif
#define BOOST_COMP_DEC_NAME "Compaq C/C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DEC,BOOST_COMP_DEC_NAME)
#endif

View File

@ -0,0 +1,46 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_DIAB_H
#define BOOST_PREDEF_COMPILER_DIAB_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_DIAB`]
[@http://www.windriver.com/products/development_suite/wind_river_compiler/ Diab C/C++] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__DCC__`] [__predef_detection__]]
[[`__VERSION_NUMBER__`] [V.R.P]]
]
*/
#define BOOST_COMP_DIAB BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__DCC__)
# undef BOOST_COMP_DIAB
# define BOOST_COMP_DIAB BOOST_PREDEF_MAKE_10_VRPP(__VERSION_NUMBER__)
#endif
#if BOOST_COMP_DIAB
# define BOOST_COMP_DIAB_AVAILABLE
#endif
#define BOOST_COMP_DIAB_NAME "Diab C/C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DIAB,BOOST_COMP_DIAB_NAME)
#endif

View File

@ -0,0 +1,46 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_DIGITALMARS_H
#define BOOST_PREDEF_COMPILER_DIGITALMARS_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_DMC`]
[@http://en.wikipedia.org/wiki/Digital_Mars Digital Mars] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__DMC__`] [__predef_detection__]]
[[`__DMC__`] [V.R.P]]
]
*/
#define BOOST_COMP_DMC BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__DMC__)
# undef BOOST_COMP_DMC
# define BOOST_COMP_DMC BOOST_PREDEF_MAKE_0X_VRP(__DMC__)
#endif
#if BOOST_COMP_DMC
# define BOOST_COMP_DMC_AVAILABLE
#endif
#define BOOST_COMP_DMC_NAME "Digital Mars"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DMC,BOOST_COMP_DMC_NAME)
#endif

View File

@ -0,0 +1,46 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_DIGNUS_H
#define BOOST_PREDEF_COMPILER_DIGNUS_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_SYSC`]
[@http://www.dignus.com/dcxx/ Dignus Systems/C++] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__SYSC__`] [__predef_detection__]]
[[`__SYSC_VER__`] [V.R.P]]
]
*/
#define BOOST_COMP_SYSC BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__SYSC__)
# undef BOOST_COMP_SYSC
# define BOOST_COMP_SYSC BOOST_PREDEF_MAKE_10_VRRPP(__SYSC_VER__)
#endif
#if BOOST_COMP_SYSC
# define BOOST_COMP_SYSC_AVAILABLE
#endif
#define BOOST_COMP_SYSC_NAME "Dignus Systems/C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SYSC,BOOST_COMP_SYSC_NAME)
#endif

View File

@ -0,0 +1,46 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_EDG_H
#define BOOST_PREDEF_COMPILER_EDG_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_EDG`]
[@http://en.wikipedia.org/wiki/Edison_Design_Group EDG C++ Frontend] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__EDG__`] [__predef_detection__]]
[[`__EDG_VERSION__`] [V.R.0]]
]
*/
#define BOOST_COMP_EDG BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__EDG__)
# undef BOOST_COMP_EDG
# define BOOST_COMP_EDG BOOST_PREDEF_MAKE_10_VRR(__EDG_VERSION__)
#endif
#if BOOST_COMP_EDG
# define BOOST_COMP_EDG_AVAILABLE
#endif
#define BOOST_COMP_EDG_NAME "EDG C++ Frontend"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_EDG,BOOST_COMP_EDG_NAME)
#endif

View File

@ -0,0 +1,47 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_EKOPATH_H
#define BOOST_PREDEF_COMPILER_EKOPATH_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_PATH`]
[@http://en.wikipedia.org/wiki/PathScale EKOpath] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__PATHCC__`] [__predef_detection__]]
[[`__PATHCC__`, `__PATHCC_MINOR__`, `__PATHCC_PATCHLEVEL__`] [V.R.P]]
]
*/
#define BOOST_COMP_PATH BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__PATHCC__)
# undef BOOST_COMP_PATH
# define BOOST_COMP_PATH \
BOOST_VERSION_NUMBER(__PATHCC__,__PATHCC_MINOR__,__PATHCC_PATCHLEVEL__)
#endif
#if BOOST_COMP_PATH
# define BOOST_COMP_PATH_AVAILABLE
#endif
#define BOOST_COMP_PATH_NAME "EKOpath"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PATH,BOOST_COMP_PATH_NAME)
#endif

View File

@ -0,0 +1,54 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_GCC_H
#define BOOST_PREDEF_COMPILER_GCC_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_GNUC`]
[@http://en.wikipedia.org/wiki/GNU_Compiler_Collection Gnu GCC C/C++] compiler.
Version number available as major, minor, and patch (if available).
[table
[[__predef_symbol__] [__predef_version__]]
[[`__GNUC__`] [__predef_detection__]]
[[`__GNUC__`, `__GNUC_MINOR__`, `__GNUC_PATCHLEVEL__`] [V.R.P]]
[[`__GNUC__`, `__GNUC_MINOR__`] [V.R.0]]
]
*/
#define BOOST_COMP_GNUC BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__GNUC__)
# undef BOOST_COMP_GNUC
# if !defined(BOOST_COMP_GNUC) && defined(__GNUC_PATCHLEVEL__)
# define BOOST_COMP_GNUC \
BOOST_VERSION_NUMBER(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__)
# endif
# if !defined(BOOST_COMP_GNUC)
# define BOOST_COMP_GNUC \
BOOST_VERSION_NUMBER(__GNUC__,__GNUC_MINOR__,0)
# endif
#endif
#if BOOST_COMP_GNUC
# define BOOST_COMP_GNUC_AVAILABLE
#endif
#define BOOST_COMP_GNUC_NAME "Gnu GCC C/C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GNUC,BOOST_COMP_GNUC_NAME)
#endif

View File

@ -0,0 +1,42 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_GCC_XML_H
#define BOOST_PREDEF_COMPILER_GCC_XML_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_GCCXML`]
[@http://www.gccxml.org/ GCC XML] compiler.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__GCCXML__`] [__predef_detection__]]
]
*/
#define BOOST_COMP_GCCXML BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__GCCXML__)
# undef BOOST_COMP_GCCXML
# define BOOST_COMP_GCCXML BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_COMP_GCCXML
# define BOOST_COMP_GCCXML_AVAILABLE
#endif
#define BOOST_COMP_GCCXML_NAME "GCC XML"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GCCXML,BOOST_COMP_GCCXML_NAME)
#endif

View File

@ -0,0 +1,56 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_GREENHILLS_H
#define BOOST_PREDEF_COMPILER_GREENHILLS_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_GHS`]
[@http://en.wikipedia.org/wiki/Green_Hills_Software Green Hills C/C++] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__ghs`] [__predef_detection__]]
[[`__ghs__`] [__predef_detection__]]
[[`__GHS_VERSION_NUMBER__`] [V.R.P]]
[[`__ghs`] [V.R.P]]
]
*/
#define BOOST_COMP_GHS BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__ghs) || defined(__ghs__)
# undef BOOST_COMP_GHS
# if !defined(BOOST_COMP_GHS) && defined(__GHS_VERSION_NUMBER__)
# define BOOST_COMP_GHS BOOST_PREDEF_MAKE_10_VRP(__GHS_VERSION_NUMBER__)
# endif
# if !defined(BOOST_COMP_GHS) && defined(__ghs)
# define BOOST_COMP_GHS BOOST_PREDEF_MAKE_10_VRP(__ghs)
# endif
# if !defined(BOOST_COMP_GHS)
# define BOOST_COMP_GHS BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_COMP_GHS
# define BOOST_COMP_GHS_AVAILABLE
#endif
#define BOOST_COMP_GHS_NAME "Green Hills C/C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GHS,BOOST_COMP_GHS_NAME)
#endif

View File

@ -0,0 +1,51 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_HP_ACC_H
#define BOOST_PREDEF_COMPILER_HP_ACC_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_HPACC`]
HP aC++ compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__HP_aCC`] [__predef_detection__]]
[[`__HP_aCC`] [V.R.P]]
]
*/
#define BOOST_COMP_HPACC BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__HP_aCC)
# undef BOOST_COMP_HPACC
# if !defined(BOOST_COMP_HPACC) && (__HP_aCC > 1)
# define BOOST_COMP_HPACC BOOST_PREDEF_MAKE_10_VVRRPP(__HP_aCC)
# endif
# if !defined(BOOST_COMP_HPACC)
# define BOOST_COMP_HPACC BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_COMP_HPACC
# define BOOST_COMP_HPACC_AVAILABLE
#endif
#define BOOST_COMP_HPACC_NAME "HP aC++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_HPACC,BOOST_COMP_HPACC_NAME)
#endif

View File

@ -0,0 +1,46 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_IAR_H
#define BOOST_PREDEF_COMPILER_IAR_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_IAR`]
IAR C/C++ compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__IAR_SYSTEMS_ICC__`] [__predef_detection__]]
[[`__VER__`] [V.R.P]]
]
*/
#define BOOST_COMP_IAR BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__IAR_SYSTEMS_ICC__)
# undef BOOST_COMP_IAR
# define BOOST_COMP_IAR BOOST_PREDEF_MAKE_10_VVRR(__VER__)
#endif
#if BOOST_COMP_IAR
# define BOOST_COMP_IAR_AVAILABLE
#endif
#define BOOST_COMP_IAR_NAME "IAR C/C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_IAR,BOOST_COMP_IAR_NAME)
#endif

View File

@ -0,0 +1,62 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_IBM_H
#define BOOST_PREDEF_COMPILER_IBM_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_IBM`]
[@http://en.wikipedia.org/wiki/VisualAge IBM XL C/C++] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__IBMCPP__`] [__predef_detection__]]
[[`__xlC__`] [__predef_detection__]]
[[`__xlc__`] [__predef_detection__]]
[[`__COMPILER_VER__`] [V.R.P]]
[[`__xlC__`] [V.R.P]]
[[`__xlc__`] [V.R.P]]
[[`__IBMCPP__`] [V.R.P]]
]
*/
#define BOOST_COMP_IBM BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__IBMCPP__) || defined(__xlC__) || defined(__xlc__)
# undef BOOST_COMP_IBM
# if !defined(BOOST_COMP_IBM) && defined(__COMPILER_VER__)
# define BOOST_COMP_IBM BOOST_PREDEF_MAKE_0X_VRRPPPP(__COMPILER_VER__)
# endif
# if !defined(BOOST_COMP_IBM) && defined(__xlC__)
# define BOOST_COMP_IBM BOOST_PREDEF_MAKE_0X_VVRR(__xlC__)
# endif
# if !defined(BOOST_COMP_IBM) && defined(__xlc__)
# define BOOST_COMP_IBM BOOST_PREDEF_MAKE_0X_VVRR(__xlc__)
# endif
# if !defined(BOOST_COMP_IBM)
# define BOOST_COMP_IBM BOOST_PREDEF_MAKE_10_VRP(__IBMCPP__)
# endif
#endif
#if BOOST_COMP_IBM
# define BOOST_COMP_IBM_AVAILABLE
#endif
#define BOOST_COMP_IBM_NAME "IBM XL C/C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_IBM,BOOST_COMP_IBM_NAME)
#endif

View File

@ -0,0 +1,55 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_INTEL_H
#define BOOST_PREDEF_COMPILER_INTEL_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_INTEL`]
[@http://en.wikipedia.org/wiki/Intel_C%2B%2B Intel C/C++] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__INTEL_COMPILER`] [__predef_detection__]]
[[`__ICL`] [__predef_detection__]]
[[`__ICC`] [__predef_detection__]]
[[`__ECC`] [__predef_detection__]]
[[`__INTEL_COMPILER`] [V.R.P]]
]
*/
#define BOOST_COMP_INTEL BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || \
defined(__ECC)
# undef BOOST_COMP_INTEL
# if !defined(BOOST_COMP_INTEL) && defined(__INTEL_COMPILER)
# define BOOST_COMP_INTEL BOOST_PREDEF_MAKE_10_VRP(__INTEL_COMPILER)
# endif
# if !defined(BOOST_COMP_INTEL)
# define BOOST_COMP_INTEL BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_COMP_INTEL
# define BOOST_COMP_INTEL_AVAILABLE
#endif
#define BOOST_COMP_INTEL_NAME "Intel C/C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_INTEL,BOOST_COMP_INTEL_NAME)
#endif

View File

@ -0,0 +1,46 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_KAI_H
#define BOOST_PREDEF_COMPILER_KAI_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_KCC`]
Kai C++ compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__KCC`] [__predef_detection__]]
[[`__KCC_VERSION`] [V.R.P]]
]
*/
#define BOOST_COMP_KCC BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__KCC)
# undef BOOST_COMP_KCC
# define BOOST_COMP_KCC BOOST_PREDEF_MAKE_0X_VRPP(__KCC_VERSION)
#endif
#if BOOST_COMP_KCC
# define BOOST_COMP_KCC_AVAILABLE
#endif
#define BOOST_COMP_KCC_NAME "Kai C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_KCC,BOOST_COMP_KCC_NAME)
#endif

View File

@ -0,0 +1,43 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_LLVM_H
#define BOOST_PREDEF_COMPILER_LLVM_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_LLVM`]
[@http://en.wikipedia.org/wiki/LLVM LLVM] compiler.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__llvm__`] [__predef_detection__]]
]
*/
#define BOOST_COMP_LLVM BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__llvm__)
# undef BOOST_COMP_LLVM
# define BOOST_COMP_LLVM BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_COMP_LLVM
# define BOOST_COMP_LLVM_AVAILABLE
#endif
#define BOOST_COMP_LLVM_NAME "LLVM"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_LLVM,BOOST_COMP_LLVM_NAME)
#endif

View File

@ -0,0 +1,43 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_METAWARE_H
#define BOOST_PREDEF_COMPILER_METAWARE_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_HIGHC`]
MetaWare High C/C++ compiler.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__HIGHC__`] [__predef_detection__]]
]
*/
#define BOOST_COMP_HIGHC BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__HIGHC__)
# undef BOOST_COMP_HIGHC
# define BOOST_COMP_HIGHC BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_COMP_HIGHC
# define BOOST_COMP_HIGHC_AVAILABLE
#endif
#define BOOST_COMP_HIGHC_NAME "MetaWare High C/C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_HIGHC,BOOST_COMP_HIGHC_NAME)
#endif

View File

@ -0,0 +1,67 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_METROWERKS_H
#define BOOST_PREDEF_COMPILER_METROWERKS_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_MWERKS`]
[@http://en.wikipedia.org/wiki/CodeWarrior Metrowerks CodeWarrior] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__MWERKS__`] [__predef_detection__]]
[[`__CWCC__`] [__predef_detection__]]
[[`__CWCC__`] [V.R.P]]
[[`__MWERKS__`] [V.R.P >= 4.2.0]]
[[`__MWERKS__`] [9.R.0]]
[[`__MWERKS__`] [8.R.0]]
]
*/
#define BOOST_COMP_MWERKS BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__MWERKS__) || defined(__CWCC__)
# undef BOOST_COMP_MWERKS
# if !defined(BOOST_COMP_MWERKS) && defined(__CWCC__)
# define BOOST_COMP_MWERKS BOOST_PREDEF_MAKE_0X_VRPP(__CWCC__)
# endif
# if !defined(BOOST_COMP_MWERKS) && (__MWERKS__ >= 0x4200)
# define BOOST_COMP_MWERKS BOOST_PREDEF_MAKE_0X_VRPP(__MWERKS__)
# endif
# if !defined(BOOST_COMP_MWERKS) && (__MWERKS__ >= 0x3204) // note the "skip": 04->9.3
# define BOOST_COMP_MWERKS BOOST_VERSION_NUMBER(9,(__MWERKS__)%100-1,0)
# endif
# if !defined(BOOST_COMP_MWERKS) && (__MWERKS__ >= 0x3200)
# define BOOST_COMP_MWERKS BOOST_VERSION_NUMBER(9,(__MWERKS__)%100,0)
# endif
# if !defined(BOOST_COMP_MWERKS) && (__MWERKS__ >= 0x3000)
# define BOOST_COMP_MWERKS BOOST_VERSION_NUMBER(8,(__MWERKS__)%100,0)
# endif
# if !defined(BOOST_COMP_MWERKS)
# define BOOST_COMP_MWERKS BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_COMP_MWERKS
# define BOOST_COMP_MWERKS_AVAILABLE
#endif
#define BOOST_COMP_MWERKS_NAME "Metrowerks CodeWarrior"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MWERKS,BOOST_COMP_MWERKS_NAME)
#endif

View File

@ -0,0 +1,43 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_MICROTEC_H
#define BOOST_PREDEF_COMPILER_MICROTEC_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_MRI`]
[@http://www.mentor.com/microtec/ Microtec C/C++] compiler.
[table
[[__predef_symbol__] [__predef_version__]]
[[`_MRI`] [__predef_detection__]]
]
*/
#define BOOST_COMP_MRI BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(_MRI)
# undef BOOST_COMP_MRI
# define BOOST_COMP_MRI BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_COMP_MRI
# define BOOST_COMP_MRI_AVAILABLE
#endif
#define BOOST_COMP_MRI_NAME "Microtec C/C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MRI,BOOST_COMP_MRI_NAME)
#endif

View File

@ -0,0 +1,53 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_MPW_H
#define BOOST_PREDEF_COMPILER_MPW_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_MPW`]
[@http://en.wikipedia.org/wiki/Macintosh_Programmer%27s_Workshop MPW C++] compiler.
Version number available as major, and minor.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__MRC__`] [__predef_detection__]]
[[`MPW_C`] [__predef_detection__]]
[[`MPW_CPLUS`] [__predef_detection__]]
[[`__MRC__`] [V.R.0]]
]
*/
#define BOOST_COMP_MPW BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__MRC__) || defined(MPW_C) || defined(MPW_CPLUS)
# undef BOOST_COMP_MPW
# if !defined(BOOST_COMP_MPW) && defined(__MRC__)
# define BOOST_COMP_MPW BOOST_PREDEF_MAKE_0X_VVRR(__MRC__)
# endif
# if !defined(BOOST_COMP_MPW)
# define BOOST_COMP_MPW BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_COMP_MPW
# define BOOST_COMP_MPW_AVAILABLE
#endif
#define BOOST_COMP_MPW_NAME "MPW C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MPW,BOOST_COMP_MPW_NAME)
#endif

View File

@ -0,0 +1,46 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_PALM_H
#define BOOST_PREDEF_COMPILER_PALM_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_PALM`]
Palm C/C++ compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`_PACC_VER`] [__predef_detection__]]
[[`_PACC_VER`] [V.R.P]]
]
*/
#define BOOST_COMP_PALM BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(_PACC_VER)
# undef BOOST_COMP_PALM
# define BOOST_COMP_PALM BOOST_PREDEF_MAKE_0X_VRRPP000(_PACC_VER)
#endif
#if BOOST_COMP_PALM
# define BOOST_COMP_PALM_AVAILABLE
#endif
#define BOOST_COMP_PALM_NAME "Palm C/C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PALM,BOOST_COMP_PALM_NAME)
#endif

View File

@ -0,0 +1,50 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_PGI_H
#define BOOST_PREDEF_COMPILER_PGI_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_PGI`]
[@http://en.wikipedia.org/wiki/The_Portland_Group Portland Group C/C++] compiler.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__PGI`] [__predef_detection__]]
[[`__PGIC__`, `__PGIC_MINOR__`, `__PGIC_PATCHLEVEL__`] [V.R.P]]
]
*/
#define BOOST_COMP_PGI BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__PGI)
# undef BOOST_COMP_PGI
# if !defined(BOOST_COMP_PGI) && (defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__))
# define BOOST_COMP_PGI BOOST_VERSION_NUMBER(__PGIC__,__PGIC_MINOR__,__PGIC_PATCHLEVEL__)
# endif
# if !defined(BOOST_COMP_PGI)
# define BOOST_COMP_PGI BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_COMP_PGI
# define BOOST_COMP_PGI_AVAILABLE
#endif
#define BOOST_COMP_PGI_NAME "Portland Group C/C++"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PGI,BOOST_COMP_PGI_NAME)
#endif

View File

@ -0,0 +1,56 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_SGI_MIPSPRO_H
#define BOOST_PREDEF_COMPILER_SGI_MIPSPRO_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_SGI`]
[@http://en.wikipedia.org/wiki/MIPSpro SGI MIPSpro] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__sgi`] [__predef_detection__]]
[[`sgi`] [__predef_detection__]]
[[`_SGI_COMPILER_VERSION`] [V.R.P]]
[[`_COMPILER_VERSION`] [V.R.P]]
]
*/
#define BOOST_COMP_SGI BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__sgi) || defined(sgi)
# undef BOOST_COMP_SGI
# if !defined(BOOST_COMP_SGI) && defined(_SGI_COMPILER_VERSION)
# define BOOST_COMP_SGI BOOST_PREDEF_MAKE_10_VRP(_SGI_COMPILER_VERSION)
# endif
# if !defined(BOOST_COMP_SGI) && defined(_COMPILER_VERSION)
# define BOOST_COMP_SGI BOOST_PREDEF_MAKE_10_VRP(_COMPILER_VERSION)
# endif
# if !defined(BOOST_COMP_SGI)
# define BOOST_COMP_SGI BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_COMP_SGI
# define BOOST_COMP_SGI_AVAILABLE
#endif
#define BOOST_COMP_SGI_NAME "SGI MIPSpro"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SGI,BOOST_COMP_SGI_NAME)
#endif

View File

@ -0,0 +1,56 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_SUNPRO_H
#define BOOST_PREDEF_COMPILER_SUNPRO_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_SUNPRO`]
[@http://en.wikipedia.org/wiki/Sun_Studio_%28software%29 Sun Studio] compiler.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__SUNPRO_CC`] [__predef_detection__]]
[[`__SUNPRO_C`] [__predef_detection__]]
[[`__SUNPRO_CC`] [V.R.P]]
[[`__SUNPRO_C`] [V.R.P]]
]
*/
#define BOOST_COMP_SUNPRO BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__SUNPRO_CC) || defined(__SUNPRO_C)
# undef BOOST_COMP_SUNPRO
# if !defined(BOOST_COMP_SUNPRO) && defined(__SUNPRO_CC)
# define BOOST_COMP_SUNPRO BOOST_PREDEF_MAKE_0X_VRP(__SUNPRO_CC)
# endif
# if !defined(BOOST_COMP_SUNPRO) && defined(__SUNPRO_C)
# define BOOST_COMP_SUNPRO BOOST_PREDEF_MAKE_0X_VRP(__SUNPRO_C)
# endif
# if !defined(BOOST_COMP_SUNPRO)
# define BOOST_COMP_SUNPRO BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_COMP_SUNPRO
# define BOOST_COMP_SUNPRO_AVAILABLE
#endif
#define BOOST_COMP_SUNPRO_NAME "Sun Studio"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SUNPRO,BOOST_COMP_SUNPRO_NAME)
#endif

Some files were not shown because too many files have changed in this diff Show More