From 76218d7a1966b405b879facb126262691c757219 Mon Sep 17 00:00:00 2001
From: Rene Rivera
Date: Sun, 24 Oct 2021 12:51:46 -0500
Subject: [PATCH] Predef 1.13.1
---
.cirrus.yml | 49 +
.gitignore | 1 +
CMakeLists.txt | 2 +-
appveyor.yml | 101 ++
azure-pipelines.yml | 163 ++-
build.jam | 2 +-
doc/amber.css | 829 ++++++++++++++
doc/build.jam | 8 +-
doc/history.adoc | 8 +-
doc/index.html | 1922 +++++++++++++++++++-------------
doc/predef.adoc | 14 +-
doc/predef.css | 45 -
doc/pygments_init.rb | 11 -
doc/todo.adoc | 2 +-
include/boost/predef/version.h | 2 +-
test/build.jam | 12 +-
16 files changed, 2261 insertions(+), 910 deletions(-)
create mode 100644 .cirrus.yml
create mode 100644 appveyor.yml
create mode 100644 doc/amber.css
delete mode 100644 doc/predef.css
delete mode 100644 doc/pygments_init.rb
diff --git a/.cirrus.yml b/.cirrus.yml
new file mode 100644
index 0000000..5d4900a
--- /dev/null
+++ b/.cirrus.yml
@@ -0,0 +1,49 @@
+# Use, modification, and distribution are
+# subject to the Boost Software License, Version 1.0. (See accompanying
+# file LICENSE.txt)
+#
+# Copyright René Ferdinand Rivera Morell 2020-2021.
+
+freebsd_task:
+ # All the GCC's and Clang's currently supported by FreeBSD ports.
+ matrix:
+ - { name: 'FreeBSD, GCC 11', env: { CXX: 'g++11', PACKAGE: 'gcc11-devel', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-13-0' } }
+ - { name: 'FreeBSD, GCC 10', env: { CXX: 'g++10', PACKAGE: 'gcc10-devel', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-13-0' } }
+ - { name: 'FreeBSD, GCC 9', env: { CXX: 'g++9', PACKAGE: 'gcc9-devel', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-13-0' } }
+ - { name: 'FreeBSD, GCC 8', env: { CXX: 'g++8', PACKAGE: 'gcc8', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-13-0' } }
+ # - { name: 'FreeBSD, GCC 7', env: { CXX: 'g++7', PACKAGE: 'gcc7', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-12-2' } }
+ - { name: 'FreeBSD, Clang 12', env: { CXX: 'clang++12', PACKAGE: 'devel/llvm12', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-13-0' } }
+ - { name: 'FreeBSD, Clang 11', env: { CXX: 'clang++11', PACKAGE: 'devel/llvm11', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-13-0' } }
+ - { name: 'FreeBSD, Clang 10', env: { CXX: 'clang++10', PACKAGE: 'devel/llvm10', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-13-0' } }
+ - { name: 'FreeBSD, Clang 9', env: { CXX: 'clang++90', PACKAGE: 'devel/llvm90', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-13-0' } }
+ - { name: 'FreeBSD, Clang 8', env: { CXX: 'clang++80', PACKAGE: 'devel/llvm80' , TOOLSET: clang}, freebsd_instance: { image_family: 'freebsd-13-0' } }
+ - { name: 'FreeBSD, Clang 7', env: { CXX: 'clang++70', PACKAGE: 'devel/llvm70', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-13-0' } }
+ # To install with ports we need to initialize the package manager. To avoid
+ # confirmation prompts we need to set an env var.
+ install_script: [
+ "uname -a",
+ "env ASSUME_ALWAYS_YES=YES pkg bootstrap",
+ "env ASSUME_ALWAYS_YES=YES pkg install wget",
+ "env ASSUME_ALWAYS_YES=YES pkg install ncurses",
+ "env ASSUME_ALWAYS_YES=YES pkg install ${PACKAGE}"
+ ]
+ # Install B2.
+ install_b2_script: [
+ "set -e",
+ "export \"PCD=${PWD}\" ; cd ${HOME}",
+ "wget -nv https://github.com/bfgroup/b2/archive/release.tar.gz",
+ "tar -zxf release.tar.gz",
+ "cd b2-release",
+ "CXX= ./bootstrap.sh",
+ "sudo ./b2 install toolset=clang",
+ "cd \"${PCD}\""
+ ]
+ # Test.
+ test_script: [
+ "set -e",
+ "CXX_PATH=`which ${CXX}`",
+ "echo \"using ${TOOLSET} : : ${CXX_PATH} ;\" > ${HOME}/user-config.jam",
+ "cd test",
+ "b2 --verbose-test -a toolset=${TOOLSET} ${B2_ARGS} predef-info",
+ "b2 --debug-configuration -a toolset=${TOOLSET} ${B2_ARGS} predef predef-headers"
+ ]
diff --git a/.gitignore b/.gitignore
index 784ff83..43f0c33 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+/.conan/
.bin
boost-build.jam
project-config.jam
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7e76edc..4a3d6c4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
# Copyright Mike Dev 2018
-# Copyright Rene Rivera 2018
+# Copyright René Ferdinand Rivera Morell 2018-2021
# 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
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 0000000..1ec83fd
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,101 @@
+# Use, modification, and distribution are
+# subject to the Boost Software License, Version 1.0. (See accompanying
+# file LICENSE.txt)
+#
+# Copyright René Ferdinand Rivera Morell 2020-2021.
+
+branches:
+ only:
+ - /master.*/
+ - /develop.*/
+ - /feature.*/
+
+skip_commits:
+ files:
+ - .circleci/*
+ - .cirrus.yml
+ - .drone.star
+ - .github/workflows/*
+ - .semaphore/*
+ - .travis.yml
+ - azure-pipelines.yml
+
+environment:
+ matrix:
+ # All the Visual Studio installs available on Appveyor
+ # - { job_name: 'VS 2019', TOOLSET: "msvc", TOOLSET_VERSION: '14.2', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2019' }
+ # - { job_name: 'VS 2017', TOOLSET: "msvc", TOOLSET_VERSION: '14.1', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' }
+ - { job_name: 'VS 2015', TOOLSET: "msvc", TOOLSET_VERSION: '14.0', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' }
+ - { job_name: 'VS 2013', TOOLSET: "msvc", TOOLSET_VERSION: '12.0', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' }
+ # - { job_name: 'VS 2012', TOOLSET: "msvc", TOOLSET_VERSION: '11.0', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' }
+ # - { job_name: 'VS 2010', TOOLSET: "msvc", TOOLSET_VERSION: '10.0', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' }
+ # The "recent" MinGW installs available on Appveyor.
+ - { job_name: 'MinGW-w64 8.1', TOOLSET: "gcc", CXXPATH: 'C:/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' }
+ - { job_name: 'MinGW-w64 7.3', TOOLSET: "gcc", CXXPATH: 'C:/mingw-w64/x86_64-7.3.0-posix-seh-rt_v5-rev0/mingw64/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' }
+ - { job_name: 'MinGW-w64 6.3', TOOLSET: "gcc", CXXPATH: 'C:/mingw-w64/x86_64-6.3.0-posix-seh-rt_v5-rev1/mingw64/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' }
+ # Cygwin versions available.
+ # - { job_name: 'Cygwin32 3.1.7', TOOLSET: 'gcc', CXXPATH: 'C:/cygwin/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2019' }
+ # - { job_name: 'Cygwin64 3.1.7', TOOLSET: 'gcc', CXXPATH: 'C:/cygwin64/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2019' }
+ - { job_name: 'Cygwin32 3.0.7', TOOLSET: 'gcc', CXXPATH: 'C:/cygwin/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' }
+ - { job_name: 'Cygwin64 3.0.7', TOOLSET: 'gcc', CXXPATH: 'C:/cygwin64/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' }
+
+platform:
+ - x86
+ - x64
+
+matrix:
+ exclude:
+ # - { platform: x64, job_name: 'VS 2012' }
+ # - { platform: x64, job_name: 'VS 2010' }
+ - { platform: x64, job_name: 'Cygwin32 3.1.7' }
+ - { platform: x86, job_name: 'Cygwin64 3.1.7' }
+ - { platform: x64, job_name: 'Cygwin32 3.0.7' }
+ - { platform: x86, job_name: 'Cygwin64 3.0.7' }
+
+for:
+# msvc job steps.
+- matrix:
+ only:
+ - TOOLSET: 'msvc'
+ install:
+ - cmd: |
+ echo ">>>>> INSTALL .."
+ choco install vswhere
+ echo ">>>>> INSTALL B2 .."
+ cd %APPVEYOR_BUILD_FOLDER%/..
+ curl "https://github.com/boostorg/build/archive/develop.zip" -L -o b2.zip
+ 7z x b2.zip -r
+ echo using %TOOLSET% ^: %TOOLSET_VERSION% ^: %CXXPATH% ^; > %HOMEDRIVE%%HOMEPATH%/user-config.jam
+ cd %APPVEYOR_BUILD_FOLDER%/../build-develop
+ cmd.exe /c bootstrap.bat
+ build_script:
+ - cmd: |
+ echo ">>>>>"
+ echo ">>>>> TEST .."
+ echo ">>>>>"
+ set BOOST_BUILD_PATH=%APPVEYOR_BUILD_FOLDER%/../build-develop
+ cd %APPVEYOR_BUILD_FOLDER%/test
+ %APPVEYOR_BUILD_FOLDER%/../build-develop/b2.exe --verbose-test -a toolset=%TOOLSET% %B2_ARGS% predef-info
+ %APPVEYOR_BUILD_FOLDER%/../build-develop/b2.exe --debug-configuration -a toolset=%TOOLSET% %B2_ARGS% predef predef-headers
+# Windows MinGW & Cygwin job steps.
+- matrix:
+ only:
+ - TOOLSET: 'gcc'
+ install:
+ - cmd: |
+ echo ">>>>> INSTALL B2 .."
+ cd %APPVEYOR_BUILD_FOLDER%/..
+ curl "https://github.com/boostorg/build/archive/develop.zip" -L -o b2.zip
+ 7z x b2.zip -r
+ echo using %TOOLSET% ^: %TOOLSET_VERSION% ^: %CXXPATH% ^; > %HOMEDRIVE%%HOMEPATH%/user-config.jam
+ cd %APPVEYOR_BUILD_FOLDER%/../build-develop
+ cmd.exe /c bootstrap.bat
+ build_script:
+ # The build itself just calls the compiler directly.
+ - cmd: |
+ echo ">>>>> TEST .."
+ set PATH=%CXXPATH%\..\;%PATH%
+ set BOOST_BUILD_PATH=%APPVEYOR_BUILD_FOLDER%/../build-develop
+ cd %APPVEYOR_BUILD_FOLDER%/test
+ %APPVEYOR_BUILD_FOLDER%/../build-develop/b2.exe --verbose-test -a toolset=%TOOLSET% %B2_ARGS% predef-info
+ %APPVEYOR_BUILD_FOLDER%/../build-develop/b2.exe --debug-configuration -a toolset=%TOOLSET% %B2_ARGS% predef predef-headers
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 9af16b7..aeb5b09 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -2,7 +2,7 @@
# subject to 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 2019-2020.
+# Copyright René Ferdinand Rivera Morell 2019-2021.
trigger:
branches:
@@ -10,6 +10,15 @@ trigger:
- develop
- master
- feature/*
+ paths:
+ exclude:
+ - .circleci/*
+ - .cirrus.yml
+ - .drone.star
+ - .github/workflows/*
+ - .semaphore/*
+ - .travis.yml
+ - appveyor.yml
pr:
branches:
include:
@@ -32,18 +41,18 @@ stages:
- job: 'Linux'
strategy:
matrix:
- GCC 10 (GNU): { CXX: g++-10, PACKAGES: g++-10, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc, B2_ARGS: 'cxxstd=03,11,14,17,2a cxxstd-dialect=gnu' }
- GCC 10 (ISO): { CXX: g++-10, PACKAGES: g++-10, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc, B2_ARGS: 'cxxstd=03,11,14,17,2a cxxstd-dialect=iso' }
- GCC 10: { CXX: g++-10, PACKAGES: g++-10, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc }
+ GCC 11 (GNU): { CXX: g++-11, PACKAGES: g++-11, VM_IMAGE: 'ubuntu-20.04', TOOLSET: gcc, B2_ARGS: 'cxxstd=03,11,14,17,2a cxxstd-dialect=gnu' }
+ GCC 11 (ISO): { CXX: g++-11, PACKAGES: g++-11, VM_IMAGE: 'ubuntu-20.04', TOOLSET: gcc, B2_ARGS: 'cxxstd=03,11,14,17,2a cxxstd-dialect=iso' }
+ GCC 11: { CXX: g++-11, PACKAGES: g++-11, VM_IMAGE: 'ubuntu-20.04', TOOLSET: gcc }
+ GCC 10: { CXX: g++-10, PACKAGES: g++-10, VM_IMAGE: 'ubuntu-20.04', TOOLSET: gcc }
GCC 9: { CXX: g++-9, PACKAGES: g++-9, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc }
GCC 8: { CXX: g++-8, PACKAGES: g++-8, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc }
GCC 7: { CXX: g++-7, PACKAGES: g++-7, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc }
GCC 6: { CXX: g++-6, PACKAGES: g++-6, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc }
GCC 5: { CXX: g++-5, PACKAGES: g++-5, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc }
- GCC 4.9: { CXX: g++-4.9, PACKAGES: g++-4.9, VM_IMAGE: 'ubuntu-16.04', TOOLSET: gcc }
- GCC 4.8: { CXX: g++-4.8, PACKAGES: g++-4.8, VM_IMAGE: 'ubuntu-16.04', TOOLSET: gcc }
- GCC 4.7: { CXX: g++-4.7, PACKAGES: g++-4.7, VM_IMAGE: 'ubuntu-16.04', TOOLSET: gcc }
- Clang 11: { CXX: clang++-11, PACKAGES: clang-11, LLVM_OS: bionic, LLVM_VER: 11, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
+ # Clang 13: { CXX: clang++-13, PACKAGES: clang-13, LLVM_OS: focal, LLVM_VER: 11, VM_IMAGE: 'ubuntu-20.04', TOOLSET: clang }
+ Clang 12: { CXX: clang++-12, PACKAGES: clang-12, LLVM_OS: focal, LLVM_VER: 11, VM_IMAGE: 'ubuntu-20.04', TOOLSET: clang }
+ Clang 11: { CXX: clang++-11, PACKAGES: clang-11, LLVM_OS: focal, LLVM_VER: 11, VM_IMAGE: 'ubuntu-20.04', TOOLSET: clang }
Clang 10: { CXX: clang++-10, PACKAGES: clang-10, LLVM_OS: bionic, LLVM_VER: 10, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
Clang 9: { CXX: clang++-9, PACKAGES: clang-9, LLVM_OS: bionic, LLVM_VER: 9, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
Clang 8: { CXX: clang++-8, PACKAGES: clang-8, LLVM_OS: bionic, LLVM_VER: 8, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
@@ -51,11 +60,6 @@ stages:
Clang 6.0: { CXX: clang++-6.0, PACKAGES: clang-6.0, LLVM_OS: bionic, LLVM_VER: 6.0, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
Clang 5.0: { CXX: clang++-5.0, PACKAGES: clang-5.0, LLVM_OS: bionic, LLVM_VER: 5.0, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
Clang 4.0: { CXX: clang++-4.0, PACKAGES: clang-4.0, LLVM_OS: xenial, LLVM_VER: 4.0, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
- Clang 3.9: { CXX: clang++-3.9, PACKAGES: clang-3.9, LLVM_OS: xenial, LLVM_VER: 3.9, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
- Clang 3.8: { CXX: clang++-3.8, PACKAGES: clang-3.8, LLVM_OS: xenial, LLVM_VER: 3.8, VM_IMAGE: 'ubuntu-16.04', TOOLSET: clang }
- Clang 3.7: { CXX: clang++-3.7, PACKAGES: clang-3.7, LLVM_OS: xenial, VM_IMAGE: 'ubuntu-16.04', TOOLSET: clang }
- Clang 3.6: { CXX: clang++-3.6, PACKAGES: clang-3.6, LLVM_OS: xenial, VM_IMAGE: 'ubuntu-16.04', TOOLSET: clang }
- Clang 3.5: { CXX: clang++-3.5, PACKAGES: clang-3.5, LLVM_OS: xenial, VM_IMAGE: 'ubuntu-16.04', TOOLSET: clang }
pool:
vmImage: $(VM_IMAGE)
steps:
@@ -67,9 +71,9 @@ stages:
- bash: |
set -e
pushd ${HOME}
- wget -nv https://github.com/boostorg/build/archive/develop.tar.gz
- tar -zxf develop.tar.gz
- cd build-develop
+ wget -nv https://github.com/bfgroup/b2/archive/release.tar.gz
+ tar -zxf release.tar.gz
+ cd b2-release
CXX= ./bootstrap.sh
sudo ./b2 install
popd
@@ -87,41 +91,22 @@ stages:
- job: 'macOS'
strategy:
matrix:
- Xcode 11.4.1:
- TOOLSET: clang
- CXX: clang++
- XCODE_APP: /Applications/Xcode_11.4.1.app
- VM_IMAGE: 'macOS-10.15'
- Xcode 11.3.1:
- TOOLSET: clang
- CXX: clang++
- XCODE_APP: /Applications/Xcode_11.3.1.app
- VM_IMAGE: 'macOS-10.15'
- Xcode 11.2.1:
- TOOLSET: clang
- CXX: clang++
- XCODE_APP: /Applications/Xcode_11.2.1.app
- VM_IMAGE: 'macOS-10.15'
- Xcode 10.3:
- TOOLSET: clang
- CXX: clang++
- XCODE_APP: /Applications/Xcode_10.3.app
- VM_IMAGE: 'macOS-10.14'
- Xcode 10.2.1:
- TOOLSET: clang
- CXX: clang++
- XCODE_APP: /Applications/Xcode_10.2.1.app
- VM_IMAGE: 'macOS-10.14'
- Xcode 10.1:
- TOOLSET: clang
- CXX: clang++
- XCODE_APP: /Applications/Xcode_10.1.app
- VM_IMAGE: 'macOS-10.14'
- Xcode 10.0:
- TOOLSET: clang
- CXX: clang++
- XCODE_APP: /Applications/Xcode_10.app
- VM_IMAGE: 'macOS-10.14'
+ Xcode 13.0: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_13.0.app, VM_IMAGE: 'macOS-11'}
+ Xcode 12.4: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_12.4.app, VM_IMAGE: 'macOS-11'}
+ Xcode 12.3: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_12.3.app, VM_IMAGE: 'macOS-10.15'}
+ Xcode 12.2: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_12.2.app, VM_IMAGE: 'macOS-10.15'}
+ Xcode 12.1.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_12.1.1.app, VM_IMAGE: 'macOS-10.15'}
+ Xcode 12.0.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_12.0.1.app, VM_IMAGE: 'macOS-10.15'}
+ Xcode 11.7: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_11.7.app, VM_IMAGE: 'macOS-10.15'}
+ Xcode 11.6: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_11.6.app, VM_IMAGE: 'macOS-10.15'}
+ Xcode 11.5: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_11.5.app, VM_IMAGE: 'macOS-10.15'}
+ Xcode 11.4.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_11.4.1.app, VM_IMAGE: 'macOS-10.15'}
+ Xcode 11.3.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_11.3.1.app, VM_IMAGE: 'macOS-10.15'}
+ Xcode 11.2.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_11.2.1.app, VM_IMAGE: 'macOS-10.15'}
+ Xcode 10.3: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_10.3.app, VM_IMAGE: 'macOS-10.14'}
+ Xcode 10.2.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_10.2.1.app, VM_IMAGE: 'macOS-10.14'}
+ Xcode 10.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_10.1.app, VM_IMAGE: 'macOS-10.14'}
+ Xcode 10.0: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_10.app, VM_IMAGE: 'macOS-10.14'}
pool:
vmImage: $(VM_IMAGE)
steps:
@@ -135,9 +120,9 @@ stages:
- bash: |
set -e
pushd ${HOME}
- wget -nv https://github.com/boostorg/build/archive/develop.tar.gz
- tar -zxf develop.tar.gz
- cd build-develop
+ wget -nv https://github.com/bfgroup/b2/archive/release.tar.gz
+ tar -zxf release.tar.gz
+ cd b2-release
CXX= ./bootstrap.sh
sudo ./b2 install
popd
@@ -185,6 +170,10 @@ stages:
TOOLSET_VERSION: 14.2
B2_ARGS: address-model=64 define=_WIN32_WINNT=0x0A00 define=WINAPI_FAMILY=WINAPI_FAMILY_SYSTEM
VM_IMAGE: 'windows-2019'
+ VS 2022:
+ TOOLSET: msvc
+ TOOLSET_VERSION: 14.3
+ VM_IMAGE: 'windows-2022'
VS 2017:
TOOLSET: msvc
TOOLSET_VERSION: 14.1
@@ -205,7 +194,7 @@ stages:
steps:
- script: |
cd %BUILD_SOURCESDIRECTORY%/..
- curl "https://github.com/boostorg/build/archive/develop.zip" -L -o b2.zip
+ curl "https://github.com/bfgroup/b2/archive/release.zip" -L -o b2.zip
displayName: Download B2
- task: ExtractFiles@1
inputs:
@@ -215,12 +204,68 @@ stages:
displayName: Extract B2
- script: |
echo using %TOOLSET% ^: %TOOLSET_VERSION% ^; > %HOMEDRIVE%%HOMEPATH%/user-config.jam
- cd %BUILD_SOURCESDIRECTORY%/../build-develop
+ cd %BUILD_SOURCESDIRECTORY%/../b2-release
cmd.exe /c bootstrap.bat
displayName: Install B2
- script: |
- set BOOST_BUILD_PATH=%BUILD_SOURCESDIRECTORY%/../build-develop
+ set BOOST_BUILD_PATH=%BUILD_SOURCESDIRECTORY%/../b2-release
cd %BUILD_SOURCESDIRECTORY%/test
- %BUILD_SOURCESDIRECTORY%/../build-develop/b2.exe --verbose-test -a toolset=%TOOLSET% %B2_ARGS% predef-info
- %BUILD_SOURCESDIRECTORY%/../build-develop/b2.exe --debug-configuration -a toolset=%TOOLSET% %B2_ARGS% predef predef-headers
+ %BUILD_SOURCESDIRECTORY%/../b2-release/b2.exe --verbose-test -a toolset=%TOOLSET% %B2_ARGS% predef-info
+ %BUILD_SOURCESDIRECTORY%/../b2-release/b2.exe --debug-configuration -a toolset=%TOOLSET% %B2_ARGS% predef predef-headers
displayName: Test
+
+- stage: WebsiteUpdate
+ displayName: 'Website Update'
+ condition: in(variables['Build.SourceBranch'], 'refs/heads/master', 'refs/heads/develop')
+ jobs:
+
+ - job: Documentation
+ pool:
+ vmImage: 'ubuntu-latest'
+ steps:
+ - task: UsePythonVersion@0
+ inputs:
+ versionSpec: '2.x'
+ - task: UseRubyVersion@0
+ - bash: |
+ gem install asciidoctor
+ gem install rouge
+ displayName: 'Install Doc Tools'
+ - bash: |
+ set -e
+ pushd ${HOME}
+ wget -nv https://github.com/bfgroup/b2/archive/release.tar.gz
+ tar -zxf release.tar.gz
+ cd b2-release
+ CXX= ./bootstrap.sh
+ sudo ./b2 install
+ popd
+ displayName: 'Install B2'
+ - bash: |
+ rm -rf ${WEB_DIR}
+ git clone --verbose --branch gh-pages --depth 1 "https://${GH_TOKEN}github.com/grafikrobot/hash-predef.git" ${WEB_DIR} || exit 1
+ pushd ${WEB_DIR}
+ git rm --ignore-unmatch -r "${DOC_DIR}" || exit 1
+ mkdir -p "${DOC_DIR}" || exit 1
+ popd
+ displayName: 'Clone Website'
+ env:
+ GH_TOKEN: $(GitHubToken)
+ WEB_DIR: website
+ DOC_DIR: manual/$(Build.SourceBranchName)
+ - bash: |
+ echo "using asciidoctor ;" > ${HOME}/user-config.jam
+ pushd doc
+ b2 --doc-dir=${WEB_DIR}/${DOC_DIR} html
+ git config user.email "doc-bot"
+ git config user.name "doc-bot"
+ cd ${WEB_DIR}/${DOC_DIR}
+ git add --verbose . || exit 1
+ git commit -m "Update documentation."
+ git push
+ popd
+ displayName: 'Build & Publish'
+ env:
+ GH_TOKEN: $(GitHubToken)
+ WEB_DIR: website
+ DOC_DIR: manual/$(Build.SourceBranchName)
diff --git a/build.jam b/build.jam
index 69be969..0f39f9d 100644
--- a/build.jam
+++ b/build.jam
@@ -1,4 +1,4 @@
-# Copyright Rene Rivera 2014-2019
+# Copyright René Ferdinand Rivera Morell 2014-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)
diff --git a/doc/amber.css b/doc/amber.css
new file mode 100644
index 0000000..24b78fb
--- /dev/null
+++ b/doc/amber.css
@@ -0,0 +1,829 @@
+@import url(https://fonts.googleapis.com/css2?family=Comfortaa&display=swap);
+/*! normalize.css v2.1.2 | MIT License | git.io/normalize */
+/* ========================================================================== HTML5 display definitions ========================================================================== */
+/** Correct `block` display not defined in IE 8/9. */
+@import url(https://fonts.googleapis.com/css2?family=IBM+Plex+Mono&display=swap);
+article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; }
+
+/** Correct `inline-block` display not defined in IE 8/9. */
+audio, canvas, video { display: inline-block; }
+
+/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
+audio:not([controls]) { display: none; height: 0; }
+
+/** Address `[hidden]` styling not present in IE 8/9. Hide the `template` element in IE, Safari, and Firefox < 22. */
+[hidden], template { display: none; }
+
+script { display: none !important; }
+
+/* ========================================================================== Base ========================================================================== */
+/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
+html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
+
+/** Remove default margin. */
+body { margin: 0; }
+
+/* ========================================================================== Links ========================================================================== */
+/** Remove the gray background color from active links in IE 10. */
+a { background: transparent; }
+
+/** Address `outline` inconsistency between Chrome and other browsers. */
+a:focus { outline: thin dotted; }
+
+/** Improve readability when focused and also mouse hovered in all browsers. */
+a:active, a:hover { outline: 0; }
+
+/* ========================================================================== Typography ========================================================================== */
+/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari 5, and Chrome. */
+h1 { font-size: 2em; margin: 0.67em 0; }
+
+/** Address styling not present in IE 8/9, Safari 5, and Chrome. */
+abbr[title] { border-bottom: 1px dotted; }
+
+/** Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */
+b, strong { font-weight: bold; }
+
+/** Address styling not present in Safari 5 and Chrome. */
+dfn { font-style: italic; }
+
+/** Address differences between Firefox and other browsers. */
+hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; }
+
+/** Address styling not present in IE 8/9. */
+mark { background: #ff0; color: #000; }
+
+/** Correct font family set oddly in Safari 5 and Chrome. */
+code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; }
+
+/** Improve readability of pre-formatted text in all browsers. */
+pre { white-space: pre-wrap; }
+
+/** Set consistent quote types. */
+q { quotes: "\201C" "\201D" "\2018" "\2019"; }
+
+/** Address inconsistent and variable font size in all browsers. */
+small { font-size: 80%; }
+
+/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
+sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
+
+sup { top: -0.5em; }
+
+sub { bottom: -0.25em; }
+
+/* ========================================================================== Embedded content ========================================================================== */
+/** Remove border when inside `a` element in IE 8/9. */
+img { border: 0; }
+
+/** Correct overflow displayed oddly in IE 9. */
+svg:not(:root) { overflow: hidden; }
+
+/* ========================================================================== Figures ========================================================================== */
+/** Address margin not present in IE 8/9 and Safari 5. */
+figure { margin: 0; }
+
+/* ========================================================================== Forms ========================================================================== */
+/** Define consistent border, margin, and padding. */
+fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
+
+/** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
+legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
+
+/** 1. Correct font family not being inherited in all browsers. 2. Correct font size not being inherited in all browsers. 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. */
+button, input, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 2 */ margin: 0; /* 3 */ }
+
+/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
+button, input { line-height: normal; }
+
+/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. Correct `select` style inheritance in Firefox 4+ and Opera. */
+button, select { text-transform: none; }
+
+/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
+button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
+
+/** Re-set default cursor for disabled elements. */
+button[disabled], html input[disabled] { cursor: default; }
+
+/** 1. Address box sizing set to `content-box` in IE 8/9. 2. Remove excess padding in IE 8/9. */
+input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
+
+/** 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome (include `-moz` to future-proof). */
+input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; }
+
+/** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */
+input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
+
+/** Remove inner padding and border in Firefox 4+. */
+button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
+
+/** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */
+textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ }
+
+/* ========================================================================== Tables ========================================================================== */
+/** Remove most spacing between table cells. */
+table { border-collapse: collapse; border-spacing: 0; }
+
+meta.foundation-mq-small { font-family: "only screen and (min-width: 768px)"; width: 768px; }
+
+meta.foundation-mq-medium { font-family: "only screen and (min-width:1280px)"; width: 1280px; }
+
+meta.foundation-mq-large { font-family: "only screen and (min-width:1440px)"; width: 1440px; }
+
+*, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }
+
+html, body { font-size: 100%; }
+
+body { background: #111; color: #aaa; padding: 0; margin: 0; font-family: "Comfortaa", "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica Neue", "Arial", "sans-serif", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-weight: normal; font-style: normal; line-height: 1; position: relative; cursor: auto; }
+
+a:hover { cursor: pointer; }
+
+img, object, embed { max-width: 100%; height: auto; }
+
+object, embed { height: 100%; }
+
+img { -ms-interpolation-mode: bicubic; }
+
+#map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { max-width: none !important; }
+
+.left { float: left !important; }
+
+.right { float: right !important; }
+
+.text-left { text-align: left !important; }
+
+.text-right { text-align: right !important; }
+
+.text-center { text-align: center !important; }
+
+.text-justify { text-align: justify !important; }
+
+.hide { display: none; }
+
+.antialiased { -webkit-font-smoothing: antialiased; }
+
+img { display: inline-block; vertical-align: middle; }
+
+textarea { height: auto; min-height: 50px; }
+
+select { width: 100%; }
+
+p.lead { font-size: 1.21875em; line-height: 1.6; }
+
+.subheader, .admonitionblock td.content > .title, .audioblock > .title, .exampleblock > .title, .imageblock > .title, .listingblock > .title, .literalblock > .title, .stemblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, table.tableblock > .title, .verseblock > .title, .videoblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { line-height: 1.45; color: #e18400; font-weight: normal; margin-top: 0; margin-bottom: 0.25em; }
+
+/* Typography resets */
+div, dl, dt, dd, ul, ol, li, h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6, pre, form, p, blockquote, th, td { margin: 0; padding: 0; direction: ltr; }
+
+/* Default Link Styles */
+a { color: #FA9300; text-decoration: underline; line-height: inherit; }
+a:hover, a:focus { color: #e18400; }
+a img { border: none; }
+
+/* Default paragraph styles */
+p { font-family: inherit; font-weight: normal; font-size: 1em; line-height: 1.6; margin-bottom: 1.25em; text-rendering: optimizeLegibility; }
+p aside { font-size: 0.875em; line-height: 1.35; font-style: italic; }
+
+/* Default header styles */
+h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { font-family: "Comfortaa", "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica Neue", "Arial", "sans-serif", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-weight: 300; font-style: normal; color: #ffa92e; text-rendering: optimizeLegibility; margin-top: 1em; margin-bottom: 0.5em; line-height: 1.0125em; }
+h1 small, h2 small, h3 small, #toctitle small, .sidebarblock > .content > .title small, h4 small, h5 small, h6 small { font-size: 60%; color: #ffe8c7; line-height: 0; }
+
+h1 { font-size: 2.125em; }
+
+h2 { font-size: 1.6875em; }
+
+h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.375em; }
+
+h4 { font-size: 1.125em; }
+
+h5 { font-size: 1.125em; }
+
+h6 { font-size: 1em; }
+
+hr { border: solid #2b2b2b; border-width: 1px 0 0; clear: both; margin: 1.25em 0 1.1875em; height: 0; }
+
+/* Helpful Typography Defaults */
+em, i { font-style: italic; line-height: inherit; }
+
+strong, b { font-weight: bold; line-height: inherit; }
+
+small { font-size: 60%; line-height: inherit; }
+
+code { font-family: "IBM Plex Mono", "Droid Sans Mono", "DejaVu Sans Mono", "Monospace", monospace; font-weight: normal; color: #ffe8c7; }
+
+/* Lists */
+ul, ol, dl { font-size: 1em; line-height: 1.6; margin-bottom: 1.25em; list-style-position: outside; font-family: inherit; }
+
+ul, ol { margin-left: 1.5em; }
+ul.no-bullet, ol.no-bullet { margin-left: 1.5em; }
+
+/* Unordered Lists */
+ul li ul, ul li ol { margin-left: 1.25em; margin-bottom: 0; font-size: 1em; /* Override nested font-size change */ }
+ul.square li ul, ul.circle li ul, ul.disc li ul { list-style: inherit; }
+ul.square { list-style-type: square; }
+ul.circle { list-style-type: circle; }
+ul.disc { list-style-type: disc; }
+ul.no-bullet { list-style: none; }
+
+/* Ordered Lists */
+ol li ul, ol li ol { margin-left: 1.25em; margin-bottom: 0; }
+
+/* Definition Lists */
+dl dt { margin-bottom: 0.3125em; font-weight: bold; }
+dl dd { margin-bottom: 1.25em; }
+
+/* Abbreviations */
+abbr, acronym { text-transform: uppercase; font-size: 90%; color: #aaa; border-bottom: 1px dotted #ddd; cursor: help; }
+
+abbr { text-transform: none; }
+
+/* Blockquotes */
+blockquote { margin: 0 0 1.25em; padding: 0.5625em 1.25em 0 1.1875em; border-left: 1px solid #ddd; }
+blockquote cite { display: block; font-size: 0.9375em; color: #aaa; }
+blockquote cite:before { content: "\2014 \0020"; }
+blockquote cite a, blockquote cite a:visited { color: #aaa; }
+
+blockquote, blockquote p { line-height: 1.6; color: #ffa92e; }
+
+/* Microformats */
+.vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #ddd; padding: 0.625em 0.75em; }
+.vcard li { margin: 0; display: block; }
+.vcard .fn { font-weight: bold; font-size: 0.9375em; }
+
+.vevent .summary { font-weight: bold; }
+.vevent abbr { cursor: auto; text-decoration: none; font-weight: bold; border: none; padding: 0 0.0625em; }
+
+@media only screen and (min-width: 768px) { h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.2; }
+ h1 { font-size: 2.75em; }
+ h2 { font-size: 2.3125em; }
+ h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.6875em; }
+ h4 { font-size: 1.4375em; } }
+/* Tables */
+table { background: #111; margin-bottom: 1.25em; border: solid 1px #613900; }
+table thead, table tfoot { background: #2e1b00; font-weight: bold; }
+table thead tr th, table thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #aaa; text-align: left; }
+table tr th, table tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #aaa; }
+table tr.even, table tr.alt, table tr:nth-of-type(even) { background: #040404; }
+table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { display: table-cell; line-height: 1.6; }
+
+body { tab-size: 4; word-wrap: anywhere; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; }
+
+table { word-wrap: normal; }
+
+h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.2; word-spacing: -0.05em; }
+h1 strong, h2 strong, h3 strong, #toctitle strong, .sidebarblock > .content > .title strong, h4 strong, h5 strong, h6 strong { font-weight: 400; }
+
+object, svg { display: inline-block; vertical-align: middle; }
+
+.center { margin-left: auto; margin-right: auto; }
+
+.stretch { width: 100%; }
+
+.clearfix:before, .clearfix:after, .float-group:before, .float-group:after { content: " "; display: table; }
+.clearfix:after, .float-group:after { clear: both; }
+
+:not(pre).nobreak { word-wrap: normal; }
+:not(pre).nowrap { white-space: nowrap; }
+:not(pre).pre-wrap { white-space: pre-wrap; }
+
+:not(pre):not([class^=L]) > code { font-size: 0.875em; font-style: normal !important; letter-spacing: 0; padding: 0.1em 0.5ex; word-spacing: -0.15em; background-color: black; border: 1px solid #111; -webkit-border-radius: 8px; border-radius: 8px; line-height: 1.45; text-rendering: optimizeSpeed; }
+
+pre { color: #FA9300; font-family: "IBM Plex Mono", "Droid Sans Mono", "DejaVu Sans Mono", "Monospace", monospace; line-height: 1.45; text-rendering: optimizeSpeed; }
+pre code, pre pre { color: inherit; font-size: inherit; line-height: inherit; }
+pre > code { display: block; }
+
+pre.nowrap, pre.nowrap pre { white-space: pre; word-wrap: normal; }
+
+em em { font-style: normal; }
+
+strong strong { font-weight: normal; }
+
+.keyseq { color: #dddddd; }
+
+kbd { font-family: "IBM Plex Mono", "Droid Sans Mono", "DejaVu Sans Mono", "Monospace", monospace; display: inline-block; color: #aaa; font-size: 0.65em; line-height: 1.45; background-color: #f7f7f7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; margin: 0 0.15em; padding: 0.2em 0.5em; vertical-align: middle; position: relative; top: -0.1em; white-space: nowrap; }
+
+.keyseq kbd:first-child { margin-left: 0; }
+
+.keyseq kbd:last-child { margin-right: 0; }
+
+.menuseq, .menuref { color: #000; }
+
+.menuseq b:not(.caret), .menuref { font-weight: inherit; }
+
+.menuseq { word-spacing: -0.02em; }
+.menuseq b.caret { font-size: 1.25em; line-height: 0.8; }
+.menuseq i.caret { font-weight: bold; text-align: center; width: 0.45em; }
+
+b.button:before, b.button:after { position: relative; top: -1px; font-weight: normal; }
+
+b.button:before { content: "["; padding: 0 3px 0 2px; }
+
+b.button:after { content: "]"; padding: 0 2px 0 3px; }
+
+p a > code:hover { color: #ffddae; }
+
+#header, #content, #footnotes, #footer { width: 100%; margin-left: auto; margin-right: auto; margin-top: 0; margin-bottom: 0; max-width: 62.5em; *zoom: 1; position: relative; padding-left: 0.9375em; padding-right: 0.9375em; }
+#header:before, #header:after, #content:before, #content:after, #footnotes:before, #footnotes:after, #footer:before, #footer:after { content: " "; display: table; }
+#header:after, #content:after, #footnotes:after, #footer:after { clear: both; }
+
+#content { margin-top: 1.25em; }
+
+#content:before { content: none; }
+
+#header > h1:first-child { color: #ffa92e; margin-top: 2.25rem; margin-bottom: 0; }
+#header > h1:first-child + #toc { margin-top: 8px; border-top: 1px solid #2b2b2b; }
+#header > h1:only-child, body.toc2 #header > h1:nth-last-child(2) { border-bottom: 1px solid #2b2b2b; padding-bottom: 8px; }
+#header .details { border-bottom: 1px solid #2b2b2b; line-height: 1.45; padding-top: 0.25em; padding-bottom: 0.25em; padding-left: 0.25em; color: #aaa; display: -ms-flexbox; display: -webkit-flex; display: flex; -ms-flex-flow: row wrap; -webkit-flex-flow: row wrap; flex-flow: row wrap; }
+#header .details span:first-child { margin-left: -0.125em; }
+#header .details span.email a { color: #ffa92e; }
+#header .details br { display: none; }
+#header .details br + span:before { content: "\00a0\2013\00a0"; }
+#header .details br + span.author:before { content: "\00a0\22c5\00a0"; color: #ffa92e; }
+#header .details br + span#revremark:before { content: "\00a0|\00a0"; }
+#header #revnumber { text-transform: capitalize; }
+#header #revnumber:after { content: "\00a0"; }
+
+#content > h1:first-child:not([class]) { color: #ffa92e; border-bottom: 1px solid #2b2b2b; padding-bottom: 8px; margin-top: 0; padding-top: 1rem; margin-bottom: 1.25rem; }
+
+#toc { border-bottom: 1px solid #1e1e1e; padding-bottom: 0.5em; }
+#toc > ul { margin-left: 0.125em; }
+#toc ul.sectlevel0 > li > a { font-style: italic; }
+#toc ul.sectlevel0 ul.sectlevel1 { margin: 0.5em 0; }
+#toc ul { font-family: "Comfortaa", "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica Neue", "Arial", "sans-serif", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; list-style-type: none; }
+#toc li { line-height: 1.3334; margin-top: 0.3334em; }
+#toc a { text-decoration: none; }
+#toc a:active { text-decoration: underline; }
+
+#toctitle { color: #e18400; font-size: 1.2em; }
+
+@media only screen and (min-width: 768px) { #toctitle { font-size: 1.375em; }
+ body.toc2 { padding-left: 15em; padding-right: 0; }
+ #toc.toc2 { margin-top: 0 !important; background: black; position: fixed; width: 15em; left: 0; top: 0; border-right: 1px solid #1e1e1e; border-top-width: 0 !important; border-bottom-width: 0 !important; z-index: 1000; padding: 1.25em 1em; height: 100%; overflow: auto; }
+ #toc.toc2 #toctitle { margin-top: 0; margin-bottom: 0.8rem; font-size: 1.2em; }
+ #toc.toc2 > ul { font-size: 0.9em; margin-bottom: 0; }
+ #toc.toc2 ul ul { margin-left: 0; padding-left: 1em; }
+ #toc.toc2 ul.sectlevel0 ul.sectlevel1 { padding-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; }
+ body.toc2.toc-right { padding-left: 0; padding-right: 15em; }
+ body.toc2.toc-right #toc.toc2 { border-right-width: 0; border-left: 1px solid #1e1e1e; left: auto; right: 0; } }
+@media only screen and (min-width: 1280px) { body.toc2 { padding-left: 20em; padding-right: 0; }
+ #toc.toc2 { width: 20em; }
+ #toc.toc2 #toctitle { font-size: 1.375em; }
+ #toc.toc2 > ul { font-size: 0.95em; }
+ #toc.toc2 ul ul { padding-left: 1.25em; }
+ body.toc2.toc-right { padding-left: 0; padding-right: 20em; } }
+#content #toc { border-style: solid; border-width: 1px; border-color: black; margin-bottom: 1.25em; padding: 1.25em; background: black; -webkit-border-radius: 8px; border-radius: 8px; }
+#content #toc > :first-child { margin-top: 0; }
+#content #toc > :last-child { margin-bottom: 0; }
+
+#footer { max-width: none; background: #aaa; padding: 1.25em; }
+
+#footer-text { color: #555555; line-height: 1.44; }
+
+#content { margin-bottom: 0.625em; }
+
+.sect1 { padding-bottom: 0.625em; }
+
+@media only screen and (min-width: 768px) { #content { margin-bottom: 1.25em; }
+ .sect1 { padding-bottom: 1.25em; } }
+.sect1:last-child { padding-bottom: 0; }
+
+.sect1 + .sect1 { border-top: 1px solid #1e1e1e; }
+
+#content h1 > a.anchor, h2 > a.anchor, h3 > a.anchor, #toctitle > a.anchor, .sidebarblock > .content > .title > a.anchor, h4 > a.anchor, h5 > a.anchor, h6 > a.anchor { position: absolute; z-index: 1001; width: 1.5ex; margin-left: -1.5ex; display: block; text-decoration: none !important; visibility: hidden; text-align: center; font-weight: normal; }
+#content h1 > a.anchor:before, h2 > a.anchor:before, h3 > a.anchor:before, #toctitle > a.anchor:before, .sidebarblock > .content > .title > a.anchor:before, h4 > a.anchor:before, h5 > a.anchor:before, h6 > a.anchor:before { content: "\00A7"; font-size: 0.85em; display: block; padding-top: 0.1em; }
+#content h1:hover > a.anchor, #content h1 > a.anchor:hover, h2:hover > a.anchor, h2 > a.anchor:hover, h3:hover > a.anchor, #toctitle:hover > a.anchor, .sidebarblock > .content > .title:hover > a.anchor, h3 > a.anchor:hover, #toctitle > a.anchor:hover, .sidebarblock > .content > .title > a.anchor:hover, h4:hover > a.anchor, h4 > a.anchor:hover, h5:hover > a.anchor, h5 > a.anchor:hover, h6:hover > a.anchor, h6 > a.anchor:hover { visibility: visible; }
+#content h1 > a.link, h2 > a.link, h3 > a.link, #toctitle > a.link, .sidebarblock > .content > .title > a.link, h4 > a.link, h5 > a.link, h6 > a.link { color: #ffa92e; text-decoration: none; }
+#content h1 > a.link:hover, h2 > a.link:hover, h3 > a.link:hover, #toctitle > a.link:hover, .sidebarblock > .content > .title > a.link:hover, h4 > a.link:hover, h5 > a.link:hover, h6 > a.link:hover { color: #ff9e15; }
+
+details, .audioblock, .imageblock, .literalblock, .listingblock, .stemblock, .videoblock { margin-bottom: 1.25em; }
+
+details > summary:first-of-type { cursor: pointer; display: list-item; outline: none; margin-bottom: 0.75em; }
+
+.admonitionblock td.content > .title, .audioblock > .title, .exampleblock > .title, .imageblock > .title, .listingblock > .title, .literalblock > .title, .stemblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, table.tableblock > .title, .verseblock > .title, .videoblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-rendering: optimizeLegibility; text-align: left; font-family: "Comfortaa", "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica Neue", "Arial", "sans-serif", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 1rem; font-style: italic; }
+
+table.tableblock.fit-content > caption.title { white-space: nowrap; width: 0; }
+
+.paragraph.lead > p, #preamble > .sectionbody > [class="paragraph"]:first-of-type p { font-size: 1.21875em; line-height: 1.6; color: #ffa92e; }
+
+table.tableblock #preamble > .sectionbody > [class="paragraph"]:first-of-type p { font-size: inherit; }
+
+.admonitionblock > table { border-collapse: separate; border: 0; background: none; width: 100%; }
+.admonitionblock > table td.icon { text-align: center; width: 80px; }
+.admonitionblock > table td.icon img { max-width: none; }
+.admonitionblock > table td.icon .title { font-weight: bold; font-family: "Comfortaa", "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica Neue", "Arial", "sans-serif", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; text-transform: uppercase; }
+.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #2b2b2b; color: #aaa; word-wrap: anywhere; }
+.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; }
+
+.exampleblock > .content { border-style: solid; border-width: 1px; border-color: black; margin-bottom: 1.25em; padding: 1.25em; background: #111; -webkit-border-radius: 8px; border-radius: 8px; }
+.exampleblock > .content > :first-child { margin-top: 0; }
+.exampleblock > .content > :last-child { margin-bottom: 0; }
+
+.sidebarblock { border-style: solid; border-width: 1px; border-color: black; margin-bottom: 1.25em; padding: 1.25em; background: black; -webkit-border-radius: 8px; border-radius: 8px; }
+.sidebarblock > :first-child { margin-top: 0; }
+.sidebarblock > :last-child { margin-bottom: 0; }
+.sidebarblock > .content > .title { color: #e18400; margin-top: 0; text-align: center; }
+
+.exampleblock > .content > :last-child > :last-child, .exampleblock > .content .olist > ol > li:last-child > :last-child, .exampleblock > .content .ulist > ul > li:last-child > :last-child, .exampleblock > .content .qlist > ol > li:last-child > :last-child, .sidebarblock > .content > :last-child > :last-child, .sidebarblock > .content .olist > ol > li:last-child > :last-child, .sidebarblock > .content .ulist > ul > li:last-child > :last-child, .sidebarblock > .content .qlist > ol > li:last-child > :last-child { margin-bottom: 0; }
+
+.literalblock pre, .listingblock > .content > pre { border: 1px solid #2e1b00; -webkit-border-radius: 8px; border-radius: 8px; overflow-x: auto; padding: 1em; font-size: 0.8125em; }
+@media only screen and (min-width: 768px) { .literalblock pre, .listingblock > .content > pre { font-size: 0.90625em; } }
+@media only screen and (min-width: 1280px) { .literalblock pre, .listingblock > .content > pre { font-size: 1em; } }
+
+.literalblock pre, .listingblock > .content > pre:not(.highlight), .listingblock > .content > pre[class="highlight"], .listingblock > .content > pre[class^="highlight "] { background: black; }
+
+.literalblock.output pre { color: black; background-color: #FA9300; }
+
+.listingblock > .content { position: relative; }
+
+.listingblock code[data-lang]:before { display: none; content: attr(data-lang); position: absolute; font-size: 0.75em; top: 0.425rem; right: 0.5rem; line-height: 1; text-transform: uppercase; color: inherit; opacity: 0.5; }
+
+.listingblock:hover code[data-lang]:before { display: block; }
+
+.listingblock.terminal pre .command:before { content: attr(data-prompt); padding-right: 0.5em; color: inherit; opacity: 0.5; }
+
+.listingblock.terminal pre .command:not([data-prompt]):before { content: "$"; }
+
+.listingblock pre.highlightjs { padding: 0; }
+.listingblock pre.highlightjs > code { padding: 1em; -webkit-border-radius: 8px; border-radius: 8px; }
+
+.prettyprint { background: black; }
+
+pre.prettyprint .linenums { line-height: 1.45; margin-left: 2em; }
+
+pre.prettyprint li { background: none; list-style-type: inherit; padding-left: 0; }
+
+pre.prettyprint li code[data-lang]:before { opacity: 1; }
+
+pre.prettyprint li:not(:first-child) code[data-lang]:before { display: none; }
+
+table.linenotable { border-collapse: separate; border: 0; margin-bottom: 0; background: none; }
+table.linenotable td[class] { color: inherit; vertical-align: top; padding: 0; line-height: inherit; white-space: normal; }
+table.linenotable td.code { padding-left: 0.75em; }
+table.linenotable td.linenos { border-right: 1px solid currentColor; opacity: 0.35; padding-right: 0.5em; }
+
+pre.pygments .lineno { border-right: 1px solid currentColor; opacity: 0.35; display: inline-block; margin-right: 0.75em; }
+pre.pygments .lineno:before { content: ""; margin-right: -0.125em; }
+
+.quoteblock { margin: 0 1em 1.25em 1.5em; display: table; }
+.quoteblock:not(.excerpt) > .title { margin-left: -1.5em; margin-bottom: 0.75em; }
+.quoteblock blockquote, .quoteblock p { color: #ffa92e; font-size: 1.15rem; line-height: 1.75; word-spacing: 0.1em; letter-spacing: 0; font-style: italic; text-align: justify; }
+.quoteblock blockquote { margin: 0; padding: 0; border: 0; }
+.quoteblock blockquote:before { content: "\201c"; float: left; font-size: 2.75em; font-weight: bold; line-height: 0.6em; margin-left: -0.6em; color: #e18400; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); }
+.quoteblock blockquote > .paragraph:last-child p { margin-bottom: 0; }
+.quoteblock .attribution { margin-top: 0.75em; margin-right: 0.5ex; text-align: right; }
+
+.verseblock { margin: 0 1em 1.25em 1em; }
+.verseblock pre { font-family: "Open Sans", "DejaVu Sans", sans; font-size: 1.15rem; color: #ffa92e; font-weight: 300; text-rendering: optimizeLegibility; }
+.verseblock pre strong { font-weight: 400; }
+.verseblock .attribution { margin-top: 1.25rem; margin-left: 0.5ex; }
+
+.quoteblock .attribution, .verseblock .attribution { font-size: 0.9375em; line-height: 1.45; font-style: italic; }
+.quoteblock .attribution br, .verseblock .attribution br { display: none; }
+.quoteblock .attribution cite, .verseblock .attribution cite { display: block; letter-spacing: -0.025em; color: #aaa; }
+
+.quoteblock.abstract blockquote:before, .quoteblock.excerpt blockquote:before, .quoteblock .quoteblock blockquote:before { display: none; }
+.quoteblock.abstract blockquote, .quoteblock.abstract p, .quoteblock.excerpt blockquote, .quoteblock.excerpt p, .quoteblock .quoteblock blockquote, .quoteblock .quoteblock p { line-height: 1.6; word-spacing: 0; }
+.quoteblock.abstract { margin: 0 1em 1.25em 1em; display: block; }
+.quoteblock.abstract > .title { margin: 0 0 0.375em 0; font-size: 1.15em; text-align: center; }
+.quoteblock.excerpt > blockquote, .quoteblock .quoteblock { padding: 0 0 0.25em 1em; border-left: 0.25em solid #2b2b2b; }
+.quoteblock.excerpt, .quoteblock .quoteblock { margin-left: 0; }
+.quoteblock.excerpt blockquote, .quoteblock.excerpt p, .quoteblock .quoteblock blockquote, .quoteblock .quoteblock p { color: inherit; font-size: 1.0625rem; }
+.quoteblock.excerpt .attribution, .quoteblock .quoteblock .attribution { color: inherit; text-align: left; margin-right: 0; }
+
+p.tableblock:last-child { margin-bottom: 0; }
+
+td.tableblock > .content { margin-bottom: 1.25em; word-wrap: anywhere; }
+td.tableblock > .content > :last-child { margin-bottom: -1.25em; }
+
+table.tableblock, th.tableblock, td.tableblock { border: 0 solid #613900; }
+
+table.grid-all > * > tr > * { border-width: 1px; }
+
+table.grid-cols > * > tr > * { border-width: 0 1px; }
+
+table.grid-rows > * > tr > * { border-width: 1px 0; }
+
+table.frame-all { border-width: 1px; }
+
+table.frame-ends { border-width: 1px 0; }
+
+table.frame-sides { border-width: 0 1px; }
+
+table.frame-none > colgroup + * > :first-child > *, table.frame-sides > colgroup + * > :first-child > * { border-top-width: 0; }
+
+table.frame-none > :last-child > :last-child > *, table.frame-sides > :last-child > :last-child > * { border-bottom-width: 0; }
+
+table.frame-none > * > tr > :first-child, table.frame-ends > * > tr > :first-child { border-left-width: 0; }
+
+table.frame-none > * > tr > :last-child, table.frame-ends > * > tr > :last-child { border-right-width: 0; }
+
+table.stripes-all tr, table.stripes-odd tr:nth-of-type(odd), table.stripes-even tr:nth-of-type(even), table.stripes-hover tr:hover { background: #040404; }
+
+th.halign-left, td.halign-left { text-align: left; }
+
+th.halign-right, td.halign-right { text-align: right; }
+
+th.halign-center, td.halign-center { text-align: center; }
+
+th.valign-top, td.valign-top { vertical-align: top; }
+
+th.valign-bottom, td.valign-bottom { vertical-align: bottom; }
+
+th.valign-middle, td.valign-middle { vertical-align: middle; }
+
+table thead th, table tfoot th { font-weight: bold; }
+
+tbody tr th { display: table-cell; line-height: 1.6; background: #2e1b00; }
+
+tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { color: #aaa; font-weight: bold; }
+
+p.tableblock > code:only-child { background: none; padding: 0; }
+
+p.tableblock { font-size: 1em; }
+
+ol { margin-left: 1.75em; }
+
+ul li ol { margin-left: 1.5em; }
+
+dl dd { margin-left: 1.125em; }
+
+dl dd:last-child, dl dd:last-child > :last-child { margin-bottom: 0; }
+
+ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .ulist, .ulist .olist, .olist .ulist { margin-bottom: 0.625em; }
+
+ul.checklist, ul.none, ol.none, ul.no-bullet, ol.no-bullet, ol.unnumbered, ul.unstyled, ol.unstyled { list-style-type: none; }
+
+ul.no-bullet, ol.no-bullet, ol.unnumbered { margin-left: 0.625em; }
+
+ul.unstyled, ol.unstyled { margin-left: 0; }
+
+ul.checklist { margin-left: 0.625em; }
+
+ul.checklist li > p:first-child > .fa-square-o:first-child, ul.checklist li > p:first-child > .fa-check-square-o:first-child { width: 1.25em; font-size: 0.8em; position: relative; bottom: 0.125em; }
+
+ul.checklist li > p:first-child > input[type="checkbox"]:first-child { margin-right: 0.25em; }
+
+ul.inline { display: -ms-flexbox; display: -webkit-box; display: flex; -ms-flex-flow: row wrap; -webkit-flex-flow: row wrap; flex-flow: row wrap; list-style: none; margin: 0 0 0.625em -1.25em; }
+
+ul.inline > li { margin-left: 1.25em; }
+
+.unstyled dl dt { font-weight: normal; font-style: normal; }
+
+ol.arabic { list-style-type: decimal; }
+
+ol.decimal { list-style-type: decimal-leading-zero; }
+
+ol.loweralpha { list-style-type: lower-alpha; }
+
+ol.upperalpha { list-style-type: upper-alpha; }
+
+ol.lowerroman { list-style-type: lower-roman; }
+
+ol.upperroman { list-style-type: upper-roman; }
+
+ol.lowergreek { list-style-type: lower-greek; }
+
+.hdlist > table, .colist > table { border: 0; background: none; }
+.hdlist > table > tbody > tr, .colist > table > tbody > tr { background: none; }
+
+td.hdlist1, td.hdlist2 { vertical-align: top; padding: 0 0.625em; }
+
+td.hdlist1 { font-weight: bold; padding-bottom: 1.25em; }
+
+td.hdlist2 { word-wrap: anywhere; }
+
+.literalblock + .colist, .listingblock + .colist { margin-top: -0.5em; }
+
+.colist td:not([class]):first-child { padding: 0.4em 0.75em 0 0.75em; line-height: 1; vertical-align: top; }
+.colist td:not([class]):first-child img { max-width: none; }
+.colist td:not([class]):last-child { padding: 0.25em 0; }
+
+.thumb, .th { line-height: 0; display: inline-block; border: solid 4px #fff; -webkit-box-shadow: 0 0 0 1px #ddd; box-shadow: 0 0 0 1px #ddd; }
+
+.imageblock.left { margin: 0.25em 0.625em 1.25em 0; }
+.imageblock.right { margin: 0.25em 0 1.25em 0.625em; }
+.imageblock > .title { margin-bottom: 0; }
+.imageblock.thumb, .imageblock.th { border-width: 6px; }
+.imageblock.thumb > .title, .imageblock.th > .title { padding: 0 0.125em; }
+
+.image.left, .image.right { margin-top: 0.25em; margin-bottom: 0.25em; display: inline-block; line-height: 0; }
+.image.left { margin-right: 0.625em; }
+.image.right { margin-left: 0.625em; }
+
+a.image { text-decoration: none; display: inline-block; }
+a.image object { pointer-events: none; }
+
+sup.footnote, sup.footnoteref { font-size: 0.875em; position: static; vertical-align: super; }
+sup.footnote a, sup.footnoteref a { text-decoration: none; }
+sup.footnote a:active, sup.footnoteref a:active { text-decoration: underline; }
+
+#footnotes { padding-top: 0.75em; padding-bottom: 0.75em; margin-bottom: 0.625em; }
+#footnotes hr { width: 20%; min-width: 6.25em; margin: -0.25em 0 0.75em 0; border-width: 1px 0 0 0; }
+#footnotes .footnote { padding: 0 0.375em 0 0.225em; line-height: 1.3334; font-size: 0.875em; margin-left: 1.2em; margin-bottom: 0.2em; }
+#footnotes .footnote a:first-of-type { font-weight: bold; text-decoration: none; margin-left: -1.05em; }
+#footnotes .footnote:last-of-type { margin-bottom: 0; }
+#content #footnotes { margin-top: -0.625em; margin-bottom: 0; padding: 0.75em 0; }
+
+.gist .file-data > table { border: 0; background: #fff; width: 100%; margin-bottom: 0; }
+.gist .file-data > table td.line-data { width: 99%; }
+
+div.unbreakable { page-break-inside: avoid; }
+
+.big { font-size: larger; }
+
+.small { font-size: smaller; }
+
+.underline { text-decoration: underline; }
+
+.overline { text-decoration: overline; }
+
+.line-through { text-decoration: line-through; }
+
+.aqua { color: #00bfbf; }
+
+.aqua-background { background-color: #00fafa; }
+
+.black { color: black; }
+
+.black-background { background-color: black; }
+
+.blue { color: #0000bf; }
+
+.blue-background { background-color: #0000fa; }
+
+.fuchsia { color: #bf00bf; }
+
+.fuchsia-background { background-color: #fa00fa; }
+
+.gray { color: #606060; }
+
+.gray-background { background-color: #7d7d7d; }
+
+.green { color: #006000; }
+
+.green-background { background-color: #007d00; }
+
+.lime { color: #00bf00; }
+
+.lime-background { background-color: #00fa00; }
+
+.maroon { color: #600000; }
+
+.maroon-background { background-color: #7d0000; }
+
+.navy { color: #000060; }
+
+.navy-background { background-color: #00007d; }
+
+.olive { color: #606000; }
+
+.olive-background { background-color: #7d7d00; }
+
+.purple { color: #600060; }
+
+.purple-background { background-color: #7d007d; }
+
+.red { color: #bf0000; }
+
+.red-background { background-color: #fa0000; }
+
+.silver { color: #909090; }
+
+.silver-background { background-color: #bcbcbc; }
+
+.teal { color: #006060; }
+
+.teal-background { background-color: #007d7d; }
+
+.white { color: #bfbfbf; }
+
+.white-background { background-color: #fafafa; }
+
+.yellow { color: #bfbf00; }
+
+.yellow-background { background-color: #fafa00; }
+
+span.icon > .fa { cursor: default; }
+a span.icon > .fa { cursor: inherit; }
+
+.admonitionblock td.icon [class^="fa icon-"] { font-size: 2.5em; text-shadow: 0px 0px 5px #c77500; cursor: default; }
+.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #bc6e00; }
+.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; }
+.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; }
+.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; }
+.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; }
+
+.conum[data-value] { display: inline-block; color: #fff !important; background-color: #aaa; -webkit-border-radius: 50%; border-radius: 50%; text-align: center; font-size: 0.75em; width: 1.67em; height: 1.67em; line-height: 1.67em; font-family: "Open Sans", "DejaVu Sans", sans-serif; font-style: normal; font-weight: bold; }
+.conum[data-value] * { color: #fff !important; }
+.conum[data-value] + b { display: none; }
+.conum[data-value]:after { content: attr(data-value); }
+pre .conum[data-value] { position: relative; top: -0.125em; }
+
+b.conum * { color: inherit !important; }
+
+.conum:not([data-value]):empty { display: none; }
+
+dt, th.tableblock, td.content, div.footnote { text-rendering: optimizeLegibility; }
+
+h1, h2, p, td.content, span.alt { letter-spacing: -0.01em; }
+
+p strong, td.content strong, div.footnote strong { letter-spacing: -0.005em; }
+
+strong { text-shadow: 0px 0px 2px; }
+
+p, blockquote, dt, td.content, span.alt { font-size: 1.0625rem; }
+
+p { margin-bottom: 1.25rem; }
+
+.sidebarblock p, .sidebarblock dt, .sidebarblock td.content, p.tableblock { font-size: 1em; }
+
+.exampleblock > .content { border-color: #2e1b00; -moz-box-shadow: 0 1px 4px #2e1b00; -webkit-box-shadow: 0 1px 4px #2e1b00; box-shadow: 0 1px 4px #2e1b00; }
+
+.admonitionblock .icon .title { font-size: 2.5em; text-shadow: 0px 0px 5px #c77500; }
+
+.caution .icon .title { color: #6610f2; }
+
+.important .icon .title { color: #e74c3c; }
+
+.note .icon .title { color: #3498db; }
+
+.tip .icon .title { color: #00bc8c; }
+
+.warning .icon .title { color: #f39c12; }
+
+pre.pygments { background: #000 !important; }
+
+.literalblock pre, .listingblock > .content > pre { font-size: 0.875em; }
+@media only screen and (min-width: 768px) { .literalblock pre, .listingblock > .content > pre { font-size: 0.875em; } }
+@media only screen and (min-width: 1280px) { .literalblock pre, .listingblock > .content > pre { font-size: 0.875em; } }
+
+.literalblock pre, .listingblock > .content > pre { background: black !important; }
+
+.sidebarblock { border-color: #2e1b00; }
+
+a { color: inherit; }
+
+#header .details { color: #c77500; }
+
+#toc { scrollbar-width: none; scrollbar-color: #613900 transparent; }
+
+#toc:hover { scrollbar-width: thin; scrollbar-color: #c77500 #2e1b00; }
+
+#toc::-webkit-scrollbar { width: 0px; }
+
+#toc::-webkit-scrollbar-thumb { background: #613900; }
+
+#toc::-webkit-scrollbar-track { background: transparent; }
+
+#toc:hover::-webkit-scrollbar { width: 6px; }
+
+#toc:hover::-webkit-scrollbar-thumb { background: #c77500; }
+
+#toc:hover::-webkit-scrollbar-track { background: #2e1b00; }
+
+.print-only { display: none !important; }
+
+@page { margin: 1.25cm 0.75cm; }
+@media print { * { -moz-box-shadow: none !important; -webkit-box-shadow: none !important; box-shadow: none !important; text-shadow: none !important; }
+ html { font-size: 80%; }
+ a { color: inherit !important; text-decoration: underline !important; }
+ a.bare, a[href^="#"], a[href^="mailto:"] { text-decoration: none !important; }
+ a[href^="http:"]:not(.bare):after, a[href^="https:"]:not(.bare):after { content: "(" attr(href) ")"; display: inline-block; font-size: 0.875em; padding-left: 0.25em; }
+ abbr[title]:after { content: " (" attr(title) ")"; }
+ pre, blockquote, tr, img, object, svg { page-break-inside: avoid; }
+ thead { display: table-header-group; }
+ svg { max-width: 100%; }
+ p, blockquote, dt, td.content { font-size: 1em; orphans: 3; widows: 3; }
+ h2, h3, #toctitle, .sidebarblock > .content > .title, #toctitle, .sidebarblock > .content > .title { page-break-after: avoid; }
+ #header, #content, #footnotes, #footer { max-width: none; }
+ #toc, .sidebarblock, .exampleblock > .content { background: none !important; }
+ #toc { border-bottom: 1px solid #2b2b2b !important; padding-bottom: 0 !important; }
+ body.book #header { text-align: center; }
+ body.book #header > h1:first-child { border: 0 !important; margin: 2.5em 0 1em 0; }
+ body.book #header .details { border: 0 !important; display: block; padding: 0 !important; }
+ body.book #header .details span:first-child { margin-left: 0 !important; }
+ body.book #header .details br { display: block; }
+ body.book #header .details br + span:before { content: none !important; }
+ body.book #toc { border: 0 !important; text-align: left !important; padding: 0 !important; margin: 0 !important; }
+ body.book #toc, body.book #preamble, body.book h1.sect0, body.book .sect1 > h2 { page-break-before: always; }
+ .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { border: 0 !important; }
+ .listingblock code[data-lang]:before { display: block; }
+ #footer { padding: 0 0.9375em; }
+ .hide-on-print { display: none !important; }
+ .print-only { display: block !important; }
+ .hide-for-print { display: none !important; }
+ .show-for-print { display: inherit !important; } }
+@media print, amzn-kf8 { #header > h1:first-child { margin-top: 1.25rem; }
+ .sect1 { padding: 0 !important; }
+ .sect1 + .sect1 { border: 0; }
+ #footer { background: none; }
+ #footer-text { color: #aaa; font-size: 0.9em; } }
+@media amzn-kf8 { #header, #content, #footnotes, #footer { padding: 0; } }
+.menubar { position: fixed; display: block; top: 0px; left: 0px; right: 0px; z-index: 99; background-color: black; border-bottom: 1px solid #2e1b00; padding: 10px; text-align: center; }
+
+.menubar p { margin: 0px; }
+
+.menubar image { padding-right: 1em; }
+
+.menubar-item { padding-left: 1em; }
+
+@media print { .menubar { display: none; } }
diff --git a/doc/build.jam b/doc/build.jam
index b2f1d6b..3a87acc 100644
--- a/doc/build.jam
+++ b/doc/build.jam
@@ -1,5 +1,5 @@
#|
-Copyright Rene Rivera 2011-2019
+Copyright René Ferdinand Rivera Morell 2011-2021
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)
@@ -11,8 +11,6 @@ import path ;
project predefdoc ;
-path-constant PYGMENTS_DIR : . ;
-
doc-dir = [ MATCH "--doc-dir=(.*)" : [ modules.peek : ARGV ] ] ;
doc-dir ?= . ;
@@ -20,10 +18,10 @@ local headers = [ glob-tree-ex $(BOOST_PREDEF_INCLUDE) : *.h ] ;
html index : predef.adoc :
:
- --require=$(PYGMENTS_DIR)/pygments_init.rb
--trace
--verbose
- $(PYGMENTS_DIR)/pygments_init.rb
+ --attribute=stylesheet=amber.css
+ --attribute=rouge-style=base16.solarized
$(headers)
;
explicit index ;
diff --git a/doc/history.adoc b/doc/history.adoc
index 1746fbb..e664712 100644
--- a/doc/history.adoc
+++ b/doc/history.adoc
@@ -1,5 +1,5 @@
////
-Copyright 2014-2021 Rene Rivera
+Copyright 2014-2021 René Ferdinand Rivera Morell
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)
@@ -7,6 +7,12 @@ http://www.boost.org/LICENSE_1_0.txt)
= History
+== 1.13.1
+
+* Fix spelling of "epoch".
+* Add missing parenthesis in `sparc.h` (from tkoecker).
+* Update documentation to use Rouge code styling and Amber general style.
+
== 1.13
* Add `ARCH_PPC_64` predef.
diff --git a/doc/index.html b/doc/index.html
index f9d5c78..aabf09b 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -4,517 +4,929 @@
-
-
+
+
Boost.Predef
-
-
1. Introduction
@@ -973,7 +1335,7 @@ single top-level header:
-
#include <boost/predef.h>
+
#include <boost/predef.h>
@@ -1036,17 +1398,17 @@ 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 ;
-}
+
#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 ;
+}
@@ -1058,17 +1420,17 @@ 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 ;
-}
+
#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 ;
+}
@@ -1077,24 +1439,24 @@ 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 ;
-}
+
#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 ;
+}
@@ -1104,9 +1466,9 @@ detected. I.e. a definition equivalent to:
-
#if BOOST_PREDEF_ABC
- #define BOOST_PREDEF_ABC_AVAILABLE
-#endif
+
#if BOOST_PREDEF_ABC
+ #define BOOST_PREDEF_ABC_AVAILABLE
+#endif
@@ -1134,7 +1496,7 @@ The macro takes individual major, minor, and patch value expressions:
-
#define BOOST_VERSION_NUMBER( major, minor, patch ) ...
+
#define BOOST_VERSION_NUMBER( major, minor, patch ) ...
@@ -1170,7 +1532,7 @@ possible, i.e. binary, octal, decimal, and hexadecimal. For example:
-
#define MY_APPLICATION_VERSION_NUMBER BOOST_VERSION_NUMBER(2,0xA,015)
+
#define MY_APPLICATION_VERSION_NUMBER BOOST_VERSION_NUMBER(2,0xA,015)
@@ -1178,7 +1540,7 @@ possible, i.e. binary, octal, decimal, and hexadecimal. For example:
-
#define MY_APPLICATION_VERSION_NUMBER BOOST_VERSION_NUMBER(2,10,13)
+
#define MY_APPLICATION_VERSION_NUMBER BOOST_VERSION_NUMBER(2,10,13)
@@ -1270,15 +1632,15 @@ 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)
-*/
+/*
+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
+#ifndef BOOST_PREDEF_category_tag_H
+#define BOOST_PREDEF_category_tag_H
@@ -1287,7 +1649,7 @@ include those headers here.
-
#include <boost/predef/CATEGORY_TAG/DEPENDENCY.h>
+
#include <boost/predef/CATEGORY_TAG/DEPENDENCY.h>
@@ -1298,8 +1660,8 @@ macros:
-
#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
+
#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
@@ -1313,15 +1675,15 @@ for the macro. In particular this works for the popular Eclipse IDE:
-
/* tag::reference[]
+/* tag::reference[]
-= `BOOST_category_tag`
+= `BOOST_category_tag`
-Documentation about what is detected.
+Documentation about what is detected.
-*/
+*/
-#define BOOST_category_tag BOOST_VERSION_NUMBER_NOT_AVAILABLE
+#define BOOST_category_tag BOOST_VERSION_NUMBER_NOT_AVAILABLE
@@ -1336,14 +1698,14 @@ 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
+
#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
@@ -1351,9 +1713,9 @@ the fallback to minimally indicate that the predef was detected:
-
#if BOOST_category_tag
-# define BOOST_category_tag_AVAILABLE
-#endif
+
#if BOOST_category_tag
+# define BOOST_category_tag_AVAILABLE
+#endif
@@ -1361,7 +1723,7 @@ the fallback to minimally indicate that the predef was detected:
-
#define BOOST_category_tag_NAME "Name"
+
#define BOOST_category_tag_NAME "Name"
@@ -1371,7 +1733,7 @@ to generate the needed testing code.
@@ -1383,8 +1745,8 @@ to create informational output:
-
#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST ( BOOST_category_tag , BOOST_category_tag_NAME )
+
#include <boost/predef/detail/test.h>
+ BOOST_PREDEF_DECLARE_TEST ( BOOST_category_tag , BOOST_category_tag_NAME )
@@ -1405,14 +1767,14 @@ 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
+
#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
@@ -1421,10 +1783,10 @@ the detection:
-
#if BOOST_category_tag
-# define BOOST_category_tag_AVAILABLE
-# include <boost/predef/detail/CATEGORY_detected.h>
-#endif
+
#if BOOST_category_tag
+# define BOOST_category_tag_AVAILABLE
+# include <boost/predef/detail/CATEGORY_detected.h>
+#endif
@@ -1446,13 +1808,13 @@ define either the base compiler predef BOOST_COMP_compiler
or the a
-
#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
+
#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
@@ -1460,16 +1822,16 @@ define either the base compiler predef BOOST_COMP_compiler
or the a
-
#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
+
#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
@@ -1480,7 +1842,7 @@ define either the base compiler predef BOOST_COMP_compiler
or the a
-
#include <boost/predef/make.h>
+
#include <boost/predef/make.h>
@@ -1491,7 +1853,7 @@ and defined as:
-
#define BOOST_COMP_EDG BOOST_PREDEF_MAKE_N_N_N(__EDG_VERSION__)
+
#define BOOST_COMP_EDG BOOST_PREDEF_MAKE_N_N_N(__EDG_VERSION__)
@@ -5767,16 +6129,16 @@ architecture.
-
#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 ;
-}
+
#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 ;
+}
@@ -5792,16 +6154,16 @@ version number of the most recent SIMD extension detected for the architecture.<
-
#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 ;
-}
+
#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 ;
+}
@@ -5823,17 +6185,17 @@ version numbers.
-
#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 ;
-}
+
#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 ;
+}
@@ -5842,17 +6204,17 @@ 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 ;
-}
+
#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 ;
+}
@@ -6529,7 +6891,7 @@ the
wordsize.h
header will also include all the architecture header
4.8.3. BOOST_PREDEF_WORKAROUND
-
BOOST_PREDEF_WORKAROUND ( symbol , comp , major , minor , patch )
+
BOOST_PREDEF_WORKAROUND ( symbol , comp , major , minor , patch )
@@ -6537,9 +6899,9 @@ the wordsize.h
header will also include all the architecture header
-
#if BOOST_PREDEF_WORKAROUND(BOOST_COMP_CLANG,<,3,0,0)
- // Workaround for old clang compilers..
-#endif
+
#if BOOST_PREDEF_WORKAROUND(BOOST_COMP_CLANG,<,3,0,0)
+ // Workaround for old clang compilers..
+#endif
@@ -6555,7 +6917,7 @@ is undefine this expand to test the given
symbol
version value with
4.8.4. BOOST_PREDEF_TESTED_AT
-
BOOST_PREDEF_TESTED_AT ( symbol , major , minor , patch )
+
BOOST_PREDEF_TESTED_AT ( symbol , major , minor , patch )
@@ -6563,9 +6925,9 @@ is undefine this expand to test the given symbol
version value with
-
#if BOOST_PREDEF_TESTED_AT(BOOST_COMP_CLANG,3,5,0)
- // Needed for clang, and last checked for 3.5.0.
-#endif
+
#if BOOST_PREDEF_TESTED_AT(BOOST_COMP_CLANG,3,5,0)
+ // Needed for clang, and last checked for 3.5.0.
+#endif
@@ -6602,7 +6964,7 @@ defined.
4.9.1. BOOST_VERSION_NUMBER
-
BOOST_VERSION_NUMBER ( major , minor , patch )
+
BOOST_VERSION_NUMBER ( major , minor , patch )
@@ -6641,7 +7003,7 @@ are truncated (modulo).
-
BOOST_VERSION_NUMBER_MAJOR ( N ), BOOST_VERSION_NUMBER_MINOR ( N ), BOOST_VERSION_NUMBER_PATCH ( N )
+
BOOST_VERSION_NUMBER_MAJOR ( N ), BOOST_VERSION_NUMBER_MINOR ( N ), BOOST_VERSION_NUMBER_PATCH ( N )
@@ -6808,7 +7170,7 @@ Otherwise the index of the first false expression is returned.
-
predef-definition [ relational-operator version-value ]
+
predef-definition [ relational-operator version-value ]
@@ -6831,7 +7193,7 @@ which case it is equivalent to:
-
predef-definition > 0.0.0
+
predef-definition > 0.0.0
@@ -6845,12 +7207,12 @@ version information available in Predef. The basic use is simple:
-
import path-to-predef-src/tools/check/predef
- : check require
- : predef-check predef-require ;
+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" ] ;
+exe my_windows_program : windows_source.cpp
+ : [ predef-require "BOOST_OS_WINDOWS" ] ;
@@ -6861,12 +7223,12 @@ For example:
-
import path-to-predef-src/tools/check/predef
- : check require
- : predef-check predef-require ;
+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"] ;
+lib my_special_lib : source.cpp
+ : [ predef-require "BOOST_OS_WINDOWS != 0" "BOOST_OS_VMS != 0"] ;
@@ -6876,10 +7238,10 @@ not Windows or VMS. The requires
rule is a special case of the
-
rule require ( expressions + : language ? )
-{
- return [ check $(expressions) : $(language) : : <build> no ] ;
-}
+
rule require ( expressions + : language ? )
+{
+ return [ check $(expressions) : $(language) : : <build>no ] ;
+}
@@ -6888,12 +7250,12 @@ to for more complex checks:
-
import path-to-predef-src/tools/check/predef
- : check require
- : predef-check predef-require ;
+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"] ;
+lib my_special_lib : source.cpp
+ : [ predef-require "BOOST_OS_WINDOWS" or "BOOST_OS_VMS"] ;
@@ -6903,7 +7265,7 @@ for the check
rule is:
-
rule check ( expressions + : language ? : true-properties * : false-properties * )
+
rule check ( expressions + : language ? : true-properties * : false-properties * )
@@ -6915,14 +7277,14 @@ features in your programs:
-
import path-to-predef-src/tools/check/predef
- : check require
- : predef-check predef-require ;
+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 ] ;
+exe my_special_exe : source.cpp
+ : [ predef-check "BOOST_OS_WINDOWS == 0"
+ : : <define>ENABLE_WMF=0
+ : <define>ENABLE_WMF=1 ] ;
@@ -6938,7 +7300,23 @@ expressions. It defaults to "c++", but can be any of: "c", "cpp",
6. History
-
6.1. 1.13
+
6.1. 1.13.1
+
+
+
+
6.2. 1.13
@@ -6957,7 +7335,7 @@ expressions. It defaults to "c++", but can be any of: "c", "cpp",
-
6.2. 1.12
+
6.3. 1.12
@@ -6986,7 +7364,7 @@ Initial implementation inspired by submission from Mikhail Komarov.
-
6.3. 1.11
+
6.4. 1.11
@@ -7014,7 +7392,7 @@ Initial implementation inspired by submission from Mikhail Komarov.
-
6.4. 1.10
+
6.5. 1.10
@@ -7039,7 +7417,7 @@ removed in a future release.
-
6.5. 1.9
+
6.6. 1.9
@@ -7052,7 +7430,7 @@ removed in a future release.
-
6.6. 1.8
+
6.7. 1.8
@@ -7074,7 +7452,7 @@ removed in a future release.
-
6.7. 1.7
+
6.8. 1.7
@@ -7090,7 +7468,7 @@ removed in a future release.
-
6.8. 1.6
+
6.9. 1.6
@@ -7114,7 +7492,7 @@ Baratov)
-
6.9. 1.5
+
6.10. 1.5
@@ -7133,7 +7511,7 @@ version instead of the varied product versions.
-
6.10. 1.4.1
+
6.11. 1.4.1
@@ -7146,7 +7524,7 @@ version instead of the varied product versions.
-
6.11. 1.4
+
6.12. 1.4
@@ -7167,7 +7545,7 @@ use cases. And changed the BBv2 check support to use compile only checks.
-
6.12. 1.3
+
6.13. 1.3
@@ -7192,7 +7570,7 @@ use cases. And changed the BBv2 check support to use compile only checks.
-
6.13. 1.2
+
6.14. 1.2
@@ -7216,7 +7594,7 @@ checks.
-
6.14. 1.1
+
6.15. 1.1
-
Copyright 2005-2020 Rene Rivera; Copyright 2015 Charly Chevalier; Copyright 2015 Joel Falcou
+
Copyright 2005-2021 René Ferdinand Rivera Morell; Copyright 2015 Charly Chevalier; Copyright 2015 Joel Falcou
-