diff --git a/.project b/.project deleted file mode 100644 index 2f7b668..0000000 --- a/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - Boost Predef - - - - - - org.python.pydev.PyDevBuilder - - - - - - org.python.pydev.pythonNature - - diff --git a/.pydevproject b/.pydevproject deleted file mode 100644 index d001f0a..0000000 --- a/.pydevproject +++ /dev/null @@ -1,5 +0,0 @@ - - -Default -python interpreter - diff --git a/doc/.gitignore b/doc/.gitignore deleted file mode 100644 index ac7af2e..0000000 --- a/doc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/html/ diff --git a/doc/build.jam b/doc/build.jam index 8558f75..b2f1d6b 100644 --- a/doc/build.jam +++ b/doc/build.jam @@ -1,100 +1,38 @@ -# Copyright Rene Rivera 2011-2016 -# 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) +#| +Copyright Rene Rivera 2011-2019 +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 ; -using boostbook ; +import asciidoctor ; +import modules ; import path ; -if ! $(BOOST_ROOT) -{ - BOOST_ROOT = [ modules.peek : BOOST_ROOT ] ; -} +project predefdoc ; -if $(BOOST_PREDEF_ROOT) -{ - path-constant BOOST_PREDEF_INCLUDE_ROOT : $(BOOST_PREDEF_ROOT)/include ; -} -else -{ - path-constant BOOST_PREDEF_INCLUDE_ROOT : $(BOOST_ROOT) ; -} +path-constant PYGMENTS_DIR : . ; -local BOOST_PREDEF_HEADERS = [ path.glob-tree $(BOOST_PREDEF_INCLUDE_ROOT)/boost/predef : *.h ] ; +doc-dir = [ MATCH "--doc-dir=(.*)" : [ modules.peek : ARGV ] ] ; +doc-dir ?= . ; -# Intermediate targets.. +local headers = [ glob-tree-ex $(BOOST_PREDEF_INCLUDE) : *.h ] ; -# Quickbok to boostbook target. -xml predef +html index : predef.adoc : : - predef.qbk - : - $(BOOST_PREDEF_INCLUDE_ROOT)/boost/predef.h - $(BOOST_PREDEF_HEADERS) + --require=$(PYGMENTS_DIR)/pygments_init.rb + --trace + --verbose + $(PYGMENTS_DIR)/pygments_init.rb + $(headers) ; -explicit predef ; +explicit index ; -# HTML dependencies for standalone docs. -install images : [ glob $(BOOST_ROOT)/doc/src/images/*.png ] : html/images ; -explicit images ; -install callouts : [ glob $(BOOST_ROOT)/doc/src/images/callouts/*.png ] : html/images/callouts ; -explicit callouts ; -install css : [ glob $(BOOST_ROOT)/doc/src/*.css ] : html ; -explicit css ; +install html : index : $(doc-dir) ; +explicit html ; -# Default target builds standalone docs. -boostbook standalone - : - predef - : - boost.root=../../../.. - #generate.section.toc.level=3 - chunk.section.depth=2 - chunk.first.sections=1 - - images - callouts - css - ; - -############################################################################### -### Targets for Boost release integration. -############################################################################### - -# Target for Boost global documentation integration. -# -# For documentation that will be integrated into the global documentation -# this should be an alias similar to: -# -# alias boostdoc : my_lib : : : my_lib_boostbook_xml ; -# explicit boostdoc ; -# -# For documentation that is not part of the global documentation, i.e. -# it has stadalone documentation, it should be an empty alias: -# -# alias boostdoc ; -# explicit boostdoc ; -# -alias boostdoc : predef ; +alias boostdoc ; explicit boostdoc ; -# Target for Boost standalone release documentation building. -# -# For documentation that is not part of the global Boost documentation -# this should be an alias to building the "standalone" documentation. -# Usual this is just an alias to a "stadalone" target: -# -# alias boostrelease : stadalone ; -# explicit boostrelease ; -# -# For documentation that is part of the global Boost documentation this -# should be an empty alias: -# -# alias boostrelease ; -# explicit boostrelease ; -# -alias boostrelease ; +alias boostrelease : html ; explicit boostrelease ; - -############################################################################### diff --git a/doc/hardware_simd.qbk b/doc/hardware_simd.qbk deleted file mode 100644 index c613310..0000000 --- a/doc/hardware_simd.qbk +++ /dev/null @@ -1,89 +0,0 @@ -SIMD predefs depend on compiler options. For example, you will have to add the -option `-msse3` to clang or gcc to enable SSE3. SIMD predefs are also inclusive. -This means that if SSE3 is enabled, then every other extensions with a lower -version number will implicitly be enabled and detected. However, some extensions -are CPU specific, they may not be detected nor enabled when an upper version is -enabled. - -[note SSE(1) and SSE2 are automatically enabled by default when using x86-64 -architecture.] - -To check if any SIMD extension has been enabled, you can use: - -`` -#include -#include - -int main() -{ -#if defined(BOOST_HW_SIMD_AVAILABLE) - std::cout << "SIMD detected!" << std::endl; -#endif - return 0; -} -`` - -When writing SIMD specific code, you may want to check if a particular extension -has been detected. To do so you have to use the right architecture predef and -compare it. Those predef are of the form `BOOST_HW_SIMD_"ARCH"` (where `"ARCH"` -is either `ARM`, `PPC`, or `X86`). For example, if you compile code for x86 -architecture, you will have to use `BOOST_HW_SIMD_X86`. Its value will be the -version number of the most recent SIMD extension detected for the architecture. - -To check if an extension has been enabled: - -`` -#include -#include - -int main() -{ -#if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE3_VERSION - std::cout << "This is SSE3!" << std::endl; -#endif - return 0; -} -`` - -[note The *_VERSION* defines that map version number to actual real -identifiers. This way it is easier to write comparisons without messing up with -version numbers.] - -To *"stricly"* check the most recent detected extension: - -`` -#include -#include - -int main() -{ -#if BOOST_HW_SIMD_X86 == BOOST_HW_SIMD_X86_SSE3_VERSION - std::cout << "This is SSE3 and this is the most recent enabled extension!" - << std::endl; -#endif - return 0; -} -`` - -Because of the version systems of predefs and of the inclusive property of SIMD -extensions macros, you can easily check for ranges of supported extensions: - -`` -#include -#include - -int main() -{ -#if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE2_VERSION &&\ - BOOST_HW_SIMD_X86 <= BOOST_HW_SIMD_X86_SSSE3_VERSION - std::cout << "This is SSE2, SSE3 and SSSE3!" << std::endl; -#endif - return 0; -} -`` - -[note Unlike gcc and clang, Visual Studio does not allow you to specify precisely -the SSE variants you want to use, the only detections that will take place are -SSE, SSE2, AVX and AVX2. For more informations, - see [@https://msdn.microsoft.com/en-us/library/b0084kay.aspx here].] - diff --git a/doc/history.qbk b/doc/history.adoc similarity index 88% rename from doc/history.qbk rename to doc/history.adoc index fa26e82..e045b57 100644 --- a/doc/history.qbk +++ b/doc/history.adoc @@ -1,18 +1,19 @@ -[/ +//// Copyright 2014-2019 Rene Rivera 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) -] +//// -[section History] += History -[heading 1.11] +== 1.11 * Add `BOOST_ARCH_RISCV`. (from Andreas Schwab) * Add RISC-V endian detection. (from Thomas Petazzoni) +* Convert documentation to AsciiDoctor format. -[heading 1.10] +== 1.10 * Fix bad include of sub-BSD os headers from main BSD header. * Fix use of deprecated `TARGET_IPHONE_SIMULATOR` instead of newer @@ -23,12 +24,12 @@ http://www.boost.org/LICENSE_1_0.txt) * Add support for consuming Predef as a CMake project. * Add support for consuming Predef as a standalone B2 project. -[heading 1.9] +== 1.9 * Fixes for `BOOST_COMP_NVCC*` predefs. (from Benjamin Worpitz) * Add specific version information for Cygwin OS predef. (from James E. King III) -[heading 1.8] +== 1.8 * Add support for __ARM_ARCH macro. (from Tim Blechmann) * Add detection for PTX architecture. (from Benjamin Worpitz) @@ -36,15 +37,15 @@ http://www.boost.org/LICENSE_1_0.txt) * Add support for detecting CUDA. (from Benjamin Worpitz) * Remove reference to obsolete BOOST_ARCH_AMD64. (from Peter Kolbus) -[heading 1.7] +== 1.7 * Fix BOOST_ARCH_PARISK/BOOST_ARCH_PARISC typo. * Improved Windows Universal Platform detection. (from James E. King, III) * Add detection for CloudABI with cloudlibc. (from James E. King, III) -[heading 1.6] +== 1.6 -* Fix Intel C/C++ version 9999 detection to be 12.1.0. +* Fix Intel C/{CPP} version 9999 detection to be 12.1.0. * Addition of `BOOST_PREDEF_WORKAROUND` and `BOOST_PREDEF_TESTED_AT` macros for defect workarounds and detection. * Add ARM64 MSVC SIMD detection. (from Minmin Gong) @@ -52,21 +53,21 @@ http://www.boost.org/LICENSE_1_0.txt) Baratov) * Fix MinGW incorrect header guard. (from Ruslan Baratov) -[heading 1.5] +== 1.5 -* Fix Intel C/C++ compiler version specification. +* Fix Intel C/{CPP} compiler version specification. * Add `BOOST_VERSION_NUMBER_MAJOR`, `BOOST_VERSION_NUMBER_MINOR`, `BOOST_VERSION_NUMBER_PATCH` macros to extract components from valid version numbers. * Change VS version numbering. Version after VS2015 will use the compiler version instead of the varied product versions. -[heading 1.4.1] +== 1.4.1 * Small fixes for some redefinition errors, and mispelled macros. * Slightly rearrangement of structure to comply with current library requirements. -[heading 1.4] +== 1.4 * Add detection of SIMD hardware. With the addition of the `BOOST_HW_*` category (from Charly Chevalier). @@ -75,16 +76,16 @@ http://www.boost.org/LICENSE_1_0.txt) * Fix test warnings. * Fix typos on `AVAILABLE` macros for Windows Platform. (from Vemund Handeland) -[heading 1.3] +== 1.3 * Fix many problems with `predef_check` functionality. -* Update SunPro detection to accomodate latest version of compiler from Oracle. +* Update SunPro detection to accommodate latest version of compiler from Oracle. * Addition of Travis-CI and Appveyor testing. * Add `and` and `or` logical operators for `predef_check` expression on the Boost Build side. * Fix `BOOST_ARCH_PARISC` to correctly spelled name (from Graham Hanson). * Fix `MAKE_YYYYM` macros to correctly limit the month (from rick68). -[heading 1.2] +== 1.2 * Account for skip in Visual Studio product version vs. compiler version. This supports version of VS 2015 an onward. @@ -94,7 +95,7 @@ http://www.boost.org/LICENSE_1_0.txt) * Add `predef_check` program and BBv2 integration for build configuration checks. -[heading 1.1] +== 1.1 * Addition of `BOOST_PLAT_*` platform definitions for MinGW and Windows platform variants. @@ -106,9 +107,7 @@ http://www.boost.org/LICENSE_1_0.txt) * Addition of exclusive plus emulated definitions for platform and compiler detection. -[warning The big change for this version is the restructuring of the +WARNING: The big change for this version is the restructuring of the definitions to avoid duplicate definitions in one category. That is, only one `BOOST_OS_*`, `BOOST_COMP_*`, and `BOOST_PLAT_*` variant will be detected -(except for sub-categories).] - -[endsect] +(except for sub-categories). diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 0000000..9d3276d --- /dev/null +++ b/doc/index.html @@ -0,0 +1,7142 @@ + + + + + + + + +Boost.Predef + + + + + +
+
+
+ +
+
+
+

1. 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.

+
+
+

1.1. 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.

    +
  • +
+
+
+
+

1.2. 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 pre-compiled 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++.

    +
  • +
+
+
+
+

1.3. 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:

+
+
+
    +
  1. +

    use an uneven distribution or

    +
  2. +
  3. +

    use more bits (a larger type) or

    +
  4. +
  5. +

    use 3/3/3 and have the particular compiler/platform/stdlib deal with setting +the numbers within the 3-digit range.

    +
  6. +
+
+
+

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.

+
+
+ + + + + +
+
+
+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.

+
+
+
+

1.4. 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.

    +
  • +
  • +

    And obviously there’s lots of work to do in reformulating the existing +Boost libraries to use the Predef library.

    +
  • +
  • +

    And there’s the continuing work of adding definitions for present and +future compilers, platforms, architectures, languages, and libraries.

    +
  • +
+
+
+
+
+
+

2. 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_PLAT_ for platforms on top of operating system or compilers.

    +
  • +
  • +

    BOOST_ENDIAN_ for endianness of the os and architecture combination.

    +
  • +
  • +

    BOOST_HW_ for hardware specific features.

    +
  • +
  • +

    BOOST_HW_SIMD for SIMD (Single Instruction Multiple Data) detection.

    +
  • +
+
+
+ + + + + +
+
+
+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 an +*_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.

+
+
+

2.1. The *_EMULATED macros

+
+

Predef definitions are guaranteed to be uniquely detected within one category. +But there are contexts under which multiple underlying detections are possible. +The well known example of this is detection of GCC and MSVC compilers which are +commonly emulated by other compilers by defining the same base macros. To +account for this detection headers are allowed to define *_EMULATED predefs +when this situation is detected. The emulated predefs will be set to the +version number of the detection instead of the regular predef macro for that +detection. For example MSVC will set BOOST_COMP_MSVC_EMULATED but not set BOOST_COMP_MSVC, and it will also set BOOST_COMP_MSVC_AVAILABLE.

+
+
+
+

2.2. 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:

+
+
+
    +
  1. +

    Major version number, as a constant value expression in the range [0,99].

    +
  2. +
  3. +

    Minor version number, as a constant value expression in the range [0,99].

    +
  4. +
  5. +

    Patch-level version number, as a constant value expression in the +range [0,99999].

    +
  6. +
+
+
+

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)
+
+
+
+
+
+
+

3. 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.

+
+
+

3.1. 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_NOT_AVAILABLE.

    +
  • +
  • +

    The predef must be redefined to a non-zero value once detected.

    +
  • +
  • +

    The predef must, by default, be defined to BOOST_VERSION_NUMBER_AVAILABLE +when the predef is detected.

    +
  • +
  • +

    If possible, the predef will be defined as the version number detected.

    +
  • +
  • +

    The predef must define *_AVAILABLE macros as needed.

    +
  • +
  • +

    The predef must define a symbolic constant string name macro.

    +
  • +
  • +

    The predef must declare itself, after being defined, for the testing +system.

    +
  • +
  • +

    The predef must guarantee that it is the only one defined as detected +per category.

    +
  • +
  • +

    But a predef can define *_EMULATED macros to indicate that it was +previously detected by another header and is being "emulated" by the +system. Note that the *_AVAILABLE macros must still be defined in this +situation.

    +
  • +
+
+
+

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.

    +
  • +
+
+
+
+

3.2. 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
+
+
+
+

If the detection depends on the detection of another predef you should +include those headers here.

+
+
+
+
#include <boost/predef/CATEGORY_TAG/DEPENDENCY.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 Asciidoctor 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:

+
+
+
+
/* tag::reference[]
+
+= `BOOST_category_tag`
+
+Documentation about what is detected.
+
+*/
+
+#define BOOST_category_tag BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+
+
+

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 removes +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_AVAILABLE” 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_AVAILABLE
+#    endif
+#endif
+
+
+
+

We also need to provide the *_AVAILABLE versions of the predef.

+
+
+
+
#if BOOST_category_tag
+#   define BOOST_category_tag_AVAILABLE
+#endif
+
+
+
+

And for convenience we also want to provide a *_NAME macro:

+
+
+
+
#define BOOST_category_tag_NAME "Name"
+
+
+
+

We close out the include guard at this point. We do whis before the test +declaration as the testing system includes the headers multiple times +to generate the needed testing code.

+
+
+
+
#endif
+
+
+
+

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)
+
+
+
+
+

3.3. Adding exclusive predefs

+
+

For headers of predefs that need to be mutually exclusive in the detection +we need to add checks and definitions to detect when the predef is +detected by multiple headers.

+
+
+

Internally compiler, operating system, and platforms define +BOOST_PREDEF_DETAIL_COMP_DETECTED, BOOST_PREDEF_DEFAIL_OS_DETECTED, and +BOOST_PREDEF_DETAIL_PLAT_DETECTED respectively when the predef is first +detected. This is used to guard against multiple definition of the detection +in later included headers. In those cases the detection would instead be +written as:

+
+
+
+
#if !BOOST_PREDEF_DETAIL_category_DETECTED && (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
+
+
+
+

And we also include a header that defines the *_DETECTED macro when we have +the detection:

+
+
+
+
#if BOOST_category_tag
+#   define BOOST_category_tag_AVAILABLE
+#   include <boost/predef/detail/CATEGORY_detected.h>
+#endif
+
+
+
+

Everything else about the header is the same as the basic detection header.

+
+
+
+

3.4. Adding an exclusive but emulated predef

+
+

Because compilers are frequently emulated by other compilers we both want +to have exclusive detection of the compiler and also provide information +that we detected the emulation of the compiler. To accomplish this we define +a local *_DETECTION macro for the compiler detection. And conditionally +define either the base compiler predef BOOST_COMP_compiler or the alternate +BOOST_COMP_compiler_EMULATED predef.

+
+
+

The initial detection would look like:

+
+
+
+
#if (condition_a)
+#   if (condition_b)
+#        define BOOST_COMP_tag_DETECTION BOOST_VERSION_NUMBER(major,minor,patch)
+#    else
+#        define BOOST_COMP_tag_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
+#    endif
+#endif
+
+
+
+

And then we can conditionally define the base or emulated predefs:

+
+
+
+
#ifdef BOOST_COMP_tag_DETECTION
+#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
+#       define BOOST_COMP_tag_EMULATED BOOST_COMP_tag_DETECTION
+#   else
+#       undef BOOST_COMP_tag
+#       define BOOST_COMP_tag BOOST_COMP_tag_DETECTION
+#   endif
+#   define BOOST_category_tag_AVAILABLE
+#   include <boost/predef/detail/comp_detected.h>
+#endif
+
+
+
+
+

3.5. Using utility pattern macros

+
+

By including:

+
+
+
+
#include <boost/predef/make.h>
+
+
+
+

One will get a set of utility 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 decomposed +and defined as:

+
+
+
+
#define BOOST_COMP_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.

+
+
+
+
+
+

4. Reference

+
+
+

4.1. BOOST_ARCH architecture macros

+
+

4.1.1. BOOST_ARCH_ALPHA

+
+

DEC Alpha architecture.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__alpha__

detection

__alpha

detection

_M_ALPHA

detection

__alpha_ev4__

4.0.0

__alpha_ev5__

5.0.0

__alpha_ev6__

6.0.0

+
+
+

4.1.2. BOOST_ARCH_ARM

+
+

ARM architecture.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__ARM_ARCH

detection

__TARGET_ARCH_ARM

detection

__TARGET_ARCH_THUMB

detection

_M_ARM

detection

__arm__

detection

__arm64

detection

__thumb__

detection

_M_ARM64

detection

__aarch64__

detection

__AARCH64EL__

detection

__ARM_ARCH_7__

detection

__ARM_ARCH_7A__

detection

__ARM_ARCH_7R__

detection

__ARM_ARCH_7M__

detection

__ARM_ARCH_6K__

detection

__ARM_ARCH_6Z__

detection

__ARM_ARCH_6KZ__

detection

__ARM_ARCH_6T2__

detection

__ARM_ARCH_5TE__

detection

__ARM_ARCH_5TEJ__

detection

__ARM_ARCH_4T__

detection

__ARM_ARCH_4__

detection

__ARM_ARCH

V.0.0

__TARGET_ARCH_ARM

V.0.0

__TARGET_ARCH_THUMB

V.0.0

_M_ARM

V.0.0

__arm64

8.0.0

_M_ARM64

8.0.0

__aarch64__

8.0.0

__AARCH64EL__

8.0.0

__ARM_ARCH_7__

7.0.0

__ARM_ARCH_7A__

7.0.0

__ARM_ARCH_7R__

7.0.0

__ARM_ARCH_7M__

7.0.0

__ARM_ARCH_6K__

6.0.0

__ARM_ARCH_6Z__

6.0.0

__ARM_ARCH_6KZ__

6.0.0

__ARM_ARCH_6T2__

6.0.0

__ARM_ARCH_5TE__

5.0.0

__ARM_ARCH_5TEJ__

5.0.0

__ARM_ARCH_4T__

4.0.0

__ARM_ARCH_4__

4.0.0

+
+
+

4.1.3. BOOST_ARCH_BLACKFIN

+
+

Blackfin Processors from Analog Devices.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__bfin__

detection

__BFIN__

detection

bfin

detection

BFIN

detection

+
+
+

4.1.4. BOOST_ARCH_CONVEX

+
+

Convex Computer architecture.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__convex__

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

+
+
+

4.1.5. BOOST_ARCH_IA64

+
+

Intel Itanium 64 architecture.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__ia64__

detection

_IA64

detection

__IA64__

detection

__ia64

detection

_M_IA64

detection

__itanium__

detection

+
+
+

4.1.6. BOOST_ARCH_M68K

+
+

Motorola 68k architecture.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__m68k__

detection

M68000

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

+
+
+

4.1.7. BOOST_ARCH_MIPS

+
+

MIPS architecture.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__mips__

detection

__mips

detection

__MIPS__

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

+
+
+

4.1.8. BOOST_ARCH_PARISC

+
+

HP/PA RISC architecture.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__hppa__

detection

__hppa

detection

__HPPA__

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

+
+
+

4.1.9. BOOST_ARCH_PPC

+
+

PowerPC architecture.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__powerpc

detection

__powerpc__

detection

__POWERPC__

detection

__ppc__

detection

_M_PPC

detection

_ARCH_PPC

detection

__PPCGECKO__

detection

__PPCBROADWAY__

detection

_XENON

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

+
+
+

4.1.10. BOOST_ARCH_PTX

+
+

PTX architecture.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__CUDA_ARCH__

detection

__CUDA_ARCH__

V.R.0

+
+
+

4.1.11. BOOST_ARCH_PYRAMID

+
+

Pyramid 9810 architecture.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

pyr

detection

+
+
+

4.1.12. BOOST_ARCH_RISCV

+
+

RISC-V architecture.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__riscv

detection

+
+
+

4.1.13. BOOST_ARCH_RS6000

+
+

RS/6000 architecture.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__THW_RS6000

detection

_IBMR2

detection

_POWER

detection

_ARCH_PWR

detection

_ARCH_PWR2

detection

+
+
+

4.1.14. BOOST_ARCH_SPARC

+
+

SPARC architecture.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__sparc__

detection

__sparc

detection

__sparcv9

9.0.0

__sparcv8

8.0.0

+
+
+

4.1.15. BOOST_ARCH_SH

+
+

SuperH architecture: +If available versions [1-5] are specifically detected.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__sh__

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

+
+
+

4.1.16. BOOST_ARCH_SYS370

+
+

System/370 architecture.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__370__

detection

__THW_370__

detection

+
+
+

4.1.17. BOOST_ARCH_SYS390

+
+

System/390 architecture.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__s390__

detection

__s390x__

detection

+
+
+

4.1.18. BOOST_ARCH_X86

+
+

Intel x86 architecture. This is +a category to indicate that either BOOST_ARCH_X86_32 or +BOOST_ARCH_X86_64 is detected.

+
+
+
+

4.1.19. BOOST_ARCH_Z

+
+

z/Architecture architecture.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__SYSC_ZARCH__

detection

+
+
+

4.1.20. BOOST_ARCH_X86_32

+
+

Intel x86 architecture: +If available versions [3-6] are specifically detected.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

i386

detection

__i386__

detection

__i486__

detection

__i586__

detection

__i686__

detection

__i386

detection

_M_IX86

detection

_X86_

detection

__THW_INTEL__

detection

__I86__

detection

__INTEL__

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

+
+
+

4.1.21. BOOST_ARCH_X86_64

+
+

Intel IA-64 architecture.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__x86_64

detection

__x86_64__

detection

__amd64__

detection

__amd64

detection

_M_X64

detection

+
+
+
+

4.2. BOOST_COMP compiler macros

+
+

4.2.1. BOOST_COMP_BORLAND

+
+

Borland C++ compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__BORLANDC__

detection

__CODEGEARC__

detection

__BORLANDC__

V.R.P

__CODEGEARC__

V.R.P

+
+
+

4.2.2. BOOST_COMP_CLANG

+
+

Clang compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__clang__

detection

__clang_major__, __clang_minor__, __clang_patchlevel__

V.R.P

+
+
+

4.2.3. BOOST_COMP_COMO

+
+

Comeau C++ compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__COMO__

detection

__COMO_VERSION__

V.R.P

+
+
+

4.2.4. BOOST_COMP_DEC

+
+

Compaq C/C++ compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__DECCXX

detection

__DECC

detection

__DECCXX_VER

V.R.P

__DECC_VER

V.R.P

+
+
+

4.2.5. BOOST_COMP_DIAB

+
+

Diab C/C++ compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__DCC__

detection

__VERSION_NUMBER__

V.R.P

+
+
+

4.2.6. BOOST_COMP_DMC

+
+

Digital Mars compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__DMC__

detection

__DMC__

V.R.P

+
+
+

4.2.7. BOOST_COMP_SYSC

+
+

Dignus Systems/C++ compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__SYSC__

detection

__SYSC_VER__

V.R.P

+
+
+

4.2.8. BOOST_COMP_EDG

+
+

EDG C++ Frontend compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__EDG__

detection

__EDG_VERSION__

V.R.0

+
+
+

4.2.9. BOOST_COMP_PATH

+
+

EKOpath compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__PATHCC__

detection

__PATHCC__, __PATHCC_MINOR__, __PATHCC_PATCHLEVEL__

V.R.P

+
+
+

4.2.10. BOOST_COMP_GNUC

+
+

Gnu GCC C/C++ compiler. +Version number available as major, minor, and patch (if available).

+
+ ++++ + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__GNUC__

detection

__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__

V.R.P

__GNUC__, __GNUC_MINOR__

V.R.0

+
+
+

4.2.11. BOOST_COMP_GCCXML

+
+

GCC XML compiler.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__GCCXML__

detection

+
+
+

4.2.12. BOOST_COMP_GHS

+
+

Green Hills C/C++ compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__ghs

detection

__ghs__

detection

__GHS_VERSION_NUMBER__

V.R.P

__ghs

V.R.P

+
+
+

4.2.13. BOOST_COMP_HPACC

+
+

HP aC++ compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__HP_aCC

detection

__HP_aCC

V.R.P

+
+
+

4.2.14. BOOST_COMP_IAR

+
+

IAR C/C++ compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__IAR_SYSTEMS_ICC__

detection

__VER__

V.R.P

+
+
+

4.2.15. BOOST_COMP_IBM

+
+

IBM XL C/C++ compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__IBMCPP__

detection

__xlC__

detection

__xlc__

detection

__COMPILER_VER__

V.R.P

__xlC__

V.R.P

__xlc__

V.R.P

__IBMCPP__

V.R.P

+
+
+

4.2.16. BOOST_COMP_INTEL

+
+

Intel C/C++ compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__INTEL_COMPILER

detection

__ICL

detection

__ICC

detection

__ECC

detection

__INTEL_COMPILER

V.R

__INTEL_COMPILER and __INTEL_COMPILER_UPDATE

V.R.P

+
+ + + + + +
+
+
+Because of an Intel mistake in the release version numbering when +__INTEL_COMPILER is 9999 it is detected as version 12.1.0. +
+
+
+
+

4.2.17. BOOST_COMP_KCC

+
+

Kai C++ compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__KCC

detection

__KCC_VERSION

V.R.P

+
+
+

4.2.18. BOOST_COMP_LLVM

+
+

LLVM compiler.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__llvm__

detection

+
+
+

4.2.19. BOOST_COMP_HIGHC

+
+

MetaWare High C/C++ compiler.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__HIGHC__

detection

+
+
+

4.2.20. BOOST_COMP_MWERKS

+
+

Metrowerks CodeWarrior compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__MWERKS__

detection

__CWCC__

detection

__CWCC__

V.R.P

__MWERKS__

V.R.P >= 4.2.0

__MWERKS__

9.R.0

__MWERKS__

8.R.0

+
+
+

4.2.21. BOOST_COMP_MRI

+
+

Microtec C/C++ compiler.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

_MRI

detection

+
+
+

4.2.22. BOOST_COMP_MPW

+
+

MPW C++ compiler. +Version number available as major, and minor.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__MRC__

detection

MPW_C

detection

MPW_CPLUS

detection

__MRC__

V.R.0

+
+
+

4.2.23. BOOST_COMP_NVCC

+
+

NVCC compiler. +Version number available as major, minor, and patch beginning with version 7.5.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__NVCC__

detection

__CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, __CUDACC_VER_BUILD__

V.R.P

+
+
+

4.2.24. BOOST_COMP_PALM

+
+

Palm C/C++ compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

_PACC_VER

detection

_PACC_VER

V.R.P

+
+
+

4.2.25. BOOST_COMP_PGI

+
+

Portland Group C/C++ compiler.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__PGI

detection

__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__

V.R.P

+
+
+

4.2.26. BOOST_COMP_SGI

+
+

SGI MIPSpro compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__sgi

detection

sgi

detection

_SGI_COMPILER_VERSION

V.R.P

_COMPILER_VERSION

V.R.P

+
+
+

4.2.27. BOOST_COMP_SUNPRO

+
+

Oracle Solaris Studio compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__SUNPRO_CC

detection

__SUNPRO_C

detection

__SUNPRO_CC

V.R.P

__SUNPRO_C

V.R.P

__SUNPRO_CC

VV.RR.P

__SUNPRO_C

VV.RR.P

+
+
+

4.2.28. BOOST_COMP_TENDRA

+
+

TenDRA C/C++ compiler.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__TenDRA__

detection

+
+
+

4.2.29. BOOST_COMP_MSVC

+
+

