mirror of
https://github.com/boostorg/system.git
synced 2025-12-26 08:48:07 +01:00
Compare commits
77 Commits
boost-1.65
...
feature/co
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d1f3d3b349 | ||
|
|
6ea02e2668 | ||
|
|
0433e561b5 | ||
|
|
aec8d9056d | ||
|
|
35e3e22c7e | ||
|
|
7b94454e7c | ||
|
|
0b48bb8166 | ||
|
|
a413220f8d | ||
|
|
9f5272fa61 | ||
|
|
19d5bf5f04 | ||
|
|
9f5cbe223c | ||
|
|
8cc57370ca | ||
|
|
42f2dbc32e | ||
|
|
a14074bafc | ||
|
|
ca5357699a | ||
|
|
22189fce95 | ||
|
|
0b18289a85 | ||
|
|
587ceaf739 | ||
|
|
8416ba067f | ||
|
|
3b988e278b | ||
|
|
6e87e44858 | ||
|
|
77817d8847 | ||
|
|
fe28fa163c | ||
|
|
653f132147 | ||
|
|
3ee2c53cbf | ||
|
|
61b4d8ef24 | ||
|
|
3ba40116fe | ||
|
|
ecb77edb81 | ||
|
|
d837670627 | ||
|
|
8e631c9afd | ||
|
|
7f98fa58eb | ||
|
|
5866fbb2b2 | ||
|
|
f5f3652f30 | ||
|
|
5f9b5d70d1 | ||
|
|
f89fe0ea77 | ||
|
|
b494f307b5 | ||
|
|
344df6c0a0 | ||
|
|
d2fdd3637a | ||
|
|
d0b3f59e63 | ||
|
|
ef256b927b | ||
|
|
83ddde6b78 | ||
|
|
fe55a4a963 | ||
|
|
de5a0cf3ca | ||
|
|
7b6dcf6ac6 | ||
|
|
d28c6ff128 | ||
|
|
f8ef12bcc4 | ||
|
|
c3da8661dc | ||
|
|
f69e195aaf | ||
|
|
d0c6aae2b9 | ||
|
|
706659a97f | ||
|
|
120860c397 | ||
|
|
e367d65b6e | ||
|
|
5e5cd0fda5 | ||
|
|
a4955ec9c1 | ||
|
|
0daba59730 | ||
|
|
9cc189382d | ||
|
|
41c43b6129 | ||
|
|
16fc70c76f | ||
|
|
a4b67129ff | ||
|
|
81619e13c3 | ||
|
|
41e0404847 | ||
|
|
829a1320a7 | ||
|
|
1fab2e71cc | ||
|
|
54de17d886 | ||
|
|
855fc96010 | ||
|
|
fe1991c624 | ||
|
|
cd38d2f778 | ||
|
|
49e2267c3e | ||
|
|
e039a454cf | ||
|
|
1bb5b95ebd | ||
|
|
c493242855 | ||
|
|
b6ef4ad220 | ||
|
|
efe849862f | ||
|
|
d0fe891bb3 | ||
|
|
6087f1c529 | ||
|
|
d8d71216e9 | ||
|
|
c62bbe9205 |
320
.travis.yml
320
.travis.yml
@@ -1,4 +1,4 @@
|
||||
# Copyright 2016 Peter Dimov
|
||||
# Copyright 2016, 2017, 2018 Peter Dimov
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
@@ -8,14 +8,11 @@ sudo: false
|
||||
|
||||
python: "2.7"
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- develop
|
||||
- /feature\/.*/
|
||||
|
||||
env:
|
||||
matrix:
|
||||
@@ -28,10 +25,32 @@ matrix:
|
||||
|
||||
include:
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++ CXXSTD=c++03
|
||||
compiler: g++
|
||||
env: TOOLSET=gcc COMPILER=g++ CXXSTD=03,11
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=c++03
|
||||
compiler: g++-4.4
|
||||
env: TOOLSET=gcc COMPILER=g++-4.4 CXXSTD=98,0x
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.4
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
compiler: g++-4.6
|
||||
env: TOOLSET=gcc COMPILER=g++-4.6 CXXSTD=03,0x
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
compiler: g++-4.7
|
||||
env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
@@ -40,34 +59,17 @@ matrix:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.7
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=c++03
|
||||
compiler: g++-4.8
|
||||
env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=03,11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.8
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.8
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++03
|
||||
compiler: g++-4.9
|
||||
env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=03,11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
@@ -76,16 +78,8 @@ matrix:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.9
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++03
|
||||
compiler: g++-5
|
||||
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
@@ -94,34 +88,8 @@ matrix:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-5
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++14
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-5
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-5
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++03
|
||||
compiler: g++-6
|
||||
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
@@ -130,36 +98,8 @@ matrix:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++14
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: trusty
|
||||
compiler: g++-7
|
||||
env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++03
|
||||
env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
@@ -168,9 +108,8 @@ matrix:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: trusty
|
||||
compiler: g++-7
|
||||
env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++11
|
||||
env: UBSAN=1 TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17 UBSAN_OPTIONS=print_stacktrace=1
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
@@ -179,35 +118,40 @@ matrix:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: trusty
|
||||
compiler: g++-7
|
||||
env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++14
|
||||
compiler: clang++
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11
|
||||
|
||||
- os: linux
|
||||
compiler: /usr/bin/clang++
|
||||
env: TOOLSET=clang COMPILER=/usr/bin/clang++ CXXSTD=03,11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-7
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- clang-3.3
|
||||
|
||||
- os: linux
|
||||
dist: trusty
|
||||
compiler: g++-7
|
||||
env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++17
|
||||
compiler: /usr/bin/clang++
|
||||
env: TOOLSET=clang COMPILER=/usr/bin/clang++ CXXSTD=03,11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-7
|
||||
- clang-3.4
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-3.5
|
||||
env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.5
|
||||
- libstdc++-4.9-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.5
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=c++03
|
||||
compiler: clang++-3.6
|
||||
env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
@@ -217,17 +161,8 @@ matrix:
|
||||
- llvm-toolchain-precise-3.6
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.6
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=c++03
|
||||
compiler: clang++-3.7
|
||||
env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
@@ -237,154 +172,89 @@ matrix:
|
||||
- llvm-toolchain-precise-3.7
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.7
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.7
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++03
|
||||
compiler: clang++-3.8
|
||||
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.8
|
||||
- libstdc++-4.9-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.8
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.8
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.8
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++14
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.8
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.8
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.8
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.8
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++03
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.9
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.9
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.9
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.9
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++14
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.9
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.9
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++1z
|
||||
compiler: clang++-3.9
|
||||
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.9
|
||||
- libstdc++-4.9-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.9
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-4.0
|
||||
env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=c++03
|
||||
env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-4.0
|
||||
- libstdc++-4.9-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-trusty-4.0
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-4.0
|
||||
env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=c++11
|
||||
compiler: clang++-5.0
|
||||
env: TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-4.0
|
||||
- clang-5.0
|
||||
- libstdc++-4.9-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-trusty-4.0
|
||||
- llvm-toolchain-trusty-5.0
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-4.0
|
||||
env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=c++14
|
||||
compiler: clang++-5.0
|
||||
env: UBSAN=1 TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03,11,14,1z UBSAN_OPTIONS=print_stacktrace=1
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-4.0
|
||||
- clang-5.0
|
||||
- libstdc++-4.9-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-trusty-4.0
|
||||
- llvm-toolchain-trusty-5.0
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-4.0
|
||||
env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=c++1z
|
||||
compiler: clang++-libc++
|
||||
env: TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-4.0
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-trusty-4.0
|
||||
- libc++-dev
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-libc++
|
||||
env: UBSAN=1 TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=03,11,14,1z UBSAN_OPTIONS=print_stacktrace=1
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- libc++-dev
|
||||
|
||||
- os: osx
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03
|
||||
|
||||
- os: osx
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11
|
||||
|
||||
- os: osx
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14
|
||||
|
||||
- os: osx
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z
|
||||
compiler: clang++
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
|
||||
|
||||
install:
|
||||
- BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
|
||||
- cd ..
|
||||
- git clone -b $TRAVIS_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
|
||||
- git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
|
||||
- cd boost-root
|
||||
- git submodule update --init tools/build
|
||||
- git submodule update --init libs/config
|
||||
@@ -396,8 +266,8 @@ install:
|
||||
|
||||
script:
|
||||
- |-
|
||||
echo "using $TOOLSET : : $COMPILER : <cxxflags>-std=$CXXSTD ;" > ~/user-config.jam
|
||||
- ./b2 libs/system/test toolset=$TOOLSET
|
||||
echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
|
||||
- ./b2 -j3 libs/system/test toolset=$TOOLSET cxxstd=$CXXSTD variant=debug,release ${UBSAN:+cxxflags=-fsanitize=undefined cxxflags=-fno-sanitize-recover=undefined linkflags=-fsanitize=undefined define=UBSAN=1 debug-symbols=on}
|
||||
|
||||
notifications:
|
||||
email:
|
||||
|
||||
58
appveyor.yml
58
appveyor.yml
@@ -10,6 +10,7 @@ branches:
|
||||
only:
|
||||
- master
|
||||
- develop
|
||||
- /feature\/.*/
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
@@ -21,38 +22,40 @@ environment:
|
||||
TOOLSET: msvc-11.0
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
TOOLSET: msvc-12.0
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
ADDPATH: C:\cygwin\bin;
|
||||
TOOLSET: gcc
|
||||
CXXFLAGS: cxxflags=-std=c++03
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
ADDPATH: C:\cygwin\bin;
|
||||
TOOLSET: gcc
|
||||
CXXFLAGS: cxxflags=-std=c++11
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
ADDPATH: C:\mingw\bin;
|
||||
TOOLSET: gcc
|
||||
CXXFLAGS: cxxflags=-std=c++03
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
ADDPATH: C:\mingw\bin;
|
||||
TOOLSET: gcc
|
||||
CXXFLAGS: cxxflags=-std=c++11
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
ADDPATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;
|
||||
TOOLSET: gcc
|
||||
CXXFLAGS: cxxflags=-std=c++03
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
ADDPATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;
|
||||
TOOLSET: gcc
|
||||
CXXFLAGS: cxxflags=-std=c++11
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||
TOOLSET: msvc-14.0
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
TOOLSET: msvc-14.1
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
TOOLSET: msvc-14.1
|
||||
CXXSTD: 17
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
ADDPATH: C:\cygwin\bin;
|
||||
TOOLSET: gcc
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
ADDPATH: C:\cygwin\bin;
|
||||
TOOLSET: gcc
|
||||
CXXSTD: 03,11
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
ADDPATH: C:\mingw\bin;
|
||||
TOOLSET: gcc
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
ADDPATH: C:\mingw\bin;
|
||||
TOOLSET: gcc
|
||||
CXXSTD: 03,11
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
ADDPATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;
|
||||
TOOLSET: gcc
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
ADDPATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;
|
||||
TOOLSET: gcc
|
||||
CXXSTD: 03,11
|
||||
|
||||
install:
|
||||
- set BOOST_BRANCH=develop
|
||||
- if "%APPVEYOR_REPO_BRANCH%" == "master" set BOOST_BRANCH=master
|
||||
- cd ..
|
||||
- git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
|
||||
- git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
|
||||
- cd boost-root
|
||||
- git submodule update --init tools/build
|
||||
- git submodule update --init libs/config
|
||||
@@ -60,10 +63,11 @@ install:
|
||||
- xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\system
|
||||
- python tools/boostdep/depinst/depinst.py system
|
||||
- cmd /c bootstrap
|
||||
- b2 headers
|
||||
- b2 -d0 headers
|
||||
|
||||
build: off
|
||||
|
||||
test_script:
|
||||
- PATH=%ADDPATH%%PATH%
|
||||
- b2 libs/system/test toolset=%TOOLSET% %CXXFLAGS%
|
||||
- if not "%CXXSTD%" == "" set CXXSTD=cxxstd=%CXXSTD%
|
||||
- b2 -j3 libs/system/test toolset=%TOOLSET% variant=debug,release %CXXSTD%
|
||||
|
||||
@@ -60,8 +60,7 @@
|
||||
<a href="#Class-error_condition-constructors">Class <code>error_condition</code> constructors</a><br>
|
||||
<a href="#Class-error_condition-modifiers">Class <code>error_condition</code> modifiers</a><br>
|
||||
<a href="#Class-error_condition-observers">Class <code>error_condition</code> observers</a><br>
|
||||
<a href="#throws-object"><code>throws</code> object</a><br>
|
||||
<a href="#Semantics-of-throws">Semantics of <code>throws</code> object</a><br>
|
||||
<a href="#Function-boost-throws">Function <code>boost::throws()</code></a><br>
|
||||
<a href="#Non-member-functions">Non-member functions</a><br>
|
||||
<a href="#Header-system_error">Header <boost/system/system_error.hpp></a><br>
|
||||
<a href="#Class-system_error">Class <code>system_error</code></a><br>
|
||||
@@ -81,7 +80,7 @@ noexcept</code> and explicit conversion operators. The actual implementation
|
||||
uses C++11 features only when they are available, and otherwise falls back on
|
||||
C++03 features.</p>
|
||||
<h2><a name="Macros">Macros</a></h2>
|
||||
<p>Users may defined the following macros if desired. Sensible defaults are
|
||||
<p>Users may define the following macros if desired. Sensible defaults are
|
||||
provided, so users may ignore these macros if they prefer.</p>
|
||||
<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" height="368">
|
||||
<tr>
|
||||
@@ -110,17 +109,16 @@ provided, so users may ignore these macros if they prefer.</p>
|
||||
facility.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" height="32"><code>BOOST_SYSTEM_NO_DEPRECATED</code></td>
|
||||
<td valign="top" height="32"><code>BOOST_SYSTEM_ENABLE_DEPRECATED</code></td>
|
||||
<td valign="top" height="32">Not defined.</td>
|
||||
<td valign="top" height="32">Deprecated features are excluded.</td>
|
||||
<td valign="top" height="32">Deprecated features are provided for compatibility.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2><a name="Deprecated-names">Deprecated names</a></h2>
|
||||
<p>In the process of adding Boost.System to C++0x standard library, the C++
|
||||
committee changed some
|
||||
names. To ease transition, Boost.System deprecates the old
|
||||
names, but continues to provide them unless macro <code>BOOST_SYSTEM_NO_DEPRECATED</code>
|
||||
is defined.</p>
|
||||
<p>In the process of adding Boost.System to the C++11 standard library, the
|
||||
C++ committee changed some names. To ease transition, Boost.System deprecates
|
||||
the old names, but will provide them when the macro
|
||||
<code>BOOST_SYSTEM_ENABLE_DEPRECATED</code> is defined.</p>
|
||||
<table border="1" cellpadding="5" cellspacing="1" style="border-collapse: collapse" bordercolor="#111111">
|
||||
<tr>
|
||||
<td><b><i>Old usage, now deprecated</i></b></td>
|
||||
@@ -316,8 +314,12 @@ fixed by globally adding () to these names to turn them into function calls.</p>
|
||||
operator<<( basic_ostream<charT,traits>& os, const error_code & ec );
|
||||
|
||||
size_t hash_value( const error_code & ec );
|
||||
}
|
||||
}</pre>
|
||||
|
||||
} // namespace system
|
||||
|
||||
system::error_code & throws();
|
||||
|
||||
} // namespace boost</pre>
|
||||
</blockquote>
|
||||
<p>The value of each<code> errc_t</code> constant shall be the same as the
|
||||
value of the <code><cerrno></code> macro shown in the above synopsis.</p>
|
||||
@@ -644,36 +646,6 @@ observers</a></h3>
|
||||
<code>int</code>) that can occur with <code>bool</code> are not allowed,
|
||||
eliminating some sources of user error. One possible implementation choice for
|
||||
this type is pointer to member. <i>--end note</i> <i>]</i></p>
|
||||
</blockquote>
|
||||
<h2><a name="throws-object"><code>throws</code> object</a></h2>
|
||||
<pre>extern error_code throws;</pre>
|
||||
<p>The predefined <code>error_code</code> object <code>throws</code> is supplied
|
||||
for use as a "throw on error" tag.</p>
|
||||
<h2><a name="Semantics-of-throws">Semantics of <code>throws</code></a> object</h2>
|
||||
<p>Functions that specify an argument in the form <code>error_code& ec=throws</code>,
|
||||
with appropriate namespace qualifiers, have the following error handling
|
||||
semantics:</p>
|
||||
<blockquote>
|
||||
<p><i>Postconditions:</i></p>
|
||||
<blockquote>
|
||||
<p>If <code>&ec != &throws</code> and an error occurred:</p>
|
||||
<ul>
|
||||
<li> <code>ec.value()</code> returns the implementation specific error
|
||||
number for the particular error that occurred.</li>
|
||||
<li><code>ec.category()</code> returns the <code>
|
||||
<a href="#Class-error_category">error_category</a></code> for <code>ec.value()</code>.</li>
|
||||
</ul>
|
||||
<p>if <code>&ec != &throws</code> and an error did not occur, <code>ec.clear()</code>.</p>
|
||||
</blockquote>
|
||||
<p><i>Throws:</i></p>
|
||||
<blockquote>
|
||||
<p>If an error occurs and <code>&ec == &throws</code>, throws an exception of type
|
||||
<code><a href="#Class-system_error">system_error</a></code> or of a type
|
||||
derived from <code><a href="#Class-system_error">system_error</a></code>. The
|
||||
exception's <code>code()</code> member function returns a reference to an
|
||||
<code>error_code</code> object with the behavior specified in <i>
|
||||
Postconditions</i>.</p>
|
||||
</blockquote>
|
||||
</blockquote>
|
||||
<h2><a name="Non-member-functions">Non-member functions</a></h2>
|
||||
<pre>bool operator==( const error_code & lhs, const error_code & rhs ) noexcept;</pre>
|
||||
@@ -736,6 +708,37 @@ bool operator!=( const error_condition & condition, const error_code & c
|
||||
<p><i>Returns: </i> A hash value representing <code>ec</code>.</p>
|
||||
</blockquote>
|
||||
|
||||
<h2><a name="Function-boost-throws">Function <code>boost::throws()</code></a></h2>
|
||||
|
||||
<pre>system::error_code& throws();</pre>
|
||||
<blockquote>
|
||||
<p><i>Returns:</i> A <code>system::error_code</code> reference
|
||||
for use in some user-defined function signature as a "throw on error" tag.</p>
|
||||
<p><i>Remark:</i> The only valid use for the returned reference is to test its
|
||||
address for equality or inequality to the address of the reference returned by
|
||||
another call to throws(). The returned reference itself has been poisoned so
|
||||
that an attempt to dereference it will fail.</p>
|
||||
<p>[<i>Example: </i>Example of a function that uses the <code>throws()</code> idiom:</p>
|
||||
<blockquote>
|
||||
<pre>int divide(int dividend, int divisor,
|
||||
boost::system::error_code& ec = boost::throws())
|
||||
{
|
||||
if (divisor == 0) // is there an error?
|
||||
{
|
||||
if (&ec == &boost::throws()) // throw on error
|
||||
throw "oops!"; // whatever exception you prefer
|
||||
ec = error_code(EDOM, generic_category()); // report error via error_code
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (&ec != &boost::throws()) // error reporting via error_code
|
||||
ec.clear();
|
||||
return dividend / divisor;
|
||||
}</pre>
|
||||
</blockquote>
|
||||
<p>— <i>end Example</i>]</p>
|
||||
</blockquote>
|
||||
|
||||
<h2><a name="Header-system_error">Header <boost/system/system_error.hpp></a></h2>
|
||||
|
||||
<h3><a name="Class-system_error">Class <code>
|
||||
@@ -818,7 +821,7 @@ application program interfaces.</p>
|
||||
<hr>
|
||||
|
||||
<p>Revised
|
||||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%B %d, %Y" startspan -->January 06, 2014<!--webbot bot="Timestamp" endspan i-checksum="31400" --> </font>
|
||||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%B %d, %Y" startspan -->September 07, 2017<!--webbot bot="Timestamp" endspan i-checksum="38006" --> </font>
|
||||
</p>
|
||||
|
||||
<p><EFBFBD> Copyright Beman Dawes, 2006, 2007, 2008, 2013</p>
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
#include <cstring> // for strerror/strerror_r
|
||||
|
||||
# if defined( BOOST_WINDOWS_API )
|
||||
# include <boost/detail/winapi/error_codes.hpp>
|
||||
# include <boost/detail/winapi/error_handling.hpp>
|
||||
# include <boost/detail/winapi/character_code_conversion.hpp>
|
||||
# include <boost/winapi/error_codes.hpp>
|
||||
# include <boost/winapi/error_handling.hpp>
|
||||
# include <boost/winapi/character_code_conversion.hpp>
|
||||
# if !BOOST_PLAT_WINDOWS_RUNTIME
|
||||
# include <boost/system/detail/local_free_on_destruction.hpp>
|
||||
# endif
|
||||
@@ -35,39 +35,22 @@
|
||||
//--------------------------------------------------------------------------------------//
|
||||
namespace boost
|
||||
{
|
||||
namespace system
|
||||
{
|
||||
|
||||
namespace
|
||||
namespace system
|
||||
{
|
||||
|
||||
// standard error categories -------------------------------------------------------//
|
||||
namespace detail
|
||||
{
|
||||
|
||||
class generic_error_category : public error_category
|
||||
{
|
||||
public:
|
||||
generic_error_category(){}
|
||||
const char * name() const BOOST_SYSTEM_NOEXCEPT;
|
||||
std::string message( int ev ) const;
|
||||
};
|
||||
|
||||
class system_error_category : public error_category
|
||||
{
|
||||
public:
|
||||
system_error_category(){}
|
||||
const char * name() const BOOST_SYSTEM_NOEXCEPT;
|
||||
std::string message( int ev ) const;
|
||||
error_condition default_error_condition( int ev ) const BOOST_SYSTEM_NOEXCEPT;
|
||||
};
|
||||
#ifdef BOOST_ERROR_CODE_HEADER_ONLY
|
||||
# define BOOST_SYSTEM_DECL_ inline
|
||||
#else
|
||||
# define BOOST_SYSTEM_DECL_ BOOST_SYSTEM_DECL
|
||||
#endif
|
||||
|
||||
// generic_error_category implementation ---------------------------------//
|
||||
|
||||
const char * generic_error_category::name() const BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return "generic";
|
||||
}
|
||||
|
||||
std::string generic_error_category::message( int ev ) const
|
||||
BOOST_SYSTEM_DECL_ std::string generic_error_category::message( int ev ) const
|
||||
{
|
||||
using namespace boost::system::errc;
|
||||
#if defined(__PGI)
|
||||
@@ -154,19 +137,13 @@ namespace
|
||||
# endif
|
||||
|
||||
if ( sz > sizeof(buf) ) std::free( bp );
|
||||
sz = 0;
|
||||
return msg;
|
||||
# endif // else POSIX version of strerror_r
|
||||
# endif // else use strerror_r
|
||||
}
|
||||
// system_error_category implementation --------------------------------------------//
|
||||
|
||||
const char * system_error_category::name() const BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return "system";
|
||||
}
|
||||
|
||||
error_condition system_error_category::default_error_condition( int ev ) const
|
||||
BOOST_SYSTEM_DECL_ error_condition system_error_category::default_error_condition( int ev ) const
|
||||
BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
using namespace boost::system::errc;
|
||||
@@ -187,7 +164,7 @@ namespace
|
||||
|
||||
# if defined(BOOST_WINDOWS_API)
|
||||
|
||||
using namespace boost::detail::winapi; // for error codes
|
||||
using namespace boost::winapi; // for error codes
|
||||
|
||||
# endif
|
||||
|
||||
@@ -371,27 +348,27 @@ namespace
|
||||
|
||||
# if !defined( BOOST_WINDOWS_API )
|
||||
|
||||
std::string system_error_category::message( int ev ) const
|
||||
BOOST_SYSTEM_DECL_ std::string system_error_category::message( int ev ) const
|
||||
{
|
||||
return generic_category().message( ev );
|
||||
}
|
||||
# else
|
||||
|
||||
std::string system_error_category::message( int ev ) const
|
||||
BOOST_SYSTEM_DECL_ std::string system_error_category::message( int ev ) const
|
||||
{
|
||||
#if defined(UNDER_CE) || BOOST_PLAT_WINDOWS_RUNTIME || defined(BOOST_NO_ANSI_APIS)
|
||||
std::wstring buf(128, wchar_t());
|
||||
for (;;)
|
||||
{
|
||||
boost::detail::winapi::DWORD_ retval = boost::detail::winapi::FormatMessageW(
|
||||
boost::detail::winapi::FORMAT_MESSAGE_FROM_SYSTEM_ |
|
||||
boost::detail::winapi::FORMAT_MESSAGE_IGNORE_INSERTS_,
|
||||
boost::winapi::DWORD_ retval = boost::winapi::FormatMessageW(
|
||||
boost::winapi::FORMAT_MESSAGE_FROM_SYSTEM_ |
|
||||
boost::winapi::FORMAT_MESSAGE_IGNORE_INSERTS_,
|
||||
NULL,
|
||||
ev,
|
||||
boost::detail::winapi::MAKELANGID_(boost::detail::winapi::LANG_NEUTRAL_,
|
||||
boost::detail::winapi::SUBLANG_DEFAULT_), // Default language
|
||||
boost::winapi::MAKELANGID_(boost::winapi::LANG_NEUTRAL_,
|
||||
boost::winapi::SUBLANG_DEFAULT_), // Default language
|
||||
&buf[0],
|
||||
buf.size(),
|
||||
static_cast<boost::winapi::DWORD_>(buf.size()),
|
||||
NULL
|
||||
);
|
||||
|
||||
@@ -400,8 +377,8 @@ namespace
|
||||
buf.resize(retval);
|
||||
break;
|
||||
}
|
||||
else if (boost::detail::winapi::GetLastError() !=
|
||||
boost::detail::winapi::ERROR_INSUFFICIENT_BUFFER_)
|
||||
else if (boost::winapi::GetLastError() !=
|
||||
boost::winapi::ERROR_INSUFFICIENT_BUFFER_)
|
||||
{
|
||||
return std::string("Unknown error");
|
||||
}
|
||||
@@ -411,10 +388,16 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
int num_chars = (buf.size() + 1) * 2;
|
||||
boost::detail::winapi::LPSTR_ narrow_buffer =
|
||||
(boost::detail::winapi::LPSTR_)_alloca(num_chars);
|
||||
if (boost::detail::winapi::WideCharToMultiByte(boost::detail::winapi::CP_ACP_, 0,
|
||||
int num_chars = static_cast<int>(buf.size() + 1) * 2;
|
||||
|
||||
boost::winapi::LPSTR_ narrow_buffer =
|
||||
#if defined(__GNUC__)
|
||||
(boost::winapi::LPSTR_)__builtin_alloca(num_chars);
|
||||
#else
|
||||
(boost::winapi::LPSTR_)_alloca(num_chars);
|
||||
#endif
|
||||
|
||||
if (boost::winapi::WideCharToMultiByte(boost::winapi::CP_ACP_, 0,
|
||||
buf.c_str(), -1, narrow_buffer, num_chars, NULL, NULL) == 0)
|
||||
{
|
||||
return std::string("Unknown error");
|
||||
@@ -422,16 +405,16 @@ namespace
|
||||
|
||||
std::string str( narrow_buffer );
|
||||
#else
|
||||
boost::detail::winapi::LPVOID_ lpMsgBuf = 0;
|
||||
boost::detail::winapi::DWORD_ retval = boost::detail::winapi::FormatMessageA(
|
||||
boost::detail::winapi::FORMAT_MESSAGE_ALLOCATE_BUFFER_ |
|
||||
boost::detail::winapi::FORMAT_MESSAGE_FROM_SYSTEM_ |
|
||||
boost::detail::winapi::FORMAT_MESSAGE_IGNORE_INSERTS_,
|
||||
boost::winapi::LPVOID_ lpMsgBuf = 0;
|
||||
boost::winapi::DWORD_ retval = boost::winapi::FormatMessageA(
|
||||
boost::winapi::FORMAT_MESSAGE_ALLOCATE_BUFFER_ |
|
||||
boost::winapi::FORMAT_MESSAGE_FROM_SYSTEM_ |
|
||||
boost::winapi::FORMAT_MESSAGE_IGNORE_INSERTS_,
|
||||
NULL,
|
||||
ev,
|
||||
boost::detail::winapi::MAKELANGID_(boost::detail::winapi::LANG_NEUTRAL_,
|
||||
boost::detail::winapi::SUBLANG_DEFAULT_), // Default language
|
||||
(boost::detail::winapi::LPSTR_) &lpMsgBuf,
|
||||
boost::winapi::MAKELANGID_(boost::winapi::LANG_NEUTRAL_,
|
||||
boost::winapi::SUBLANG_DEFAULT_), // Default language
|
||||
(boost::winapi::LPSTR_) &lpMsgBuf,
|
||||
0,
|
||||
NULL
|
||||
);
|
||||
@@ -439,7 +422,7 @@ namespace
|
||||
if (retval == 0)
|
||||
return std::string("Unknown error");
|
||||
|
||||
std::string str(static_cast<boost::detail::winapi::LPCSTR_>(lpMsgBuf));
|
||||
std::string str(static_cast<boost::winapi::LPCSTR_>(lpMsgBuf));
|
||||
# endif
|
||||
while ( str.size()
|
||||
&& (str[str.size()-1] == '\n' || str[str.size()-1] == '\r') )
|
||||
@@ -450,10 +433,12 @@ namespace
|
||||
}
|
||||
# endif
|
||||
|
||||
} // unnamed namespace
|
||||
#undef BOOST_SYSTEM_DECL_
|
||||
|
||||
} // namespace detail
|
||||
|
||||
|
||||
# ifndef BOOST_SYSTEM_NO_DEPRECATED
|
||||
# ifdef BOOST_SYSTEM_ENABLE_DEPRECATED
|
||||
BOOST_SYSTEM_DECL error_code throws; // "throw on error" special error_code;
|
||||
// note that it doesn't matter if this
|
||||
// isn't initialized before use since
|
||||
@@ -461,23 +446,51 @@ namespace
|
||||
// address for comparison purposes
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_ERROR_CODE_HEADER_ONLY
|
||||
# define BOOST_SYSTEM_LINKAGE inline
|
||||
# else
|
||||
# define BOOST_SYSTEM_LINKAGE BOOST_SYSTEM_DECL
|
||||
# endif
|
||||
#if defined(BOOST_ERROR_CODE_HEADER_ONLY)
|
||||
|
||||
BOOST_SYSTEM_LINKAGE const error_category & system_category() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
static const system_error_category system_category_const;
|
||||
return system_category_const;
|
||||
}
|
||||
// defined in error_code.hpp
|
||||
|
||||
BOOST_SYSTEM_LINKAGE const error_category & generic_category() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
static const generic_error_category generic_category_const;
|
||||
return generic_category_const;
|
||||
}
|
||||
#elif defined(BOOST_SYSTEM_HAS_CONSTEXPR)
|
||||
|
||||
namespace detail
|
||||
{
|
||||
|
||||
BOOST_SYSTEM_REQUIRE_CONST_INIT BOOST_SYSTEM_DECL system_error_category system_category_instance;
|
||||
BOOST_SYSTEM_REQUIRE_CONST_INIT BOOST_SYSTEM_DECL generic_error_category generic_category_instance;
|
||||
|
||||
BOOST_SYSTEM_DECL const error_category & system_category_ncx() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return system_category_instance;
|
||||
}
|
||||
|
||||
BOOST_SYSTEM_DECL const error_category & generic_category_ncx() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return generic_category_instance;
|
||||
}
|
||||
|
||||
} // namespace detail
|
||||
|
||||
#else
|
||||
|
||||
namespace detail
|
||||
{
|
||||
|
||||
BOOST_SYSTEM_DECL const error_category & system_category_ncx() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
static const detail::system_error_category system_category_instance;
|
||||
return system_category_instance;
|
||||
}
|
||||
|
||||
BOOST_SYSTEM_DECL const error_category & generic_category_ncx() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
static const detail::generic_error_category generic_category_instance;
|
||||
return generic_category_instance;
|
||||
}
|
||||
|
||||
} // namespace detail
|
||||
|
||||
#endif
|
||||
|
||||
} // namespace system
|
||||
|
||||
} // namespace system
|
||||
} // namespace boost
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#ifndef BOOST_SYSTEM_LOCAL_FREE_ON_EXIT_HPP
|
||||
#define BOOST_SYSTEM_LOCAL_FREE_ON_EXIT_HPP
|
||||
|
||||
#include <boost/detail/winapi/local_memory.hpp>
|
||||
#include <boost/winapi/local_memory.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace system {
|
||||
@@ -26,7 +26,7 @@ public:
|
||||
|
||||
~local_free_on_destruction()
|
||||
{
|
||||
boost::detail::winapi::LocalFree(p_);
|
||||
boost::winapi::LocalFree(p_);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
// Copyright Beman Dawes 2006, 2007
|
||||
// Copyright Christoper Kohlhoff 2007
|
||||
// Copyright Peter Dimov 2017, 2018
|
||||
|
||||
// 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)
|
||||
@@ -38,6 +39,21 @@
|
||||
#define BOOST_SYSTEM_NOEXCEPT BOOST_NOEXCEPT
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_NO_CXX14_CONSTEXPR)
|
||||
# define BOOST_SYSTEM_HAS_CONSTEXPR
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && (__GNUC__ == 7 || __GNUC__ == 8) && __cplusplus >= 201700L
|
||||
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83835
|
||||
# undef BOOST_SYSTEM_HAS_CONSTEXPR
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_SYSTEM_HAS_CONSTEXPR)
|
||||
# define BOOST_SYSTEM_CONSTEXPR constexpr
|
||||
#else
|
||||
# define BOOST_SYSTEM_CONSTEXPR
|
||||
#endif
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace system
|
||||
@@ -144,7 +160,7 @@ namespace boost
|
||||
|
||||
} // namespace errc
|
||||
|
||||
# ifndef BOOST_SYSTEM_NO_DEPRECATED
|
||||
# ifdef BOOST_SYSTEM_ENABLE_DEPRECATED
|
||||
namespace posix = errc;
|
||||
namespace posix_error = errc;
|
||||
# endif
|
||||
@@ -185,29 +201,10 @@ namespace boost
|
||||
|
||||
// --------------------------------------------------------------------------------//
|
||||
|
||||
class error_category;
|
||||
|
||||
// predefined error categories ---------------------------------------------------//
|
||||
|
||||
#ifdef BOOST_ERROR_CODE_HEADER_ONLY
|
||||
inline const error_category & system_category() BOOST_SYSTEM_NOEXCEPT;
|
||||
inline const error_category & generic_category() BOOST_SYSTEM_NOEXCEPT;
|
||||
#else
|
||||
BOOST_SYSTEM_DECL const error_category & system_category() BOOST_SYSTEM_NOEXCEPT;
|
||||
BOOST_SYSTEM_DECL const error_category & generic_category() BOOST_SYSTEM_NOEXCEPT;
|
||||
#endif
|
||||
// deprecated synonyms ------------------------------------------------------------//
|
||||
|
||||
#ifndef BOOST_SYSTEM_NO_DEPRECATED
|
||||
inline const error_category & get_system_category() { return system_category(); }
|
||||
inline const error_category & get_generic_category() { return generic_category(); }
|
||||
inline const error_category & get_posix_category() { return generic_category(); }
|
||||
static const error_category & posix_category BOOST_ATTRIBUTE_UNUSED
|
||||
= generic_category();
|
||||
static const error_category & errno_ecat BOOST_ATTRIBUTE_UNUSED
|
||||
= generic_category();
|
||||
static const error_category & native_ecat BOOST_ATTRIBUTE_UNUSED
|
||||
= system_category();
|
||||
#ifdef BOOST_MSVC
|
||||
#pragma warning(push)
|
||||
// 'this' : used in base member initializer list
|
||||
#pragma warning(disable: 4355)
|
||||
#endif
|
||||
|
||||
// class error_category ------------------------------------------------//
|
||||
@@ -226,7 +223,7 @@ namespace boost
|
||||
|
||||
public:
|
||||
|
||||
explicit std_category( boost::system::error_category const * pc ): pc_( pc )
|
||||
BOOST_SYSTEM_CONSTEXPR explicit std_category( boost::system::error_category const * pc ): pc_( pc )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -252,7 +249,7 @@ namespace boost
|
||||
|
||||
public:
|
||||
|
||||
error_category() BOOST_SYSTEM_NOEXCEPT: std_cat_( this ) {}
|
||||
BOOST_SYSTEM_CONSTEXPR error_category() BOOST_SYSTEM_NOEXCEPT: std_cat_( this ) {}
|
||||
|
||||
operator std::error_category const & () const BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
@@ -277,7 +274,7 @@ namespace boost
|
||||
|
||||
public:
|
||||
|
||||
explicit std_category( boost::system::error_category const * pc ): pc_( pc )
|
||||
BOOST_SYSTEM_CONSTEXPR explicit std_category( boost::system::error_category const * pc ): pc_( pc )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -303,7 +300,7 @@ namespace boost
|
||||
|
||||
public:
|
||||
|
||||
error_category() BOOST_SYSTEM_NOEXCEPT: std_cat_( this ) {}
|
||||
BOOST_SYSTEM_CONSTEXPR error_category() BOOST_SYSTEM_NOEXCEPT: std_cat_( this ) {}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -319,15 +316,183 @@ namespace boost
|
||||
BOOST_SYSTEM_NOEXCEPT;
|
||||
inline virtual bool equivalent( const error_code & code,
|
||||
int condition ) const BOOST_SYSTEM_NOEXCEPT;
|
||||
|
||||
bool operator==(const error_category & rhs) const BOOST_SYSTEM_NOEXCEPT
|
||||
{ return this == &rhs; }
|
||||
bool operator!=(const error_category & rhs) const BOOST_SYSTEM_NOEXCEPT
|
||||
{ return this != &rhs; }
|
||||
bool operator<( const error_category & rhs ) const BOOST_SYSTEM_NOEXCEPT
|
||||
{ return std::less<const error_category*>()( this, &rhs ); }
|
||||
};
|
||||
|
||||
BOOST_SYSTEM_CONSTEXPR inline bool operator==( const error_category & lhs,
|
||||
const error_category & rhs ) BOOST_SYSTEM_NOEXCEPT
|
||||
{ return &lhs == &rhs; }
|
||||
|
||||
BOOST_SYSTEM_CONSTEXPR inline bool operator!=( const error_category & lhs,
|
||||
const error_category & rhs ) BOOST_SYSTEM_NOEXCEPT
|
||||
{ return &lhs != &rhs; }
|
||||
|
||||
inline bool operator<( const error_category & lhs,
|
||||
const error_category & rhs ) BOOST_SYSTEM_NOEXCEPT
|
||||
{ return std::less<const error_category*>()( &lhs, &rhs ); }
|
||||
|
||||
#ifdef BOOST_MSVC
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
// predefined error categories ---------------------------------------------------//
|
||||
|
||||
namespace detail
|
||||
{
|
||||
|
||||
#ifdef BOOST_ERROR_CODE_HEADER_ONLY
|
||||
# define BOOST_SYSTEM_DECL_
|
||||
#else
|
||||
# define BOOST_SYSTEM_DECL_ BOOST_SYSTEM_DECL
|
||||
#endif
|
||||
|
||||
class generic_error_category: public error_category
|
||||
{
|
||||
public:
|
||||
|
||||
// clang++ 3.8 and below: initialization of const object
|
||||
// requires a user-provided default constructor
|
||||
BOOST_SYSTEM_CONSTEXPR generic_error_category() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
}
|
||||
|
||||
const char * name() const BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return "generic";
|
||||
}
|
||||
|
||||
BOOST_SYSTEM_DECL_ std::string message( int ev ) const;
|
||||
};
|
||||
|
||||
class system_error_category: public error_category
|
||||
{
|
||||
public:
|
||||
|
||||
BOOST_SYSTEM_CONSTEXPR system_error_category() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
}
|
||||
|
||||
const char * name() const BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return "system";
|
||||
}
|
||||
|
||||
BOOST_SYSTEM_DECL_ std::string message( int ev ) const;
|
||||
BOOST_SYSTEM_DECL_ error_condition default_error_condition( int ev ) const BOOST_SYSTEM_NOEXCEPT;
|
||||
};
|
||||
|
||||
#undef BOOST_SYSTEM_DECL_
|
||||
|
||||
} // namespace detail
|
||||
|
||||
#define BOOST_SYSTEM_REQUIRE_CONST_INIT
|
||||
|
||||
#if defined(__has_cpp_attribute)
|
||||
#if __has_cpp_attribute(clang::require_constant_initialization)
|
||||
# undef BOOST_SYSTEM_REQUIRE_CONST_INIT
|
||||
# define BOOST_SYSTEM_REQUIRE_CONST_INIT [[clang::require_constant_initialization]]
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_ERROR_CODE_HEADER_ONLY)
|
||||
|
||||
# if defined(BOOST_SYSTEM_HAS_CONSTEXPR)
|
||||
|
||||
namespace detail
|
||||
{
|
||||
|
||||
template<class T> struct cat_holder
|
||||
{
|
||||
static system_error_category system_category_instance;
|
||||
static generic_error_category generic_category_instance;
|
||||
};
|
||||
|
||||
template<class T> BOOST_SYSTEM_REQUIRE_CONST_INIT system_error_category cat_holder<T>::system_category_instance;
|
||||
template<class T> BOOST_SYSTEM_REQUIRE_CONST_INIT generic_error_category cat_holder<T>::generic_category_instance;
|
||||
|
||||
} // namespace detail
|
||||
|
||||
constexpr const error_category & system_category() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return detail::cat_holder<void>::system_category_instance;
|
||||
}
|
||||
|
||||
constexpr const error_category & generic_category() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return detail::cat_holder<void>::generic_category_instance;
|
||||
}
|
||||
|
||||
# else
|
||||
|
||||
inline const error_category & system_category() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
static const detail::system_error_category system_category_instance;
|
||||
return system_category_instance;
|
||||
}
|
||||
|
||||
inline const error_category & generic_category() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
static const detail::generic_error_category generic_category_instance;
|
||||
return generic_category_instance;
|
||||
}
|
||||
|
||||
# endif
|
||||
|
||||
#elif defined(BOOST_SYSTEM_HAS_CONSTEXPR)
|
||||
|
||||
namespace detail
|
||||
{
|
||||
|
||||
extern system_error_category system_category_instance;
|
||||
extern generic_error_category generic_category_instance;
|
||||
|
||||
} // namespace detail
|
||||
|
||||
constexpr const error_category & system_category() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return detail::system_category_instance;
|
||||
}
|
||||
|
||||
constexpr const error_category & generic_category() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return detail::generic_category_instance;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
namespace detail
|
||||
{
|
||||
|
||||
BOOST_SYSTEM_DECL const error_category & system_category_ncx() BOOST_SYSTEM_NOEXCEPT;
|
||||
BOOST_SYSTEM_DECL const error_category & generic_category_ncx() BOOST_SYSTEM_NOEXCEPT;
|
||||
|
||||
} // namespace detail
|
||||
|
||||
inline const error_category & system_category() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return detail::system_category_ncx();
|
||||
}
|
||||
|
||||
inline const error_category & generic_category() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return detail::generic_category_ncx();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// deprecated synonyms ------------------------------------------------------------//
|
||||
|
||||
#ifdef BOOST_SYSTEM_ENABLE_DEPRECATED
|
||||
inline const error_category & get_system_category() { return system_category(); }
|
||||
inline const error_category & get_generic_category() { return generic_category(); }
|
||||
inline const error_category & get_posix_category() { return generic_category(); }
|
||||
static const error_category & posix_category BOOST_ATTRIBUTE_UNUSED
|
||||
= generic_category();
|
||||
static const error_category & errno_ecat BOOST_ATTRIBUTE_UNUSED
|
||||
= generic_category();
|
||||
static const error_category & native_ecat BOOST_ATTRIBUTE_UNUSED
|
||||
= system_category();
|
||||
#endif
|
||||
|
||||
// class error_condition ---------------------------------------------------------//
|
||||
|
||||
// error_conditions are portable, error_codes are system or library specific
|
||||
@@ -337,8 +502,8 @@ namespace boost
|
||||
public:
|
||||
|
||||
// constructors:
|
||||
error_condition() BOOST_SYSTEM_NOEXCEPT : m_val(0), m_cat(&generic_category()) {}
|
||||
error_condition( int val, const error_category & cat ) BOOST_SYSTEM_NOEXCEPT
|
||||
BOOST_SYSTEM_CONSTEXPR error_condition() BOOST_SYSTEM_NOEXCEPT : m_val(0), m_cat(&generic_category()) {}
|
||||
BOOST_SYSTEM_CONSTEXPR error_condition( int val, const error_category & cat ) BOOST_SYSTEM_NOEXCEPT
|
||||
: m_val(val), m_cat(&cat) {}
|
||||
|
||||
template <class ErrorConditionEnum>
|
||||
@@ -351,7 +516,7 @@ namespace boost
|
||||
|
||||
// modifiers:
|
||||
|
||||
void assign( int val, const error_category & cat ) BOOST_SYSTEM_NOEXCEPT
|
||||
BOOST_SYSTEM_CONSTEXPR void assign( int val, const error_category & cat ) BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
m_val = val;
|
||||
m_cat = &cat;
|
||||
@@ -366,34 +531,45 @@ namespace boost
|
||||
return *this;
|
||||
}
|
||||
|
||||
void clear() BOOST_SYSTEM_NOEXCEPT
|
||||
BOOST_SYSTEM_CONSTEXPR void clear() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
m_val = 0;
|
||||
m_cat = &generic_category();
|
||||
}
|
||||
|
||||
// observers:
|
||||
int value() const BOOST_SYSTEM_NOEXCEPT { return m_val; }
|
||||
const error_category & category() const BOOST_SYSTEM_NOEXCEPT { return *m_cat; }
|
||||
BOOST_SYSTEM_CONSTEXPR int value() const BOOST_SYSTEM_NOEXCEPT { return m_val; }
|
||||
BOOST_SYSTEM_CONSTEXPR const error_category & category() const BOOST_SYSTEM_NOEXCEPT { return *m_cat; }
|
||||
std::string message() const { return m_cat->message(value()); }
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS)
|
||||
|
||||
BOOST_SYSTEM_CONSTEXPR explicit operator bool() const BOOST_SYSTEM_NOEXCEPT // true if error
|
||||
{
|
||||
return m_val != 0;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
typedef void (*unspecified_bool_type)();
|
||||
static void unspecified_bool_true() {}
|
||||
|
||||
operator unspecified_bool_type() const BOOST_SYSTEM_NOEXCEPT // true if error
|
||||
BOOST_SYSTEM_CONSTEXPR operator unspecified_bool_type() const BOOST_SYSTEM_NOEXCEPT // true if error
|
||||
{
|
||||
return m_val == 0 ? 0 : unspecified_bool_true;
|
||||
}
|
||||
|
||||
bool operator!() const BOOST_SYSTEM_NOEXCEPT // true if no error
|
||||
BOOST_SYSTEM_CONSTEXPR bool operator!() const BOOST_SYSTEM_NOEXCEPT // true if no error
|
||||
{
|
||||
return m_val == 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// relationals:
|
||||
// the more symmetrical non-member syntax allows enum
|
||||
// conversions work for both rhs and lhs.
|
||||
inline friend bool operator==( const error_condition & lhs,
|
||||
BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( const error_condition & lhs,
|
||||
const error_condition & rhs ) BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return lhs.m_cat == rhs.m_cat && lhs.m_val == rhs.m_val;
|
||||
@@ -436,8 +612,8 @@ namespace boost
|
||||
public:
|
||||
|
||||
// constructors:
|
||||
error_code() BOOST_SYSTEM_NOEXCEPT : m_val(0), m_cat(&system_category()) {}
|
||||
error_code( int val, const error_category & cat ) BOOST_SYSTEM_NOEXCEPT
|
||||
BOOST_SYSTEM_CONSTEXPR error_code() BOOST_SYSTEM_NOEXCEPT : m_val(0), m_cat(&system_category()) {}
|
||||
BOOST_SYSTEM_CONSTEXPR error_code( int val, const error_category & cat ) BOOST_SYSTEM_NOEXCEPT
|
||||
: m_val(val), m_cat(&cat) {}
|
||||
|
||||
template <class ErrorCodeEnum>
|
||||
@@ -449,7 +625,7 @@ namespace boost
|
||||
}
|
||||
|
||||
// modifiers:
|
||||
void assign( int val, const error_category & cat ) BOOST_SYSTEM_NOEXCEPT
|
||||
BOOST_SYSTEM_CONSTEXPR void assign( int val, const error_category & cat ) BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
m_val = val;
|
||||
m_cat = &cat;
|
||||
@@ -463,34 +639,45 @@ namespace boost
|
||||
return *this;
|
||||
}
|
||||
|
||||
void clear() BOOST_SYSTEM_NOEXCEPT
|
||||
BOOST_SYSTEM_CONSTEXPR void clear() BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
m_val = 0;
|
||||
m_cat = &system_category();
|
||||
}
|
||||
|
||||
// observers:
|
||||
int value() const BOOST_SYSTEM_NOEXCEPT { return m_val; }
|
||||
const error_category & category() const BOOST_SYSTEM_NOEXCEPT { return *m_cat; }
|
||||
BOOST_SYSTEM_CONSTEXPR int value() const BOOST_SYSTEM_NOEXCEPT { return m_val; }
|
||||
BOOST_SYSTEM_CONSTEXPR const error_category & category() const BOOST_SYSTEM_NOEXCEPT { return *m_cat; }
|
||||
error_condition default_error_condition() const BOOST_SYSTEM_NOEXCEPT
|
||||
{ return m_cat->default_error_condition(value()); }
|
||||
std::string message() const { return m_cat->message(value()); }
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS)
|
||||
|
||||
BOOST_SYSTEM_CONSTEXPR explicit operator bool() const BOOST_SYSTEM_NOEXCEPT // true if error
|
||||
{
|
||||
return m_val != 0;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
typedef void (*unspecified_bool_type)();
|
||||
static void unspecified_bool_true() {}
|
||||
|
||||
operator unspecified_bool_type() const BOOST_SYSTEM_NOEXCEPT // true if error
|
||||
BOOST_SYSTEM_CONSTEXPR operator unspecified_bool_type() const BOOST_SYSTEM_NOEXCEPT // true if error
|
||||
{
|
||||
return m_val == 0 ? 0 : unspecified_bool_true;
|
||||
}
|
||||
|
||||
bool operator!() const BOOST_SYSTEM_NOEXCEPT // true if no error
|
||||
BOOST_SYSTEM_CONSTEXPR bool operator!() const BOOST_SYSTEM_NOEXCEPT // true if no error
|
||||
{
|
||||
return m_val == 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// relationals:
|
||||
inline friend bool operator==( const error_code & lhs,
|
||||
BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( const error_code & lhs,
|
||||
const error_code & rhs ) BOOST_SYSTEM_NOEXCEPT
|
||||
// the more symmetrical non-member syntax allows enum
|
||||
// conversions work for both rhs and lhs.
|
||||
@@ -523,7 +710,7 @@ namespace boost
|
||||
};
|
||||
|
||||
// predefined error_code object used as "throw on error" tag
|
||||
# ifndef BOOST_SYSTEM_NO_DEPRECATED
|
||||
# ifdef BOOST_SYSTEM_ENABLE_DEPRECATED
|
||||
BOOST_SYSTEM_DECL extern error_code throws;
|
||||
# endif
|
||||
|
||||
@@ -532,8 +719,9 @@ namespace boost
|
||||
// "throws" function in namespace boost rather than namespace boost::system.
|
||||
|
||||
} // namespace system
|
||||
|
||||
namespace detail { inline system::error_code * throws() { return 0; } }
|
||||
|
||||
namespace detail
|
||||
{
|
||||
// Misuse of the error_code object is turned into a noisy failure by
|
||||
// poisoning the reference. This particular implementation doesn't
|
||||
// produce warnings or errors from popular compilers, is very efficient
|
||||
@@ -541,21 +729,34 @@ namespace boost
|
||||
// from order of initialization problems. In practice, it also seems
|
||||
// cause user function error handling implementation errors to be detected
|
||||
// very early in the development cycle.
|
||||
inline system::error_code* throws()
|
||||
{
|
||||
// See github.com/boostorg/system/pull/12 by visigoth for why the return
|
||||
// is poisoned with nonzero rather than (0). A test, test_throws_usage(),
|
||||
// has been added to error_code_test.cpp, and as visigoth mentioned it
|
||||
// fails on clang for release builds with a return of 0 but works fine
|
||||
// with (1).
|
||||
// Since the undefined behavior sanitizer (-fsanitize=undefined) does not
|
||||
// allow a reference to be formed to the unaligned address of (1), we use
|
||||
// (8) instead.
|
||||
return reinterpret_cast<system::error_code*>(8);
|
||||
}
|
||||
}
|
||||
|
||||
inline system::error_code & throws()
|
||||
inline system::error_code& throws()
|
||||
{ return *detail::throws(); }
|
||||
|
||||
namespace system
|
||||
{
|
||||
// non-member functions ------------------------------------------------//
|
||||
|
||||
inline bool operator!=( const error_code & lhs,
|
||||
BOOST_SYSTEM_CONSTEXPR inline bool operator!=( const error_code & lhs,
|
||||
const error_code & rhs ) BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return !(lhs == rhs);
|
||||
}
|
||||
|
||||
inline bool operator!=( const error_condition & lhs,
|
||||
BOOST_SYSTEM_CONSTEXPR inline bool operator!=( const error_condition & lhs,
|
||||
const error_condition & rhs ) BOOST_SYSTEM_NOEXCEPT
|
||||
{
|
||||
return !(lhs == rhs);
|
||||
|
||||
@@ -89,7 +89,7 @@ namespace boost
|
||||
};
|
||||
} // namespace linux_error
|
||||
|
||||
# ifndef BOOST_SYSTEM_NO_DEPRECATED
|
||||
# ifdef BOOST_SYSTEM_ENABLE_DEPRECATED
|
||||
namespace Linux = linux_error;
|
||||
# endif
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
//#include <winerror.h>
|
||||
//#endif
|
||||
|
||||
#include <boost/detail/winapi/error_codes.hpp>
|
||||
#include <boost/winapi/error_codes.hpp>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
@@ -47,59 +47,59 @@ namespace boost
|
||||
{
|
||||
success = 0,
|
||||
// These names and values are based on Windows winerror.h
|
||||
invalid_function = boost::detail::winapi::ERROR_INVALID_FUNCTION_,
|
||||
file_not_found = boost::detail::winapi::ERROR_FILE_NOT_FOUND_,
|
||||
path_not_found = boost::detail::winapi::ERROR_PATH_NOT_FOUND_,
|
||||
too_many_open_files = boost::detail::winapi::ERROR_TOO_MANY_OPEN_FILES_,
|
||||
access_denied = boost::detail::winapi::ERROR_ACCESS_DENIED_,
|
||||
invalid_handle = boost::detail::winapi::ERROR_INVALID_HANDLE_,
|
||||
arena_trashed = boost::detail::winapi::ERROR_ARENA_TRASHED_,
|
||||
not_enough_memory = boost::detail::winapi::ERROR_NOT_ENOUGH_MEMORY_,
|
||||
invalid_block = boost::detail::winapi::ERROR_INVALID_BLOCK_,
|
||||
bad_environment = boost::detail::winapi::ERROR_BAD_ENVIRONMENT_,
|
||||
bad_format = boost::detail::winapi::ERROR_BAD_FORMAT_,
|
||||
invalid_access = boost::detail::winapi::ERROR_INVALID_ACCESS_,
|
||||
outofmemory = boost::detail::winapi::ERROR_OUTOFMEMORY_,
|
||||
invalid_drive = boost::detail::winapi::ERROR_INVALID_DRIVE_,
|
||||
current_directory = boost::detail::winapi::ERROR_CURRENT_DIRECTORY_,
|
||||
not_same_device = boost::detail::winapi::ERROR_NOT_SAME_DEVICE_,
|
||||
no_more_files = boost::detail::winapi::ERROR_NO_MORE_FILES_,
|
||||
write_protect = boost::detail::winapi::ERROR_WRITE_PROTECT_,
|
||||
bad_unit = boost::detail::winapi::ERROR_BAD_UNIT_,
|
||||
not_ready = boost::detail::winapi::ERROR_NOT_READY_,
|
||||
bad_command = boost::detail::winapi::ERROR_BAD_COMMAND_,
|
||||
crc = boost::detail::winapi::ERROR_CRC_,
|
||||
bad_length = boost::detail::winapi::ERROR_BAD_LENGTH_,
|
||||
seek = boost::detail::winapi::ERROR_SEEK_,
|
||||
not_dos_disk = boost::detail::winapi::ERROR_NOT_DOS_DISK_,
|
||||
sector_not_found = boost::detail::winapi::ERROR_SECTOR_NOT_FOUND_,
|
||||
out_of_paper = boost::detail::winapi::ERROR_OUT_OF_PAPER_,
|
||||
write_fault = boost::detail::winapi::ERROR_WRITE_FAULT_,
|
||||
read_fault = boost::detail::winapi::ERROR_READ_FAULT_,
|
||||
gen_failure = boost::detail::winapi::ERROR_GEN_FAILURE_,
|
||||
sharing_violation = boost::detail::winapi::ERROR_SHARING_VIOLATION_,
|
||||
lock_violation = boost::detail::winapi::ERROR_LOCK_VIOLATION_,
|
||||
wrong_disk = boost::detail::winapi::ERROR_WRONG_DISK_,
|
||||
sharing_buffer_exceeded = boost::detail::winapi::ERROR_SHARING_BUFFER_EXCEEDED_,
|
||||
handle_eof = boost::detail::winapi::ERROR_HANDLE_EOF_,
|
||||
handle_disk_full= boost::detail::winapi::ERROR_HANDLE_DISK_FULL_,
|
||||
rem_not_list = boost::detail::winapi::ERROR_REM_NOT_LIST_,
|
||||
dup_name = boost::detail::winapi::ERROR_DUP_NAME_,
|
||||
bad_net_path = boost::detail::winapi::ERROR_BAD_NETPATH_,
|
||||
network_busy = boost::detail::winapi::ERROR_NETWORK_BUSY_,
|
||||
invalid_function = boost::winapi::ERROR_INVALID_FUNCTION_,
|
||||
file_not_found = boost::winapi::ERROR_FILE_NOT_FOUND_,
|
||||
path_not_found = boost::winapi::ERROR_PATH_NOT_FOUND_,
|
||||
too_many_open_files = boost::winapi::ERROR_TOO_MANY_OPEN_FILES_,
|
||||
access_denied = boost::winapi::ERROR_ACCESS_DENIED_,
|
||||
invalid_handle = boost::winapi::ERROR_INVALID_HANDLE_,
|
||||
arena_trashed = boost::winapi::ERROR_ARENA_TRASHED_,
|
||||
not_enough_memory = boost::winapi::ERROR_NOT_ENOUGH_MEMORY_,
|
||||
invalid_block = boost::winapi::ERROR_INVALID_BLOCK_,
|
||||
bad_environment = boost::winapi::ERROR_BAD_ENVIRONMENT_,
|
||||
bad_format = boost::winapi::ERROR_BAD_FORMAT_,
|
||||
invalid_access = boost::winapi::ERROR_INVALID_ACCESS_,
|
||||
outofmemory = boost::winapi::ERROR_OUTOFMEMORY_,
|
||||
invalid_drive = boost::winapi::ERROR_INVALID_DRIVE_,
|
||||
current_directory = boost::winapi::ERROR_CURRENT_DIRECTORY_,
|
||||
not_same_device = boost::winapi::ERROR_NOT_SAME_DEVICE_,
|
||||
no_more_files = boost::winapi::ERROR_NO_MORE_FILES_,
|
||||
write_protect = boost::winapi::ERROR_WRITE_PROTECT_,
|
||||
bad_unit = boost::winapi::ERROR_BAD_UNIT_,
|
||||
not_ready = boost::winapi::ERROR_NOT_READY_,
|
||||
bad_command = boost::winapi::ERROR_BAD_COMMAND_,
|
||||
crc = boost::winapi::ERROR_CRC_,
|
||||
bad_length = boost::winapi::ERROR_BAD_LENGTH_,
|
||||
seek = boost::winapi::ERROR_SEEK_,
|
||||
not_dos_disk = boost::winapi::ERROR_NOT_DOS_DISK_,
|
||||
sector_not_found = boost::winapi::ERROR_SECTOR_NOT_FOUND_,
|
||||
out_of_paper = boost::winapi::ERROR_OUT_OF_PAPER_,
|
||||
write_fault = boost::winapi::ERROR_WRITE_FAULT_,
|
||||
read_fault = boost::winapi::ERROR_READ_FAULT_,
|
||||
gen_failure = boost::winapi::ERROR_GEN_FAILURE_,
|
||||
sharing_violation = boost::winapi::ERROR_SHARING_VIOLATION_,
|
||||
lock_violation = boost::winapi::ERROR_LOCK_VIOLATION_,
|
||||
wrong_disk = boost::winapi::ERROR_WRONG_DISK_,
|
||||
sharing_buffer_exceeded = boost::winapi::ERROR_SHARING_BUFFER_EXCEEDED_,
|
||||
handle_eof = boost::winapi::ERROR_HANDLE_EOF_,
|
||||
handle_disk_full= boost::winapi::ERROR_HANDLE_DISK_FULL_,
|
||||
rem_not_list = boost::winapi::ERROR_REM_NOT_LIST_,
|
||||
dup_name = boost::winapi::ERROR_DUP_NAME_,
|
||||
bad_net_path = boost::winapi::ERROR_BAD_NETPATH_,
|
||||
network_busy = boost::winapi::ERROR_NETWORK_BUSY_,
|
||||
// ...
|
||||
file_exists = boost::detail::winapi::ERROR_FILE_EXISTS_,
|
||||
cannot_make = boost::detail::winapi::ERROR_CANNOT_MAKE_,
|
||||
file_exists = boost::winapi::ERROR_FILE_EXISTS_,
|
||||
cannot_make = boost::winapi::ERROR_CANNOT_MAKE_,
|
||||
// ...
|
||||
broken_pipe = boost::detail::winapi::ERROR_BROKEN_PIPE_,
|
||||
open_failed = boost::detail::winapi::ERROR_OPEN_FAILED_,
|
||||
buffer_overflow = boost::detail::winapi::ERROR_BUFFER_OVERFLOW_,
|
||||
disk_full= boost::detail::winapi::ERROR_DISK_FULL_,
|
||||
broken_pipe = boost::winapi::ERROR_BROKEN_PIPE_,
|
||||
open_failed = boost::winapi::ERROR_OPEN_FAILED_,
|
||||
buffer_overflow = boost::winapi::ERROR_BUFFER_OVERFLOW_,
|
||||
disk_full= boost::winapi::ERROR_DISK_FULL_,
|
||||
// ...
|
||||
lock_failed = boost::detail::winapi::ERROR_LOCK_FAILED_,
|
||||
busy = boost::detail::winapi::ERROR_BUSY_,
|
||||
cancel_violation = boost::detail::winapi::ERROR_CANCEL_VIOLATION_,
|
||||
already_exists = boost::detail::winapi::ERROR_ALREADY_EXISTS_
|
||||
lock_failed = boost::winapi::ERROR_LOCK_FAILED_,
|
||||
busy = boost::winapi::ERROR_BUSY_,
|
||||
cancel_violation = boost::winapi::ERROR_CANCEL_VIOLATION_,
|
||||
already_exists = boost::winapi::ERROR_ALREADY_EXISTS_
|
||||
// ...
|
||||
|
||||
// TODO: add more Windows errors
|
||||
@@ -107,7 +107,7 @@ namespace boost
|
||||
|
||||
} // namespace windows
|
||||
|
||||
# ifndef BOOST_SYSTEM_NO_DEPRECATED
|
||||
# ifdef BOOST_SYSTEM_ENABLE_DEPRECATED
|
||||
namespace windows = windows_error;
|
||||
# endif
|
||||
|
||||
|
||||
127
test/Jamfile.v2
127
test/Jamfile.v2
@@ -8,6 +8,7 @@
|
||||
# See library home page at http://www.boost.org/libs/system
|
||||
|
||||
import testing ;
|
||||
import os ;
|
||||
|
||||
project
|
||||
: requirements
|
||||
@@ -21,11 +22,18 @@ project
|
||||
<link>static:<define>BOOST_SYSTEM_STATIC_LINK=1
|
||||
;
|
||||
|
||||
lib single_instance_lib1 : single_instance_1.cpp : <link>shared:<define>SINGLE_INSTANCE_DYN_LINK ;
|
||||
lib single_instance_lib2 : single_instance_2.cpp : <link>shared:<define>SINGLE_INSTANCE_DYN_LINK ;
|
||||
|
||||
rule cxx03 ( properties * )
|
||||
{
|
||||
local result ;
|
||||
|
||||
if <toolset>gcc in $(properties) || <toolset>clang in $(properties)
|
||||
if <toolset>gcc in $(properties)
|
||||
{
|
||||
result = <cxxflags>-std=c++98 ; # 4.4 has no 03
|
||||
}
|
||||
else if <toolset>clang in $(properties)
|
||||
{
|
||||
result = <cxxflags>-std=c++03 ;
|
||||
}
|
||||
@@ -41,11 +49,11 @@ project
|
||||
{
|
||||
local result ;
|
||||
|
||||
if <toolset-gcc:version>4.6 in $(properties)
|
||||
if <toolset>gcc in $(properties)
|
||||
{
|
||||
result = <cxxflags>-std=c++0x ;
|
||||
result = <cxxflags>-std=c++0x ; # 4.6 has no 11
|
||||
}
|
||||
else if <toolset>gcc in $(properties) || <toolset>clang in $(properties)
|
||||
else if <toolset>clang in $(properties)
|
||||
{
|
||||
result = <cxxflags>-std=c++11 ;
|
||||
}
|
||||
@@ -57,68 +65,69 @@ project
|
||||
return $(result) ;
|
||||
}
|
||||
|
||||
rule system-run- ( sources + )
|
||||
{
|
||||
local result ;
|
||||
|
||||
result += [ run $(sources) : : : <link>static : $(sources[1]:B)_static ] ;
|
||||
result += [ run $(sources) : : : <link>shared : $(sources[1]:B)_shared ] ;
|
||||
result += [ run $(sources) : : : -<library>/boost/system//boost_system <define>BOOST_ERROR_CODE_HEADER_ONLY : $(sources[1]:B)_header ] ;
|
||||
|
||||
return $(result) ;
|
||||
}
|
||||
|
||||
if [ os.environ UBSAN ]
|
||||
{
|
||||
rule system-run ( sources + )
|
||||
{
|
||||
# The 03/11 tests are ODR violations, no point running them under -fsanitize=undefined
|
||||
return [ system-run- $(sources) ] ;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rule system-run ( sources + )
|
||||
{
|
||||
local result = [ system-run- $(sources) ] ;
|
||||
|
||||
# Test a source file built with -std=c++03 linked with a System library built without -std=c++03
|
||||
result += [ run $(sources) : : : <link>static <conditional>@cxx03 : $(sources[1]:B)_static_03 ] ;
|
||||
result += [ run $(sources) : : : <link>shared <conditional>@cxx03 : $(sources[1]:B)_shared_03 ] ;
|
||||
|
||||
# Test a source file built with -std=c++11 linked with a System library built without -std=c++11
|
||||
result += [ run $(sources) : : : <link>static <conditional>@cxx11 : $(sources[1]:B)_static_11 ] ;
|
||||
result += [ run $(sources) : : : <link>shared <conditional>@cxx11 : $(sources[1]:B)_shared_11 ] ;
|
||||
|
||||
return $(result) ;
|
||||
}
|
||||
}
|
||||
|
||||
test-suite "system"
|
||||
: [ run error_code_test.cpp
|
||||
: # command line
|
||||
: # input files
|
||||
: # requirements
|
||||
<link>static
|
||||
]
|
||||
[ run error_code_test.cpp
|
||||
: : : <link>shared : error_code_test_shared
|
||||
]
|
||||
[ run error_code_test.cpp
|
||||
: : : <link>static <conditional>@cxx03 : error_code_test_03
|
||||
]
|
||||
[ run error_code_test.cpp
|
||||
: : : <link>shared <conditional>@cxx03 : error_code_test_shared_03
|
||||
]
|
||||
[ run error_code_test.cpp
|
||||
: : : <link>static <conditional>@cxx11 : error_code_test_11
|
||||
]
|
||||
[ run error_code_test.cpp
|
||||
: : : <link>shared <conditional>@cxx11 : error_code_test_shared_11
|
||||
]
|
||||
[ run error_code_user_test.cpp
|
||||
: : : <link>static
|
||||
]
|
||||
[ run error_code_user_test.cpp
|
||||
: : : <link>shared : error_code_user_test_shared
|
||||
]
|
||||
[ run system_error_test.cpp
|
||||
: : : <link>static
|
||||
]
|
||||
[ run system_error_test.cpp
|
||||
: : : <link>shared : system_error_test_shared
|
||||
]
|
||||
: [ system-run error_code_test.cpp ]
|
||||
[ system-run error_code_user_test.cpp ]
|
||||
[ system-run system_error_test.cpp ]
|
||||
[ run dynamic_link_test.cpp throw_test
|
||||
: : : <link>shared : throw_test_shared
|
||||
]
|
||||
[ run initialization_test.cpp
|
||||
: : : <link>shared : initialization_test_shared
|
||||
[ system-run initialization_test.cpp ]
|
||||
[ run header_only_test.cpp
|
||||
: : : -<library>/boost/system//boost_system
|
||||
]
|
||||
[ run header_only_test.cpp
|
||||
: : : <link>static
|
||||
: : : -<library>/boost/system//boost_system <define>BOOST_NO_ANSI_APIS : header_only_test_no_ansi
|
||||
]
|
||||
[ run config_test.cpp
|
||||
: : : <test-info>always_show_run_output
|
||||
]
|
||||
[ run std_interop_test.cpp
|
||||
: : : <link>static
|
||||
]
|
||||
[ run std_interop_test.cpp
|
||||
: : : <link>shared : std_interop_test_shared
|
||||
]
|
||||
[ run std_mismatch_test.cpp
|
||||
: : : <link>static <conditional>@cxx03 : std_mismatch_test_03
|
||||
]
|
||||
[ run std_mismatch_test.cpp
|
||||
: : : <link>shared <conditional>@cxx03 : std_mismatch_test_shared_03
|
||||
]
|
||||
[ run std_mismatch_test.cpp
|
||||
: : : <link>static <conditional>@cxx11 : std_mismatch_test_11
|
||||
]
|
||||
[ run std_mismatch_test.cpp
|
||||
: : : <link>shared <conditional>@cxx11 : std_mismatch_test_shared_11
|
||||
: : : <test-info>always_show_run_output
|
||||
]
|
||||
[ system-run- std_interop_test.cpp ]
|
||||
[ system-run std_mismatch_test.cpp ]
|
||||
[ system-run single_instance_test.cpp single_instance_1.cpp single_instance_2.cpp ]
|
||||
[ run single_instance_test.cpp single_instance_lib1 single_instance_lib2 : : : <link>static : single_instance_lib_static ]
|
||||
[ run single_instance_test.cpp single_instance_lib1 single_instance_lib2 : : : <link>shared : single_instance_lib_shared ]
|
||||
[ system-run before_main_test.cpp ]
|
||||
[ run-fail throws_assign_fail.cpp ]
|
||||
[ system-run- constexpr_test.cpp ]
|
||||
;
|
||||
|
||||
# Quick (CI) test
|
||||
run quick.cpp ;
|
||||
|
||||
30
test/before_main_test.cpp
Normal file
30
test/before_main_test.cpp
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
// Copyright 2018 Peter Dimov.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
|
||||
#include <boost/system/error_code.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <cerrno>
|
||||
|
||||
using namespace boost::system;
|
||||
|
||||
static error_code e1( 1, system_category() );
|
||||
static std::string m1 = e1.message();
|
||||
|
||||
static error_code e2( ENOENT, generic_category() );
|
||||
static std::string m2 = e2.message();
|
||||
|
||||
int main()
|
||||
{
|
||||
error_code e1_( 1, system_category() );
|
||||
|
||||
BOOST_TEST_EQ( e1, e1_ );
|
||||
BOOST_TEST_EQ( m1, e1_.message() );
|
||||
|
||||
error_code e2_( ENOENT, generic_category() );
|
||||
|
||||
BOOST_TEST_EQ( e2, e2_ );
|
||||
BOOST_TEST_EQ( m2, e2_.message() );
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
68
test/constexpr_test.cpp
Normal file
68
test/constexpr_test.cpp
Normal file
@@ -0,0 +1,68 @@
|
||||
|
||||
// Copyright 2018 Peter Dimov.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
|
||||
#include <boost/system/error_code.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/config/pragma_message.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/config/workaround.hpp>
|
||||
|
||||
#if !defined(BOOST_SYSTEM_HAS_CONSTEXPR)
|
||||
|
||||
BOOST_PRAGMA_MESSAGE("Skipping constexpr test, BOOST_SYSTEM_HAS_CONSTEXPR isn't defined")
|
||||
int main() {}
|
||||
|
||||
#else
|
||||
|
||||
using namespace boost::system;
|
||||
|
||||
constexpr error_code e1( 1, system_category() );
|
||||
|
||||
BOOST_STATIC_ASSERT( e1.value() == 1 );
|
||||
BOOST_STATIC_ASSERT( e1.category() == system_category() );
|
||||
BOOST_STATIC_ASSERT( e1 );
|
||||
BOOST_STATIC_ASSERT( e1 == e1 );
|
||||
|
||||
constexpr error_code e2( 2, generic_category() );
|
||||
|
||||
BOOST_STATIC_ASSERT( e2.value() == 2 );
|
||||
BOOST_STATIC_ASSERT( e2.category() == generic_category() );
|
||||
BOOST_STATIC_ASSERT( e2 );
|
||||
BOOST_STATIC_ASSERT( e2 == e2 );
|
||||
|
||||
#if !BOOST_WORKAROUND(BOOST_GCC, < 80000)
|
||||
|
||||
BOOST_STATIC_ASSERT( e1 != e2 );
|
||||
|
||||
#endif
|
||||
|
||||
constexpr error_code e3;
|
||||
|
||||
BOOST_STATIC_ASSERT( e3.value() == 0 );
|
||||
BOOST_STATIC_ASSERT( e3.category() == system_category() );
|
||||
BOOST_STATIC_ASSERT( !e3 );
|
||||
BOOST_STATIC_ASSERT( e3 == e3 );
|
||||
|
||||
#if !BOOST_WORKAROUND(BOOST_GCC, < 80000)
|
||||
|
||||
BOOST_STATIC_ASSERT( e1 != e3 );
|
||||
|
||||
#endif
|
||||
|
||||
int main()
|
||||
{
|
||||
error_code e1_( 1, system_category() );
|
||||
BOOST_TEST_EQ( e1, e1_ );
|
||||
|
||||
error_code e2_( 2, generic_category() );
|
||||
BOOST_TEST_EQ( e2, e2_ );
|
||||
|
||||
error_code e3_;
|
||||
BOOST_TEST_EQ( e3, e3_ );
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -9,9 +9,6 @@
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
// test without deprecated features
|
||||
#define BOOST_SYSTEM_NO_DEPRECATED
|
||||
|
||||
#include <boost/config/warning_disable.hpp>
|
||||
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
@@ -56,6 +53,53 @@ namespace
|
||||
ss >> s;
|
||||
BOOST_TEST( s == expected );
|
||||
}
|
||||
|
||||
// throws_function_test ------------------------------------------------------------//
|
||||
|
||||
// usage example
|
||||
|
||||
int divide(int dividend, int divisor, boost::system::error_code& ec = boost::throws())
|
||||
{
|
||||
if (divisor == 0) // is there an error?
|
||||
{
|
||||
if (&ec == &boost::throws()) // throw on error
|
||||
throw "oops!"; // whatever exception you prefer
|
||||
ec = error_code(EDOM, generic_category()); // report error via error_code
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (&ec != &boost::throws()) // error reporting via error_code
|
||||
ec.clear();
|
||||
return dividend / divisor;
|
||||
}
|
||||
|
||||
// test usage example
|
||||
|
||||
void test_throws_usage()
|
||||
{
|
||||
std::cout << "Test throws() example and usage...\n";
|
||||
error_code ec;
|
||||
|
||||
// no error tests
|
||||
BOOST_TEST_EQ((divide(10, 2)), 5); // no error, report via exception
|
||||
ec = make_error_code(errc::argument_out_of_domain);
|
||||
BOOST_TEST_EQ((divide(10, 5, ec)), 2); // no error, report via error_code
|
||||
BOOST_TEST(!ec);
|
||||
|
||||
ec = make_error_code(errc::argument_out_of_domain);
|
||||
BOOST_TEST_EQ((divide(10, 0, ec)), 0); // error, report via error_code
|
||||
BOOST_TEST(ec);
|
||||
|
||||
bool exception_thrown = false;
|
||||
try
|
||||
{ divide(10, 0); } // error, report via exception
|
||||
catch (...)
|
||||
{ exception_thrown = true; }
|
||||
BOOST_TEST(exception_thrown);
|
||||
|
||||
//error_code should_fail(boost::throws()); // should fail at runtime
|
||||
//boost::throws() = ec; // should fail at runtime
|
||||
}
|
||||
}
|
||||
|
||||
// main ------------------------------------------------------------------------------//
|
||||
@@ -202,6 +246,8 @@ int main( int, char ** )
|
||||
BOOST_TEST( econd.message() != "" );
|
||||
BOOST_TEST( econd.message().substr( 0, 13) != "Unknown error" );
|
||||
|
||||
test_throws_usage();
|
||||
|
||||
#ifdef BOOST_WINDOWS_API
|
||||
std::cout << "Windows tests...\n";
|
||||
// these tests probe the Windows errc decoder
|
||||
|
||||
@@ -14,8 +14,6 @@
|
||||
|
||||
// Motivation was a Boost posting by Christopher Kohlhoff on June 28, 2006.
|
||||
|
||||
#define BOOST_SYSTEM_NO_DEPRECATED
|
||||
|
||||
#include <boost/system/error_code.hpp>
|
||||
#include <boost/cerrno.hpp>
|
||||
#include <string>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// error_code_test.cpp -----------------------------------------------------//
|
||||
// header_only_test.cpp -----------------------------------------------------//
|
||||
|
||||
// Copyright Beman Dawes 2007
|
||||
|
||||
|
||||
@@ -10,19 +10,19 @@
|
||||
// This test verifiies that the error_category vtable does not suffer from
|
||||
// order-of-initialization problems.
|
||||
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include <boost/system/error_code.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
|
||||
struct foo
|
||||
{
|
||||
foo()
|
||||
{
|
||||
boost::system::error_code ec;
|
||||
ec == boost::system::posix::permission_denied;
|
||||
BOOST_TEST_NE( ec, boost::system::errc::permission_denied );
|
||||
}
|
||||
} f;
|
||||
|
||||
int main( int, char ** )
|
||||
int main()
|
||||
{
|
||||
return ::boost::report_errors();
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
36
test/quick.cpp
Normal file
36
test/quick.cpp
Normal file
@@ -0,0 +1,36 @@
|
||||
|
||||
// Copyright 2017 Peter Dimov.
|
||||
//
|
||||
// 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
|
||||
|
||||
// See library home page at http://www.boost.org/libs/system
|
||||
|
||||
#include <boost/system/error_code.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <cerrno>
|
||||
|
||||
int main()
|
||||
{
|
||||
boost::system::error_category const & bt = boost::system::generic_category();
|
||||
|
||||
int ev = ENOENT;
|
||||
|
||||
boost::system::error_code bc( ev, bt );
|
||||
|
||||
BOOST_TEST_EQ( bc.value(), ev );
|
||||
BOOST_TEST_EQ( &bc.category(), &bt );
|
||||
|
||||
boost::system::error_condition bn = bt.default_error_condition( ev );
|
||||
|
||||
BOOST_TEST_EQ( bn.value(), ev );
|
||||
BOOST_TEST_EQ( &bn.category(), &bt );
|
||||
|
||||
BOOST_TEST( bt.equivalent( ev, bn ) );
|
||||
|
||||
BOOST_TEST( bc == bn );
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
29
test/single_instance_1.cpp
Normal file
29
test/single_instance_1.cpp
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
// Copyright 2018 Peter Dimov.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#if defined(SINGLE_INSTANCE_DYN_LINK)
|
||||
# define EXPORT BOOST_SYMBOL_EXPORT
|
||||
#else
|
||||
# define EXPORT
|
||||
#endif
|
||||
|
||||
#include <boost/system/error_code.hpp>
|
||||
using namespace boost::system;
|
||||
|
||||
namespace lib1
|
||||
{
|
||||
|
||||
EXPORT error_code get_system_code()
|
||||
{
|
||||
return error_code( 0, system_category() );
|
||||
}
|
||||
|
||||
EXPORT error_code get_generic_code()
|
||||
{
|
||||
return error_code( 0, generic_category() );
|
||||
}
|
||||
|
||||
} // namespace lib1
|
||||
29
test/single_instance_2.cpp
Normal file
29
test/single_instance_2.cpp
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
// Copyright 2018 Peter Dimov.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#if defined(SINGLE_INSTANCE_DYN_LINK)
|
||||
# define EXPORT BOOST_SYMBOL_EXPORT
|
||||
#else
|
||||
# define EXPORT
|
||||
#endif
|
||||
|
||||
#include <boost/system/error_code.hpp>
|
||||
using namespace boost::system;
|
||||
|
||||
namespace lib2
|
||||
{
|
||||
|
||||
EXPORT error_code get_system_code()
|
||||
{
|
||||
return error_code( 0, system_category() );
|
||||
}
|
||||
|
||||
EXPORT error_code get_generic_code()
|
||||
{
|
||||
return error_code( 0, generic_category() );
|
||||
}
|
||||
|
||||
} // namespace lib2
|
||||
32
test/single_instance_test.cpp
Normal file
32
test/single_instance_test.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
|
||||
// Copyright 2018 Peter Dimov.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
|
||||
#include <boost/system/error_code.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
|
||||
using namespace boost::system;
|
||||
|
||||
namespace lib1
|
||||
{
|
||||
|
||||
error_code get_system_code();
|
||||
error_code get_generic_code();
|
||||
|
||||
} // namespace lib1
|
||||
|
||||
namespace lib2
|
||||
{
|
||||
|
||||
error_code get_system_code();
|
||||
error_code get_generic_code();
|
||||
|
||||
} // namespace lib2
|
||||
|
||||
int main()
|
||||
{
|
||||
BOOST_TEST_EQ( lib1::get_system_code(), lib2::get_system_code() );
|
||||
BOOST_TEST_EQ( lib1::get_generic_code(), lib2::get_generic_code() );
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
@@ -38,7 +38,6 @@ static void test_generic_category()
|
||||
std::error_category const & st = bt;
|
||||
|
||||
BOOST_TEST_CSTR_EQ( bt.name(), st.name() );
|
||||
BOOST_TEST_EQ( bt.name(), st.name() );
|
||||
}
|
||||
|
||||
static void test_system_category()
|
||||
@@ -47,7 +46,6 @@ static void test_system_category()
|
||||
std::error_category const & st = bt;
|
||||
|
||||
BOOST_TEST_CSTR_EQ( bt.name(), st.name() );
|
||||
BOOST_TEST_EQ( bt.name(), st.name() );
|
||||
}
|
||||
|
||||
int main()
|
||||
|
||||
@@ -9,9 +9,6 @@
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
// test without deprecated features
|
||||
#define BOOST_SYSTEM_NO_DEPRECATED
|
||||
|
||||
#include <boost/config/warning_disable.hpp>
|
||||
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
28
test/throws_assign_fail.cpp
Normal file
28
test/throws_assign_fail.cpp
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
// Copyright 2018 Peter Dimov.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
|
||||
#include <boost/system/error_code.hpp>
|
||||
|
||||
using namespace boost::system;
|
||||
|
||||
static void f( error_code & ec )
|
||||
{
|
||||
ec = error_code();
|
||||
}
|
||||
|
||||
#if defined(_WIN32)
|
||||
# include <windows.h> // SetErrorMode
|
||||
#endif
|
||||
|
||||
int main()
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
|
||||
SetErrorMode( SetErrorMode( 0 ) | SEM_NOGPFAULTERRORBOX );
|
||||
|
||||
#endif
|
||||
|
||||
// this should crash
|
||||
f( boost::throws() );
|
||||
}
|
||||
Reference in New Issue
Block a user