Microsoft Visual C/C++ compiler. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

_MSC_VER

detection

_MSC_FULL_VER

V.R.P

_MSC_VER

V.R.0

+
+ + + + + +
+
+
+Release of Visual Studio after 2015 will no longer be identified +by Boost Predef as the marketing version number. Instead we use the +compiler version number directly, i.e. the _MSC_VER number. +
+
+
+
+

4.2.30. BOOST_COMP_WATCOM

+
+

Watcom C++ compiler. +Version number available as major, and minor.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__WATCOMC__

detection

__WATCOMC__

V.R.P

+
+
+
+

4.3. BOOST_LANG language standards macros

+
+

4.3.1. BOOST_LANG_CUDA

+
+

CUDA C/C++ language. +If available, the version is detected as VV.RR.P.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__CUDACC__

detection

__CUDA__

detection

CUDA_VERSION

VV.RR.P

+
+
+

4.3.2. BOOST_LANG_OBJC

+
+

Objective-C language.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__OBJC__

detection

+
+
+

4.3.3. BOOST_LANG_STDC

+
+

Standard C language. +If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__STDC__

detection

__STDC_VERSION__

V.R.P

+
+
+

4.3.4. BOOST_LANG_STDCPP

+
+

Standard C++ 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:

+
+ + +++++ + + + + + + + + + + + + + + + + + + + +
Table 1. Detected Version Number vs. C++ Standard Year
Detected Version NumberStandard YearC++ Standard

27.11.1

1998

ISO/IEC 14882:1998

41.12.1

2011

ISO/IEC 14882:2011

+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__cplusplus

detection

__cplusplus

YYYY.MM.1

+
+
+

4.3.5. BOOST_LANG_STDCPPCLI

+
+

Standard C++/CLI language. +If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__cplusplus_cli

detection

__cplusplus_cli

YYYY.MM.1

+
+
+

4.3.6. BOOST_LANG_STDECPP

+
+

Standard Embedded C++ language.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__embedded_cplusplus

detection

+
+
+
+

4.4. BOOST_LIB library macros

+
+

4.4.1. BOOST_LIB_C_CLOUDABI

+
+

cloudlibc - CloudABI’s standard C library. +Version number available as major, and minor.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__cloudlibc__

detection

__cloudlibc_major__, __cloudlibc_minor__

V.R.0

+
+
+

4.4.2. BOOST_LIB_C_GNU

+
+

GNU glibc Standard C library. +Version number available as major, and minor.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__GLIBC__

detection

__GNU_LIBRARY__

detection

__GLIBC__, __GLIBC_MINOR__

V.R.0

__GNU_LIBRARY__, __GNU_LIBRARY_MINOR__

V.R.0

+
+
+

4.4.3. BOOST_LIB_C_UC

+
+

uClibc Standard C library.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__UCLIBC__

detection

__UCLIBC_MAJOR__, __UCLIBC_MINOR__, __UCLIBC_SUBLEVEL__

V.R.P

+
+
+

4.4.4. BOOST_LIB_C_VMS

+
+

VMS libc Standard C library. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__CRTL_VER

detection

__CRTL_VER

V.R.P

+
+
+

4.4.5. BOOST_LIB_C_ZOS

+
+

z/OS libc Standard C library. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__LIBREL__

detection

__LIBREL__

V.R.P

__TARGET_LIB__

V.R.P

+
+
+

4.4.6. BOOST_LIB_STD_CXX

+
+

libc++ C++ Standard Library.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

_LIBCPP_VERSION

detection

_LIBCPP_VERSION

V.0.P

+
+
+

4.4.7. BOOST_LIB_STD_DINKUMWARE

+
+

Dinkumware Standard C++ Library. +If available version number as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

_YVALS, __IBMCPP__

detection

_CPPLIB_VER

detection

_CPPLIB_VER

V.R.0

+
+
+

4.4.8. BOOST_LIB_STD_COMO

+
+

Comeau Computing Standard C++ Library. +Version number available as major.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__LIBCOMO__

detection

__LIBCOMO_VERSION__

V.0.0

+
+
+

4.4.9. BOOST_LIB_STD_MSIPL

+
+

Modena Software Lib++ Standard C++ Library.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

MSIPL_COMPILE_H

detection

__MSIPL_COMPILE_H

detection

+
+
+

4.4.10. BOOST_LIB_STD_MSL

+
+

Metrowerks Standard C++ Library. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__MSL_CPP__

detection

__MSL__

detection

__MSL_CPP__

V.R.P

__MSL__

V.R.P

+
+
+

4.4.11. BOOST_LIB_STD_RW

+
+

Roguewave Standard C++ library. +If available version number as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__STD_RWCOMPILER_H__

detection

_RWSTD_VER

detection

_RWSTD_VER

V.R.P

+
+
+

4.4.12. BOOST_LIB_STD_SGI

+
+

SGI Standard C++ library. +If available version number as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__STL_CONFIG_H

detection

__SGI_STL

V.R.P

+
+
+

4.4.13. BOOST_LIB_STD_GNU

+
+

http://gcc.gnu.org/libstdc/[GNU libstdc] Standard C++ library. +Version number available as year (from 1970), month, and day.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__GLIBCXX__

detection

__GLIBCPP__

detection

__GLIBCXX__

V.R.P

__GLIBCPP__

V.R.P

+
+
+

4.4.14. BOOST_LIB_STD_STLPORT

+
+

STLport Standard C++ library. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__SGI_STL_PORT

detection

_STLPORT_VERSION

detection

_STLPORT_MAJOR, _STLPORT_MINOR, _STLPORT_PATCHLEVEL

V.R.P

_STLPORT_VERSION

V.R.P

__SGI_STL_PORT

V.R.P

+
+
+

4.4.15. BOOST_LIB_STD_IBM

+ + ++++ + + + + + + + + + + + + +
SymbolVersion

__IBMCPP__

detection

+
+
+
+

4.5. BOOST_OS operating system macros

+
+

4.5.1. BOOST_OS_AIX

+
+

IBM AIX operating system. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

_AIX

detection

__TOS_AIX__

detection

_AIX43

4.3.0

_AIX41

4.1.0

_AIX32

3.2.0

_AIX3

3.0.0

+
+
+

4.5.2. BOOST_OS_AMIGAOS

+
+

AmigaOS operating system.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

AMIGA

detection

__amigaos__

detection

+
+
+

4.5.3. BOOST_OS_ANDROID

+
+ + + + + +
+
+
+BOOST_OS_ANDROID is deprecated, and will be removed in a following release. +Please use BOOST_PLAT_ANDROID instead. +
+
+
+

Android operating system.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__ANDROID__

detection

+
+
+

4.5.4. BOOST_OS_BEOS

+
+

BeOS operating system.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__BEOS__

detection

+
+
+

4.5.5. BOOST_OS_BSD

+
+

BSD operating system.

+
+
+

BSD has various branch operating systems possible and each detected +individually. This detects the following variations and sets a specific +version number macro to match:

+
+
+ +
+
+ + + + + +
+
+
+The general BOOST_OS_BSD is set in all cases to indicate some form +of BSD. If the above variants is detected the corresponding macro is also set. +
+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

BSD

detection

_SYSTYPE_BSD

detection

BSD4_2

4.2.0

BSD4_3

4.3.0

BSD4_4

4.4.0

BSD

V.R.0

+
+
+

4.5.6. BOOST_OS_CYGWIN

+
+

Cygwin evironment.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__CYGWIN__

detection

CYGWIN_VERSION_API_MAJOR, CYGWIN_VERSION_API_MINOR

V.R.0

+
+
+

4.5.7. BOOST_OS_HAIKU

+
+

Haiku operating system.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__HAIKU__

detection

+
+
+

4.5.8. BOOST_OS_HPUX

+
+

HP-UX operating system.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

hpux

detection

_hpux

detection

__hpux

detection

+
+
+

4.5.9. BOOST_OS_IOS

+
+

iOS operating system.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__APPLE__

detection

__MACH__

detection

__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__

detection

__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__

__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__*1000

+
+
+

4.5.10. BOOST_OS_IRIX

+
+

IRIX operating system.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

sgi

detection

__sgi

detection

+
+
+

4.5.11. BOOST_OS_LINUX

+
+

Linux operating system.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

linux

detection

__linux

detection

__linux__

detection

__gnu_linux__

detection

+
+
+

4.5.12. BOOST_OS_MACOS

+
+

Mac OS operating system.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

macintosh

detection

Macintosh

detection

__APPLE__

detection

__MACH__

detection

__APPLE__, __MACH__

10.0.0

otherwise

9.0.0

+
+
+

4.5.13. BOOST_OS_OS400

+
+

IBM OS/400 operating system.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__OS400__

detection

+
+
+

4.5.14. BOOST_OS_QNX

+
+

QNX operating system. +Version number available as major, and minor if possible. And +version 4 is specifically detected.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__QNX__

detection

__QNXNTO__

detection

_NTO_VERSION

V.R.0

__QNX__

4.0.0

+
+
+

4.5.15. BOOST_OS_SOLARIS

+
+

Solaris operating system.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

sun

detection

__sun

detection

+
+
+

4.5.16. BOOST_OS_UNIX

+
+

Unix Environment operating system.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

unix

detection

__unix

detection

_XOPEN_SOURCE

detection

_POSIX_SOURCE

detection

+
+
+

4.5.17. BOOST_OS_SVR4

+
+

SVR4 Environment operating system.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__sysv__

detection

__SVR4

detection

__svr4__

detection

_SYSTYPE_SVR4

detection

+
+
+

4.5.18. BOOST_OS_VMS

+
+

VMS operating system.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

VMS

detection

__VMS

detection

__VMS_VER

V.R.P

+
+
+

4.5.19. BOOST_OS_WINDOWS

+
+

Microsoft Windows operating system.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

_WIN32

detection

_WIN64

detection

__WIN32__

detection

__TOS_WIN__

detection

__WINDOWS__

detection

+
+
+

4.5.20. BOOST_OS_BSD_BSDI

+
+

BSDi BSD/OS operating system.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__bsdi__

detection

+
+
+

4.5.21. BOOST_OS_BSD_DRAGONFLY

+
+

DragonFly BSD operating system.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__DragonFly__

detection

+
+
+

4.5.22. BOOST_OS_BSD_FREE

+
+

FreeBSD operating system.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__FreeBSD__

detection

__FreeBSD_version

V.R.P

+
+
+

4.5.23. BOOST_OS_BSD_NET

+
+

NetBSD operating system.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__NETBSD__

detection

__NetBSD__

detection

__NETBSD_version

V.R.P

NetBSD0_8

0.8.0

NetBSD0_9

0.9.0

NetBSD1_0

1.0.0

__NetBSD_Version

V.R.P

+
+
+

4.5.24. BOOST_OS_BSD_OPEN

+
+

OpenBSD operating system.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__OpenBSD__

detection

OpenBSD2_0

2.0.0

OpenBSD2_1

2.1.0

OpenBSD2_2

2.2.0

OpenBSD2_3

2.3.0

OpenBSD2_4

2.4.0

OpenBSD2_5

2.5.0

OpenBSD2_6

2.6.0

OpenBSD2_7

2.7.0

OpenBSD2_8

2.8.0

OpenBSD2_9

2.9.0

OpenBSD3_0

3.0.0

OpenBSD3_1

3.1.0

OpenBSD3_2

3.2.0

OpenBSD3_3

3.3.0

OpenBSD3_4

3.4.0

OpenBSD3_5

3.5.0

OpenBSD3_6

3.6.0

OpenBSD3_7

3.7.0

OpenBSD3_8

3.8.0

OpenBSD3_9

3.9.0

OpenBSD4_0

4.0.0

OpenBSD4_1

4.1.0

OpenBSD4_2

4.2.0

OpenBSD4_3

4.3.0

OpenBSD4_4

4.4.0

OpenBSD4_5

4.5.0

OpenBSD4_6

4.6.0

OpenBSD4_7

4.7.0

OpenBSD4_8

4.8.0

OpenBSD4_9

4.9.0

OpenBSD5_0

5.0.0

OpenBSD5_1

5.1.0

OpenBSD5_2

5.2.0

OpenBSD5_3

5.3.0

OpenBSD5_4

5.4.0

OpenBSD5_5

5.5.0

OpenBSD5_6

5.6.0

OpenBSD5_7

5.7.0

OpenBSD5_8

5.8.0

OpenBSD5_9

5.9.0

OpenBSD6_0

6.0.0

OpenBSD6_1

6.1.0

OpenBSD6_2

6.2.0

OpenBSD6_3

6.3.0

OpenBSD6_4

6.4.0

OpenBSD6_5

6.5.0

OpenBSD6_6

6.6.0

OpenBSD6_7

6.7.0

OpenBSD6_8

6.8.0

OpenBSD6_9

6.9.0

+
+
+
+

4.6. BOOST_PLAT platform macros

+
+

4.6.1. BOOST_PLAT_ANDROID

+
+

Android platform.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__ANDROID__

detection

+
+
+

4.6.2. BOOST_PLAT_CLOUDABI

+
+

CloudABI platform.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

__CloudABI__

detection

+
+
+

4.6.3. BOOST_PLAT_IOS_DEVICE

+ +
+
+

4.6.4. BOOST_PLAT_IOS_SIMULATOR

+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

TARGET_IPHONE_SIMULATOR

detection

TARGET_OS_SIMULATOR

detection

+
+
+

4.6.5. BOOST_PLAT_MINGW

+
+

MinGW platform, either variety. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__MINGW32__

detection

__MINGW64__

detection

__MINGW64_VERSION_MAJOR, __MINGW64_VERSION_MINOR

V.R.0

__MINGW32_VERSION_MAJOR, __MINGW32_VERSION_MINOR

V.R.0

+
+
+

4.6.6. BOOST_PLAT_MINGW32

+
+

MinGW platform. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__MINGW32__

detection

__MINGW32_VERSION_MAJOR, __MINGW32_VERSION_MINOR

V.R.0

+
+
+

4.6.7. BOOST_PLAT_MINGW64

+
+

MinGW-w64 platform. +Version number available as major, minor, and patch.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__MINGW64__

detection

__MINGW64_VERSION_MAJOR, __MINGW64_VERSION_MINOR

V.R.0

+
+
+

4.6.8. BOOST_PLAT_WINDOWS_DESKTOP

+
+

UWP +for Windows Desktop development. Also available if the Platform SDK is too +old to support UWP.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP

detection

!BOOST_PLAT_WINDOWS_UWP

detection

+
+
+

4.6.9. BOOST_PLAT_WINDOWS_PHONE

+
+

UWP +for Windows Phone development.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP

detection

+
+
+

4.6.10. BOOST_PLAT_WINDOWS_RUNTIME

+
+

Deprecated.

+
+
+

UWP +for Windows Phone or Store development. This does not align to the existing development model for +UWP and is deprecated. Use one of the other `BOOST_PLAT_WINDOWS_*`definitions instead.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

BOOST_PLAT_WINDOWS_PHONE

detection

BOOST_PLAT_WINDOWS_STORE

detection

+
+
+

4.6.11. BOOST_PLAT_WINDOWS_SERVER

+
+

UWP +for Windows Server development.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

WINAPI_FAMILY == WINAPI_FAMILY_SERVER

detection

+
+
+

4.6.12. BOOST_PLAT_WINDOWS_STORE

+
+

UWP +for Windows Store development.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

WINAPI_FAMILY == WINAPI_FAMILY_PC_APP

detection

WINAPI_FAMILY == WINAPI_FAMILY_APP (deprecated)

detection

+
+
+

4.6.13. BOOST_PLAT_WINDOWS_SYSTEM

+
+

UWP +for Windows System development.

+
+ ++++ + + + + + + + + + + + + +
SymbolVersion

WINAPI_FAMILY == WINAPI_FAMILY_SYSTEM

detection

+
+
+

4.6.14. BOOST_PLAT_WINDOWS_UWP

+
+

Universal Windows Platform +is available if the current development environment is capable of targeting +UWP development.

+
+ ++++ + + + + + + + + + + + + + + + + +
SymbolVersion

__MINGW64_VERSION_MAJOR from _mingw.h

>= 3

VER_PRODUCTBUILD from ntverp.h

>= 9200

+
+
+
+

4.7. BOOST_HW hardware macros

+
+

4.7.1. Using the BOOST_HW_SIMD_* predefs

+
+

SIMD predefs depend on compiler options. For example, you will have to add the +option -msse3 to clang or gcc to enable SSE3. SIMD predefs are also inclusive. +This means that if SSE3 is enabled, then every other extensions with a lower +version number will implicitly be enabled and detected. However, some extensions +are CPU specific, they may not be detected nor enabled when an upper version is +enabled.

+
+
+ + + + + +
+
+
+SSE(1) and SSE2 are automatically enabled by default when using x86-64 +architecture. +
+
+
+

To check if any SIMD extension has been enabled, you can use:

+
+
+
+
#include <boost/predef/hardware/simd.h>
+#include <iostream>
+
+int main()
+{
+#if defined(BOOST_HW_SIMD_AVAILABLE)
+    std::cout << "SIMD detected!" << std::endl;
+#endif
+    return 0;
+}
+
+
+
+

When writing SIMD specific code, you may want to check if a particular extension +has been detected. To do so you have to use the right architecture predef and +compare it. Those predef are of the form BOOST_HW_SIMD_"ARCH" (where "ARCH" +is either ARM, PPC, or X86). For example, if you compile code for x86 +architecture, you will have to use BOOST_HW_SIMD_X86. Its value will be the +version number of the most recent SIMD extension detected for the architecture.

+
+
+

To check if an extension has been enabled:

+
+
+
+
#include <boost/predef/hardware/simd.h>
+#include <iostream>
+
+int main()
+{
+#if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE3_VERSION
+    std::cout << "This is SSE3!" << std::endl;
+#endif
+    return 0;
+}
+
+
+
+ + + + + +
+
+
+The _VERSION defines that map version number to actual real +identifiers. This way it is easier to write comparisons without messing up with +version numbers. +
+
+
+

To "strictly" check the most recent detected extension:

+
+
+
+
#include <boost/predef/hardware/simd.h>
+#include <iostream>
+
+int main()
+{
+#if BOOST_HW_SIMD_X86 == BOOST_HW_SIMD_X86_SSE3_VERSION
+    std::cout << "This is SSE3 and this is the most recent enabled extension!"
+        << std::endl;
+#endif
+    return 0;
+}
+
+
+
+

Because of the version systems of predefs and of the inclusive property of SIMD +extensions macros, you can easily check for ranges of supported extensions:

+
+
+
+
#include <boost/predef/hardware/simd.h>
+#include <iostream>
+
+int main()
+{
+#if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE2_VERSION &&\
+    BOOST_HW_SIMD_X86 <= BOOST_HW_SIMD_X86_SSSE3_VERSION
+    std::cout << "This is SSE2, SSE3 and SSSE3!" << std::endl;
+#endif
+    return 0;
+}
+
+
+
+ + + + + +
+
+
+Unlike gcc and clang, Visual Studio does not allow you to specify precisely +the SSE variants you want to use, the only detections that will take place are +SSE, SSE2, AVX and AVX2. For more informations, + see [@https://msdn.microsoft.com/en-us/library/b0084kay.aspx here]. +
+
+
+
+

4.7.2. BOOST_HW_SIMD_ARM

+
+

The SIMD extension for ARM (if detected). +Version number depends on the most recent detected extension.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__ARM_NEON__

detection

__aarch64__

detection

_M_ARM

detection

_M_ARM64

detection

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__ARM_NEON__

BOOST_HW_SIMD_ARM_NEON_VERSION

__aarch64__

BOOST_HW_SIMD_ARM_NEON_VERSION

_M_ARM

BOOST_HW_SIMD_ARM_NEON_VERSION

_M_ARM64

BOOST_HW_SIMD_ARM_NEON_VERSION

+
+
+

4.7.3. BOOST_HW_SIMD_ARM_*_VERSION

+
+

Those defines represent ARM SIMD extensions versions.

+
+
+ + + + + +
+
+
+You MUST compare them with the predef BOOST_HW_SIMD_ARM. += BOOST_HW_SIMD_ARM_NEON_VERSION +
+
+
+

The NEON +ARM extension version number.

+
+
+

Version number is: 1.0.0.

+
+
+
+

4.7.4. BOOST_HW_SIMD_PPC

+
+

The SIMD extension for PowerPC (if detected). +Version number depends on the most recent detected extension.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__VECTOR4DOUBLE__

detection

__ALTIVEC__

detection

__VEC__

detection

__VSX__

detection

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__VECTOR4DOUBLE__

BOOST_HW_SIMD_PPC_QPX_VERSION

__ALTIVEC__

BOOST_HW_SIMD_PPC_VMX_VERSION

__VEC__

BOOST_HW_SIMD_PPC_VMX_VERSION

__VSX__

BOOST_HW_SIMD_PPC_VSX_VERSION

+
+
+

4.7.5. BOOST_HW_SIMD_PPC_*_VERSION

+
+

Those defines represent Power PC SIMD extensions versions.

+
+
+ + + + + +
+
+
+You MUST compare them with the predef BOOST_HW_SIMD_PPC. += BOOST_HW_SIMD_PPC_VMX_VERSION +
+
+
+

The VMX powerpc extension +version number.

+
+
+

Version number is: 1.0.0. += BOOST_HW_SIMD_PPC_VSX_VERSION

+
+
+

The VSX powerpc extension version +number.

+
+
+

Version number is: 1.1.0. += BOOST_HW_SIMD_PPC_QPX_VERSION

+
+
+

The QPX powerpc extension version number.

+
+
+

Version number is: 2.0.0.

+
+
+
+

4.7.6. BOOST_HW_SIMD_X86

+
+

The SIMD extension for x86 (if detected). +Version number depends on the most recent detected extension.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__SSE__

detection

_M_X64

detection

_M_IX86_FP >= 1

detection

__SSE2__

detection

_M_X64

detection

_M_IX86_FP >= 2

detection

__SSE3__

detection

__SSSE3__

detection

__SSE4_1__

detection

__SSE4_2__

detection

__AVX__

detection

__FMA__

detection

__AVX2__

detection

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__SSE__

BOOST_HW_SIMD_X86_SSE_VERSION

_M_X64

BOOST_HW_SIMD_X86_SSE_VERSION

_M_IX86_FP >= 1

BOOST_HW_SIMD_X86_SSE_VERSION

__SSE2__

BOOST_HW_SIMD_X86_SSE2_VERSION

_M_X64

BOOST_HW_SIMD_X86_SSE2_VERSION

_M_IX86_FP >= 2

BOOST_HW_SIMD_X86_SSE2_VERSION

__SSE3__

BOOST_HW_SIMD_X86_SSE3_VERSION

__SSSE3__

BOOST_HW_SIMD_X86_SSSE3_VERSION

__SSE4_1__

BOOST_HW_SIMD_X86_SSE4_1_VERSION

__SSE4_2__

BOOST_HW_SIMD_X86_SSE4_2_VERSION

__AVX__

BOOST_HW_SIMD_X86_AVX_VERSION

__FMA__

BOOST_HW_SIMD_X86_FMA3_VERSION

__AVX2__

BOOST_HW_SIMD_X86_AVX2_VERSION

+
+
+

4.7.7. BOOST_HW_SIMD_X86_*_VERSION

+
+

Those defines represent x86 SIMD extensions versions.

+
+
+ + + + + +
+
+
+You MUST compare them with the predef BOOST_HW_SIMD_X86. += BOOST_HW_SIMD_X86_MMX_VERSION +
+
+
+

The MMX x86 extension +version number.

+
+
+

Version number is: 0.99.0. += BOOST_HW_SIMD_X86_SSE_VERSION

+
+
+

The SSE x86 extension +version number.

+
+
+

Version number is: 1.0.0. += BOOST_HW_SIMD_X86_SSE2_VERSION

+
+
+

The SSE2 x86 extension version number.

+
+
+

Version number is: 2.0.0. += BOOST_HW_SIMD_X86_SSE3_VERSION

+
+
+

The SSE3 x86 extension version number.

+
+
+

Version number is: 3.0.0. += BOOST_HW_SIMD_X86_SSSE3_VERSION

+
+
+

The SSSE3 x86 extension version number.

+
+
+

Version number is: 3.1.0. += BOOST_HW_SIMD_X86_SSE4_1_VERSION

+
+
+

The SSE4_1 x86 extension version +number.

+
+
+

Version number is: 4.1.0. += BOOST_HW_SIMD_X86_SSE4_2_VERSION

+
+
+

The SSE4_2 x86 extension version +number.

+
+
+

Version number is: 4.2.0. += BOOST_HW_SIMD_X86_AVX_VERSION

+
+
+

The AVX x86 +extension version number.

+
+
+

Version number is: 5.0.0. += BOOST_HW_SIMD_X86_FMA3_VERSION

+
+
+

The FMA3 x86 extension +version number.

+
+
+

Version number is: 5.2.0. += BOOST_HW_SIMD_X86_AVX2_VERSION

+
+
+

The AVX2 +x86 extension version number.

+
+
+

Version number is: 5.3.0. += BOOST_HW_SIMD_X86_MIC_VERSION

+
+
+

The MIC (Xeon Phi) x86 extension +version number.

+
+
+

Version number is: 9.0.0.

+
+
+
+

4.7.8. BOOST_HW_SIMD_X86_AMD

+
+

The SIMD extension for x86 (AMD) (if detected). +Version number depends on the most recent detected extension.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__SSE4A__

detection

__FMA4__

detection

__XOP__

detection

BOOST_HW_SIMD_X86

detection

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolVersion

__SSE4A__

BOOST_HW_SIMD_X86_SSE4A_VERSION

__FMA4__

BOOST_HW_SIMD_X86_FMA4_VERSION

__XOP__

BOOST_HW_SIMD_X86_XOP_VERSION

BOOST_HW_SIMD_X86

BOOST_HW_SIMD_X86

+
+ + + + + +
+
+
+This predef includes every other x86 SIMD extensions and also has other +more specific extensions (FMA4, XOP, SSE4a). You should use this predef +instead of BOOST_HW_SIMD_X86 to test if those specific extensions have +been detected. +
+
+
+
+

4.7.9. BOOST_HW_SIMD_X86_AMD_*_VERSION

+
+

Those defines represent x86 (AMD specific) SIMD extensions versions.

+
+
+ + + + + +
+
+
+You MUST compare them with the predef BOOST_HW_SIMD_X86_AMD. += BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION +
+
+
+

SSE4A x86 extension (AMD specific).

+
+
+

Version number is: 4.0.0. += BOOST_HW_SIMD_X86_AMD_FMA4_VERSION

+
+
+

FMA4 x86 extension (AMD specific).

+
+
+

Version number is: 5.1.0. += BOOST_HW_SIMD_X86_AMD_XOP_VERSION

+
+
+

XOP x86 extension (AMD specific).

+
+
+

Version number is: 5.1.1.

+
+
+
+
+

4.8. Other macros

+
+

4.8.1. BOOST_ENDIAN_*

+
+

Detection of endian memory ordering. There are four defined macros +in this header that define the various generally possible endian +memory orderings:

+
+
+
    +
  • +

    BOOST_ENDIAN_BIG_BYTE, byte-swapped big-endian.

    +
  • +
  • +

    BOOST_ENDIAN_BIG_WORD, word-swapped big-endian.

    +
  • +
  • +

    BOOST_ENDIAN_LITTLE_BYTE, byte-swapped little-endian.

    +
  • +
  • +

    BOOST_ENDIAN_LITTLE_WORD, word-swapped little-endian.

    +
  • +
+
+
+

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.

+
+
+

This implementation is a compilation of various publicly available +information and acquired knowledge:

+
+
+
    +
  1. +

    The indispensable documentation of "Pre-defined Compiler Macros" +Endianness.

    +
  2. +
  3. +

    The various endian specifications available in the +Wikipedia computer architecture pages.

    +
  4. +
  5. +

    Generally available searches for headers that define endianness.

    +
  6. +
+
+
+
+

4.8.2. BOOST_PREDEF_WORKAROUND

+
+
+
BOOST_PREDEF_WORKAROUND(symbol,comp,major,minor,patch)
+
+
+
+

Usage:

+
+
+
+
#if BOOST_PREDEF_WORKAROUND(BOOST_COMP_CLANG,<,3,0,0)
+    // Workaround for old clang compilers..
+#endif
+
+
+
+

Defines a comparison against two version numbers that depends on the definion +of BOOST_STRICT_CONFIG. When BOOST_STRICT_CONFIG is defined this will expand +to a value convertible to false. Which has the effect of disabling all code +conditionally guarded by BOOST_PREDEF_WORKAROUND. When BOOST_STRICT_CONFIG +is undefine this expand to test the given symbol version value with the +comp comparison against BOOST_VERSION_NUMBER(major,minor,patch).

+
+
+
+

4.8.3. BOOST_PREDEF_TESTED_AT

+
+
+
BOOST_PREDEF_TESTED_AT(symbol,major,minor,patch)
+
+
+
+

Usage:

+
+
+
+
#if BOOST_PREDEF_TESTED_AT(BOOST_COMP_CLANG,3,5,0)
+    // Needed for clang, and last checked for 3.5.0.
+#endif
+
+
+
+

Defines a comparison against two version numbers that depends on the definion +of BOOST_STRICT_CONFIG and BOOST_DETECT_OUTDATED_WORKAROUNDS. +When BOOST_STRICT_CONFIG is defined this will expand to a value convertible +to false. Which has the effect of disabling all code +conditionally guarded by BOOST_PREDEF_TESTED_AT. When BOOST_STRICT_CONFIG +is undefined this expand to either:

+
+
+
    +
  • +

    A value convertible to true when BOOST_DETECT_OUTDATED_WORKAROUNDS is not +defined.

    +
  • +
  • +

    A value convertible true when the expansion of +BOOST_PREDEF_WORKAROUND(symbol, ⇐, major, minor, patch) is true and +BOOST_DETECT_OUTDATED_WORKAROUNDS is defined.

    +
  • +
  • +

    A compile error when the expansion of +BOOST_PREDEF_WORKAROUND(symbol, >, major, minor, patch) is true and +BOOST_DETECT_OUTDATED_WORKAROUNDS is defined.

    +
  • +
+
+
+
+
+

4.9. Version definition macros

+
+

4.9.1. BOOST_VERSION_NUMBER

+
+
+
BOOST_VERSION_NUMBER(major,minor,patch)
+
+
+
+

Defines standard version numbers, with these properties:

+
+
+
    +
  • +

    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.

    +
  • +
  • +

    The major number can be in the [0,99] range.

    +
  • +
  • +

    The minor number can be in the [0,99] range.

    +
  • +
  • +

    The patch number can be in the [0,99999] range.

    +
  • +
  • +

    Values can be specified in any base. As the defined value +is an constant expression.

    +
  • +
  • +

    Value can be directly used in both preprocessor and compiler +expressions for comparison to other similarly defined values.

    +
  • +
  • +

    The implementation enforces the individual ranges for the +major, minor, and patch numbers. And values over the ranges +are truncated (modulo).

    +
  • +
+
+
+
+
BOOST_VERSION_NUMBER_MAJOR(N), BOOST_VERSION_NUMBER_MINOR(N), BOOST_VERSION_NUMBER_PATCH(N)
+
+
+
+

The macros extract the major, minor, and patch portion from a well formed +version number resulting in a preprocessor expression in the range of +[0,99] or [0,99999] for the major and minor, or patch numbers +respectively.

+
+
+
+

4.9.2. BOOST_PREDEF_MAKE_.. macros

+
+

These set of macros decompose common vendor version number +macros which are composed version, revision, and patch digits. +The naming convention indicates:

+
+
+
    +
  • +

    The base of the specified version number. “BOOST_PREDEF_MAKE_0X” for +hexadecimal digits, and “BOOST_PREDEF_MAKE_10” for decimal digits.

    +
  • +
  • +

    The format of the vendor version number. Where “V” indicates the version digits, +“R” indicates the revision digits, “P” indicates the patch digits, and “0” +indicates an ignored digit.

    +
  • +
+
+
+

Macros are:

+
+
+
    +
  • +

    BOOST_PREDEF_MAKE_0X_VRP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_0X_VVRP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_0X_VRPP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_0X_VVRR(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_0X_VRRPPPP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_0X_VVRRP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_0X_VRRPP000(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_0X_VVRRPP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VPPP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VR0(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VRP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VRP000(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VRPPPP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VRPP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VRR(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VRRPP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VRR000(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VV00(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VVRR(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VVRRP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VVRRPP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VVRRPPP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VVRR0PP00(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VVRR0PPPP(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_10_VVRR00PP00(V)

    +
  • +
+
+
+
+

4.9.3. BOOST_PREDEF_MAKE_*.. date macros

+
+

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.

+
+
+
    +
  • +

    BOOST_PREDEF_MAKE_DATE(Y,M,D)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_YYYYMMDD(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_YYYY(V)

    +
  • +
  • +

    BOOST_PREDEF_MAKE_YYYYMM(V)

    +
  • +
+
+
+
+
+
+
+

5. Check Utilities

+
+
+

The predef_check utility provides a facility for building a +program that will check a given set of expressions against +the definitions it detected when it was built.

+
+
+

5.1. predef_check programs

+
+

Even though there is only one predef_check program, there +are variations for each of the languages that are detected +by Predef to match the convention for sources files. For all +of them one invokes with a list of expression arguments. The +expressions are evaluated within the context of the particular +predef_check program and if they all are true zero (0) is returned. +Otherwise the index of the first false expression is returned.

+
+
+

The expression syntax is simple:

+
+
+
+
predef-definition [ relational-operator version-value ]
+
+
+
+

predef-definition can be any of the Predef definitions. For +example BOOST_COMP_GCC.

+
+
+

relational-operator can be any of: >, <, >=, , +== and !=.

+
+
+

version-number can be a full or partial version triplet value. +If it’s a partial version triple it is completed with zeros. That +is x.y is equivalent to x.y.0 and x is equivalent to +x.0.0.

+
+
+

The relations-operator and version-number can be omitted. In +which case it is equivalent to:

+
+
+
+
predef-definition > 0.0.0
+
+
+
+
+

5.2. Using with Boost.Build

+
+

You can use the predef_check programs directly from Boost Build +to configure target requirements. This is useful for controlling +what gets built as part of your project based on the detailed +version information available in Predef. The basic use is simple:

+
+
+
+
import path-to-predef-src/tools/check/predef
+    : check require
+    : predef-check predef-require ;
+
+exe my_windows_program : windows_source.cpp
+    : [ predef-require "BOOST_OS_WINDOWS" ] ;
+
+
+
+

That simple use case will skip building the my_windows_program +unless one is building for Windows. Like the direct predef_check +you can pass multiple expressions using relational comparisons. +For example:

+
+
+
+
import path-to-predef-src/tools/check/predef
+    : check require
+    : predef-check predef-require ;
+
+lib my_special_lib : source.cpp
+    : [ predef-require "BOOST_OS_WINDOWS != 0" "BOOST_OS_VMS != 0"] ;
+
+
+
+

And in that case the my_special_lib is built only when the OS is +not Windows or VMS. The requires rule is a special case of the +check rule. And is defined in terms of it:

+
+
+
+
rule require ( expressions + : language ? )
+{
+    return [ check $(expressions) : $(language) : : <build>no ] ;
+}
+
+
+
+

The expression can also use explicit "and", "or" logical operators +to for more complex checks:

+
+
+
+
import path-to-predef-src/tools/check/predef
+    : check require
+    : predef-check predef-require ;
+
+lib my_special_lib : source.cpp
+    : [ predef-require "BOOST_OS_WINDOWS" or "BOOST_OS_VMS"] ;
+
+
+
+

You can use the check rule for more control and to implement +something other than control of what gets built. The definition +for the check rule is:

+
+
+
+
rule check ( expressions + : language ? : true-properties * : false-properties * )
+
+
+
+

When invoked as a requirement of a Boost Build target this rule +will add the true-properties to the target if all the expressions +evaluate to true. Otherwise the false-properties get added as +requirements. For example you could use it to enable or disable +features in your programs:

+
+
+
+
import path-to-predef-src/tools/check/predef
+    : check require
+    : predef-check predef-require ;
+
+exe my_special_exe : source.cpp
+    : [ predef-check "BOOST_OS_WINDOWS == 0"
+        : : <define>ENABLE_WMF=0
+        : <define>ENABLE_WMF=1 ] ;
+
+
+
+

For both check and require the language argument controls +which variant of the predef_check program is used to check the +expressions. It defaults to "c++", but can be any of: "c", "cpp", +"objc", and "objcpp".

+
+
+
+
+
+

6. History

+
+
+

6.1. 1.11

+
+
    +
  • +

    Add BOOST_ARCH_RISCV. (from Andreas Schwab)

    +
  • +
  • +

    Add RISC-V endian detection. (from Thomas Petazzoni)

    +
  • +
  • +

    Convert documentation to AsciiDoctor format.

    +
  • +
+
+
+
+

6.2. 1.10

+
+
    +
  • +

    Fix bad include of sub-BSD os headers from main BSD header.

    +
  • +
  • +

    Fix use of deprecated TARGET_IPHONE_SIMULATOR instead of newer +TARGET_OS_SIMULATOR.

    +
  • +
  • +

    Add BOOST_PLAT_ANDROID to resolve conflict between Linux and Android +OS predefs. The BOOST_OS_ANDROID predef is now deprecated and will be +removed in a future release.

    +
  • +
  • +

    Add support for consuming Predef as a CMake project.

    +
  • +
  • +

    Add support for consuming Predef as a standalone B2 project.

    +
  • +
+
+
+
+

6.3. 1.9

+
+
    +
  • +

    Fixes for BOOST_COMP_NVCC* predefs. (from Benjamin Worpitz)

    +
  • +
  • +

    Add specific version information for Cygwin OS predef. (from James E. King III)

    +
  • +
+
+
+
+

6.4. 1.8

+
+
    +
  • +

    Add support for __ARM_ARCH macro. (from Tim Blechmann)

    +
  • +
  • +

    Add detection for PTX architecture. (from Benjamin Worpitz)

    +
  • +
  • +

    Add nvcc compiler detection. (from Benjamin Worpitz)

    +
  • +
  • +

    Add support for detecting CUDA. (from Benjamin Worpitz)

    +
  • +
  • +

    Remove reference to obsolete BOOST_ARCH_AMD64. (from Peter Kolbus)

    +
  • +
+
+
+
+

6.5. 1.7

+
+
    +
  • +

    Fix BOOST_ARCH_PARISK/BOOST_ARCH_PARISC typo.

    +
  • +
  • +

    Improved Windows Universal Platform detection. (from James E. King, III)

    +
  • +
  • +

    Add detection for CloudABI with cloudlibc. (from James E. King, III)

    +
  • +
+
+
+
+

6.6. 1.6

+
+
    +
  • +

    Fix Intel C/C++ version 9999 detection to be 12.1.0.

    +
  • +
  • +

    Addition of BOOST_PREDEF_WORKAROUND and BOOST_PREDEF_TESTED_AT macros +for defect workarounds and detection.

    +
  • +
  • +

    Add ARM64 MSVC SIMD detection. (from Minmin Gong)

    +
  • +
  • +

    Add detection of iOS simulator vs device as a platform choice. (from Ruslan +Baratov)

    +
  • +
  • +

    Fix MinGW incorrect header guard. (from Ruslan Baratov)

    +
  • +
+
+
+
+

6.7. 1.5

+
+
    +
  • +

    Fix Intel C/C++ compiler version specification.

    +
  • +
  • +

    Add BOOST_VERSION_NUMBER_MAJOR, BOOST_VERSION_NUMBER_MINOR, +BOOST_VERSION_NUMBER_PATCH macros to extract components from valid version +numbers.

    +
  • +
  • +

    Change VS version numbering. Version after VS2015 will use the compiler +version instead of the varied product versions.

    +
  • +
+
+
+
+

6.8. 1.4.1

+
+
    +
  • +

    Small fixes for some redefinition errors, and mispelled macros.

    +
  • +
  • +

    Slightly rearrangement of structure to comply with current library requirements.

    +
  • +
+
+
+
+

6.9. 1.4

+
+
    +
  • +

    Add detection of SIMD hardware. With the addition of the BOOST_HW_* +category (from Charly Chevalier).

    +
  • +
  • +

    Add compile only version of check utilities to address cross-compile +use cases. And changed the BBv2 check support to use compile only checks.

    +
  • +
  • +

    Fix test warnings.

    +
  • +
  • +

    Fix typos on AVAILABLE macros for Windows Platform. (from Vemund Handeland)

    +
  • +
+
+
+
+

6.10. 1.3

+
+
    +
  • +

    Fix many problems with predef_check functionality.

    +
  • +
  • +

    Update SunPro detection to accommodate latest version of compiler from Oracle.

    +
  • +
  • +

    Addition of Travis-CI and Appveyor testing.

    +
  • +
  • +

    Add and and or logical operators for predef_check expression on the Boost Build side.

    +
  • +
  • +

    Fix BOOST_ARCH_PARISC to correctly spelled name (from Graham Hanson).

    +
  • +
  • +

    Fix MAKE_YYYYM macros to correctly limit the month (from rick68).

    +
  • +
+
+
+
+

6.11. 1.2

+
+
    +
  • +

    Account for skip in Visual Studio product version vs. compiler version. +This supports version of VS 2015 an onward.

    +
  • +
  • +

    Add detection of Haiku OS (from Jessica Hamilton).

    +
  • +
  • +

    Some fixes to endian detection for Android (from mstahl-at-redhat.com).

    +
  • +
  • +

    Add missing BOOST_PREDEF_MAKE_0X_VVRRPP macro (from Erik Lindahl).

    +
  • +
  • +

    Add predef_check program and BBv2 integration for build configuration +checks.

    +
  • +
+
+
+
+

6.12. 1.1

+
+
    +
  • +

    Addition of BOOST_PLAT_* platform definitions for MinGW and +Windows platform variants.

    +
  • +
  • +

    Detection of ARM architecture for Windows compilers to target +mobile devices of Windows 8.

    +
  • +
  • +

    Improved ARM detection for 64 bit ARM.

    +
  • +
  • +

    Added detection of iOS an an operating system.

    +
  • +
  • +

    Improved detection of endianess on some platforms.

    +
  • +
  • +

    Addition of exclusive plus emulated definitions for platform +and compiler detection.

    +
  • +
+
+
+ + + + + +
+
+
+The big change for this version is the restructuring of the +definitions to avoid duplicate definitions in one category. That is, only one +BOOST_OS_*, BOOST_COMP_*, and BOOST_PLAT_* variant will be detected +(except for sub-categories). +
+
+
+
+
+
+

7. To Do

+
+
+
    +
  • +

    Improve reference documentation.

    +
  • +
+
+
+
+
+

8. Acknowledgements

+
+
+

The comprehensiveness of this library would not be +possible without the existence of the indispensable +resource that is the +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.

+
+
+
+
+

Colophon

+
+
+

Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +https://www.boost.org/LICENSE_1_0.txt)

+
+
+

Copyright 2005-2019 Rene Rivera; Copyright 2015 Charly Chevalier; Copyright 2015 Joel Falcou

+
+
+
+
+ + + \ No newline at end of file diff --git a/doc/predef.qbk b/doc/predef.adoc similarity index 55% rename from doc/predef.qbk rename to doc/predef.adoc index ffffff5..a04c2bd 100644 --- a/doc/predef.qbk +++ b/doc/predef.adoc @@ -1,33 +1,41 @@ -[article Boost.Predef - [quickbook 1.7] - [version 1.10] - [authors [Rivera, Rene]] - [copyright 2005-2019 Rene Rivera] - [copyright 2015 Charly Chevalier] - [copyright 2015 Joel Falcou] - [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++] - [category miscellaneous] - [id predef] - [dirname predef] -] += Boost.Predef +:author: Rene Rivera +:toc: left +:toclevels: 3 +:sectanchors: +:sectnums: +:nofooter: +:source-highlighter: pygments +:source-language: cpp +:caution-caption: ⚑ +:important-caption: ‼ +:note-caption: ℹ +:tip-caption: ☀ +:warning-caption: ⚠ +:CPP: C++ +:predef_symbol: Symbol +:predef_version: Version +:predef_detection: pass:q[*detection*] -[section Introduction] +ifdef::backend-html5[] +++++ + +++++ +endif::[] + +== 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 +C, {CPP}, Objective C, and Objective {CPP} 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] +=== Proposal The idea is to define a set of macros to identify compilers and consistently represent their version. This includes: @@ -49,7 +57,7 @@ consistently represent their version. This includes: infrastructure using a "prefix" header (to be introduced) or boost/config/suffix.hpp is a better solution. -[heading Current Library] +=== Current Library The current Predef library is now, both an independent library, and expanded in scope. It includes detection and definition of architectures, compilers, @@ -59,46 +67,46 @@ languages, libraries, operating systems, and endianness. The key benefits are: with `#ifdef`. * Guard macros that can be used for `#ifdef` checks. * All possible definitions are included with the single `#include ` - so that it's friendly to precompiled header usage. + so that it's friendly to pre-compiled header usage. * Specific definitions can be included, ex. `#include ` 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++. + In particular {CPP}, C, Objective C, and Objective {CPP}. -[heading Design choices] +=== 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]. +constant-expressions is long in C90 (and {CPP}, 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 +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 +. 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. +(which is already reached by V{CPP} 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, +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).] +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] +=== Future work Even though the basics of this library are done, there is much work that can be done: @@ -119,27 +127,27 @@ done: * 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] +== Using the predefs To use the automatically defined predefs one needs to only include the single top-level header: -`` - #include -`` +[source] +---- +#include +---- 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 +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_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 +* `BOOST_LIB_C_` and `BOOST_LIB_STD_` for the C and {CPP} standard library in use. * `BOOST_OS_` for the operating system we are compiling to. * `BOOST_PLAT_` for platforms on top of operating system or compilers. @@ -147,27 +155,28 @@ macros of a particular prefix: * `BOOST_HW_` for hardware specific features. * `BOOST_HW_SIMD` for SIMD (Single Instruction Multiple Data) detection. -[note The detected definitions are for the configuration one is targeting +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.] +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: +a choice based on the version of the GCC {CPP} compiler one would: -`` - #include - #include +[source] +---- +#include +#include - 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; - } -`` +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 @@ -175,58 +184,61 @@ 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 - #include +[source] +---- +#include +#include - int main() - { - if (BOOST_COMP_GNUC) - std::cout << "This is GNU GCC!" << std::endl; - else - std::cout << "Not GNU GCC." << std::endl; - return 0; - } -`` +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 - #include +[source] +---- +#include +#include - #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 +#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 = "Not GNU GCC." + const char * the_compiler = "GNU GCC, less than version 4." #endif - - int main() - { - std::cout << the_compiler << std::endl; - return 0; - } -`` +#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 an `*_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 -`` +[source] +---- +#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 The `*_EMULATED` macros] +=== The `*_EMULATED` macros Predef definitions are guaranteed to be uniquely detected within one category. But there are contexts under which multiple underlying detections are possible. @@ -237,20 +249,21 @@ when this situation is detected. The emulated predefs will be set to the version number of the detection instead of the regular predef macro for that detection. For example MSVC will set `BOOST_COMP_MSVC_EMULATED` but not set `BOOST_COMP_MSVC`, and it will also set `BOOST_COMP_MSVC_AVAILABLE`. -[heading Using the `BOOST_VERSION_NUMBER` macro] +=== 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 ) ... -`` +[source] +---- +#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 +. 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, @@ -265,19 +278,20 @@ Only constant value arithmetic is used in the definition of the `BOOST_VERSION_N 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) -`` +[source] +---- +#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) -`` +[source] +---- +#define MY_APPLICATION_VERSION_NUMBER BOOST_VERSION_NUMBER(2,10,13) +---- -[endsect] -[section Adding new predefs] +== 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 @@ -285,7 +299,7 @@ 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] +=== Requirements of the header All predefs need to follow a set of requirements: @@ -317,13 +331,14 @@ And there are some extra guidelines that predef headers should follow: include the one with the minimal set of definitions and other dependencies. -[heading Structure of the header] +=== 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: -`` +[source] +---- /* Copyright Jane Doe YYYY Distributed under the Boost Software License, Version 1.0. @@ -333,53 +348,59 @@ http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PREDEF_category_tag_H #define BOOST_PREDEF_category_tag_H -`` +---- If the detection depends on the detection of another predef you should include those headers here. -`` +[source] +---- #include -`` +---- 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: -`` +[source] +---- #include #include -`` +---- -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 +The Predef library uses https://asciidoctor.org/[Asciidoctor] 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`] +[source] +---- +/* tag::reference[] + += `BOOST_category_tag` Documentation about what is detected. + */ #define BOOST_category_tag BOOST_VERSION_NUMBER_NOT_AVAILABLE -`` +---- 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 overall check is to "`#undef BOOST_category_tag`" which removes 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_AVAILABLE`" as the fallback -to minimally indicate that the predef was detected: +"`#define BOOST_category_tag BOOST_VERSION_NUMBER_AVAILABLE`" as +the fallback to minimally indicate that the predef was detected: -`` +[source] +---- #if (condition_a) # undef BOOST_category_tag # if (condition_b) @@ -388,21 +409,32 @@ to minimally indicate that the predef was detected: # define BOOST_category_tag BOOST_VERSION_NUMBER_AVAILABLE # endif #endif -`` +---- We also need to provide the `*_AVAILABLE` versions of the predef. -`` +[source] +---- #if BOOST_category_tag # define BOOST_category_tag_AVAILABLE #endif -`` +---- And for convenience we also want to provide a `*_NAME` macro: -`` +[source] +---- #define BOOST_category_tag_NAME "Name" -`` +---- + +We close out the include guard at this point. We do whis before the test +declaration as the testing system includes the headers multiple times +to generate the needed testing code. + +[source] +---- +#endif +---- 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 @@ -410,18 +442,13 @@ 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: -`` +[source] +---- #include 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 Adding exclusive predefs] +=== Adding exclusive predefs For headers of predefs that need to be mutually exclusive in the detection we need to add checks and definitions to detect when the predef is @@ -434,7 +461,8 @@ detected. This is used to guard against multiple definition of the detection in later included headers. In those cases the detection would instead be written as: -`` +[source] +---- #if !BOOST_PREDEF_DETAIL_category_DETECTED && (condition_a) # undef BOOST_category_tag # if (condition_b) @@ -443,21 +471,22 @@ written as: # define BOOST_category_tag BOOST_VERSION_NUMBER(0,0,1) # endif #endif -`` +---- And we also include a header that defines the `*_DETECTED` macro when we have the detection: -`` +[source] +---- #if BOOST_category_tag # define BOOST_category_tag_AVAILABLE # include #endif -`` +---- Everything else about the header is the same as the basic detection header. -[heading Adding an exclusive but emulated predef] +=== Adding an exclusive but emulated predef Because compilers are frequently emulated by other compilers we both want to have exclusive detection of the compiler and also provide information @@ -468,7 +497,8 @@ define either the base compiler predef `BOOST_COMP_compiler` or the alternate The initial detection would look like: -`` +[source] +---- #if (condition_a) # if (condition_b) # define BOOST_COMP_tag_DETECTION BOOST_VERSION_NUMBER(major,minor,patch) @@ -476,11 +506,12 @@ The initial detection would look like: # define BOOST_COMP_tag_DETECTION BOOST_VERSION_NUMBER_AVAILABLE # endif #endif -`` +---- And then we can conditionally define the base or emulated predefs: -`` +[source] +---- #ifdef BOOST_COMP_tag_DETECTION # if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED) # define BOOST_COMP_tag_EMULATED BOOST_COMP_tag_DETECTION @@ -491,204 +522,445 @@ And then we can conditionally define the base or emulated predefs: # define BOOST_category_tag_AVAILABLE # include #endif -`` +---- -[heading Using utility pattern macros] +=== Using utility pattern macros By including: -`` +[source] +---- #include -`` +---- One will get a set of utility 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 decomposed and defined as: -`` +[source] +---- #define BOOST_COMP_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] +== Reference -[section `BOOST_ARCH` architecture macros] -[include ../include/boost/predef/architecture/*.h] -[include ../include/boost/predef/architecture/x86/*.h] -[endsect] +=== `BOOST_ARCH` architecture macros -[section `BOOST_COMP` compiler macros] -[include ../include/boost/predef/compiler/*.h] -[endsect] +:leveloffset: +3 -[section `BOOST_LANG` language standards macros] -[include ../include/boost/predef/language/*.h] -[endsect] +include::../include/boost/predef/architecture/alpha.h[tag=reference] -[section `BOOST_LIB` library macros] -[include ../include/boost/predef/library/c/*.h] -[include ../include/boost/predef/library/std/*.h] -[endsect] +include::../include/boost/predef/architecture/arm.h[tag=reference] -[section `BOOST_OS` operating system macros] -[include ../include/boost/predef/os/*.h] -[include ../include/boost/predef/os/bsd/*.h] -[endsect] +include::../include/boost/predef/architecture/blackfin.h[tag=reference] -[section `BOOST_PLAT` platform macros] -[include ../include/boost/predef/platform/*.h] -[endsect] +include::../include/boost/predef/architecture/convex.h[tag=reference] -[section `BOOST_HW` hardware macros] -[include ../include/boost/predef/hardware/*.h] -[endsect] +include::../include/boost/predef/architecture/ia64.h[tag=reference] -[section Other macros] -[include ../include/boost/predef/other/*.h] -[endsect] +include::../include/boost/predef/architecture/m68k.h[tag=reference] -[section Version definition macros] -[include ../include/boost/predef/version_number.h] -[include ../include/boost/predef/make.h] -[endsect] +include::../include/boost/predef/architecture/mips.h[tag=reference] -[endsect] +include::../include/boost/predef/architecture/parisc.h[tag=reference] -[section Check Utilities] +include::../include/boost/predef/architecture/ppc.h[tag=reference] + +include::../include/boost/predef/architecture/ptx.h[tag=reference] + +include::../include/boost/predef/architecture/pyramid.h[tag=reference] + +include::../include/boost/predef/architecture/riscv.h[tag=reference] + +include::../include/boost/predef/architecture/rs6k.h[tag=reference] + +include::../include/boost/predef/architecture/sparc.h[tag=reference] + +include::../include/boost/predef/architecture/superh.h[tag=reference] + +include::../include/boost/predef/architecture/sys370.h[tag=reference] + +include::../include/boost/predef/architecture/sys390.h[tag=reference] + +include::../include/boost/predef/architecture/x86.h[tag=reference] + +include::../include/boost/predef/architecture/z.h[tag=reference] + +include::../include/boost/predef/architecture/x86/32.h[tag=reference] + +include::../include/boost/predef/architecture/x86/64.h[tag=reference] + +:leveloffset: -3 + +=== `BOOST_COMP` compiler macros + +:leveloffset: +3 + +include::../include/boost/predef/compiler/borland.h[tag=reference] + +include::../include/boost/predef/compiler/clang.h[tag=reference] + +include::../include/boost/predef/compiler/comeau.h[tag=reference] + +include::../include/boost/predef/compiler/compaq.h[tag=reference] + +include::../include/boost/predef/compiler/diab.h[tag=reference] + +include::../include/boost/predef/compiler/digitalmars.h[tag=reference] + +include::../include/boost/predef/compiler/dignus.h[tag=reference] + +include::../include/boost/predef/compiler/edg.h[tag=reference] + +include::../include/boost/predef/compiler/ekopath.h[tag=reference] + +include::../include/boost/predef/compiler/gcc.h[tag=reference] + +include::../include/boost/predef/compiler/gcc_xml.h[tag=reference] + +include::../include/boost/predef/compiler/greenhills.h[tag=reference] + +include::../include/boost/predef/compiler/hp_acc.h[tag=reference] + +include::../include/boost/predef/compiler/iar.h[tag=reference] + +include::../include/boost/predef/compiler/ibm.h[tag=reference] + +include::../include/boost/predef/compiler/intel.h[tag=reference] + +include::../include/boost/predef/compiler/kai.h[tag=reference] + +include::../include/boost/predef/compiler/llvm.h[tag=reference] + +include::../include/boost/predef/compiler/metaware.h[tag=reference] + +include::../include/boost/predef/compiler/metrowerks.h[tag=reference] + +include::../include/boost/predef/compiler/microtec.h[tag=reference] + +include::../include/boost/predef/compiler/mpw.h[tag=reference] + +include::../include/boost/predef/compiler/nvcc.h[tag=reference] + +include::../include/boost/predef/compiler/palm.h[tag=reference] + +include::../include/boost/predef/compiler/pgi.h[tag=reference] + +include::../include/boost/predef/compiler/sgi_mipspro.h[tag=reference] + +include::../include/boost/predef/compiler/sunpro.h[tag=reference] + +include::../include/boost/predef/compiler/tendra.h[tag=reference] + +include::../include/boost/predef/compiler/visualc.h[tag=reference] + +include::../include/boost/predef/compiler/watcom.h[tag=reference] + +:leveloffset: -3 + +=== `BOOST_LANG` language standards macros + +:leveloffset: +3 + +include::../include/boost/predef/language/cuda.h[tag=reference] + +include::../include/boost/predef/language/objc.h[tag=reference] + +include::../include/boost/predef/language/stdc.h[tag=reference] + +include::../include/boost/predef/language/stdcpp.h[tag=reference] + +:leveloffset: -3 + +=== `BOOST_LIB` library macros + +:leveloffset: +3 + +include::../include/boost/predef/library/c/cloudabi.h[tag=reference] + +include::../include/boost/predef/library/c/gnu.h[tag=reference] + +include::../include/boost/predef/library/c/uc.h[tag=reference] + +include::../include/boost/predef/library/c/vms.h[tag=reference] + +include::../include/boost/predef/library/c/zos.h[tag=reference] + +include::../include/boost/predef/library/std/cxx.h[tag=reference] + +include::../include/boost/predef/library/std/dinkumware.h[tag=reference] + +include::../include/boost/predef/library/std/libcomo.h[tag=reference] + +include::../include/boost/predef/library/std/modena.h[tag=reference] + +include::../include/boost/predef/library/std/msl.h[tag=reference] + +include::../include/boost/predef/library/std/roguewave.h[tag=reference] + +include::../include/boost/predef/library/std/sgi.h[tag=reference] + +include::../include/boost/predef/library/std/stdcpp3.h[tag=reference] + +include::../include/boost/predef/library/std/stlport.h[tag=reference] + +include::../include/boost/predef/library/std/vacpp.h[tag=reference] + +:leveloffset: -3 + +=== `BOOST_OS` operating system macros + +:leveloffset: +3 + +include::../include/boost/predef/os/aix.h[tag=reference] + +include::../include/boost/predef/os/amigaos.h[tag=reference] + +include::../include/boost/predef/os/android.h[tag=reference] + +include::../include/boost/predef/os/beos.h[tag=reference] + +include::../include/boost/predef/os/bsd.h[tag=reference] + +include::../include/boost/predef/os/cygwin.h[tag=reference] + +include::../include/boost/predef/os/haiku.h[tag=reference] + +include::../include/boost/predef/os/hpux.h[tag=reference] + +include::../include/boost/predef/os/ios.h[tag=reference] + +include::../include/boost/predef/os/irix.h[tag=reference] + +include::../include/boost/predef/os/linux.h[tag=reference] + +include::../include/boost/predef/os/macos.h[tag=reference] + +include::../include/boost/predef/os/os400.h[tag=reference] + +include::../include/boost/predef/os/qnxnto.h[tag=reference] + +include::../include/boost/predef/os/solaris.h[tag=reference] + +include::../include/boost/predef/os/unix.h[tag=reference] + +include::../include/boost/predef/os/vms.h[tag=reference] + +include::../include/boost/predef/os/windows.h[tag=reference] + +include::../include/boost/predef/os/bsd/bsdi.h[tag=reference] + +include::../include/boost/predef/os/bsd/dragonfly.h[tag=reference] + +include::../include/boost/predef/os/bsd/free.h[tag=reference] + +include::../include/boost/predef/os/bsd/net.h[tag=reference] + +include::../include/boost/predef/os/bsd/open.h[tag=reference] + +:leveloffset: -3 + +=== `BOOST_PLAT` platform macros + +:leveloffset: +3 + +include::../include/boost/predef/platform/android.h[tag=reference] + +include::../include/boost/predef/platform/cloudabi.h[tag=reference] + +include::../include/boost/predef/platform/ios.h[tag=reference] + +include::../include/boost/predef/platform/mingw.h[tag=reference] + +include::../include/boost/predef/platform/mingw32.h[tag=reference] + +include::../include/boost/predef/platform/mingw64.h[tag=reference] + +include::../include/boost/predef/platform/windows_desktop.h[tag=reference] + +include::../include/boost/predef/platform/windows_phone.h[tag=reference] + +include::../include/boost/predef/platform/windows_runtime.h[tag=reference] + +include::../include/boost/predef/platform/windows_server.h[tag=reference] + +include::../include/boost/predef/platform/windows_store.h[tag=reference] + +include::../include/boost/predef/platform/windows_system.h[tag=reference] + +include::../include/boost/predef/platform/windows_uwp.h[tag=reference] + +:leveloffset: -3 + +=== `BOOST_HW` hardware macros + +:leveloffset: +3 + +include::../include/boost/predef/hardware/simd.h[tag=reference] + +include::../include/boost/predef/hardware/simd/arm.h[tag=reference] + +include::../include/boost/predef/hardware/simd/arm/versions.h[tag=reference] + +include::../include/boost/predef/hardware/simd/ppc.h[tag=reference] + +include::../include/boost/predef/hardware/simd/ppc/versions.h[tag=reference] + +include::../include/boost/predef/hardware/simd/x86.h[tag=reference] + +include::../include/boost/predef/hardware/simd/x86/versions.h[tag=reference] + +include::../include/boost/predef/hardware/simd/x86_amd.h[tag=reference] + +include::../include/boost/predef/hardware/simd/x86_amd/versions.h[tag=reference] + +:leveloffset: -3 + +=== Other macros + +:leveloffset: +3 + +include::../include/boost/predef/other/endian.h[tag=reference] + +include::../include/boost/predef/other/workaround.h[tag=reference] + +:leveloffset: -3 + +=== Version definition macros + +:leveloffset: +3 + +include::../include/boost/predef/version_number.h[tag=reference] + +include::../include/boost/predef/make.h[tag=reference] + +:leveloffset: -3 + +== Check Utilities The `predef_check` utility provides a facility for building a program that will check a given set of expressions against the definitions it detected when it was built. -[heading [^predef_check] programs] +=== `predef_check` programs Even though there is only one `predef_check` program, there are variations for each of the languages that are detected by Predef to match the convention for sources files. For all of them one invokes with a list of expression arguments. The expressions are evaluated within the context of the particular -[^predef_check] program and if they all are true zero (0) is returned. +`predef_check` program and if they all are true zero (0) is returned. Otherwise the index of the first false expression is returned. The expression syntax is simple: -[teletype] -`` +[source,jam] +---- predef-definition [ relational-operator version-value ] -`` -[c++] +---- -[~predef-definition] can be any of the Predef definitions. For +_predef-definition_ can be any of the Predef definitions. For example `BOOST_COMP_GCC`. -[~relational-operator] can be any of: [^>], [^<], [^>=], [^<=], -[^==] and [^!=]. +_relational-operator_ can be any of: `>`, `<`, `>=`, `<=`, +`==` and `!=`. -[~version-number] can be a full or partial version triplet value. +_version-number_ can be a full or partial version triplet value. If it's a partial version triple it is completed with zeros. That -is [^x.y] is equivalent to [^x.y.0] and [^x] is equivalent to -[^x.0.0]. +is `x.y` is equivalent to `x.y.0` and `x` is equivalent to +`x.0.0`. -The [~relations-operator] and [~version-number] can be ommited. In +The _relations-operator_ and _version-number_ can be omitted. In which case it is equivalent to: -[teletype] -`` +[source,jam] +---- predef-definition > 0.0.0 -`` -[c++] +---- -[heading Using with Boost.Build] +=== Using with Boost.Build -You can use the [^predef_check] programs directly from Boost Build +You can use the `predef_check` programs directly from Boost Build to configure target requirements. This is useful for controlling what gets built as part of your project based on the detailed version information available in Predef. The basic use is simple: -[teletype] -`` +[source,jam] +---- import path-to-predef-src/tools/check/predef : check require : predef-check predef-require ; exe my_windows_program : windows_source.cpp : [ predef-require "BOOST_OS_WINDOWS" ] ; -`` -[c++] +---- -That simple use case will skip building the [^my_windows_program] -unless one is building for Windows. Like the direct [^predef_check] -you can pass mutiple expressions using relational comparisons. +That simple use case will skip building the `my_windows_program` +unless one is building for Windows. Like the direct `predef_check` +you can pass multiple expressions using relational comparisons. For example: -[teletype] -`` +[source,jam] +---- import path-to-predef-src/tools/check/predef : check require : predef-check predef-require ; lib my_special_lib : source.cpp : [ predef-require "BOOST_OS_WINDOWS != 0" "BOOST_OS_VMS != 0"] ; -`` -[c++] +---- -And in that case the [^my_special_lib] is built only when the OS is -not Windows or VMS. The [^requires] rule is a special case of the -[^check] rule. And is defined in terms of it: +And in that case the `my_special_lib` is built only when the OS is +not Windows or VMS. The `requires` rule is a special case of the +`check` rule. And is defined in terms of it: -[teletype] -`` +[source,jam] +---- rule require ( expressions + : language ? ) { return [ check $(expressions) : $(language) : : no ] ; } -`` -[c++] +---- The expression can also use explicit "and", "or" logical operators to for more complex checks: -[teletype] -`` +[source,jam] +---- import path-to-predef-src/tools/check/predef : check require : predef-check predef-require ; lib my_special_lib : source.cpp : [ predef-require "BOOST_OS_WINDOWS" or "BOOST_OS_VMS"] ; -`` -[c++] +---- -You can use the [^check] rule for more control and to implement +You can use the `check` rule for more control and to implement something other than control of what gets built. The definition -for the [^check] rule is: +for the `check` rule is: -[teletype] -`` +[source,jam] +---- rule check ( expressions + : language ? : true-properties * : false-properties * ) -`` -[c++] +---- -When invoked as a reuirement of a Boost Build target this rule -will add the [^true-properties] to the target if all the [^expressions] -evaluate to true. Otherwise the [^false-properties] get added as +When invoked as a requirement of a Boost Build target this rule +will add the `true-properties` to the target if all the `expressions` +evaluate to true. Otherwise the `false-properties` get added as requirements. For example you could use it to enable or disable features in your programs: -[teletype] -`` +[source,jam] +---- import path-to-predef-src/tools/check/predef : check require : predef-check predef-require ; @@ -697,25 +969,28 @@ exe my_special_exe : source.cpp : [ predef-check "BOOST_OS_WINDOWS == 0" : : ENABLE_WMF=0 : ENABLE_WMF=1 ] ; -`` -[c++] +---- -For both [^check] and [^require] the [^language] argument controls -which variant of the [^predef_check] program is used to check the +For both `check` and `require` the `language` argument controls +which variant of the `predef_check` program is used to check the expressions. It defaults to "c++", but can be any of: "c", "cpp", "objc", and "objcpp". -[endsect] -[include history.qbk] -[include todo.qbk] +:leveloffset: +1 -[section Acknoledgements] +include::history.adoc[] + +include::todo.adoc[] + +:leveloffset: -1 + +== Acknowledgements The comprehensiveness of this library would not be possible without the existence of the indispensable resource that is the -[@http://sourceforge.net/p/predef/ Pre-defined C/C++ Compiler Macros] +http://sourceforge.net/p/predef/[Pre-defined C/{CPP} 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 @@ -731,4 +1006,11 @@ 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] +[colophon] +== Colophon + +Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +https://www.boost.org/LICENSE_1_0.txt) + +Copyright 2005-2019 Rene Rivera; Copyright 2015 Charly Chevalier; Copyright 2015 Joel Falcou \ No newline at end of file diff --git a/doc/predef.css b/doc/predef.css new file mode 100644 index 0000000..e023fb7 --- /dev/null +++ b/doc/predef.css @@ -0,0 +1,45 @@ +/* +Copyright 2018-2019 Rene Rivera +Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) +*/ +.admonitionblock .icon .title { + font-size: 2.5em; + text-shadow: 1px 1px 2px rgba(0, 0, 0, .5); +} +.caution .icon .title { + color: rgba(192, 51, 0, 1); +} +.important .icon .title { + color: rgba(192, 0, 0, 1); +} +.note .icon .title { + color: rgba(26, 64, 128, 1); +} +.tip .icon .title { + color: rgba(255, 192, 0, 1); +} +.warning .icon .title { + color: rgba(192, 102, 0, 1); +} +p,blockquote,dt,td.content,span.alt { + font-size: 1.1rem +} +h1, h2, h3, h4, h5, h6 { + font-weight: bold; +} +h1 { + font-size: 2.25em; +} +h2 { + font-size: 1.5em; +} +h3,#toctitle,.sidebarblock>.content>.title { + font-size: 1.3em; +} +h4, h5 { + font-size: 1.2em; +} +h6 { + font-size: 1.1em; +} diff --git a/doc/pygments_init.rb b/doc/pygments_init.rb new file mode 100644 index 0000000..d18a032 --- /dev/null +++ b/doc/pygments_init.rb @@ -0,0 +1,11 @@ +=begin +Copyright 2018 Rene Rivera +Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE.txt or http://www.boost.org/LICENSE_1_0.txt) +=end + +require 'pygments' + +# Need to create/register non-builtin lexers even if they are global plugins. +Pygments::Lexer.create name: 'Jam', aliases: ['jam','bjam','b2'], + filenames: ['*.jam','Jamfile','Jamroot'], mimetypes: ['text/x-jam'] diff --git a/doc/todo.qbk b/doc/todo.adoc similarity index 87% rename from doc/todo.qbk rename to doc/todo.adoc index ea50d20..2a7b2f2 100644 --- a/doc/todo.qbk +++ b/doc/todo.adoc @@ -1,12 +1,10 @@ -[/ +//// Copyright 2014-2017 Rene Rivera 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) -] +//// -[section To Do] += To Do * Improve reference documentation. - -[endsect] diff --git a/include/boost/predef/architecture/alpha.h b/include/boost/predef/architecture/alpha.h index 5bcade1..a24b10f 100644 --- a/include/boost/predef/architecture/alpha.h +++ b/include/boost/predef/architecture/alpha.h @@ -11,22 +11,23 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_ALPHA`] +/* tag::reference[] += `BOOST_ARCH_ALPHA` -[@http://en.wikipedia.org/wiki/DEC_Alpha DEC Alpha] architecture. +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__]] +[options="header"] +|=== +| {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]] - ] - */ +| `+__alpha_ev4__+` | 4.0.0 +| `+__alpha_ev5__+` | 5.0.0 +| `+__alpha_ev6__+` | 6.0.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/arm.h b/include/boost/predef/architecture/arm.h index 45a0a8e..b7a8a83 100644 --- a/include/boost/predef/architecture/arm.h +++ b/include/boost/predef/architecture/arm.h @@ -13,59 +13,60 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_ARM`] +/* tag::reference[] += `BOOST_ARCH_ARM` -[@http://en.wikipedia.org/wiki/ARM_architecture ARM] architecture. +http://en.wikipedia.org/wiki/ARM_architecture[ARM] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__ARM_ARCH`] [__predef_detection__]] - [[`__TARGET_ARCH_ARM`] [__predef_detection__]] - [[`__TARGET_ARCH_THUMB`] [__predef_detection__]] - [[`_M_ARM`] [__predef_detection__]] - [[`__arm__`] [__predef_detection__]] - [[`__arm64`] [__predef_detection__]] - [[`__thumb__`] [__predef_detection__]] - [[`_M_ARM64`] [__predef_detection__]] - [[`__aarch64__`] [__predef_detection__]] - [[`__AARCH64EL__`] [__predef_detection__]] - [[`__ARM_ARCH_7__`] [__predef_detection__]] - [[`__ARM_ARCH_7A__`] [__predef_detection__]] - [[`__ARM_ARCH_7R__`] [__predef_detection__]] - [[`__ARM_ARCH_7M__`] [__predef_detection__]] - [[`__ARM_ARCH_6K__`] [__predef_detection__]] - [[`__ARM_ARCH_6Z__`] [__predef_detection__]] - [[`__ARM_ARCH_6KZ__`] [__predef_detection__]] - [[`__ARM_ARCH_6T2__`] [__predef_detection__]] - [[`__ARM_ARCH_5TE__`] [__predef_detection__]] - [[`__ARM_ARCH_5TEJ__`] [__predef_detection__]] - [[`__ARM_ARCH_4T__`] [__predef_detection__]] - [[`__ARM_ARCH_4__`] [__predef_detection__]] +| `+__ARM_ARCH+` | {predef_detection} +| `+__TARGET_ARCH_ARM+` | {predef_detection} +| `+__TARGET_ARCH_THUMB+` | {predef_detection} +| `+_M_ARM+` | {predef_detection} +| `+__arm__+` | {predef_detection} +| `+__arm64+` | {predef_detection} +| `+__thumb__+` | {predef_detection} +| `+_M_ARM64+` | {predef_detection} +| `+__aarch64__+` | {predef_detection} +| `+__AARCH64EL__+` | {predef_detection} +| `+__ARM_ARCH_7__+` | {predef_detection} +| `+__ARM_ARCH_7A__+` | {predef_detection} +| `+__ARM_ARCH_7R__+` | {predef_detection} +| `+__ARM_ARCH_7M__+` | {predef_detection} +| `+__ARM_ARCH_6K__+` | {predef_detection} +| `+__ARM_ARCH_6Z__+` | {predef_detection} +| `+__ARM_ARCH_6KZ__+` | {predef_detection} +| `+__ARM_ARCH_6T2__+` | {predef_detection} +| `+__ARM_ARCH_5TE__+` | {predef_detection} +| `+__ARM_ARCH_5TEJ__+` | {predef_detection} +| `+__ARM_ARCH_4T__+` | {predef_detection} +| `+__ARM_ARCH_4__+` | {predef_detection} - [[`__ARM_ARCH`] [V.0.0]] - [[`__TARGET_ARCH_ARM`] [V.0.0]] - [[`__TARGET_ARCH_THUMB`] [V.0.0]] - [[`_M_ARM`] [V.0.0]] - [[`__arm64`] [8.0.0]] - [[`_M_ARM64`] [8.0.0]] - [[`__aarch64__`] [8.0.0]] - [[`__AARCH64EL__`] [8.0.0]] - [[`__ARM_ARCH_7__`] [7.0.0]] - [[`__ARM_ARCH_7A__`] [7.0.0]] - [[`__ARM_ARCH_7R__`] [7.0.0]] - [[`__ARM_ARCH_7M__`] [7.0.0]] - [[`__ARM_ARCH_6K__`] [6.0.0]] - [[`__ARM_ARCH_6Z__`] [6.0.0]] - [[`__ARM_ARCH_6KZ__`] [6.0.0]] - [[`__ARM_ARCH_6T2__`] [6.0.0]] - [[`__ARM_ARCH_5TE__`] [5.0.0]] - [[`__ARM_ARCH_5TEJ__`] [5.0.0]] - [[`__ARM_ARCH_4T__`] [4.0.0]] - [[`__ARM_ARCH_4__`] [4.0.0]] - ] - */ +| `+__ARM_ARCH+` | V.0.0 +| `+__TARGET_ARCH_ARM+` | V.0.0 +| `+__TARGET_ARCH_THUMB+` | V.0.0 +| `+_M_ARM+` | V.0.0 +| `+__arm64+` | 8.0.0 +| `+_M_ARM64+` | 8.0.0 +| `+__aarch64__+` | 8.0.0 +| `+__AARCH64EL__+` | 8.0.0 +| `+__ARM_ARCH_7__+` | 7.0.0 +| `+__ARM_ARCH_7A__+` | 7.0.0 +| `+__ARM_ARCH_7R__+` | 7.0.0 +| `+__ARM_ARCH_7M__+` | 7.0.0 +| `+__ARM_ARCH_6K__+` | 6.0.0 +| `+__ARM_ARCH_6Z__+` | 6.0.0 +| `+__ARM_ARCH_6KZ__+` | 6.0.0 +| `+__ARM_ARCH_6T2__+` | 6.0.0 +| `+__ARM_ARCH_5TE__+` | 5.0.0 +| `+__ARM_ARCH_5TEJ__+` | 5.0.0 +| `+__ARM_ARCH_4T__+` | 4.0.0 +| `+__ARM_ARCH_4__+` | 4.0.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/blackfin.h b/include/boost/predef/architecture/blackfin.h index 84c58a2..ce1a655 100644 --- a/include/boost/predef/architecture/blackfin.h +++ b/include/boost/predef/architecture/blackfin.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_BLACKFIN`] +/* tag::reference[] += `BOOST_ARCH_BLACKFIN` Blackfin Processors from Analog Devices. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__bfin__`] [__predef_detection__]] - [[`__BFIN__`] [__predef_detection__]] - [[`bfin`] [__predef_detection__]] - [[`BFIN`] [__predef_detection__]] - ] - */ +| `+__bfin__+` | {predef_detection} +| `+__BFIN__+` | {predef_detection} +| `bfin` | {predef_detection} +| `BFIN` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_BLACKFIN BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/convex.h b/include/boost/predef/architecture/convex.h index ac783a9..5ce59c7 100644 --- a/include/boost/predef/architecture/convex.h +++ b/include/boost/predef/architecture/convex.h @@ -11,23 +11,24 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_CONVEX`] +/* tag::reference[] += `BOOST_ARCH_CONVEX` -[@http://en.wikipedia.org/wiki/Convex_Computer Convex Computer] architecture. +http://en.wikipedia.org/wiki/Convex_Computer[Convex Computer] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__convex__`] [__predef_detection__]] +| `+__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]] - ] - */ +| `+__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 +|=== +*/ // end::reference[] #define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/ia64.h b/include/boost/predef/architecture/ia64.h index 9b1972b..12a08d1 100644 --- a/include/boost/predef/architecture/ia64.h +++ b/include/boost/predef/architecture/ia64.h @@ -11,22 +11,23 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_IA64`] +/* tag::reference[] += `BOOST_ARCH_IA64` -[@http://en.wikipedia.org/wiki/Ia64 Intel Itanium 64] architecture. +http://en.wikipedia.org/wiki/Ia64[Intel Itanium 64] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__ia64__`] [__predef_detection__]] - [[`_IA64`] [__predef_detection__]] - [[`__IA64__`] [__predef_detection__]] - [[`__ia64`] [__predef_detection__]] - [[`_M_IA64`] [__predef_detection__]] - [[`__itanium__`] [__predef_detection__]] - ] - */ +| `+__ia64__+` | {predef_detection} +| `+_IA64+` | {predef_detection} +| `+__IA64__+` | {predef_detection} +| `+__ia64+` | {predef_detection} +| `+_M_IA64+` | {predef_detection} +| `+__itanium__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_IA64 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/m68k.h b/include/boost/predef/architecture/m68k.h index 63ed5f8..2d87745 100644 --- a/include/boost/predef/architecture/m68k.h +++ b/include/boost/predef/architecture/m68k.h @@ -11,37 +11,38 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_M68K`] +/* tag::reference[] += `BOOST_ARCH_M68K` -[@http://en.wikipedia.org/wiki/M68k Motorola 68k] architecture. +http://en.wikipedia.org/wiki/M68k[Motorola 68k] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__m68k__`] [__predef_detection__]] - [[`M68000`] [__predef_detection__]] +| `+__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]] - ] - */ +| `+__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 +|=== +*/ // end::reference[] #define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/mips.h b/include/boost/predef/architecture/mips.h index 0189d7d..490c5e5 100644 --- a/include/boost/predef/architecture/mips.h +++ b/include/boost/predef/architecture/mips.h @@ -11,30 +11,31 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_MIPS`] +/* tag::reference[] += `BOOST_ARCH_MIPS` -[@http://en.wikipedia.org/wiki/MIPS_architecture MIPS] architecture. +http://en.wikipedia.org/wiki/MIPS_architecture[MIPS] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__mips__`] [__predef_detection__]] - [[`__mips`] [__predef_detection__]] - [[`__MIPS__`] [__predef_detection__]] +| `+__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]] - ] - */ +| `+__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 +|=== +*/ // end::reference[] #define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/parisc.h b/include/boost/predef/architecture/parisc.h index c75a1f3..0825445 100644 --- a/include/boost/predef/architecture/parisc.h +++ b/include/boost/predef/architecture/parisc.h @@ -11,28 +11,29 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_PARISC`] +/* tag::reference[] += `BOOST_ARCH_PARISC` -[@http://en.wikipedia.org/wiki/PA-RISC_family HP/PA RISC] architecture. +http://en.wikipedia.org/wiki/PA-RISC_family[HP/PA RISC] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__hppa__`] [__predef_detection__]] - [[`__hppa`] [__predef_detection__]] - [[`__HPPA__`] [__predef_detection__]] +| `+__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]] - ] - */ +| `+_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 +|=== +*/ // end::reference[] #define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/ppc.h b/include/boost/predef/architecture/ppc.h index e8c57c9..019e11b 100644 --- a/include/boost/predef/architecture/ppc.h +++ b/include/boost/predef/architecture/ppc.h @@ -11,32 +11,33 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_PPC`] +/* tag::reference[] += `BOOST_ARCH_PPC` -[@http://en.wikipedia.org/wiki/PowerPC PowerPC] architecture. +http://en.wikipedia.org/wiki/PowerPC[PowerPC] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {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__]] +| `+__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]] - ] - */ +| `+__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 +|=== +*/ // end::reference[] #define BOOST_ARCH_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/ptx.h b/include/boost/predef/architecture/ptx.h index 335517b..a331094 100644 --- a/include/boost/predef/architecture/ptx.h +++ b/include/boost/predef/architecture/ptx.h @@ -11,19 +11,20 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_PTX`] +/* tag::reference[] += `BOOST_ARCH_PTX` -[@https://en.wikipedia.org/wiki/Parallel_Thread_Execution PTX] architecture. +https://en.wikipedia.org/wiki/Parallel_Thread_Execution[PTX] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__CUDA_ARCH__`] [__predef_detection__]] +| `+__CUDA_ARCH__+` | {predef_detection} - [[`__CUDA_ARCH__`] [V.R.0]] - ] - */ +| `+__CUDA_ARCH__+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_PTX BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/pyramid.h b/include/boost/predef/architecture/pyramid.h index 4f13253..afcd1a9 100644 --- a/include/boost/predef/architecture/pyramid.h +++ b/include/boost/predef/architecture/pyramid.h @@ -11,17 +11,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_PYRAMID`] +/* tag::reference[] += `BOOST_ARCH_PYRAMID` Pyramid 9810 architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`pyr`] [__predef_detection__]] - ] - */ +| `pyr` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_PYRAMID BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/riscv.h b/include/boost/predef/architecture/riscv.h index 92cbff3..7c3a7ba 100644 --- a/include/boost/predef/architecture/riscv.h +++ b/include/boost/predef/architecture/riscv.h @@ -11,17 +11,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_RISCV`] +/* tag::reference[] += `BOOST_ARCH_RISCV` -[@http://en.wikipedia.org/wiki/RISC-V] architecture. +http://en.wikipedia.org/wiki/RISC-V[RISC-V] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__riscv`] [__predef_detection__]] - ] - */ +| `+__riscv+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_RISCV BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/rs6k.h b/include/boost/predef/architecture/rs6k.h index 8a6e9b6..e33c793 100644 --- a/include/boost/predef/architecture/rs6k.h +++ b/include/boost/predef/architecture/rs6k.h @@ -11,21 +11,22 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_RS6000`] +/* tag::reference[] += `BOOST_ARCH_RS6000` -[@http://en.wikipedia.org/wiki/RS/6000 RS/6000] architecture. +http://en.wikipedia.org/wiki/RS/6000[RS/6000] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__THW_RS6000`] [__predef_detection__]] - [[`_IBMR2`] [__predef_detection__]] - [[`_POWER`] [__predef_detection__]] - [[`_ARCH_PWR`] [__predef_detection__]] - [[`_ARCH_PWR2`] [__predef_detection__]] - ] - */ +| `+__THW_RS6000+` | {predef_detection} +| `+_IBMR2+` | {predef_detection} +| `+_POWER+` | {predef_detection} +| `+_ARCH_PWR+` | {predef_detection} +| `+_ARCH_PWR2+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_RS6000 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/sparc.h b/include/boost/predef/architecture/sparc.h index a89a510..31551e3 100644 --- a/include/boost/predef/architecture/sparc.h +++ b/include/boost/predef/architecture/sparc.h @@ -11,21 +11,22 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_SPARC`] +/* tag::reference[] += `BOOST_ARCH_SPARC` -[@http://en.wikipedia.org/wiki/SPARC SPARC] architecture. +http://en.wikipedia.org/wiki/SPARC[SPARC] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__sparc__`] [__predef_detection__]] - [[`__sparc`] [__predef_detection__]] +| `+__sparc__+` | {predef_detection} +| `+__sparc+` | {predef_detection} - [[`__sparcv9`] [9.0.0]] - [[`__sparcv8`] [8.0.0]] - ] - */ +| `+__sparcv9+` | 9.0.0 +| `+__sparcv8+` | 8.0.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/superh.h b/include/boost/predef/architecture/superh.h index da0529e..5034d90 100644 --- a/include/boost/predef/architecture/superh.h +++ b/include/boost/predef/architecture/superh.h @@ -11,25 +11,26 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_SH`] +/* tag::reference[] += `BOOST_ARCH_SH` -[@http://en.wikipedia.org/wiki/SuperH SuperH] architecture: -If available versions \[1-5\] are specifically detected. +http://en.wikipedia.org/wiki/SuperH[SuperH] architecture: +If available versions [1-5] are specifically detected. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__sh__`] [__predef_detection__]] +| `+__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]] - ] - */ +| `+__SH5__+` | 5.0.0 +| `+__SH4__+` | 4.0.0 +| `+__sh3__+` | 3.0.0 +| `+__SH3__+` | 3.0.0 +| `+__sh2__+` | 2.0.0 +| `+__sh1__+` | 1.0.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_SH BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/sys370.h b/include/boost/predef/architecture/sys370.h index cfd85dc..265d0f0 100644 --- a/include/boost/predef/architecture/sys370.h +++ b/include/boost/predef/architecture/sys370.h @@ -11,18 +11,19 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_SYS370`] +/* tag::reference[] += `BOOST_ARCH_SYS370` -[@http://en.wikipedia.org/wiki/System/370 System/370] architecture. +http://en.wikipedia.org/wiki/System/370[System/370] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__370__`] [__predef_detection__]] - [[`__THW_370__`] [__predef_detection__]] - ] - */ +| `+__370__+` | {predef_detection} +| `+__THW_370__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_SYS370 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/sys390.h b/include/boost/predef/architecture/sys390.h index 47aff6a..155c9be 100644 --- a/include/boost/predef/architecture/sys390.h +++ b/include/boost/predef/architecture/sys390.h @@ -11,18 +11,19 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_SYS390`] +/* tag::reference[] += `BOOST_ARCH_SYS390` -[@http://en.wikipedia.org/wiki/System/390 System/390] architecture. +http://en.wikipedia.org/wiki/System/390[System/390] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__s390__`] [__predef_detection__]] - [[`__s390x__`] [__predef_detection__]] - ] - */ +| `+__s390__+` | {predef_detection} +| `+__s390x__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_SYS390 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/x86.h b/include/boost/predef/architecture/x86.h index 0ef3ef4..9827ef3 100644 --- a/include/boost/predef/architecture/x86.h +++ b/include/boost/predef/architecture/x86.h @@ -11,13 +11,13 @@ http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PREDEF_ARCHITECTURE_X86_H #define BOOST_PREDEF_ARCHITECTURE_X86_H -/*` -[heading `BOOST_ARCH_X86`] +/* tag::reference[] += `BOOST_ARCH_X86` -[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture. This is +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. - */ +*/ // end::reference[] #define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/x86/32.h b/include/boost/predef/architecture/x86/32.h index 17fbff5..cd2e750 100644 --- a/include/boost/predef/architecture/x86/32.h +++ b/include/boost/predef/architecture/x86/32.h @@ -11,35 +11,36 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_X86_32`] +/* tag::reference[] += `BOOST_ARCH_X86_32` -[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture: -If available versions \[3-6\] are specifically detected. +http://en.wikipedia.org/wiki/X86[Intel x86] architecture: +If available versions [3-6] are specifically detected. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {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__]] +| `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]] - ] - */ +| `+__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 +|=== +*/ // end::reference[] #define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/x86/64.h b/include/boost/predef/architecture/x86/64.h index f761c92..ebd80fb 100644 --- a/include/boost/predef/architecture/x86/64.h +++ b/include/boost/predef/architecture/x86/64.h @@ -11,21 +11,22 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_X86_64`] +/* tag::reference[] += `BOOST_ARCH_X86_64` -[@http://en.wikipedia.org/wiki/Ia64 Intel IA-64] architecture. +http://en.wikipedia.org/wiki/Ia64[Intel IA-64] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__x86_64`] [__predef_detection__]] - [[`__x86_64__`] [__predef_detection__]] - [[`__amd64__`] [__predef_detection__]] - [[`__amd64`] [__predef_detection__]] - [[`_M_X64`] [__predef_detection__]] - ] - */ +| `+__x86_64+` | {predef_detection} +| `+__x86_64__+` | {predef_detection} +| `+__amd64__+` | {predef_detection} +| `+__amd64+` | {predef_detection} +| `+_M_X64+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_X86_64 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/architecture/z.h b/include/boost/predef/architecture/z.h index 3d218aa..d2d8e95 100644 --- a/include/boost/predef/architecture/z.h +++ b/include/boost/predef/architecture/z.h @@ -11,17 +11,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ARCH_Z`] +/* tag::reference[] += `BOOST_ARCH_Z` -[@http://en.wikipedia.org/wiki/Z/Architecture z/Architecture] architecture. +http://en.wikipedia.org/wiki/Z/Architecture[z/Architecture] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SYSC_ZARCH__`] [__predef_detection__]] - ] - */ +| `+__SYSC_ZARCH__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_Z BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/borland.h b/include/boost/predef/compiler/borland.h index 3677cca..64daf90 100644 --- a/include/boost/predef/compiler/borland.h +++ b/include/boost/predef/compiler/borland.h @@ -11,22 +11,23 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_BORLAND`] +/* tag::reference[] += `BOOST_COMP_BORLAND` -[@http://en.wikipedia.org/wiki/C_plus_plus_builder Borland C++] compiler. +http://en.wikipedia.org/wiki/C_plus_plus_builder[Borland {CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__BORLANDC__`] [__predef_detection__]] - [[`__CODEGEARC__`] [__predef_detection__]] +| `+__BORLANDC__+` | {predef_detection} +| `+__CODEGEARC__+` | {predef_detection} - [[`__BORLANDC__`] [V.R.P]] - [[`__CODEGEARC__`] [V.R.P]] - ] - */ +| `+__BORLANDC__+` | V.R.P +| `+__CODEGEARC__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_BORLAND BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/clang.h b/include/boost/predef/compiler/clang.h index 56678fe..5e62da2 100644 --- a/include/boost/predef/compiler/clang.h +++ b/include/boost/predef/compiler/clang.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_CLANG`] +/* tag::reference[] += `BOOST_COMP_CLANG` -[@http://en.wikipedia.org/wiki/Clang Clang] compiler. +http://en.wikipedia.org/wiki/Clang[Clang] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__clang__`] [__predef_detection__]] +| `+__clang__+` | {predef_detection} - [[`__clang_major__`, `__clang_minor__`, `__clang_patchlevel__`] [V.R.P]] - ] - */ +| `+__clang_major__+`, `+__clang_minor__+`, `+__clang_patchlevel__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_CLANG BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/comeau.h b/include/boost/predef/compiler/comeau.h index 15a4564..749694d 100644 --- a/include/boost/predef/compiler/comeau.h +++ b/include/boost/predef/compiler/comeau.h @@ -13,20 +13,21 @@ http://www.boost.org/LICENSE_1_0.txt) #define BOOST_COMP_COMO BOOST_VERSION_NUMBER_NOT_AVAILABLE -/*` -[heading `BOOST_COMP_COMO`] +/* tag::reference[] += `BOOST_COMP_COMO` -[@http://en.wikipedia.org/wiki/Comeau_C/C%2B%2B Comeau C++] compiler. +http://en.wikipedia.org/wiki/Comeau_C/C%2B%2B[Comeau {CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__COMO__`] [__predef_detection__]] +| `+__COMO__+` | {predef_detection} - [[`__COMO_VERSION__`] [V.R.P]] - ] - */ +| `+__COMO_VERSION__+` | V.R.P +|=== +*/ // end::reference[] #if defined(__COMO__) # if !defined(BOOST_COMP_COMO_DETECTION) && defined(__COMO_VERSION__) diff --git a/include/boost/predef/compiler/compaq.h b/include/boost/predef/compiler/compaq.h index c6a83ff..a2a403f 100644 --- a/include/boost/predef/compiler/compaq.h +++ b/include/boost/predef/compiler/compaq.h @@ -11,22 +11,23 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_DEC`] +/* tag::reference[] += `BOOST_COMP_DEC` -[@http://www.openvms.compaq.com/openvms/brochures/deccplus/ Compaq C/C++] compiler. +http://www.openvms.compaq.com/openvms/brochures/deccplus/[Compaq C/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__DECCXX`] [__predef_detection__]] - [[`__DECC`] [__predef_detection__]] +| `+__DECCXX+` | {predef_detection} +| `+__DECC+` | {predef_detection} - [[`__DECCXX_VER`] [V.R.P]] - [[`__DECC_VER`] [V.R.P]] - ] - */ +| `+__DECCXX_VER+` | V.R.P +| `+__DECC_VER+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_DEC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/diab.h b/include/boost/predef/compiler/diab.h index f5a37de..9be1d1a 100644 --- a/include/boost/predef/compiler/diab.h +++ b/include/boost/predef/compiler/diab.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_DIAB`] +/* tag::reference[] += `BOOST_COMP_DIAB` -[@http://www.windriver.com/products/development_suite/wind_river_compiler/ Diab C/C++] compiler. +http://www.windriver.com/products/development_suite/wind_river_compiler/[Diab C/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__DCC__`] [__predef_detection__]] +| `+__DCC__+` | {predef_detection} - [[`__VERSION_NUMBER__`] [V.R.P]] - ] - */ +| `+__VERSION_NUMBER__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_DIAB BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/digitalmars.h b/include/boost/predef/compiler/digitalmars.h index 9bd5850..3b2d53f 100644 --- a/include/boost/predef/compiler/digitalmars.h +++ b/include/boost/predef/compiler/digitalmars.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_DMC`] +/* tag::reference[] += `BOOST_COMP_DMC` -[@http://en.wikipedia.org/wiki/Digital_Mars Digital Mars] compiler. +http://en.wikipedia.org/wiki/Digital_Mars[Digital Mars] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__DMC__`] [__predef_detection__]] +| `+__DMC__+` | {predef_detection} - [[`__DMC__`] [V.R.P]] - ] - */ +| `+__DMC__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_DMC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/dignus.h b/include/boost/predef/compiler/dignus.h index c65d3dc..8177cc7 100644 --- a/include/boost/predef/compiler/dignus.h +++ b/include/boost/predef/compiler/dignus.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_SYSC`] +/* tag::reference[] += `BOOST_COMP_SYSC` -[@http://www.dignus.com/dcxx/ Dignus Systems/C++] compiler. +http://www.dignus.com/dcxx/[Dignus Systems/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SYSC__`] [__predef_detection__]] +| `+__SYSC__+` | {predef_detection} - [[`__SYSC_VER__`] [V.R.P]] - ] - */ +| `+__SYSC_VER__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_SYSC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/edg.h b/include/boost/predef/compiler/edg.h index 2ffb9b0..6e0f97a 100644 --- a/include/boost/predef/compiler/edg.h +++ b/include/boost/predef/compiler/edg.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_EDG`] +/* tag::reference[] += `BOOST_COMP_EDG` -[@http://en.wikipedia.org/wiki/Edison_Design_Group EDG C++ Frontend] compiler. +http://en.wikipedia.org/wiki/Edison_Design_Group[EDG {CPP} Frontend] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__EDG__`] [__predef_detection__]] +| `+__EDG__+` | {predef_detection} - [[`__EDG_VERSION__`] [V.R.0]] - ] - */ +| `+__EDG_VERSION__+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_COMP_EDG BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/ekopath.h b/include/boost/predef/compiler/ekopath.h index e5cde36..f91c9dc 100644 --- a/include/boost/predef/compiler/ekopath.h +++ b/include/boost/predef/compiler/ekopath.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_PATH`] +/* tag::reference[] += `BOOST_COMP_PATH` -[@http://en.wikipedia.org/wiki/PathScale EKOpath] compiler. +http://en.wikipedia.org/wiki/PathScale[EKOpath] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__PATHCC__`] [__predef_detection__]] +| `+__PATHCC__+` | {predef_detection} - [[`__PATHCC__`, `__PATHCC_MINOR__`, `__PATHCC_PATCHLEVEL__`] [V.R.P]] - ] - */ +| `+__PATHCC__+`, `+__PATHCC_MINOR__+`, `+__PATHCC_PATCHLEVEL__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_PATH BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/gcc.h b/include/boost/predef/compiler/gcc.h index c2d7fff..88698d2 100644 --- a/include/boost/predef/compiler/gcc.h +++ b/include/boost/predef/compiler/gcc.h @@ -15,21 +15,22 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_GNUC`] +/* tag::reference[] += `BOOST_COMP_GNUC` -[@http://en.wikipedia.org/wiki/GNU_Compiler_Collection Gnu GCC C/C++] compiler. +http://en.wikipedia.org/wiki/GNU_Compiler_Collection[Gnu GCC C/{CPP}] compiler. Version number available as major, minor, and patch (if available). -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__GNUC__`] [__predef_detection__]] +| `+__GNUC__+` | {predef_detection} - [[`__GNUC__`, `__GNUC_MINOR__`, `__GNUC_PATCHLEVEL__`] [V.R.P]] - [[`__GNUC__`, `__GNUC_MINOR__`] [V.R.0]] - ] - */ +| `+__GNUC__+`, `+__GNUC_MINOR__+`, `+__GNUC_PATCHLEVEL__+` | V.R.P +| `+__GNUC__+`, `+__GNUC_MINOR__+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_COMP_GNUC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/gcc_xml.h b/include/boost/predef/compiler/gcc_xml.h index acae600..a925337 100644 --- a/include/boost/predef/compiler/gcc_xml.h +++ b/include/boost/predef/compiler/gcc_xml.h @@ -11,17 +11,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_GCCXML`] +/* tag::reference[] += `BOOST_COMP_GCCXML` -[@http://www.gccxml.org/ GCC XML] compiler. +http://www.gccxml.org/[GCC XML] compiler. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__GCCXML__`] [__predef_detection__]] - ] - */ +| `+__GCCXML__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_COMP_GCCXML BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/greenhills.h b/include/boost/predef/compiler/greenhills.h index 23b8f01..9bf5bf1 100644 --- a/include/boost/predef/compiler/greenhills.h +++ b/include/boost/predef/compiler/greenhills.h @@ -11,22 +11,23 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_GHS`] +/* tag::reference[] += `BOOST_COMP_GHS` -[@http://en.wikipedia.org/wiki/Green_Hills_Software Green Hills C/C++] compiler. +http://en.wikipedia.org/wiki/Green_Hills_Software[Green Hills C/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__ghs`] [__predef_detection__]] - [[`__ghs__`] [__predef_detection__]] +| `+__ghs+` | {predef_detection} +| `+__ghs__+` | {predef_detection} - [[`__GHS_VERSION_NUMBER__`] [V.R.P]] - [[`__ghs`] [V.R.P]] - ] - */ +| `+__GHS_VERSION_NUMBER__+` | V.R.P +| `+__ghs+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_GHS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/hp_acc.h b/include/boost/predef/compiler/hp_acc.h index 7b3ffe9..7a825cd 100644 --- a/include/boost/predef/compiler/hp_acc.h +++ b/include/boost/predef/compiler/hp_acc.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_HPACC`] +/* tag::reference[] += `BOOST_COMP_HPACC` -HP aC++ compiler. +HP a{CPP} compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__HP_aCC`] [__predef_detection__]] +| `+__HP_aCC+` | {predef_detection} - [[`__HP_aCC`] [V.R.P]] - ] - */ +| `+__HP_aCC+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_HPACC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/iar.h b/include/boost/predef/compiler/iar.h index 237f492..1140b0b 100644 --- a/include/boost/predef/compiler/iar.h +++ b/include/boost/predef/compiler/iar.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_IAR`] +/* tag::reference[] += `BOOST_COMP_IAR` -IAR C/C++ compiler. +IAR C/{CPP} compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__IAR_SYSTEMS_ICC__`] [__predef_detection__]] +| `+__IAR_SYSTEMS_ICC__+` | {predef_detection} - [[`__VER__`] [V.R.P]] - ] - */ +| `+__VER__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_IAR BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/ibm.h b/include/boost/predef/compiler/ibm.h index 6931ebd..6820677 100644 --- a/include/boost/predef/compiler/ibm.h +++ b/include/boost/predef/compiler/ibm.h @@ -11,25 +11,26 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_IBM`] +/* tag::reference[] += `BOOST_COMP_IBM` -[@http://en.wikipedia.org/wiki/VisualAge IBM XL C/C++] compiler. +http://en.wikipedia.org/wiki/VisualAge[IBM XL C/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__IBMCPP__`] [__predef_detection__]] - [[`__xlC__`] [__predef_detection__]] - [[`__xlc__`] [__predef_detection__]] +| `+__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]] - ] - */ +| `+__COMPILER_VER__+` | V.R.P +| `+__xlC__+` | V.R.P +| `+__xlc__+` | V.R.P +| `+__IBMCPP__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_IBM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/intel.h b/include/boost/predef/compiler/intel.h index f8a17ef..62d510a 100644 --- a/include/boost/predef/compiler/intel.h +++ b/include/boost/predef/compiler/intel.h @@ -11,33 +11,34 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_INTEL`] +/* tag::reference[] += `BOOST_COMP_INTEL` -[@http://en.wikipedia.org/wiki/Intel_C%2B%2B Intel C/C++] compiler. +http://en.wikipedia.org/wiki/Intel_C%2B%2B[Intel C/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__INTEL_COMPILER`] [__predef_detection__]] - [[`__ICL`] [__predef_detection__]] - [[`__ICC`] [__predef_detection__]] - [[`__ECC`] [__predef_detection__]] +| `+__INTEL_COMPILER+` | {predef_detection} +| `+__ICL+` | {predef_detection} +| `+__ICC+` | {predef_detection} +| `+__ECC+` | {predef_detection} - [[`__INTEL_COMPILER`] [V.R]] - [[`__INTEL_COMPILER` and `__INTEL_COMPILER_UPDATE`] [V.R.P]] - ] - */ +| `+__INTEL_COMPILER+` | V.R +| `+__INTEL_COMPILER+` and `+__INTEL_COMPILER_UPDATE+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_INTEL BOOST_VERSION_NUMBER_NOT_AVAILABLE #if defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || \ defined(__ECC) -/*` -[note Because of an Intel mistake in the release version numbering when -`__INTEL_COMPILER` is `9999` it is detected as version 12.1.0.] - */ +/* tag::reference[] +NOTE: Because of an Intel mistake in the release version numbering when +`__INTEL_COMPILER` is `9999` it is detected as version 12.1.0. +*/ // end::reference[] # if !defined(BOOST_COMP_INTEL_DETECTION) && defined(__INTEL_COMPILER) && (__INTEL_COMPILER == 9999) # define BOOST_COMP_INTEL_DETECTION BOOST_VERSION_NUMBER(12,1,0) # endif diff --git a/include/boost/predef/compiler/kai.h b/include/boost/predef/compiler/kai.h index 68ce84e..1980cc8 100644 --- a/include/boost/predef/compiler/kai.h +++ b/include/boost/predef/compiler/kai.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_KCC`] +/* tag::reference[] += `BOOST_COMP_KCC` -Kai C++ compiler. +Kai {CPP} compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__KCC`] [__predef_detection__]] +| `+__KCC+` | {predef_detection} - [[`__KCC_VERSION`] [V.R.P]] - ] - */ +| `+__KCC_VERSION+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_KCC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/llvm.h b/include/boost/predef/compiler/llvm.h index de654eb..09f2b80 100644 --- a/include/boost/predef/compiler/llvm.h +++ b/include/boost/predef/compiler/llvm.h @@ -15,17 +15,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_LLVM`] +/* tag::reference[] += `BOOST_COMP_LLVM` -[@http://en.wikipedia.org/wiki/LLVM LLVM] compiler. +http://en.wikipedia.org/wiki/LLVM[LLVM] compiler. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__llvm__`] [__predef_detection__]] - ] - */ +| `+__llvm__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_COMP_LLVM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/metaware.h b/include/boost/predef/compiler/metaware.h index 1a32039..e210943 100644 --- a/include/boost/predef/compiler/metaware.h +++ b/include/boost/predef/compiler/metaware.h @@ -11,17 +11,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_HIGHC`] +/* tag::reference[] += `BOOST_COMP_HIGHC` -MetaWare High C/C++ compiler. +MetaWare High C/{CPP} compiler. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__HIGHC__`] [__predef_detection__]] - ] - */ +| `+__HIGHC__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_COMP_HIGHC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/metrowerks.h b/include/boost/predef/compiler/metrowerks.h index f2d739b..98cb751 100644 --- a/include/boost/predef/compiler/metrowerks.h +++ b/include/boost/predef/compiler/metrowerks.h @@ -11,24 +11,25 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_MWERKS`] +/* tag::reference[] += `BOOST_COMP_MWERKS` -[@http://en.wikipedia.org/wiki/CodeWarrior Metrowerks CodeWarrior] compiler. +http://en.wikipedia.org/wiki/CodeWarrior[Metrowerks CodeWarrior] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MWERKS__`] [__predef_detection__]] - [[`__CWCC__`] [__predef_detection__]] +| `+__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]] - ] - */ +| `+__CWCC__+` | V.R.P +| `+__MWERKS__+` | V.R.P >= 4.2.0 +| `+__MWERKS__+` | 9.R.0 +| `+__MWERKS__+` | 8.R.0 +|=== +*/ // end::reference[] #define BOOST_COMP_MWERKS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/microtec.h b/include/boost/predef/compiler/microtec.h index 066a6d2..93c7e91 100644 --- a/include/boost/predef/compiler/microtec.h +++ b/include/boost/predef/compiler/microtec.h @@ -11,17 +11,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_MRI`] +/* tag::reference[] += `BOOST_COMP_MRI` -[@http://www.mentor.com/microtec/ Microtec C/C++] compiler. +http://www.mentor.com/microtec/[Microtec C/{CPP}] compiler. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`_MRI`] [__predef_detection__]] - ] - */ +| `+_MRI+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_COMP_MRI BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/mpw.h b/include/boost/predef/compiler/mpw.h index 1183306..963f756 100644 --- a/include/boost/predef/compiler/mpw.h +++ b/include/boost/predef/compiler/mpw.h @@ -11,22 +11,23 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_MPW`] +/* tag::reference[] += `BOOST_COMP_MPW` -[@http://en.wikipedia.org/wiki/Macintosh_Programmer%27s_Workshop MPW C++] compiler. +http://en.wikipedia.org/wiki/Macintosh_Programmer%27s_Workshop[MPW {CPP}] compiler. Version number available as major, and minor. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MRC__`] [__predef_detection__]] - [[`MPW_C`] [__predef_detection__]] - [[`MPW_CPLUS`] [__predef_detection__]] +| `+__MRC__+` | {predef_detection} +| `MPW_C` | {predef_detection} +| `MPW_CPLUS` | {predef_detection} - [[`__MRC__`] [V.R.0]] - ] - */ +| `+__MRC__+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_COMP_MPW BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/nvcc.h b/include/boost/predef/compiler/nvcc.h index 4130539..3690c53 100644 --- a/include/boost/predef/compiler/nvcc.h +++ b/include/boost/predef/compiler/nvcc.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_NVCC`] +/* tag::reference[] += `BOOST_COMP_NVCC` -[@https://en.wikipedia.org/wiki/NVIDIA_CUDA_Compiler NVCC] compiler. +https://en.wikipedia.org/wiki/NVIDIA_CUDA_Compiler[NVCC] compiler. Version number available as major, minor, and patch beginning with version 7.5. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__NVCC__`] [__predef_detection__]] +| `+__NVCC__+` | {predef_detection} - [[`__CUDACC_VER_MAJOR__`, `__CUDACC_VER_MINOR__`, `__CUDACC_VER_BUILD__`] [V.R.P]] - ] - */ +| `+__CUDACC_VER_MAJOR__+`, `+__CUDACC_VER_MINOR__+`, `+__CUDACC_VER_BUILD__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_NVCC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/palm.h b/include/boost/predef/compiler/palm.h index 707925a..7f18215 100644 --- a/include/boost/predef/compiler/palm.h +++ b/include/boost/predef/compiler/palm.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_PALM`] +/* tag::reference[] += `BOOST_COMP_PALM` -Palm C/C++ compiler. +Palm C/{CPP} compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`_PACC_VER`] [__predef_detection__]] +| `+_PACC_VER+` | {predef_detection} - [[`_PACC_VER`] [V.R.P]] - ] - */ +| `+_PACC_VER+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_PALM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/pgi.h b/include/boost/predef/compiler/pgi.h index e016aeb..649e87a 100644 --- a/include/boost/predef/compiler/pgi.h +++ b/include/boost/predef/compiler/pgi.h @@ -11,19 +11,20 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_PGI`] +/* tag::reference[] += `BOOST_COMP_PGI` -[@http://en.wikipedia.org/wiki/The_Portland_Group Portland Group C/C++] compiler. +http://en.wikipedia.org/wiki/The_Portland_Group[Portland Group C/{CPP}] compiler. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__PGI`] [__predef_detection__]] +| `+__PGI+` | {predef_detection} - [[`__PGIC__`, `__PGIC_MINOR__`, `__PGIC_PATCHLEVEL__`] [V.R.P]] - ] - */ +| `+__PGIC__+`, `+__PGIC_MINOR__+`, `+__PGIC_PATCHLEVEL__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_PGI BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/sgi_mipspro.h b/include/boost/predef/compiler/sgi_mipspro.h index 00739f0..7bfdc9c 100644 --- a/include/boost/predef/compiler/sgi_mipspro.h +++ b/include/boost/predef/compiler/sgi_mipspro.h @@ -11,22 +11,23 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_SGI`] +/* tag::reference[] += `BOOST_COMP_SGI` -[@http://en.wikipedia.org/wiki/MIPSpro SGI MIPSpro] compiler. +http://en.wikipedia.org/wiki/MIPSpro[SGI MIPSpro] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__sgi`] [__predef_detection__]] - [[`sgi`] [__predef_detection__]] +| `+__sgi+` | {predef_detection} +| `sgi` | {predef_detection} - [[`_SGI_COMPILER_VERSION`] [V.R.P]] - [[`_COMPILER_VERSION`] [V.R.P]] - ] - */ +| `+_SGI_COMPILER_VERSION+` | V.R.P +| `+_COMPILER_VERSION+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_SGI BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/sunpro.h b/include/boost/predef/compiler/sunpro.h index 92c3926..b44d0bb 100644 --- a/include/boost/predef/compiler/sunpro.h +++ b/include/boost/predef/compiler/sunpro.h @@ -11,24 +11,25 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_SUNPRO`] +/* tag::reference[] += `BOOST_COMP_SUNPRO` -[@http://en.wikipedia.org/wiki/Oracle_Solaris_Studio Oracle Solaris Studio] compiler. +http://en.wikipedia.org/wiki/Oracle_Solaris_Studio[Oracle Solaris Studio] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SUNPRO_CC`] [__predef_detection__]] - [[`__SUNPRO_C`] [__predef_detection__]] +| `+__SUNPRO_CC+` | {predef_detection} +| `+__SUNPRO_C+` | {predef_detection} - [[`__SUNPRO_CC`] [V.R.P]] - [[`__SUNPRO_C`] [V.R.P]] - [[`__SUNPRO_CC`] [VV.RR.P]] - [[`__SUNPRO_C`] [VV.RR.P]] - ] - */ +| `+__SUNPRO_CC+` | V.R.P +| `+__SUNPRO_C+` | V.R.P +| `+__SUNPRO_CC+` | VV.RR.P +| `+__SUNPRO_C+` | VV.RR.P +|=== +*/ // end::reference[] #define BOOST_COMP_SUNPRO BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/tendra.h b/include/boost/predef/compiler/tendra.h index c2bc5e4..bb896c0 100644 --- a/include/boost/predef/compiler/tendra.h +++ b/include/boost/predef/compiler/tendra.h @@ -11,17 +11,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_TENDRA`] +/* tag::reference[] += `BOOST_COMP_TENDRA` -[@http://en.wikipedia.org/wiki/TenDRA_Compiler TenDRA C/C++] compiler. +http://en.wikipedia.org/wiki/TenDRA_Compiler[TenDRA C/{CPP}] compiler. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__TenDRA__`] [__predef_detection__]] - ] - */ +| `+__TenDRA__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_COMP_TENDRA BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/visualc.h b/include/boost/predef/compiler/visualc.h index f81e61e..5b0f2b8 100644 --- a/include/boost/predef/compiler/visualc.h +++ b/include/boost/predef/compiler/visualc.h @@ -15,25 +15,26 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_MSVC`] +/* tag::reference[] += `BOOST_COMP_MSVC` -[@http://en.wikipedia.org/wiki/Visual_studio Microsoft Visual C/C++] compiler. +http://en.wikipedia.org/wiki/Visual_studio[Microsoft Visual C/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`_MSC_VER`] [__predef_detection__]] +| `+_MSC_VER+` | {predef_detection} - [[`_MSC_FULL_VER`] [V.R.P]] - [[`_MSC_VER`] [V.R.0]] - ] +| `+_MSC_FULL_VER+` | V.R.P +| `+_MSC_VER+` | V.R.0 +|=== -[note Release of Visual Studio after 2015 will no longer be identified +NOTE: Release of Visual Studio after 2015 will no longer be identified by Boost Predef as the marketing version number. Instead we use the -compiler version number directly, i.e. the _MSC_VER number.] - */ +compiler version number directly, i.e. the _MSC_VER number. +*/ // end::reference[] #define BOOST_COMP_MSVC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/compiler/watcom.h b/include/boost/predef/compiler/watcom.h index b0e7776..1f8c069 100644 --- a/include/boost/predef/compiler/watcom.h +++ b/include/boost/predef/compiler/watcom.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_COMP_WATCOM`] +/* tag::reference[] += `BOOST_COMP_WATCOM` -[@http://en.wikipedia.org/wiki/Watcom Watcom C++] compiler. +http://en.wikipedia.org/wiki/Watcom[Watcom {CPP}] compiler. Version number available as major, and minor. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__WATCOMC__`] [__predef_detection__]] +| `+__WATCOMC__+` | {predef_detection} - [[`__WATCOMC__`] [V.R.P]] - ] - */ +| `+__WATCOMC__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_WATCOM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/hardware/simd.h b/include/boost/predef/hardware/simd.h index ac5c9da..b671fa3 100644 --- a/include/boost/predef/hardware/simd.h +++ b/include/boost/predef/hardware/simd.h @@ -16,55 +16,104 @@ http://www.boost.org/LICENSE_1_0.txt) #include -/*` - [section Using the `BOOST_HW_SIMD_*` predefs] - [include ../doc/hardware_simd.qbk] - [endsect] +/* tag::reference[] += Using the `BOOST_HW_SIMD_*` predefs - [/ --------------------------- ] +SIMD predefs depend on compiler options. For example, you will have to add the +option `-msse3` to clang or gcc to enable SSE3. SIMD predefs are also inclusive. +This means that if SSE3 is enabled, then every other extensions with a lower +version number will implicitly be enabled and detected. However, some extensions +are CPU specific, they may not be detected nor enabled when an upper version is +enabled. - [section `BOOST_HW_SIMD_*`] +NOTE: SSE(1) and SSE2 are automatically enabled by default when using x86-64 +architecture. - [heading `BOOST_HW_SIMD`] +To check if any SIMD extension has been enabled, you can use: - The SIMD extension detected for a specific architectures. - Version number depends on the detected extension. +[source] +---- +#include +#include - [table - [[__predef_symbol__] [__predef_version__]] +int main() +{ +#if defined(BOOST_HW_SIMD_AVAILABLE) + std::cout << "SIMD detected!" << std::endl; +#endif + return 0; +} +---- - [[`BOOST_HW_SIMD_X86_AVAILABLE`] [__predef_detection__]] - [[`BOOST_HW_SIMD_X86_AMD_AVAILABLE`] [__predef_detection__]] - [[`BOOST_HW_SIMD_ARM_AVAILABLE`] [__predef_detection__]] - [[`BOOST_HW_SIMD_PPC_AVAILABLE`] [__predef_detection__]] - ] +When writing SIMD specific code, you may want to check if a particular extension +has been detected. To do so you have to use the right architecture predef and +compare it. Those predef are of the form `BOOST_HW_SIMD_"ARCH"` (where `"ARCH"` +is either `ARM`, `PPC`, or `X86`). For example, if you compile code for x86 +architecture, you will have to use `BOOST_HW_SIMD_X86`. Its value will be the +version number of the most recent SIMD extension detected for the architecture. - [include ../include/boost/predef/hardware/simd/x86.h] - [include ../include/boost/predef/hardware/simd/x86_amd.h] - [include ../include/boost/predef/hardware/simd/arm.h] - [include ../include/boost/predef/hardware/simd/ppc.h] +To check if an extension has been enabled: - [endsect] +[source] +---- +#include +#include - [/ --------------------------- ] +int main() +{ +#if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE3_VERSION + std::cout << "This is SSE3!" << std::endl; +#endif + return 0; +} +---- - [section `BOOST_HW_SIMD_X86_*_VERSION`] - [include ../include/boost/predef/hardware/simd/x86/versions.h] - [endsect] +NOTE: The *_VERSION* defines that map version number to actual real +identifiers. This way it is easier to write comparisons without messing up with +version numbers. - [section `BOOST_HW_SIMD_X86_AMD_*_VERSION`] - [include ../include/boost/predef/hardware/simd/x86_amd/versions.h] - [endsect] +To *"strictly"* check the most recent detected extension: - [section `BOOST_HW_SIMD_ARM_*_VERSION`] - [include ../include/boost/predef/hardware/simd/arm/versions.h] - [endsect] +[source] +---- +#include +#include - [section `BOOST_HW_SIMD_PPC_*_VERSION`] - [include ../include/boost/predef/hardware/simd/ppc/versions.h] - [endsect] +int main() +{ +#if BOOST_HW_SIMD_X86 == BOOST_HW_SIMD_X86_SSE3_VERSION + std::cout << "This is SSE3 and this is the most recent enabled extension!" + << std::endl; +#endif + return 0; +} +---- - */ +Because of the version systems of predefs and of the inclusive property of SIMD +extensions macros, you can easily check for ranges of supported extensions: + +[source] +---- +#include +#include + +int main() +{ +#if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE2_VERSION &&\ + BOOST_HW_SIMD_X86 <= BOOST_HW_SIMD_X86_SSSE3_VERSION + std::cout << "This is SSE2, SSE3 and SSSE3!" << std::endl; +#endif + return 0; +} +---- + +NOTE: Unlike gcc and clang, Visual Studio does not allow you to specify precisely +the SSE variants you want to use, the only detections that will take place are +SSE, SSE2, AVX and AVX2. For more informations, + see [@https://msdn.microsoft.com/en-us/library/b0084kay.aspx here]. + + +*/ // end::reference[] // We check if SIMD extension of multiples architectures have been detected, // if yes, then this is an error! diff --git a/include/boost/predef/hardware/simd/arm.h b/include/boost/predef/hardware/simd/arm.h index 3b3fc3f..24e4c1b 100644 --- a/include/boost/predef/hardware/simd/arm.h +++ b/include/boost/predef/hardware/simd/arm.h @@ -12,31 +12,33 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` - [heading `BOOST_HW_SIMD_ARM`] +/* tag::reference[] += `BOOST_HW_SIMD_ARM` - The SIMD extension for ARM (*if detected*). - Version number depends on the most recent detected extension. +The SIMD extension for ARM (*if detected*). +Version number depends on the most recent detected extension. - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__ARM_NEON__`] [__predef_detection__]] - [[`__aarch64__`] [__predef_detection__]] - [[`_M_ARM`] [__predef_detection__]] - [[`_M_ARM64`] [__predef_detection__]] - ] +| `+__ARM_NEON__+` | {predef_detection} +| `+__aarch64__+` | {predef_detection} +| `+_M_ARM+` | {predef_detection} +| `+_M_ARM64+` | {predef_detection} +|=== - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__ARM_NEON__`] [BOOST_HW_SIMD_ARM_NEON_VERSION]] - [[`__aarch64__`] [BOOST_HW_SIMD_ARM_NEON_VERSION]] - [[`_M_ARM`] [BOOST_HW_SIMD_ARM_NEON_VERSION]] - [[`_M_ARM64`] [BOOST_HW_SIMD_ARM_NEON_VERSION]] - ] +| `+__ARM_NEON__+` | BOOST_HW_SIMD_ARM_NEON_VERSION +| `+__aarch64__+` | BOOST_HW_SIMD_ARM_NEON_VERSION +| `+_M_ARM+` | BOOST_HW_SIMD_ARM_NEON_VERSION +| `+_M_ARM64+` | BOOST_HW_SIMD_ARM_NEON_VERSION +|=== - */ +*/ // end::reference[] #define BOOST_HW_SIMD_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/hardware/simd/arm/versions.h b/include/boost/predef/hardware/simd/arm/versions.h index 8425b31..92071a6 100644 --- a/include/boost/predef/hardware/simd/arm/versions.h +++ b/include/boost/predef/hardware/simd/arm/versions.h @@ -11,22 +11,28 @@ http://www.boost.org/LICENSE_1_0.txt) #include -/*` - Those defines represent ARM SIMD extensions versions. +/* tag::reference[] += `BOOST_HW_SIMD_ARM_*_VERSION` - [note You *MUST* compare them with the predef `BOOST_HW_SIMD_ARM`.] - */ +Those defines represent ARM SIMD extensions versions. + +NOTE: You *MUST* compare them with the predef `BOOST_HW_SIMD_ARM`. +*/ // end::reference[] // --------------------------------- -/*` - [heading `BOOST_HW_SIMD_ARM_NEON_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_ARM_NEON_VERSION` - The [@https://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29 NEON] - ARM extension version number. +The https://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29[NEON] +ARM extension version number. - Version number is: *1.0.0*. - */ +Version number is: *1.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_ARM_NEON_VERSION BOOST_VERSION_NUMBER(1, 0, 0) +/* tag::reference[] + +*/ // end::reference[] + #endif diff --git a/include/boost/predef/hardware/simd/ppc.h b/include/boost/predef/hardware/simd/ppc.h index eef25c2..bf30cc1 100644 --- a/include/boost/predef/hardware/simd/ppc.h +++ b/include/boost/predef/hardware/simd/ppc.h @@ -12,35 +12,37 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` - [heading `BOOST_HW_SIMD_PPC`] +/* tag::reference[] += `BOOST_HW_SIMD_PPC` - The SIMD extension for PowerPC (*if detected*). - Version number depends on the most recent detected extension. +The SIMD extension for PowerPC (*if detected*). +Version number depends on the most recent detected extension. - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__VECTOR4DOUBLE__`] [__predef_detection__]] +| `+__VECTOR4DOUBLE__+` | {predef_detection} - [[`__ALTIVEC__`] [__predef_detection__]] - [[`__VEC__`] [__predef_detection__]] +| `+__ALTIVEC__+` | {predef_detection} +| `+__VEC__+` | {predef_detection} - [[`__VSX__`] [__predef_detection__]] - ] +| `+__VSX__+` | {predef_detection} +|=== - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__VECTOR4DOUBLE__`] [BOOST_HW_SIMD_PPC_QPX_VERSION]] +| `+__VECTOR4DOUBLE__+` | BOOST_HW_SIMD_PPC_QPX_VERSION - [[`__ALTIVEC__`] [BOOST_HW_SIMD_PPC_VMX_VERSION]] - [[`__VEC__`] [BOOST_HW_SIMD_PPC_VMX_VERSION]] +| `+__ALTIVEC__+` | BOOST_HW_SIMD_PPC_VMX_VERSION +| `+__VEC__+` | BOOST_HW_SIMD_PPC_VMX_VERSION - [[`__VSX__`] [BOOST_HW_SIMD_PPC_VSX_VERSION]] - ] +| `+__VSX__+` | BOOST_HW_SIMD_PPC_VSX_VERSION +|=== - */ +*/ // end::reference[] #define BOOST_HW_SIMD_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/hardware/simd/ppc/versions.h b/include/boost/predef/hardware/simd/ppc/versions.h index ffe3f0b..3cf8319 100644 --- a/include/boost/predef/hardware/simd/ppc/versions.h +++ b/include/boost/predef/hardware/simd/ppc/versions.h @@ -11,41 +11,47 @@ http://www.boost.org/LICENSE_1_0.txt) #include -/*` - Those defines represent Power PC SIMD extensions versions. +/* tag::reference[] += `BOOST_HW_SIMD_PPC_*_VERSION` - [note You *MUST* compare them with the predef `BOOST_HW_SIMD_PPC`.] - */ +Those defines represent Power PC SIMD extensions versions. + +NOTE: You *MUST* compare them with the predef `BOOST_HW_SIMD_PPC`. +*/ // end::reference[] // --------------------------------- -/*` - [heading `BOOST_HW_SIMD_PPC_VMX_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_PPC_VMX_VERSION` - The [@https://en.wikipedia.org/wiki/AltiVec#VMX128 VMX] powerpc extension - version number. +The https://en.wikipedia.org/wiki/AltiVec#VMX128[VMX] powerpc extension +version number. - Version number is: *1.0.0*. - */ +Version number is: *1.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_PPC_VMX_VERSION BOOST_VERSION_NUMBER(1, 0, 0) -/*` - [heading `BOOST_HW_SIMD_PPC_VSX_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_PPC_VSX_VERSION` - The [@https://en.wikipedia.org/wiki/AltiVec#VSX VSX] powerpc extension version - number. +The https://en.wikipedia.org/wiki/AltiVec#VSX[VSX] powerpc extension version +number. - Version number is: *1.1.0*. - */ +Version number is: *1.1.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_PPC_VSX_VERSION BOOST_VERSION_NUMBER(1, 1, 0) -/*` - [heading `BOOST_HW_SIMD_PPC_QPX_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_PPC_QPX_VERSION` - The QPX powerpc extension version number. +The QPX powerpc extension version number. - Version number is: *2.0.0*. - */ +Version number is: *2.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_PPC_QPX_VERSION BOOST_VERSION_NUMBER(2, 0, 0) +/* tag::reference[] + +*/ // end::reference[] + #endif diff --git a/include/boost/predef/hardware/simd/x86.h b/include/boost/predef/hardware/simd/x86.h index 88bd81e..6c9a0fb 100644 --- a/include/boost/predef/hardware/simd/x86.h +++ b/include/boost/predef/hardware/simd/x86.h @@ -12,65 +12,67 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` - [heading `BOOST_HW_SIMD_X86`] +/* tag::reference[] += `BOOST_HW_SIMD_X86` - The SIMD extension for x86 (*if detected*). - Version number depends on the most recent detected extension. +The SIMD extension for x86 (*if detected*). +Version number depends on the most recent detected extension. - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SSE__`] [__predef_detection__]] - [[`_M_X64`] [__predef_detection__]] - [[`_M_IX86_FP >= 1`] [__predef_detection__]] +| `+__SSE__+` | {predef_detection} +| `+_M_X64+` | {predef_detection} +| `_M_IX86_FP >= 1` | {predef_detection} - [[`__SSE2__`] [__predef_detection__]] - [[`_M_X64`] [__predef_detection__]] - [[`_M_IX86_FP >= 2`] [__predef_detection__]] +| `+__SSE2__+` | {predef_detection} +| `+_M_X64+` | {predef_detection} +| `_M_IX86_FP >= 2` | {predef_detection} - [[`__SSE3__`] [__predef_detection__]] +| `+__SSE3__+` | {predef_detection} - [[`__SSSE3__`] [__predef_detection__]] +| `+__SSSE3__+` | {predef_detection} - [[`__SSE4_1__`] [__predef_detection__]] +| `+__SSE4_1__+` | {predef_detection} - [[`__SSE4_2__`] [__predef_detection__]] +| `+__SSE4_2__+` | {predef_detection} - [[`__AVX__`] [__predef_detection__]] +| `+__AVX__+` | {predef_detection} - [[`__FMA__`] [__predef_detection__]] +| `+__FMA__+` | {predef_detection} - [[`__AVX2__`] [__predef_detection__]] - ] +| `+__AVX2__+` | {predef_detection} +|=== - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SSE__`] [BOOST_HW_SIMD_X86_SSE_VERSION]] - [[`_M_X64`] [BOOST_HW_SIMD_X86_SSE_VERSION]] - [[`_M_IX86_FP >= 1`] [BOOST_HW_SIMD_X86_SSE_VERSION]] +| `+__SSE__+` | BOOST_HW_SIMD_X86_SSE_VERSION +| `+_M_X64+` | BOOST_HW_SIMD_X86_SSE_VERSION +| `_M_IX86_FP >= 1` | BOOST_HW_SIMD_X86_SSE_VERSION - [[`__SSE2__`] [BOOST_HW_SIMD_X86_SSE2_VERSION]] - [[`_M_X64`] [BOOST_HW_SIMD_X86_SSE2_VERSION]] - [[`_M_IX86_FP >= 2`] [BOOST_HW_SIMD_X86_SSE2_VERSION]] +| `+__SSE2__+` | BOOST_HW_SIMD_X86_SSE2_VERSION +| `+_M_X64+` | BOOST_HW_SIMD_X86_SSE2_VERSION +| `_M_IX86_FP >= 2` | BOOST_HW_SIMD_X86_SSE2_VERSION - [[`__SSE3__`] [BOOST_HW_SIMD_X86_SSE3_VERSION]] +| `+__SSE3__+` | BOOST_HW_SIMD_X86_SSE3_VERSION - [[`__SSSE3__`] [BOOST_HW_SIMD_X86_SSSE3_VERSION]] +| `+__SSSE3__+` | BOOST_HW_SIMD_X86_SSSE3_VERSION - [[`__SSE4_1__`] [BOOST_HW_SIMD_X86_SSE4_1_VERSION]] +| `+__SSE4_1__+` | BOOST_HW_SIMD_X86_SSE4_1_VERSION - [[`__SSE4_2__`] [BOOST_HW_SIMD_X86_SSE4_2_VERSION]] +| `+__SSE4_2__+` | BOOST_HW_SIMD_X86_SSE4_2_VERSION - [[`__AVX__`] [BOOST_HW_SIMD_X86_AVX_VERSION]] +| `+__AVX__+` | BOOST_HW_SIMD_X86_AVX_VERSION - [[`__FMA__`] [BOOST_HW_SIMD_X86_FMA3_VERSION]] +| `+__FMA__+` | BOOST_HW_SIMD_X86_FMA3_VERSION - [[`__AVX2__`] [BOOST_HW_SIMD_X86_AVX2_VERSION]] - ] +| `+__AVX2__+` | BOOST_HW_SIMD_X86_AVX2_VERSION +|=== - */ +*/ // end::reference[] #define BOOST_HW_SIMD_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/hardware/simd/x86/versions.h b/include/boost/predef/hardware/simd/x86/versions.h index 0c7a4d3..ef5b002 100644 --- a/include/boost/predef/hardware/simd/x86/versions.h +++ b/include/boost/predef/hardware/simd/x86/versions.h @@ -11,119 +11,125 @@ http://www.boost.org/LICENSE_1_0.txt) #include -/*` - Those defines represent x86 SIMD extensions versions. +/* tag::reference[] += `BOOST_HW_SIMD_X86_*_VERSION` - [note You *MUST* compare them with the predef `BOOST_HW_SIMD_X86`.] - */ +Those defines represent x86 SIMD extensions versions. + +NOTE: You *MUST* compare them with the predef `BOOST_HW_SIMD_X86`. +*/ // end::reference[] // --------------------------------- -/*` - [heading `BOOST_HW_SIMD_X86_MMX_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_MMX_VERSION` - The [@https://en.wikipedia.org/wiki/MMX_(instruction_set) MMX] x86 extension - version number. +The https://en.wikipedia.org/wiki/MMX_(instruction_set)[MMX] x86 extension +version number. - Version number is: *0.99.0*. - */ +Version number is: *0.99.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_MMX_VERSION BOOST_VERSION_NUMBER(0, 99, 0) -/*` - [heading `BOOST_HW_SIMD_X86_SSE_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_SSE_VERSION` - The [@https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions SSE] x86 extension - version number. +The https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions[SSE] x86 extension +version number. - Version number is: *1.0.0*. - */ +Version number is: *1.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_SSE_VERSION BOOST_VERSION_NUMBER(1, 0, 0) -/*` - [heading `BOOST_HW_SIMD_X86_SSE2_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_SSE2_VERSION` - The [@https://en.wikipedia.org/wiki/SSE2 SSE2] x86 extension version number. +The https://en.wikipedia.org/wiki/SSE2[SSE2] x86 extension version number. - Version number is: *2.0.0*. - */ +Version number is: *2.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_SSE2_VERSION BOOST_VERSION_NUMBER(2, 0, 0) -/*` - [heading `BOOST_HW_SIMD_X86_SSE3_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_SSE3_VERSION` - The [@https://en.wikipedia.org/wiki/SSE3 SSE3] x86 extension version number. +The https://en.wikipedia.org/wiki/SSE3[SSE3] x86 extension version number. - Version number is: *3.0.0*. - */ +Version number is: *3.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_SSE3_VERSION BOOST_VERSION_NUMBER(3, 0, 0) -/*` - [heading `BOOST_HW_SIMD_X86_SSSE3_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_SSSE3_VERSION` - The [@https://en.wikipedia.org/wiki/SSSE3 SSSE3] x86 extension version number. +The https://en.wikipedia.org/wiki/SSSE3[SSSE3] x86 extension version number. - Version number is: *3.1.0*. - */ +Version number is: *3.1.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_SSSE3_VERSION BOOST_VERSION_NUMBER(3, 1, 0) -/*` - [heading `BOOST_HW_SIMD_X86_SSE4_1_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_SSE4_1_VERSION` - The [@https://en.wikipedia.org/wiki/SSE4#SSE4.1 SSE4_1] x86 extension version - number. +The https://en.wikipedia.org/wiki/SSE4#SSE4.1[SSE4_1] x86 extension version +number. - Version number is: *4.1.0*. - */ +Version number is: *4.1.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_SSE4_1_VERSION BOOST_VERSION_NUMBER(4, 1, 0) -/*` - [heading `BOOST_HW_SIMD_X86_SSE4_2_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_SSE4_2_VERSION` - The [@https://en.wikipedia.org/wiki/SSE4##SSE4.2 SSE4_2] x86 extension version - number. +The https://en.wikipedia.org/wiki/SSE4##SSE4.2[SSE4_2] x86 extension version +number. - Version number is: *4.2.0*. - */ +Version number is: *4.2.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_SSE4_2_VERSION BOOST_VERSION_NUMBER(4, 2, 0) -/*` - [heading `BOOST_HW_SIMD_X86_AVX_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_AVX_VERSION` - The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions AVX] x86 - extension version number. +The https://en.wikipedia.org/wiki/Advanced_Vector_Extensions[AVX] x86 +extension version number. - Version number is: *5.0.0*. - */ +Version number is: *5.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_AVX_VERSION BOOST_VERSION_NUMBER(5, 0, 0) -/*` - [heading `BOOST_HW_SIMD_X86_FMA3_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_FMA3_VERSION` - The [@https://en.wikipedia.org/wiki/FMA_instruction_set FMA3] x86 extension - version number. +The https://en.wikipedia.org/wiki/FMA_instruction_set[FMA3] x86 extension +version number. - Version number is: *5.2.0*. - */ +Version number is: *5.2.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_FMA3_VERSION BOOST_VERSION_NUMBER(5, 2, 0) -/*` - [heading `BOOST_HW_SIMD_X86_AVX2_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_AVX2_VERSION` - The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2 AVX2] - x86 extension version number. +The https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2[AVX2] +x86 extension version number. - Version number is: *5.3.0*. - */ +Version number is: *5.3.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_AVX2_VERSION BOOST_VERSION_NUMBER(5, 3, 0) -/*` - [heading `BOOST_HW_SIMD_X86_MIC_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_MIC_VERSION` - The [@https://en.wikipedia.org/wiki/Xeon_Phi MIC] (Xeon Phi) x86 extension - version number. +The https://en.wikipedia.org/wiki/Xeon_Phi[MIC] (Xeon Phi) x86 extension +version number. - Version number is: *9.0.0*. - */ +Version number is: *9.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_MIC_VERSION BOOST_VERSION_NUMBER(9, 0, 0) +/* tag::reference[] + +*/ // end::reference[] + #endif diff --git a/include/boost/predef/hardware/simd/x86_amd.h b/include/boost/predef/hardware/simd/x86_amd.h index c80d1ce..ed96af3 100644 --- a/include/boost/predef/hardware/simd/x86_amd.h +++ b/include/boost/predef/hardware/simd/x86_amd.h @@ -12,42 +12,44 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` - [heading `BOOST_HW_SIMD_X86_AMD`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_AMD` - The SIMD extension for x86 (AMD) (*if detected*). - Version number depends on the most recent detected extension. +The SIMD extension for x86 (AMD) (*if detected*). +Version number depends on the most recent detected extension. - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SSE4A__`] [__predef_detection__]] +| `+__SSE4A__+` | {predef_detection} - [[`__FMA4__`] [__predef_detection__]] +| `+__FMA4__+` | {predef_detection} - [[`__XOP__`] [__predef_detection__]] +| `+__XOP__+` | {predef_detection} - [[`BOOST_HW_SIMD_X86`] [__predef_detection__]] - ] +| `BOOST_HW_SIMD_X86` | {predef_detection} +|=== - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SSE4A__`] [BOOST_HW_SIMD_X86_SSE4A_VERSION]] +| `+__SSE4A__+` | BOOST_HW_SIMD_X86_SSE4A_VERSION - [[`__FMA4__`] [BOOST_HW_SIMD_X86_FMA4_VERSION]] +| `+__FMA4__+` | BOOST_HW_SIMD_X86_FMA4_VERSION - [[`__XOP__`] [BOOST_HW_SIMD_X86_XOP_VERSION]] +| `+__XOP__+` | BOOST_HW_SIMD_X86_XOP_VERSION - [[`BOOST_HW_SIMD_X86`] [BOOST_HW_SIMD_X86]] - ] +| `BOOST_HW_SIMD_X86` | BOOST_HW_SIMD_X86 +|=== - [note This predef includes every other x86 SIMD extensions and also has other - more specific extensions (FMA4, XOP, SSE4a). You should use this predef - instead of `BOOST_HW_SIMD_X86` to test if those specific extensions have - been detected.] +NOTE: This predef includes every other x86 SIMD extensions and also has other +more specific extensions (FMA4, XOP, SSE4a). You should use this predef +instead of `BOOST_HW_SIMD_X86` to test if those specific extensions have +been detected. - */ +*/ // end::reference[] #define BOOST_HW_SIMD_X86_AMD BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/hardware/simd/x86_amd/versions.h b/include/boost/predef/hardware/simd/x86_amd/versions.h index 1f9e96c..aa54a5c 100644 --- a/include/boost/predef/hardware/simd/x86_amd/versions.h +++ b/include/boost/predef/hardware/simd/x86_amd/versions.h @@ -11,41 +11,46 @@ http://www.boost.org/LICENSE_1_0.txt) #include -/*` - Those defines represent x86 (AMD specific) SIMD extensions versions. +/* tag::reference[] += `BOOST_HW_SIMD_X86_AMD_*_VERSION` - [note You *MUST* compare them with the predef `BOOST_HW_SIMD_X86_AMD`.] - */ +Those defines represent x86 (AMD specific) SIMD extensions versions. + +NOTE: You *MUST* compare them with the predef `BOOST_HW_SIMD_X86_AMD`. +*/ // end::reference[] // --------------------------------- -/*` - [heading `BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION` - [@https://en.wikipedia.org/wiki/SSE4##SSE4A SSE4A] x86 extension (AMD specific). +https://en.wikipedia.org/wiki/SSE4##SSE4A[SSE4A] x86 extension (AMD specific). - Version number is: *4.0.0*. - */ +Version number is: *4.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION BOOST_VERSION_NUMBER(4, 0, 0) -/*` - [heading `BOOST_HW_SIMD_X86_AMD_FMA4_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_AMD_FMA4_VERSION` - [@https://en.wikipedia.org/wiki/FMA_instruction_set#FMA4_instruction_set FMA4] x86 extension (AMD specific). +https://en.wikipedia.org/wiki/FMA_instruction_set#FMA4_instruction_set[FMA4] x86 extension (AMD specific). - Version number is: *5.1.0*. - */ +Version number is: *5.1.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_AMD_FMA4_VERSION BOOST_VERSION_NUMBER(5, 1, 0) -/*` - [heading `BOOST_HW_SIMD_X86_AMD_XOP_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_AMD_XOP_VERSION` - [@https://en.wikipedia.org/wiki/XOP_instruction_set XOP] x86 extension (AMD specific). +https://en.wikipedia.org/wiki/XOP_instruction_set[XOP] x86 extension (AMD specific). - Version number is: *5.1.1*. - */ +Version number is: *5.1.1*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_AMD_XOP_VERSION BOOST_VERSION_NUMBER(5, 1, 1) +/* tag::reference[] + +*/ // end::reference[] #endif diff --git a/include/boost/predef/language/cuda.h b/include/boost/predef/language/cuda.h index 5c5fed3..1159af4 100644 --- a/include/boost/predef/language/cuda.h +++ b/include/boost/predef/language/cuda.h @@ -11,21 +11,22 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LANG_CUDA`] +/* tag::reference[] += `BOOST_LANG_CUDA` -[@https://en.wikipedia.org/wiki/CUDA CUDA C/C++] language. +https://en.wikipedia.org/wiki/CUDA[CUDA C/{CPP}] language. If available, the version is detected as VV.RR.P. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__CUDACC__`] [__predef_detection__]] - [[`__CUDA__`] [__predef_detection__]] +| `+__CUDACC__+` | {predef_detection} +| `+__CUDA__+` | {predef_detection} - [[`CUDA_VERSION`] [VV.RR.P]] - ] - */ +| `CUDA_VERSION` | VV.RR.P +|=== +*/ // end::reference[] #define BOOST_LANG_CUDA BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/language/objc.h b/include/boost/predef/language/objc.h index 24e3ad3..c521371 100644 --- a/include/boost/predef/language/objc.h +++ b/include/boost/predef/language/objc.h @@ -11,17 +11,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LANG_OBJC`] +/* tag::reference[] += `BOOST_LANG_OBJC` -[@http://en.wikipedia.org/wiki/Objective-C Objective-C] language. +http://en.wikipedia.org/wiki/Objective-C[Objective-C] language. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__OBJC__`] [__predef_detection__]] - ] - */ +| `+__OBJC__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_LANG_OBJC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/language/stdc.h b/include/boost/predef/language/stdc.h index db25c12..94e30fe 100644 --- a/include/boost/predef/language/stdc.h +++ b/include/boost/predef/language/stdc.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LANG_STDC`] +/* tag::reference[] += `BOOST_LANG_STDC` -[@http://en.wikipedia.org/wiki/C_(programming_language) Standard C] language. +http://en.wikipedia.org/wiki/C_(programming_language)[Standard C] language. If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__STDC__`] [__predef_detection__]] +| `+__STDC__+` | {predef_detection} - [[`__STDC_VERSION__`] [V.R.P]] - ] - */ +| `+__STDC_VERSION__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LANG_STDC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/language/stdcpp.h b/include/boost/predef/language/stdcpp.h index 34dc8c7..45d8916 100644 --- a/include/boost/predef/language/stdcpp.h +++ b/include/boost/predef/language/stdcpp.h @@ -11,29 +11,32 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LANG_STDCPP`] +/* tag::reference[] += `BOOST_LANG_STDCPP` -[@http://en.wikipedia.org/wiki/C%2B%2B Standard C++] language. +http://en.wikipedia.org/wiki/C%2B%2B[Standard {CPP}] 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 +Because of the way the {CPP} standardization process works the defined version year will not be the commonly known year of the standard. Specifically the defined versions are: -[table Detected Version Number vs. C++ Standard Year - [[Detected Version Number] [Standard Year] [C++ Standard]] - [[27.11.1] [1998] [ISO/IEC 14882:1998]] - [[41.12.1] [2011] [ISO/IEC 14882:2011]] -] +.Detected Version Number vs. {CPP} Standard Year +[options="header"] +|=== +| Detected Version Number | Standard Year | {CPP} Standard +| 27.11.1 | 1998 | ISO/IEC 14882:1998 +| 41.12.1 | 2011 | ISO/IEC 14882:2011 +|=== -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__cplusplus`] [__predef_detection__]] +| `+__cplusplus+` | {predef_detection} - [[`__cplusplus`] [YYYY.MM.1]] - ] - */ +| `+__cplusplus+` | YYYY.MM.1 +|=== +*/ // end::reference[] #define BOOST_LANG_STDCPP BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -52,20 +55,21 @@ Specifically the defined versions are: #define BOOST_LANG_STDCPP_NAME "Standard C++" -/*` -[heading `BOOST_LANG_STDCPPCLI`] +/* tag::reference[] += `BOOST_LANG_STDCPPCLI` -[@http://en.wikipedia.org/wiki/C%2B%2B/CLI Standard C++/CLI] language. +http://en.wikipedia.org/wiki/C%2B%2B/CLI[Standard {CPP}/CLI] language. If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__cplusplus_cli`] [__predef_detection__]] +| `+__cplusplus_cli+` | {predef_detection} - [[`__cplusplus_cli`] [YYYY.MM.1]] - ] - */ +| `+__cplusplus_cli+` | YYYY.MM.1 +|=== +*/ // end::reference[] #define BOOST_LANG_STDCPPCLI BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -84,17 +88,18 @@ If available, the year of the standard is detected as YYYY.MM.1 from the Epoc da #define BOOST_LANG_STDCPPCLI_NAME "Standard C++/CLI" -/*` -[heading `BOOST_LANG_STDECPP`] +/* tag::reference[] += `BOOST_LANG_STDECPP` -[@http://en.wikipedia.org/wiki/Embedded_C%2B%2B Standard Embedded C++] language. +http://en.wikipedia.org/wiki/Embedded_C%2B%2B[Standard Embedded {CPP}] language. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__embedded_cplusplus`] [__predef_detection__]] - ] - */ +| `+__embedded_cplusplus+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_LANG_STDECPP BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/c/cloudabi.h b/include/boost/predef/library/c/cloudabi.h index e6acaee..80ce81c 100644 --- a/include/boost/predef/library/c/cloudabi.h +++ b/include/boost/predef/library/c/cloudabi.h @@ -18,20 +18,21 @@ #include #endif -/*` -[heading `BOOST_LIB_C_CLOUDABI`] +/* tag::reference[] += `BOOST_LIB_C_CLOUDABI` -[@https://github.com/NuxiNL/cloudlibc cloudlibc] - CloudABI's standard C library. +https://github.com/NuxiNL/cloudlibc[cloudlibc] - CloudABI's standard C library. Version number available as major, and minor. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__cloudlibc__`] [__predef_detection__]] +| `+__cloudlibc__+` | {predef_detection} - [[`__cloudlibc_major__`, `__cloudlibc_minor__`] [V.R.0]] - ] - */ +| `+__cloudlibc_major__+`, `+__cloudlibc_minor__+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_LIB_C_CLOUDABI BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/c/gnu.h b/include/boost/predef/library/c/gnu.h index 9e4ca89..dd7a205 100644 --- a/include/boost/predef/library/c/gnu.h +++ b/include/boost/predef/library/c/gnu.h @@ -19,22 +19,23 @@ http://www.boost.org/LICENSE_1_0.txt) #include #endif -/*` -[heading `BOOST_LIB_C_GNU`] +/* tag::reference[] += `BOOST_LIB_C_GNU` -[@http://en.wikipedia.org/wiki/Glibc GNU glibc] Standard C library. +http://en.wikipedia.org/wiki/Glibc[GNU glibc] Standard C library. Version number available as major, and minor. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__GLIBC__`] [__predef_detection__]] - [[`__GNU_LIBRARY__`] [__predef_detection__]] +| `+__GLIBC__+` | {predef_detection} +| `+__GNU_LIBRARY__+` | {predef_detection} - [[`__GLIBC__`, `__GLIBC_MINOR__`] [V.R.0]] - [[`__GNU_LIBRARY__`, `__GNU_LIBRARY_MINOR__`] [V.R.0]] - ] - */ +| `+__GLIBC__+`, `+__GLIBC_MINOR__+` | V.R.0 +| `+__GNU_LIBRARY__+`, `+__GNU_LIBRARY_MINOR__+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_LIB_C_GNU BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/c/uc.h b/include/boost/predef/library/c/uc.h index 03081e9..6eb22f0 100644 --- a/include/boost/predef/library/c/uc.h +++ b/include/boost/predef/library/c/uc.h @@ -13,19 +13,20 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LIB_C_UC`] +/* tag::reference[] += `BOOST_LIB_C_UC` -[@http://en.wikipedia.org/wiki/Uclibc uClibc] Standard C library. +http://en.wikipedia.org/wiki/Uclibc[uClibc] Standard C library. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__UCLIBC__`] [__predef_detection__]] +| `+__UCLIBC__+` | {predef_detection} - [[`__UCLIBC_MAJOR__`, `__UCLIBC_MINOR__`, `__UCLIBC_SUBLEVEL__`] [V.R.P]] - ] - */ +| `+__UCLIBC_MAJOR__+`, `+__UCLIBC_MINOR__+`, `+__UCLIBC_SUBLEVEL__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_C_UC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/c/vms.h b/include/boost/predef/library/c/vms.h index 685f1a7..ca9050f 100644 --- a/include/boost/predef/library/c/vms.h +++ b/include/boost/predef/library/c/vms.h @@ -13,20 +13,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LIB_C_VMS`] +/* tag::reference[] += `BOOST_LIB_C_VMS` VMS libc Standard C library. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__CRTL_VER`] [__predef_detection__]] +| `+__CRTL_VER+` | {predef_detection} - [[`__CRTL_VER`] [V.R.P]] - ] - */ +| `+__CRTL_VER+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_C_VMS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/c/zos.h b/include/boost/predef/library/c/zos.h index 222d355..8390762 100644 --- a/include/boost/predef/library/c/zos.h +++ b/include/boost/predef/library/c/zos.h @@ -13,21 +13,22 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LIB_C_ZOS`] +/* tag::reference[] += `BOOST_LIB_C_ZOS` z/OS libc Standard C library. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__LIBREL__`] [__predef_detection__]] +| `+__LIBREL__+` | {predef_detection} - [[`__LIBREL__`] [V.R.P]] - [[`__TARGET_LIB__`] [V.R.P]] - ] - */ +| `+__LIBREL__+` | V.R.P +| `+__TARGET_LIB__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_C_ZOS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/std/cxx.h b/include/boost/predef/library/std/cxx.h index 07b52cd..61a09a8 100644 --- a/include/boost/predef/library/std/cxx.h +++ b/include/boost/predef/library/std/cxx.h @@ -13,19 +13,20 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LIB_STD_CXX`] +/* tag::reference[] += `BOOST_LIB_STD_CXX` -[@http://libcxx.llvm.org/ libc++] C++ Standard Library. +http://libcxx.llvm.org/[libc++] {CPP} Standard Library. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`_LIBCPP_VERSION`] [__predef_detection__]] +| `+_LIBCPP_VERSION+` | {predef_detection} - [[`_LIBCPP_VERSION`] [V.0.P]] - ] - */ +| `+_LIBCPP_VERSION+` | V.0.P +|=== +*/ // end::reference[] #define BOOST_LIB_STD_CXX BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/std/dinkumware.h b/include/boost/predef/library/std/dinkumware.h index 0fc0776..5a4bc57 100644 --- a/include/boost/predef/library/std/dinkumware.h +++ b/include/boost/predef/library/std/dinkumware.h @@ -13,21 +13,22 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LIB_STD_DINKUMWARE`] +/* tag::reference[] += `BOOST_LIB_STD_DINKUMWARE` -[@http://en.wikipedia.org/wiki/Dinkumware Dinkumware] Standard C++ Library. +http://en.wikipedia.org/wiki/Dinkumware[Dinkumware] Standard {CPP} Library. If available version number as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`_YVALS`, `__IBMCPP__`] [__predef_detection__]] - [[`_CPPLIB_VER`] [__predef_detection__]] +| `+_YVALS+`, `+__IBMCPP__+` | {predef_detection} +| `+_CPPLIB_VER+` | {predef_detection} - [[`_CPPLIB_VER`] [V.R.0]] - ] - */ +| `+_CPPLIB_VER+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_LIB_STD_DINKUMWARE BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/std/libcomo.h b/include/boost/predef/library/std/libcomo.h index 97d4a53..a2116c8 100644 --- a/include/boost/predef/library/std/libcomo.h +++ b/include/boost/predef/library/std/libcomo.h @@ -13,20 +13,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LIB_STD_COMO`] +/* tag::reference[] += `BOOST_LIB_STD_COMO` -[@http://www.comeaucomputing.com/libcomo/ Comeau Computing] Standard C++ Library. +http://www.comeaucomputing.com/libcomo/[Comeau Computing] Standard {CPP} Library. Version number available as major. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__LIBCOMO__`] [__predef_detection__]] +| `+__LIBCOMO__+` | {predef_detection} - [[`__LIBCOMO_VERSION__`] [V.0.0]] - ] - */ +| `+__LIBCOMO_VERSION__+` | V.0.0 +|=== +*/ // end::reference[] #define BOOST_LIB_STD_COMO BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/std/modena.h b/include/boost/predef/library/std/modena.h index b67ac62..4ce1cfc 100644 --- a/include/boost/predef/library/std/modena.h +++ b/include/boost/predef/library/std/modena.h @@ -13,18 +13,19 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LIB_STD_MSIPL`] +/* tag::reference[] += `BOOST_LIB_STD_MSIPL` -[@http://modena.us/ Modena Software Lib++] Standard C++ Library. +http://modena.us/[Modena Software Lib++] Standard {CPP} Library. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`MSIPL_COMPILE_H`] [__predef_detection__]] - [[`__MSIPL_COMPILE_H`] [__predef_detection__]] - ] - */ +| `MSIPL_COMPILE_H` | {predef_detection} +| `+__MSIPL_COMPILE_H+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_LIB_STD_MSIPL BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/std/msl.h b/include/boost/predef/library/std/msl.h index d73c74c..932da79 100644 --- a/include/boost/predef/library/std/msl.h +++ b/include/boost/predef/library/std/msl.h @@ -13,22 +13,23 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LIB_STD_MSL`] +/* tag::reference[] += `BOOST_LIB_STD_MSL` -[@http://www.freescale.com/ Metrowerks] Standard C++ Library. +http://www.freescale.com/[Metrowerks] Standard {CPP} Library. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MSL_CPP__`] [__predef_detection__]] - [[`__MSL__`] [__predef_detection__]] +| `+__MSL_CPP__+` | {predef_detection} +| `+__MSL__+` | {predef_detection} - [[`__MSL_CPP__`] [V.R.P]] - [[`__MSL__`] [V.R.P]] - ] - */ +| `+__MSL_CPP__+` | V.R.P +| `+__MSL__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_STD_MSL BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/std/roguewave.h b/include/boost/predef/library/std/roguewave.h index 9c3f288..c64cb06 100644 --- a/include/boost/predef/library/std/roguewave.h +++ b/include/boost/predef/library/std/roguewave.h @@ -13,21 +13,22 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LIB_STD_RW`] +/* tag::reference[] += `BOOST_LIB_STD_RW` -[@http://stdcxx.apache.org/ Roguewave] Standard C++ library. +http://stdcxx.apache.org/[Roguewave] Standard {CPP} library. If available version number as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__STD_RWCOMPILER_H__`] [__predef_detection__]] - [[`_RWSTD_VER`] [__predef_detection__]] +| `+__STD_RWCOMPILER_H__+` | {predef_detection} +| `+_RWSTD_VER+` | {predef_detection} - [[`_RWSTD_VER`] [V.R.P]] - ] - */ +| `+_RWSTD_VER+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_STD_RW BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/std/sgi.h b/include/boost/predef/library/std/sgi.h index 5d19bba..3d11dd4 100644 --- a/include/boost/predef/library/std/sgi.h +++ b/include/boost/predef/library/std/sgi.h @@ -13,20 +13,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LIB_STD_SGI`] +/* tag::reference[] += `BOOST_LIB_STD_SGI` -[@http://www.sgi.com/tech/stl/ SGI] Standard C++ library. +http://www.sgi.com/tech/stl/[SGI] Standard {CPP} library. If available version number as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__STL_CONFIG_H`] [__predef_detection__]] +| `+__STL_CONFIG_H+` | {predef_detection} - [[`__SGI_STL`] [V.R.P]] - ] - */ +| `+__SGI_STL+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_STD_SGI BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/std/stdcpp3.h b/include/boost/predef/library/std/stdcpp3.h index c980292..bc9717a 100644 --- a/include/boost/predef/library/std/stdcpp3.h +++ b/include/boost/predef/library/std/stdcpp3.h @@ -13,22 +13,23 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LIB_STD_GNU`] +/* tag::reference[] += `BOOST_LIB_STD_GNU` -[@http://gcc.gnu.org/libstdc++/ GNU libstdc++] Standard C++ library. +http://gcc.gnu.org/libstdc++/[GNU libstdc++] Standard {CPP} library. Version number available as year (from 1970), month, and day. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__GLIBCXX__`] [__predef_detection__]] - [[`__GLIBCPP__`] [__predef_detection__]] +| `+__GLIBCXX__+` | {predef_detection} +| `+__GLIBCPP__+` | {predef_detection} - [[`__GLIBCXX__`] [V.R.P]] - [[`__GLIBCPP__`] [V.R.P]] - ] - */ +| `+__GLIBCXX__+` | V.R.P +| `+__GLIBCPP__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_STD_GNU BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/std/stlport.h b/include/boost/predef/library/std/stlport.h index c09483b..9d7f14f 100644 --- a/include/boost/predef/library/std/stlport.h +++ b/include/boost/predef/library/std/stlport.h @@ -13,23 +13,24 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LIB_STD_STLPORT`] +/* tag::reference[] += `BOOST_LIB_STD_STLPORT` -[@http://sourceforge.net/projects/stlport/ STLport Standard C++] library. +http://sourceforge.net/projects/stlport/[STLport Standard {CPP}] library. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SGI_STL_PORT`] [__predef_detection__]] - [[`_STLPORT_VERSION`] [__predef_detection__]] +| `+__SGI_STL_PORT+` | {predef_detection} +| `+_STLPORT_VERSION+` | {predef_detection} - [[`_STLPORT_MAJOR`, `_STLPORT_MINOR`, `_STLPORT_PATCHLEVEL`] [V.R.P]] - [[`_STLPORT_VERSION`] [V.R.P]] - [[`__SGI_STL_PORT`] [V.R.P]] - ] - */ +| `+_STLPORT_MAJOR+`, `+_STLPORT_MINOR+`, `+_STLPORT_PATCHLEVEL+` | V.R.P +| `+_STLPORT_VERSION+` | V.R.P +| `+__SGI_STL_PORT+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_STD_STLPORT BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/library/std/vacpp.h b/include/boost/predef/library/std/vacpp.h index 632f846..6165fef 100644 --- a/include/boost/predef/library/std/vacpp.h +++ b/include/boost/predef/library/std/vacpp.h @@ -13,17 +13,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_LIB_STD_IBM`] +/* tag::reference[] += `BOOST_LIB_STD_IBM` -[@http://www.ibm.com/software/awdtools/xlcpp/ IBM VACPP Standard C++] library. +http://www.ibm.com/software/awdtools/xlcpp/[IBM VACPP Standard {CPP}] library. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__IBMCPP__`] [__predef_detection__]] - ] - */ +| `+__IBMCPP__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_LIB_STD_IBM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/make.h b/include/boost/predef/make.h index fccd2d3..810ba45 100644 --- a/include/boost/predef/make.h +++ b/include/boost/predef/make.h @@ -13,8 +13,8 @@ http://www.boost.org/LICENSE_1_0.txt) Shorthands for the common version number formats used by vendors... */ -/*` -[heading `BOOST_PREDEF_MAKE_..` macros] +/* tag::reference[] += `BOOST_PREDEF_MAKE_..` macros These set of macros decompose common vendor version number macros which are composed version, revision, and patch digits. @@ -27,71 +27,133 @@ The naming convention indicates: indicates an ignored digit. Macros are: -*/ -/*` `BOOST_PREDEF_MAKE_0X_VRP(V)` */ + +*/ // end::reference[] +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VRP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VRP(V) BOOST_VERSION_NUMBER((V&0xF00)>>8,(V&0xF0)>>4,(V&0xF)) -/*` `BOOST_PREDEF_MAKE_0X_VVRP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VVRP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VVRP(V) BOOST_VERSION_NUMBER((V&0xFF00)>>8,(V&0xF0)>>4,(V&0xF)) -/*` `BOOST_PREDEF_MAKE_0X_VRPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VRPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VRPP(V) BOOST_VERSION_NUMBER((V&0xF000)>>12,(V&0xF00)>>8,(V&0xFF)) -/*` `BOOST_PREDEF_MAKE_0X_VVRR(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VVRR(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VVRR(V) BOOST_VERSION_NUMBER((V&0xFF00)>>8,(V&0xFF),0) -/*` `BOOST_PREDEF_MAKE_0X_VRRPPPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VRRPPPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VRRPPPP(V) BOOST_VERSION_NUMBER((V&0xF000000)>>24,(V&0xFF0000)>>16,(V&0xFFFF)) -/*` `BOOST_PREDEF_MAKE_0X_VVRRP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VVRRP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VVRRP(V) BOOST_VERSION_NUMBER((V&0xFF000)>>12,(V&0xFF0)>>4,(V&0xF)) -/*` `BOOST_PREDEF_MAKE_0X_VRRPP000(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VRRPP000(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VRRPP000(V) BOOST_VERSION_NUMBER((V&0xF0000000)>>28,(V&0xFF00000)>>20,(V&0xFF000)>>12) -/*` `BOOST_PREDEF_MAKE_0X_VVRRPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VVRRPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VVRRPP(V) BOOST_VERSION_NUMBER((V&0xFF0000)>>16,(V&0xFF00)>>8,(V&0xFF)) -/*` `BOOST_PREDEF_MAKE_10_VPPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VPPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VPPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,0,(V)%1000) -/*` `BOOST_PREDEF_MAKE_10_VR0(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VR0(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VR0(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,0) -/*` `BOOST_PREDEF_MAKE_10_VRP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRP(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,(V)%10) -/*` `BOOST_PREDEF_MAKE_10_VRP000(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRP000(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRP000(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/10000)%10,((V)/1000)%10) -/*` `BOOST_PREDEF_MAKE_10_VRPPPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRPPPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRPPPP(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/10000)%10,(V)%10000) -/*` `BOOST_PREDEF_MAKE_10_VRPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,((V)/100)%10,(V)%100) -/*` `BOOST_PREDEF_MAKE_10_VRR(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRR(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRR(V) BOOST_VERSION_NUMBER(((V)/100)%10,(V)%100,0) -/*` `BOOST_PREDEF_MAKE_10_VRRPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRRPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%10,((V)/100)%100,(V)%100) -/*` `BOOST_PREDEF_MAKE_10_VRR000(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRR000(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRR000(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/1000)%100,0) -/*` `BOOST_PREDEF_MAKE_10_VV00(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VV00(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VV00(V) BOOST_VERSION_NUMBER(((V)/100)%100,0,0) -/*` `BOOST_PREDEF_MAKE_10_VVRR(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRR(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRR(V) BOOST_VERSION_NUMBER(((V)/100)%100,(V)%100,0) -/*` `BOOST_PREDEF_MAKE_10_VVRRP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRRP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRRP(V) BOOST_VERSION_NUMBER(((V)/1000)%100,((V)/10)%100,(V)%10) -/*` `BOOST_PREDEF_MAKE_10_VVRRPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRRPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%100,((V)/100)%100,(V)%100) -/*` `BOOST_PREDEF_MAKE_10_VVRRPPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRRPPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRRPPP(V) BOOST_VERSION_NUMBER(((V)/100000)%100,((V)/1000)%100,(V)%1000) -/*` `BOOST_PREDEF_MAKE_10_VVRR0PP00(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRR0PP00(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRR0PP00(V) BOOST_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,((V)/100)%100) -/*` `BOOST_PREDEF_MAKE_10_VVRR0PPPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRR0PPPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRR0PPPP(V) BOOST_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,(V)%10000) -/*` `BOOST_PREDEF_MAKE_10_VVRR00PP00(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRR00PP00(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRR00PP00(V) BOOST_VERSION_NUMBER(((V)/100000000)%100,((V)/1000000)%100,((V)/100)%100) -/*` -[heading `BOOST_PREDEF_MAKE_*..` date macros] + +/* tag::reference[] + += `BOOST_PREDEF_MAKE_*..` date macros 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. -*/ -/*` `BOOST_PREDEF_MAKE_DATE(Y,M,D)` */ + +*/ // end::reference[] +/* tag::reference[] +* `BOOST_PREDEF_MAKE_DATE(Y,M,D)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_DATE(Y,M,D) BOOST_VERSION_NUMBER((Y)%10000-1970,(M)%100,(D)%100) -/*` `BOOST_PREDEF_MAKE_YYYYMMDD(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_YYYYMMDD(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_YYYYMMDD(V) BOOST_PREDEF_MAKE_DATE(((V)/10000)%10000,((V)/100)%100,(V)%100) -/*` `BOOST_PREDEF_MAKE_YYYY(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_YYYY(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_YYYY(V) BOOST_PREDEF_MAKE_DATE(V,1,1) -/*` `BOOST_PREDEF_MAKE_YYYYMM(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_YYYYMM(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_YYYYMM(V) BOOST_PREDEF_MAKE_DATE((V)/100,(V)%100,1) #endif diff --git a/include/boost/predef/os/aix.h b/include/boost/predef/os/aix.h index 3e5a953..9bfe740 100644 --- a/include/boost/predef/os/aix.h +++ b/include/boost/predef/os/aix.h @@ -11,24 +11,25 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_AIX`] +/* tag::reference[] += `BOOST_OS_AIX` -[@http://en.wikipedia.org/wiki/AIX_operating_system IBM AIX] operating system. +http://en.wikipedia.org/wiki/AIX_operating_system[IBM AIX] operating system. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`_AIX`] [__predef_detection__]] - [[`__TOS_AIX__`] [__predef_detection__]] +| `+_AIX+` | {predef_detection} +| `+__TOS_AIX__+` | {predef_detection} - [[`_AIX43`] [4.3.0]] - [[`_AIX41`] [4.1.0]] - [[`_AIX32`] [3.2.0]] - [[`_AIX3`] [3.0.0]] - ] - */ +| `+_AIX43+` | 4.3.0 +| `+_AIX41+` | 4.1.0 +| `+_AIX32+` | 3.2.0 +| `+_AIX3+` | 3.0.0 +|=== +*/ // end::reference[] #define BOOST_OS_AIX BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/amigaos.h b/include/boost/predef/os/amigaos.h index 7b32ddf..c6a1f71 100644 --- a/include/boost/predef/os/amigaos.h +++ b/include/boost/predef/os/amigaos.h @@ -11,18 +11,19 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_AMIGAOS`] +/* tag::reference[] += `BOOST_OS_AMIGAOS` -[@http://en.wikipedia.org/wiki/AmigaOS AmigaOS] operating system. +http://en.wikipedia.org/wiki/AmigaOS[AmigaOS] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`AMIGA`] [__predef_detection__]] - [[`__amigaos__`] [__predef_detection__]] - ] - */ +| `AMIGA` | {predef_detection} +| `+__amigaos__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_AMIGAOS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/android.h b/include/boost/predef/os/android.h index 564423f..99a1cd0 100644 --- a/include/boost/predef/os/android.h +++ b/include/boost/predef/os/android.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_ANDROID`] +/* tag::reference[] += `BOOST_OS_ANDROID` NOTE: `BOOST_OS_ANDROID` is deprecated, and will be removed in a following release. Please use `BOOST_PLAT_ANDROID` instead. -[@http://en.wikipedia.org/wiki/Android_%28operating_system%29 Android] operating system. +http://en.wikipedia.org/wiki/Android_%28operating_system%29[Android] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__ANDROID__`] [__predef_detection__]] - ] - */ +| `+__ANDROID__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_ANDROID BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/beos.h b/include/boost/predef/os/beos.h index 19f4cb7..8f76487 100644 --- a/include/boost/predef/os/beos.h +++ b/include/boost/predef/os/beos.h @@ -11,17 +11,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_BEOS`] +/* tag::reference[] += `BOOST_OS_BEOS` -[@http://en.wikipedia.org/wiki/BeOS BeOS] operating system. +http://en.wikipedia.org/wiki/BeOS[BeOS] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__BEOS__`] [__predef_detection__]] - ] - */ +| `+__BEOS__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_BEOS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/bsd.h b/include/boost/predef/os/bsd.h index 81d2c08..528a597 100644 --- a/include/boost/predef/os/bsd.h +++ b/include/boost/predef/os/bsd.h @@ -18,36 +18,37 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_BSD`] +/* tag::reference[] += `BOOST_OS_BSD` -[@http://en.wikipedia.org/wiki/Berkeley_Software_Distribution BSD] operating system. +http://en.wikipedia.org/wiki/Berkeley_Software_Distribution[BSD] operating system. BSD has various branch operating systems possible and each detected individually. This detects the following variations and sets a specific version number macro to match: -* `BOOST_OS_BSD_DRAGONFLY` [@http://en.wikipedia.org/wiki/DragonFly_BSD DragonFly BSD] -* `BOOST_OS_BSD_FREE` [@http://en.wikipedia.org/wiki/Freebsd FreeBSD] -* `BOOST_OS_BSD_BSDI` [@http://en.wikipedia.org/wiki/BSD/OS BSDi BSD/OS] -* `BOOST_OS_BSD_NET` [@http://en.wikipedia.org/wiki/Netbsd NetBSD] -* `BOOST_OS_BSD_OPEN` [@http://en.wikipedia.org/wiki/Openbsd OpenBSD] +* `BOOST_OS_BSD_DRAGONFLY` http://en.wikipedia.org/wiki/DragonFly_BSD[DragonFly BSD] +* `BOOST_OS_BSD_FREE` http://en.wikipedia.org/wiki/Freebsd[FreeBSD] +* `BOOST_OS_BSD_BSDI` http://en.wikipedia.org/wiki/BSD/OS[BSDi BSD/OS] +* `BOOST_OS_BSD_NET` http://en.wikipedia.org/wiki/Netbsd[NetBSD] +* `BOOST_OS_BSD_OPEN` http://en.wikipedia.org/wiki/Openbsd[OpenBSD] -[note The general `BOOST_OS_BSD` is set in all cases to indicate some form -of BSD. If the above variants is detected the corresponding macro is also set.] +NOTE: The general `BOOST_OS_BSD` is set in all cases to indicate some form +of BSD. If the above variants is detected the corresponding macro is also set. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`BSD`] [__predef_detection__]] - [[`_SYSTYPE_BSD`] [__predef_detection__]] +| `BSD` | {predef_detection} +| `+_SYSTYPE_BSD+` | {predef_detection} - [[`BSD4_2`] [4.2.0]] - [[`BSD4_3`] [4.3.0]] - [[`BSD4_4`] [4.4.0]] - [[`BSD`] [V.R.0]] - ] - */ +| `BSD4_2` | 4.2.0 +| `BSD4_3` | 4.3.0 +| `BSD4_4` | 4.4.0 +| `BSD` | V.R.0 +|=== +*/ // end::reference[] #include #include diff --git a/include/boost/predef/os/bsd/bsdi.h b/include/boost/predef/os/bsd/bsdi.h index afdcd3e..0c90f6d 100644 --- a/include/boost/predef/os/bsd/bsdi.h +++ b/include/boost/predef/os/bsd/bsdi.h @@ -10,17 +10,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include -/*` -[heading `BOOST_OS_BSD_BSDI`] +/* tag::reference[] += `BOOST_OS_BSD_BSDI` -[@http://en.wikipedia.org/wiki/BSD/OS BSDi BSD/OS] operating system. +http://en.wikipedia.org/wiki/BSD/OS[BSDi BSD/OS] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__bsdi__`] [__predef_detection__]] - ] - */ +| `+__bsdi__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_BSD_BSDI BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/bsd/dragonfly.h b/include/boost/predef/os/bsd/dragonfly.h index 1d07579..253f0e2 100644 --- a/include/boost/predef/os/bsd/dragonfly.h +++ b/include/boost/predef/os/bsd/dragonfly.h @@ -10,17 +10,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include -/*` -[heading `BOOST_OS_BSD_DRAGONFLY`] +/* tag::reference[] += `BOOST_OS_BSD_DRAGONFLY` -[@http://en.wikipedia.org/wiki/DragonFly_BSD DragonFly BSD] operating system. +http://en.wikipedia.org/wiki/DragonFly_BSD[DragonFly BSD] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__DragonFly__`] [__predef_detection__]] - ] - */ +| `+__DragonFly__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_BSD_DRAGONFLY BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/bsd/free.h b/include/boost/predef/os/bsd/free.h index 81c0021..0cf82ae 100644 --- a/include/boost/predef/os/bsd/free.h +++ b/include/boost/predef/os/bsd/free.h @@ -10,19 +10,20 @@ http://www.boost.org/LICENSE_1_0.txt) #include -/*` -[heading `BOOST_OS_BSD_FREE`] +/* tag::reference[] += `BOOST_OS_BSD_FREE` -[@http://en.wikipedia.org/wiki/Freebsd FreeBSD] operating system. +http://en.wikipedia.org/wiki/Freebsd[FreeBSD] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__FreeBSD__`] [__predef_detection__]] +| `+__FreeBSD__+` | {predef_detection} - [[`__FreeBSD_version`] [V.R.P]] - ] - */ +| `+__FreeBSD_version+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_OS_BSD_FREE BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/bsd/net.h b/include/boost/predef/os/bsd/net.h index 3fe5589..c4e3c92 100644 --- a/include/boost/predef/os/bsd/net.h +++ b/include/boost/predef/os/bsd/net.h @@ -10,24 +10,25 @@ http://www.boost.org/LICENSE_1_0.txt) #include -/*` -[heading `BOOST_OS_BSD_NET`] +/* tag::reference[] += `BOOST_OS_BSD_NET` -[@http://en.wikipedia.org/wiki/Netbsd NetBSD] operating system. +http://en.wikipedia.org/wiki/Netbsd[NetBSD] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__NETBSD__`] [__predef_detection__]] - [[`__NetBSD__`] [__predef_detection__]] +| `+__NETBSD__+` | {predef_detection} +| `+__NetBSD__+` | {predef_detection} - [[`__NETBSD_version`] [V.R.P]] - [[`NetBSD0_8`] [0.8.0]] - [[`NetBSD0_9`] [0.9.0]] - [[`NetBSD1_0`] [1.0.0]] - [[`__NetBSD_Version`] [V.R.P]] - ] - */ +| `+__NETBSD_version+` | V.R.P +| `NetBSD0_8` | 0.8.0 +| `NetBSD0_9` | 0.9.0 +| `NetBSD1_0` | 1.0.0 +| `+__NetBSD_Version+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/bsd/open.h b/include/boost/predef/os/bsd/open.h index f6ccd24..3a9081c 100644 --- a/include/boost/predef/os/bsd/open.h +++ b/include/boost/predef/os/bsd/open.h @@ -10,68 +10,69 @@ http://www.boost.org/LICENSE_1_0.txt) #include -/*` -[heading `BOOST_OS_BSD_OPEN`] +/* tag::reference[] += `BOOST_OS_BSD_OPEN` -[@http://en.wikipedia.org/wiki/Openbsd OpenBSD] operating system. +http://en.wikipedia.org/wiki/Openbsd[OpenBSD] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__OpenBSD__`] [__predef_detection__]] +| `+__OpenBSD__+` | {predef_detection} - [[`OpenBSD2_0`] [2.0.0]] - [[`OpenBSD2_1`] [2.1.0]] - [[`OpenBSD2_2`] [2.2.0]] - [[`OpenBSD2_3`] [2.3.0]] - [[`OpenBSD2_4`] [2.4.0]] - [[`OpenBSD2_5`] [2.5.0]] - [[`OpenBSD2_6`] [2.6.0]] - [[`OpenBSD2_7`] [2.7.0]] - [[`OpenBSD2_8`] [2.8.0]] - [[`OpenBSD2_9`] [2.9.0]] - [[`OpenBSD3_0`] [3.0.0]] - [[`OpenBSD3_1`] [3.1.0]] - [[`OpenBSD3_2`] [3.2.0]] - [[`OpenBSD3_3`] [3.3.0]] - [[`OpenBSD3_4`] [3.4.0]] - [[`OpenBSD3_5`] [3.5.0]] - [[`OpenBSD3_6`] [3.6.0]] - [[`OpenBSD3_7`] [3.7.0]] - [[`OpenBSD3_8`] [3.8.0]] - [[`OpenBSD3_9`] [3.9.0]] - [[`OpenBSD4_0`] [4.0.0]] - [[`OpenBSD4_1`] [4.1.0]] - [[`OpenBSD4_2`] [4.2.0]] - [[`OpenBSD4_3`] [4.3.0]] - [[`OpenBSD4_4`] [4.4.0]] - [[`OpenBSD4_5`] [4.5.0]] - [[`OpenBSD4_6`] [4.6.0]] - [[`OpenBSD4_7`] [4.7.0]] - [[`OpenBSD4_8`] [4.8.0]] - [[`OpenBSD4_9`] [4.9.0]] - [[`OpenBSD5_0`] [5.0.0]] - [[`OpenBSD5_1`] [5.1.0]] - [[`OpenBSD5_2`] [5.2.0]] - [[`OpenBSD5_3`] [5.3.0]] - [[`OpenBSD5_4`] [5.4.0]] - [[`OpenBSD5_5`] [5.5.0]] - [[`OpenBSD5_6`] [5.6.0]] - [[`OpenBSD5_7`] [5.7.0]] - [[`OpenBSD5_8`] [5.8.0]] - [[`OpenBSD5_9`] [5.9.0]] - [[`OpenBSD6_0`] [6.0.0]] - [[`OpenBSD6_1`] [6.1.0]] - [[`OpenBSD6_2`] [6.2.0]] - [[`OpenBSD6_3`] [6.3.0]] - [[`OpenBSD6_4`] [6.4.0]] - [[`OpenBSD6_5`] [6.5.0]] - [[`OpenBSD6_6`] [6.6.0]] - [[`OpenBSD6_7`] [6.7.0]] - [[`OpenBSD6_8`] [6.8.0]] - [[`OpenBSD6_9`] [6.9.0]] - ] - */ +| `OpenBSD2_0` | 2.0.0 +| `OpenBSD2_1` | 2.1.0 +| `OpenBSD2_2` | 2.2.0 +| `OpenBSD2_3` | 2.3.0 +| `OpenBSD2_4` | 2.4.0 +| `OpenBSD2_5` | 2.5.0 +| `OpenBSD2_6` | 2.6.0 +| `OpenBSD2_7` | 2.7.0 +| `OpenBSD2_8` | 2.8.0 +| `OpenBSD2_9` | 2.9.0 +| `OpenBSD3_0` | 3.0.0 +| `OpenBSD3_1` | 3.1.0 +| `OpenBSD3_2` | 3.2.0 +| `OpenBSD3_3` | 3.3.0 +| `OpenBSD3_4` | 3.4.0 +| `OpenBSD3_5` | 3.5.0 +| `OpenBSD3_6` | 3.6.0 +| `OpenBSD3_7` | 3.7.0 +| `OpenBSD3_8` | 3.8.0 +| `OpenBSD3_9` | 3.9.0 +| `OpenBSD4_0` | 4.0.0 +| `OpenBSD4_1` | 4.1.0 +| `OpenBSD4_2` | 4.2.0 +| `OpenBSD4_3` | 4.3.0 +| `OpenBSD4_4` | 4.4.0 +| `OpenBSD4_5` | 4.5.0 +| `OpenBSD4_6` | 4.6.0 +| `OpenBSD4_7` | 4.7.0 +| `OpenBSD4_8` | 4.8.0 +| `OpenBSD4_9` | 4.9.0 +| `OpenBSD5_0` | 5.0.0 +| `OpenBSD5_1` | 5.1.0 +| `OpenBSD5_2` | 5.2.0 +| `OpenBSD5_3` | 5.3.0 +| `OpenBSD5_4` | 5.4.0 +| `OpenBSD5_5` | 5.5.0 +| `OpenBSD5_6` | 5.6.0 +| `OpenBSD5_7` | 5.7.0 +| `OpenBSD5_8` | 5.8.0 +| `OpenBSD5_9` | 5.9.0 +| `OpenBSD6_0` | 6.0.0 +| `OpenBSD6_1` | 6.1.0 +| `OpenBSD6_2` | 6.2.0 +| `OpenBSD6_3` | 6.3.0 +| `OpenBSD6_4` | 6.4.0 +| `OpenBSD6_5` | 6.5.0 +| `OpenBSD6_6` | 6.6.0 +| `OpenBSD6_7` | 6.7.0 +| `OpenBSD6_8` | 6.8.0 +| `OpenBSD6_9` | 6.9.0 +|=== +*/ // end::reference[] #define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/cygwin.h b/include/boost/predef/os/cygwin.h index 207809c..3ca73d2 100644 --- a/include/boost/predef/os/cygwin.h +++ b/include/boost/predef/os/cygwin.h @@ -11,19 +11,20 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_CYGWIN`] +/* tag::reference[] += `BOOST_OS_CYGWIN` -[@http://en.wikipedia.org/wiki/Cygwin Cygwin] evironment. +http://en.wikipedia.org/wiki/Cygwin[Cygwin] evironment. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__CYGWIN__`] [__predef_detection__]] +| `+__CYGWIN__+` | {predef_detection} - [[`CYGWIN_VERSION_API_MAJOR`, `CYGWIN_VERSION_API_MINOR`] [V.R.0]] - ] - */ +| `CYGWIN_VERSION_API_MAJOR`, `CYGWIN_VERSION_API_MINOR` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_OS_CYGWIN BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/haiku.h b/include/boost/predef/os/haiku.h index d79dbea..4ae3158 100644 --- a/include/boost/predef/os/haiku.h +++ b/include/boost/predef/os/haiku.h @@ -12,17 +12,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_HAIKU`] +/* tag::reference[] += `BOOST_OS_HAIKU` -[@http://en.wikipedia.org/wiki/Haiku_(operating_system) Haiku] operating system. +http://en.wikipedia.org/wiki/Haiku_(operating_system)[Haiku] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__HAIKU__`] [__predef_detection__]] - ] - */ +| `+__HAIKU__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_HAIKU BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/hpux.h b/include/boost/predef/os/hpux.h index 29243f4..7901914 100644 --- a/include/boost/predef/os/hpux.h +++ b/include/boost/predef/os/hpux.h @@ -11,19 +11,20 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_HPUX`] +/* tag::reference[] += `BOOST_OS_HPUX` -[@http://en.wikipedia.org/wiki/HP-UX HP-UX] operating system. +http://en.wikipedia.org/wiki/HP-UX[HP-UX] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`hpux`] [__predef_detection__]] - [[`_hpux`] [__predef_detection__]] - [[`__hpux`] [__predef_detection__]] - ] - */ +| `hpux` | {predef_detection} +| `+_hpux+` | {predef_detection} +| `+__hpux+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_HPUX BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/ios.h b/include/boost/predef/os/ios.h index f853815..138963a 100644 --- a/include/boost/predef/os/ios.h +++ b/include/boost/predef/os/ios.h @@ -12,21 +12,22 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_IOS`] +/* tag::reference[] += `BOOST_OS_IOS` -[@http://en.wikipedia.org/wiki/iOS iOS] operating system. +http://en.wikipedia.org/wiki/iOS[iOS] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__APPLE__`] [__predef_detection__]] - [[`__MACH__`] [__predef_detection__]] - [[`__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__`] [__predef_detection__]] +| `+__APPLE__+` | {predef_detection} +| `+__MACH__+` | {predef_detection} +| `+__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__+` | {predef_detection} - [[`__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__`] [__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__*1000]] - ] - */ +| `+__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__+` | +__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__+*1000 +|=== +*/ // end::reference[] #define BOOST_OS_IOS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/irix.h b/include/boost/predef/os/irix.h index fa6ac41..7c0bab0 100644 --- a/include/boost/predef/os/irix.h +++ b/include/boost/predef/os/irix.h @@ -11,18 +11,19 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_IRIX`] +/* tag::reference[] += `BOOST_OS_IRIX` -[@http://en.wikipedia.org/wiki/Irix IRIX] operating system. +http://en.wikipedia.org/wiki/Irix[IRIX] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`sgi`] [__predef_detection__]] - [[`__sgi`] [__predef_detection__]] - ] - */ +| `sgi` | {predef_detection} +| `+__sgi+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_IRIX BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/linux.h b/include/boost/predef/os/linux.h index f945f01..bab64fc 100644 --- a/include/boost/predef/os/linux.h +++ b/include/boost/predef/os/linux.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_LINUX`] +/* tag::reference[] += `BOOST_OS_LINUX` -[@http://en.wikipedia.org/wiki/Linux Linux] operating system. +http://en.wikipedia.org/wiki/Linux[Linux] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`linux`] [__predef_detection__]] - [[`__linux`] [__predef_detection__]] - [[`__linux__`] [__predef_detection__]] - [[`__gnu_linux__`] [__predef_detection__]] - ] - */ +| `linux` | {predef_detection} +| `+__linux+` | {predef_detection} +| `+__linux__+` | {predef_detection} +| `+__gnu_linux__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_LINUX BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/macos.h b/include/boost/predef/os/macos.h index 4afb30d..1a44318 100644 --- a/include/boost/predef/os/macos.h +++ b/include/boost/predef/os/macos.h @@ -19,23 +19,24 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_MACOS`] +/* tag::reference[] += `BOOST_OS_MACOS` -[@http://en.wikipedia.org/wiki/Mac_OS Mac OS] operating system. +http://en.wikipedia.org/wiki/Mac_OS[Mac OS] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`macintosh`] [__predef_detection__]] - [[`Macintosh`] [__predef_detection__]] - [[`__APPLE__`] [__predef_detection__]] - [[`__MACH__`] [__predef_detection__]] +| `macintosh` | {predef_detection} +| `Macintosh` | {predef_detection} +| `+__APPLE__+` | {predef_detection} +| `+__MACH__+` | {predef_detection} - [[`__APPLE__`, `__MACH__`] [10.0.0]] - [[ /otherwise/ ] [9.0.0]] - ] - */ +| `+__APPLE__+`, `+__MACH__+` | 10.0.0 +| `_otherwise_` | 9.0.0 +|=== +*/ // end::reference[] #define BOOST_OS_MACOS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/os400.h b/include/boost/predef/os/os400.h index b3446c2..209638d 100644 --- a/include/boost/predef/os/os400.h +++ b/include/boost/predef/os/os400.h @@ -11,17 +11,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_OS400`] +/* tag::reference[] += `BOOST_OS_OS400` -[@http://en.wikipedia.org/wiki/IBM_i IBM OS/400] operating system. +http://en.wikipedia.org/wiki/IBM_i[IBM OS/400] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__OS400__`] [__predef_detection__]] - ] - */ +| `+__OS400__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_OS400 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/qnxnto.h b/include/boost/predef/os/qnxnto.h index e76fbf2..7507cd0 100644 --- a/include/boost/predef/os/qnxnto.h +++ b/include/boost/predef/os/qnxnto.h @@ -11,23 +11,24 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_QNX`] +/* tag::reference[] += `BOOST_OS_QNX` -[@http://en.wikipedia.org/wiki/QNX QNX] operating system. +http://en.wikipedia.org/wiki/QNX[QNX] operating system. Version number available as major, and minor if possible. And version 4 is specifically detected. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__QNX__`] [__predef_detection__]] - [[`__QNXNTO__`] [__predef_detection__]] +| `+__QNX__+` | {predef_detection} +| `+__QNXNTO__+` | {predef_detection} - [[`_NTO_VERSION`] [V.R.0]] - [[`__QNX__`] [4.0.0]] - ] - */ +| `+_NTO_VERSION+` | V.R.0 +| `+__QNX__+` | 4.0.0 +|=== +*/ // end::reference[] #define BOOST_OS_QNX BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/solaris.h b/include/boost/predef/os/solaris.h index 75ddc91..529af2b 100644 --- a/include/boost/predef/os/solaris.h +++ b/include/boost/predef/os/solaris.h @@ -11,18 +11,19 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_SOLARIS`] +/* tag::reference[] += `BOOST_OS_SOLARIS` -[@http://en.wikipedia.org/wiki/Solaris_Operating_Environment Solaris] operating system. +http://en.wikipedia.org/wiki/Solaris_Operating_Environment[Solaris] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`sun`] [__predef_detection__]] - [[`__sun`] [__predef_detection__]] - ] - */ +| `sun` | {predef_detection} +| `+__sun+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_SOLARIS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/unix.h b/include/boost/predef/os/unix.h index a607104..b86051d 100644 --- a/include/boost/predef/os/unix.h +++ b/include/boost/predef/os/unix.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_UNIX`] +/* tag::reference[] += `BOOST_OS_UNIX` -[@http://en.wikipedia.org/wiki/Unix Unix Environment] operating system. +http://en.wikipedia.org/wiki/Unix[Unix Environment] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`unix`] [__predef_detection__]] - [[`__unix`] [__predef_detection__]] - [[`_XOPEN_SOURCE`] [__predef_detection__]] - [[`_POSIX_SOURCE`] [__predef_detection__]] - ] - */ +| `unix` | {predef_detection} +| `+__unix+` | {predef_detection} +| `+_XOPEN_SOURCE+` | {predef_detection} +| `+_POSIX_SOURCE+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_UNIX BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -40,20 +41,21 @@ http://www.boost.org/LICENSE_1_0.txt) #define BOOST_OS_UNIX_NAME "Unix Environment" -/*` -[heading `BOOST_OS_SVR4`] +/* tag::reference[] += `BOOST_OS_SVR4` -[@http://en.wikipedia.org/wiki/UNIX_System_V SVR4 Environment] operating system. +http://en.wikipedia.org/wiki/UNIX_System_V[SVR4 Environment] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__sysv__`] [__predef_detection__]] - [[`__SVR4`] [__predef_detection__]] - [[`__svr4__`] [__predef_detection__]] - [[`_SYSTYPE_SVR4`] [__predef_detection__]] - ] - */ +| `+__sysv__+` | {predef_detection} +| `+__SVR4+` | {predef_detection} +| `+__svr4__+` | {predef_detection} +| `+_SYSTYPE_SVR4+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_SVR4 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/vms.h b/include/boost/predef/os/vms.h index 2f8f786..7db6118 100644 --- a/include/boost/predef/os/vms.h +++ b/include/boost/predef/os/vms.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_VMS`] +/* tag::reference[] += `BOOST_OS_VMS` -[@http://en.wikipedia.org/wiki/Vms VMS] operating system. +http://en.wikipedia.org/wiki/Vms[VMS] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`VMS`] [__predef_detection__]] - [[`__VMS`] [__predef_detection__]] +| `VMS` | {predef_detection} +| `+__VMS+` | {predef_detection} - [[`__VMS_VER`] [V.R.P]] - ] - */ +| `+__VMS_VER+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_OS_VMS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/os/windows.h b/include/boost/predef/os/windows.h index 9db4390..d8d2d2b 100644 --- a/include/boost/predef/os/windows.h +++ b/include/boost/predef/os/windows.h @@ -11,21 +11,22 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_OS_WINDOWS`] +/* tag::reference[] += `BOOST_OS_WINDOWS` -[@http://en.wikipedia.org/wiki/Category:Microsoft_Windows Microsoft Windows] operating system. +http://en.wikipedia.org/wiki/Category:Microsoft_Windows[Microsoft Windows] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`_WIN32`] [__predef_detection__]] - [[`_WIN64`] [__predef_detection__]] - [[`__WIN32__`] [__predef_detection__]] - [[`__TOS_WIN__`] [__predef_detection__]] - [[`__WINDOWS__`] [__predef_detection__]] - ] - */ +| `+_WIN32+` | {predef_detection} +| `+_WIN64+` | {predef_detection} +| `+__WIN32__+` | {predef_detection} +| `+__TOS_WIN__+` | {predef_detection} +| `+__WINDOWS__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_WINDOWS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/other/endian.h b/include/boost/predef/other/endian.h index b1e360b..a8c6abe 100644 --- a/include/boost/predef/other/endian.h +++ b/include/boost/predef/other/endian.h @@ -15,8 +15,8 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_ENDIAN_*`] +/* tag::reference[] += `BOOST_ENDIAN_*` Detection of endian memory ordering. There are four defined macros in this header that define the various generally possible endian @@ -37,12 +37,12 @@ programatic bi-endianness is available. This implementation is a compilation of various publicly available information and acquired knowledge: -# The indispensable documentation of "Pre-defined Compiler Macros" - [@http://sourceforge.net/p/predef/wiki/Endianness Endianness]. -# The various endian specifications available in the - [@http://wikipedia.org/ Wikipedia] computer architecture pages. -# Generally available searches for headers that define endianness. - */ +. The indispensable documentation of "Pre-defined Compiler Macros" + http://sourceforge.net/p/predef/wiki/Endianness[Endianness]. +. The various endian specifications available in the + http://wikipedia.org/[Wikipedia] computer architecture pages. +. Generally available searches for headers that define endianness. +*/ // end::reference[] #define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_NOT_AVAILABLE #define BOOST_ENDIAN_BIG_WORD BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/other/workaround.h b/include/boost/predef/other/workaround.h index 7167a18..21f04d3 100644 --- a/include/boost/predef/other/workaround.h +++ b/include/boost/predef/other/workaround.h @@ -8,20 +8,23 @@ http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PREDEF_WORKAROUND_H #define BOOST_PREDEF_WORKAROUND_H -/*` -[heading `BOOST_PREDEF_WORKAROUND`] +/* tag::reference[] -`` += `BOOST_PREDEF_WORKAROUND` + +[source] +---- BOOST_PREDEF_WORKAROUND(symbol,comp,major,minor,patch) -`` +---- Usage: -`` +[source] +---- #if BOOST_PREDEF_WORKAROUND(BOOST_COMP_CLANG,<,3,0,0) // Workaround for old clang compilers.. #endif -`` +---- Defines a comparison against two version numbers that depends on the definion of `BOOST_STRICT_CONFIG`. When `BOOST_STRICT_CONFIG` is defined this will expand @@ -29,7 +32,8 @@ to a value convertible to `false`. Which has the effect of disabling all code conditionally guarded by `BOOST_PREDEF_WORKAROUND`. When `BOOST_STRICT_CONFIG` is undefine this expand to test the given `symbol` version value with the `comp` comparison against `BOOST_VERSION_NUMBER(major,minor,patch)`. -*/ + +*/ // end::reference[] #ifdef BOOST_STRICT_CONFIG # define BOOST_PREDEF_WORKAROUND(symbol, comp, major, minor, patch) (0) #else @@ -39,20 +43,23 @@ is undefine this expand to test the given `symbol` version value with the ( (symbol) comp (BOOST_VERSION_NUMBER( (major) , (minor) , (patch) )) ) #endif -/*` -[heading `BOOST_PREDEF_TESTED_AT`] +/* tag::reference[] -`` += `BOOST_PREDEF_TESTED_AT` + +[source] +---- BOOST_PREDEF_TESTED_AT(symbol,major,minor,patch) -`` +---- Usage: -`` +[source] +---- #if BOOST_PREDEF_TESTED_AT(BOOST_COMP_CLANG,3,5,0) // Needed for clang, and last checked for 3.5.0. #endif -`` +---- Defines a comparison against two version numbers that depends on the definion of `BOOST_STRICT_CONFIG` and `BOOST_DETECT_OUTDATED_WORKAROUNDS`. @@ -69,7 +76,8 @@ is undefined this expand to either: * A compile error when the expansion of `BOOST_PREDEF_WORKAROUND(symbol, >, major, minor, patch)` is true and `BOOST_DETECT_OUTDATED_WORKAROUNDS` is defined. -*/ + +*/ // end::reference[] #ifdef BOOST_STRICT_CONFIG # define BOOST_PREDEF_TESTED_AT(symbol, major, minor, patch) (0) #else diff --git a/include/boost/predef/platform/android.h b/include/boost/predef/platform/android.h index 485382f..5acfcd3 100644 --- a/include/boost/predef/platform/android.h +++ b/include/boost/predef/platform/android.h @@ -11,17 +11,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_PLAT_ANDROID`] +/* tag::reference[] += `BOOST_PLAT_ANDROID` -[@http://en.wikipedia.org/wiki/Android_%28operating_system%29 Android] platform. +http://en.wikipedia.org/wiki/Android_%28operating_system%29[Android] platform. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__ANDROID__`] [__predef_detection__]] - ] - */ +| `+__ANDROID__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_ANDROID BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/platform/cloudabi.h b/include/boost/predef/platform/cloudabi.h index c44f689..a951c0e 100644 --- a/include/boost/predef/platform/cloudabi.h +++ b/include/boost/predef/platform/cloudabi.h @@ -11,17 +11,18 @@ #include #include -/*` -[heading `BOOST_PLAT_CLOUDABI`] +/* tag::reference[] += `BOOST_PLAT_CLOUDABI` -[@https://github.com/NuxiNL/cloudabi CloudABI] platform. +https://github.com/NuxiNL/cloudabi[CloudABI] platform. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__CloudABI__`] [__predef_detection__]] - ] - */ +| `+__CloudABI__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_CLOUDABI BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/platform/ios.h b/include/boost/predef/platform/ios.h index 83ba3c4..7d7c815 100644 --- a/include/boost/predef/platform/ios.h +++ b/include/boost/predef/platform/ios.h @@ -12,17 +12,18 @@ http://www.boost.org/LICENSE_1_0.txt) #include // BOOST_OS_IOS #include // BOOST_VERSION_NUMBER_NOT_AVAILABLE -/*` -[heading `BOOST_PLAT_IOS_DEVICE`] -[heading `BOOST_PLAT_IOS_SIMULATOR`] +/* tag::reference[] += `BOOST_PLAT_IOS_DEVICE` += `BOOST_PLAT_IOS_SIMULATOR` -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`TARGET_IPHONE_SIMULATOR`] [__predef_detection__]] - [[`TARGET_OS_SIMULATOR`] [__predef_detection__]] - ] - */ +| `TARGET_IPHONE_SIMULATOR` | {predef_detection} +| `TARGET_OS_SIMULATOR` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_IOS_DEVICE BOOST_VERSION_NUMBER_NOT_AVAILABLE #define BOOST_PLAT_IOS_SIMULATOR BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/platform/mingw.h b/include/boost/predef/platform/mingw.h index c52827d..0be00c6 100644 --- a/include/boost/predef/platform/mingw.h +++ b/include/boost/predef/platform/mingw.h @@ -11,22 +11,23 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_PLAT_MINGW`] +/* tag::reference[] += `BOOST_PLAT_MINGW` -[@http://en.wikipedia.org/wiki/MinGW MinGW] platform, either variety. +http://en.wikipedia.org/wiki/MinGW[MinGW] platform, either variety. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MINGW32__`] [__predef_detection__]] - [[`__MINGW64__`] [__predef_detection__]] +| `+__MINGW32__+` | {predef_detection} +| `+__MINGW64__+` | {predef_detection} - [[`__MINGW64_VERSION_MAJOR`, `__MINGW64_VERSION_MINOR`] [V.R.0]] - [[`__MINGW32_VERSION_MAJOR`, `__MINGW32_VERSION_MINOR`] [V.R.0]] - ] - */ +| `+__MINGW64_VERSION_MAJOR+`, `+__MINGW64_VERSION_MINOR+` | V.R.0 +| `+__MINGW32_VERSION_MAJOR+`, `+__MINGW32_VERSION_MINOR+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_PLAT_MINGW BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/platform/mingw32.h b/include/boost/predef/platform/mingw32.h index ff90038..73e99e6 100644 --- a/include/boost/predef/platform/mingw32.h +++ b/include/boost/predef/platform/mingw32.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_PLAT_MINGW32`] +/* tag::reference[] += `BOOST_PLAT_MINGW32` -[@http://www.mingw.org/ MinGW] platform. +http://www.mingw.org/[MinGW] platform. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MINGW32__`] [__predef_detection__]] +| `+__MINGW32__+` | {predef_detection} - [[`__MINGW32_VERSION_MAJOR`, `__MINGW32_VERSION_MINOR`] [V.R.0]] - ] - */ +| `+__MINGW32_VERSION_MAJOR+`, `+__MINGW32_VERSION_MINOR+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_PLAT_MINGW32 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/platform/mingw64.h b/include/boost/predef/platform/mingw64.h index a35dd3e..a49b195 100644 --- a/include/boost/predef/platform/mingw64.h +++ b/include/boost/predef/platform/mingw64.h @@ -11,20 +11,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_PLAT_MINGW64`] +/* tag::reference[] += `BOOST_PLAT_MINGW64` -[@https://mingw-w64.org/ MinGW-w64] platform. +https://mingw-w64.org/[MinGW-w64] platform. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MINGW64__`] [__predef_detection__]] +| `+__MINGW64__+` | {predef_detection} - [[`__MINGW64_VERSION_MAJOR`, `__MINGW64_VERSION_MINOR`] [V.R.0]] - ] - */ +| `+__MINGW64_VERSION_MAJOR+`, `+__MINGW64_VERSION_MINOR+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_PLAT_MINGW64 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/platform/windows_desktop.h b/include/boost/predef/platform/windows_desktop.h index afb3907..917c339 100644 --- a/include/boost/predef/platform/windows_desktop.h +++ b/include/boost/predef/platform/windows_desktop.h @@ -14,20 +14,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_DESKTOP`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_DESKTOP` -[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP] +https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide[UWP] for Windows Desktop development. Also available if the Platform SDK is too old to support UWP. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP`] [__predef_detection__]] - [[`!BOOST_PLAT_WINDOWS_UWP`] [__predef_detection__]] - ] - */ +| `WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP` | {predef_detection} +| `!BOOST_PLAT_WINDOWS_UWP` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_DESKTOP BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/platform/windows_phone.h b/include/boost/predef/platform/windows_phone.h index 0ebc76d..cfb1b65 100644 --- a/include/boost/predef/platform/windows_phone.h +++ b/include/boost/predef/platform/windows_phone.h @@ -14,18 +14,19 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_PHONE`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_PHONE` -[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP] +https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide[UWP] for Windows Phone development. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP`] [__predef_detection__]] - ] - */ +| `WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_PHONE BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/platform/windows_runtime.h b/include/boost/predef/platform/windows_runtime.h index e7978d7..44542d6 100644 --- a/include/boost/predef/platform/windows_runtime.h +++ b/include/boost/predef/platform/windows_runtime.h @@ -15,22 +15,23 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_RUNTIME`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_RUNTIME` Deprecated. -[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP] +https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide[UWP] for Windows Phone or Store development. This does not align to the existing development model for UWP and is deprecated. Use one of the other `BOOST_PLAT_WINDOWS_*`definitions instead. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`BOOST_PLAT_WINDOWS_PHONE`] [__predef_detection__]] - [[`BOOST_PLAT_WINDOWS_STORE`] [__predef_detection__]] - ] - */ +| `BOOST_PLAT_WINDOWS_PHONE` | {predef_detection} +| `BOOST_PLAT_WINDOWS_STORE` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_RUNTIME BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/platform/windows_server.h b/include/boost/predef/platform/windows_server.h index 7bd629d..f0e3dc0 100644 --- a/include/boost/predef/platform/windows_server.h +++ b/include/boost/predef/platform/windows_server.h @@ -13,18 +13,19 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_SERVER`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_SERVER` -[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP] +https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide[UWP] for Windows Server development. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`WINAPI_FAMILY == WINAPI_FAMILY_SERVER`] [__predef_detection__]] - ] - */ +| `WINAPI_FAMILY == WINAPI_FAMILY_SERVER` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_SERVER BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/platform/windows_store.h b/include/boost/predef/platform/windows_store.h index 3a3fd8e..ac5ff51 100644 --- a/include/boost/predef/platform/windows_store.h +++ b/include/boost/predef/platform/windows_store.h @@ -14,19 +14,20 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_STORE`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_STORE` -[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP] +https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide[UWP] for Windows Store development. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`WINAPI_FAMILY == WINAPI_FAMILY_PC_APP`] [__predef_detection__]] - [[`WINAPI_FAMILY == WINAPI_FAMILY_APP` (deprecated)] [__predef_detection__]] -] - */ +| `WINAPI_FAMILY == WINAPI_FAMILY_PC_APP` | {predef_detection} +| `WINAPI_FAMILY == WINAPI_FAMILY_APP` (deprecated) | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_STORE BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/platform/windows_system.h b/include/boost/predef/platform/windows_system.h index 92f424f..71a0c2c 100644 --- a/include/boost/predef/platform/windows_system.h +++ b/include/boost/predef/platform/windows_system.h @@ -13,18 +13,19 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_SYSTEM`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_SYSTEM` -[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP] +https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide[UWP] for Windows System development. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`WINAPI_FAMILY == WINAPI_FAMILY_SYSTEM`] [__predef_detection__]] - ] - */ +| `WINAPI_FAMILY == WINAPI_FAMILY_SYSTEM` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_SYSTEM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/platform/windows_uwp.h b/include/boost/predef/platform/windows_uwp.h index e4c6647..5bd2e18 100644 --- a/include/boost/predef/platform/windows_uwp.h +++ b/include/boost/predef/platform/windows_uwp.h @@ -12,20 +12,21 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_UWP`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_UWP` -[@http://docs.microsoft.com/windows/uwp/ Universal Windows Platform] +http://docs.microsoft.com/windows/uwp/[Universal Windows Platform] is available if the current development environment is capable of targeting UWP development. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MINGW64_VERSION_MAJOR` from `_mingw.h`] [`>= 3`]] - [[`VER_PRODUCTBUILD` from `ntverp.h`] [`>= 9200`]] -] -*/ +| `+__MINGW64_VERSION_MAJOR+` from `+_mingw.h+` | `>= 3` +| `VER_PRODUCTBUILD` from `ntverp.h` | `>= 9200` +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_UWP BOOST_VERSION_NUMBER_NOT_AVAILABLE #define BOOST_PLAT_WINDOWS_SDK_VERSION BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/include/boost/predef/version_number.h b/include/boost/predef/version_number.h index 4494270..9035782 100644 --- a/include/boost/predef/version_number.h +++ b/include/boost/predef/version_number.h @@ -8,21 +8,22 @@ http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PREDEF_VERSION_NUMBER_H #define BOOST_PREDEF_VERSION_NUMBER_H -/*` -[heading `BOOST_VERSION_NUMBER`] +/* tag::reference[] += `BOOST_VERSION_NUMBER` -`` +[source] +---- BOOST_VERSION_NUMBER(major,minor,patch) -`` +---- Defines standard version numbers, with these properties: -* Decimal base whole numbers in the range \[0,1000000000). +* 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. -* The `major` number can be in the \[0,99\] range. -* The `minor` number can be in the \[0,99\] range. -* The `patch` number can be in the \[0,99999\] range. +* The `major` number can be in the [0,99] range. +* The `minor` number can be in the [0,99] range. +* The `patch` number can be in the [0,99999] range. * Values can be specified in any base. As the defined value is an constant expression. * Value can be directly used in both preprocessor and compiler @@ -31,7 +32,7 @@ Defines standard version numbers, with these properties: major, minor, and patch numbers. And values over the ranges are truncated (modulo). -*/ +*/ // end::reference[] #define BOOST_VERSION_NUMBER(major,minor,patch) \ ( (((major)%100)*10000000) + (((minor)%100)*100000) + ((patch)%100000) ) @@ -50,16 +51,17 @@ Defines standard version numbers, with these properties: #define BOOST_VERSION_NUMBER_NOT_AVAILABLE \ BOOST_VERSION_NUMBER_ZERO -/*` -`` +/* tag::reference[] +[source] +---- BOOST_VERSION_NUMBER_MAJOR(N), BOOST_VERSION_NUMBER_MINOR(N), BOOST_VERSION_NUMBER_PATCH(N) -`` +---- The macros extract the major, minor, and patch portion from a well formed version number resulting in a preprocessor expression in the range of -\[0,99\] or \[0,99999\] for the major and minor, or patch numbers +[0,99] or [0,99999] for the major and minor, or patch numbers respectively. -*/ +*/ // end::reference[] #define BOOST_VERSION_NUMBER_MAJOR(N) \ ( ((N)/10000000)%100 ) diff --git a/index.html b/index.html index f99afa5..af60320 100644 --- a/index.html +++ b/index.html @@ -1,14 +1,19 @@ + - + + -Automatic redirection failed, please go to -../../doc/html/predef.html -

Copyright Rene Rivera 2013-2014

-

Distributed under the Boost Software License, Version 1.0. (See accompanying file -LICENSE_1_0.txt or copy at -www.boost.org/LICENSE_1_0.txt). -

+ Automatic redirection failed, please go to + ./doc/index.html +

+ + \ No newline at end of file