├── .github └── workflows │ └── build.yml ├── .gitignore ├── .gitmodules ├── .travis.yml ├── BUILDING.md ├── LICENSE ├── Makefile ├── README.md ├── args.hxx ├── bench-declarations.h ├── benchmark-group.cpp ├── benchmark.cpp ├── benchmark.hpp ├── boost_1_70_0 └── boost │ └── preprocessor │ ├── arithmetic.hpp │ ├── arithmetic │ ├── add.hpp │ ├── dec.hpp │ ├── detail │ │ └── div_base.hpp │ ├── div.hpp │ ├── inc.hpp │ ├── mod.hpp │ ├── mul.hpp │ └── sub.hpp │ ├── array.hpp │ ├── array │ ├── data.hpp │ ├── detail │ │ └── get_data.hpp │ ├── elem.hpp │ ├── enum.hpp │ ├── insert.hpp │ ├── pop_back.hpp │ ├── pop_front.hpp │ ├── push_back.hpp │ ├── push_front.hpp │ ├── remove.hpp │ ├── replace.hpp │ ├── reverse.hpp │ ├── size.hpp │ ├── to_list.hpp │ ├── to_seq.hpp │ └── to_tuple.hpp │ ├── assert_msg.hpp │ ├── cat.hpp │ ├── comma.hpp │ ├── comma_if.hpp │ ├── comparison.hpp │ ├── comparison │ ├── equal.hpp │ ├── greater.hpp │ ├── greater_equal.hpp │ ├── less.hpp │ ├── less_equal.hpp │ └── not_equal.hpp │ ├── config │ ├── config.hpp │ └── limits.hpp │ ├── control.hpp │ ├── control │ ├── deduce_d.hpp │ ├── detail │ │ ├── dmc │ │ │ └── while.hpp │ │ ├── edg │ │ │ └── while.hpp │ │ ├── msvc │ │ │ └── while.hpp │ │ └── while.hpp │ ├── expr_if.hpp │ ├── expr_iif.hpp │ ├── if.hpp │ ├── iif.hpp │ └── while.hpp │ ├── debug.hpp │ ├── debug │ ├── assert.hpp │ ├── error.hpp │ └── line.hpp │ ├── dec.hpp │ ├── detail │ ├── auto_rec.hpp │ ├── check.hpp │ ├── dmc │ │ └── auto_rec.hpp │ ├── is_binary.hpp │ ├── is_nullary.hpp │ ├── is_unary.hpp │ ├── null.hpp │ └── split.hpp │ ├── empty.hpp │ ├── enum.hpp │ ├── enum_params.hpp │ ├── enum_params_with_a_default.hpp │ ├── enum_params_with_defaults.hpp │ ├── enum_shifted.hpp │ ├── enum_shifted_params.hpp │ ├── expand.hpp │ ├── expr_if.hpp │ ├── facilities.hpp │ ├── facilities │ ├── apply.hpp │ ├── detail │ │ └── is_empty.hpp │ ├── empty.hpp │ ├── expand.hpp │ ├── identity.hpp │ ├── intercept.hpp │ ├── is_1.hpp │ ├── is_empty.hpp │ ├── is_empty_or_1.hpp │ ├── is_empty_variadic.hpp │ └── overload.hpp │ ├── for.hpp │ ├── identity.hpp │ ├── if.hpp │ ├── inc.hpp │ ├── iterate.hpp │ ├── iteration.hpp │ ├── iteration │ ├── detail │ │ ├── bounds │ │ │ ├── lower1.hpp │ │ │ ├── lower2.hpp │ │ │ ├── lower3.hpp │ │ │ ├── lower4.hpp │ │ │ ├── lower5.hpp │ │ │ ├── upper1.hpp │ │ │ ├── upper2.hpp │ │ │ ├── upper3.hpp │ │ │ ├── upper4.hpp │ │ │ └── upper5.hpp │ │ ├── finish.hpp │ │ ├── iter │ │ │ ├── forward1.hpp │ │ │ ├── forward2.hpp │ │ │ ├── forward3.hpp │ │ │ ├── forward4.hpp │ │ │ ├── forward5.hpp │ │ │ ├── reverse1.hpp │ │ │ ├── reverse2.hpp │ │ │ ├── reverse3.hpp │ │ │ ├── reverse4.hpp │ │ │ └── reverse5.hpp │ │ ├── local.hpp │ │ ├── rlocal.hpp │ │ ├── self.hpp │ │ └── start.hpp │ ├── iterate.hpp │ ├── local.hpp │ └── self.hpp │ ├── library.hpp │ ├── limits.hpp │ ├── list.hpp │ ├── list │ ├── adt.hpp │ ├── append.hpp │ ├── at.hpp │ ├── cat.hpp │ ├── detail │ │ ├── dmc │ │ │ └── fold_left.hpp │ │ ├── edg │ │ │ ├── fold_left.hpp │ │ │ └── fold_right.hpp │ │ ├── fold_left.hpp │ │ └── fold_right.hpp │ ├── enum.hpp │ ├── filter.hpp │ ├── first_n.hpp │ ├── fold_left.hpp │ ├── fold_right.hpp │ ├── for_each.hpp │ ├── for_each_i.hpp │ ├── for_each_product.hpp │ ├── rest_n.hpp │ ├── reverse.hpp │ ├── size.hpp │ ├── to_array.hpp │ ├── to_seq.hpp │ ├── to_tuple.hpp │ └── transform.hpp │ ├── logical.hpp │ ├── logical │ ├── and.hpp │ ├── bitand.hpp │ ├── bitnor.hpp │ ├── bitor.hpp │ ├── bitxor.hpp │ ├── bool.hpp │ ├── compl.hpp │ ├── nor.hpp │ ├── not.hpp │ ├── or.hpp │ └── xor.hpp │ ├── max.hpp │ ├── min.hpp │ ├── punctuation.hpp │ ├── punctuation │ ├── comma.hpp │ ├── comma_if.hpp │ ├── detail │ │ └── is_begin_parens.hpp │ ├── is_begin_parens.hpp │ ├── paren.hpp │ ├── paren_if.hpp │ └── remove_parens.hpp │ ├── repeat.hpp │ ├── repeat_2nd.hpp │ ├── repeat_3rd.hpp │ ├── repeat_from_to.hpp │ ├── repeat_from_to_2nd.hpp │ ├── repeat_from_to_3rd.hpp │ ├── repetition.hpp │ ├── repetition │ ├── deduce_r.hpp │ ├── deduce_z.hpp │ ├── detail │ │ ├── dmc │ │ │ └── for.hpp │ │ ├── edg │ │ │ └── for.hpp │ │ ├── for.hpp │ │ └── msvc │ │ │ └── for.hpp │ ├── enum.hpp │ ├── enum_binary_params.hpp │ ├── enum_params.hpp │ ├── enum_params_with_a_default.hpp │ ├── enum_params_with_defaults.hpp │ ├── enum_shifted.hpp │ ├── enum_shifted_binary_params.hpp │ ├── enum_shifted_params.hpp │ ├── enum_trailing.hpp │ ├── enum_trailing_binary_params.hpp │ ├── enum_trailing_params.hpp │ ├── for.hpp │ ├── repeat.hpp │ └── repeat_from_to.hpp │ ├── selection.hpp │ ├── selection │ ├── max.hpp │ └── min.hpp │ ├── seq.hpp │ ├── seq │ ├── cat.hpp │ ├── detail │ │ ├── binary_transform.hpp │ │ ├── is_empty.hpp │ │ ├── split.hpp │ │ └── to_list_msvc.hpp │ ├── elem.hpp │ ├── enum.hpp │ ├── filter.hpp │ ├── first_n.hpp │ ├── fold_left.hpp │ ├── fold_right.hpp │ ├── for_each.hpp │ ├── for_each_i.hpp │ ├── for_each_product.hpp │ ├── insert.hpp │ ├── pop_back.hpp │ ├── pop_front.hpp │ ├── push_back.hpp │ ├── push_front.hpp │ ├── remove.hpp │ ├── replace.hpp │ ├── rest_n.hpp │ ├── reverse.hpp │ ├── seq.hpp │ ├── size.hpp │ ├── subseq.hpp │ ├── to_array.hpp │ ├── to_list.hpp │ ├── to_tuple.hpp │ ├── transform.hpp │ └── variadic_seq_to_seq.hpp │ ├── slot.hpp │ ├── slot │ ├── counter.hpp │ ├── detail │ │ ├── counter.hpp │ │ ├── def.hpp │ │ ├── shared.hpp │ │ ├── slot1.hpp │ │ ├── slot2.hpp │ │ ├── slot3.hpp │ │ ├── slot4.hpp │ │ └── slot5.hpp │ └── slot.hpp │ ├── stringize.hpp │ ├── tuple.hpp │ ├── tuple │ ├── detail │ │ └── is_single_return.hpp │ ├── eat.hpp │ ├── elem.hpp │ ├── enum.hpp │ ├── insert.hpp │ ├── pop_back.hpp │ ├── pop_front.hpp │ ├── push_back.hpp │ ├── push_front.hpp │ ├── rem.hpp │ ├── remove.hpp │ ├── replace.hpp │ ├── reverse.hpp │ ├── size.hpp │ ├── to_array.hpp │ ├── to_list.hpp │ └── to_seq.hpp │ ├── variadic.hpp │ ├── variadic │ ├── detail │ │ └── is_single_return.hpp │ ├── elem.hpp │ ├── size.hpp │ ├── to_array.hpp │ ├── to_list.hpp │ ├── to_seq.hpp │ └── to_tuple.hpp │ ├── while.hpp │ └── wstringize.hpp ├── branch-benches.cpp ├── cacheline-branch.cpp ├── call-benches.cpp ├── config.mk ├── context.cpp ├── context.hpp ├── cpp-bench-register.cpp ├── cpp-benches.cpp ├── cpp-benches.hpp ├── decode-benches.cpp ├── default-benches.cpp ├── fmt-7.1.3 ├── LICENSE.rst ├── include │ └── fmt │ │ ├── chrono.h │ │ ├── color.h │ │ ├── compile.h │ │ ├── core.h │ │ ├── format-inl.h │ │ ├── format.h │ │ ├── locale.h │ │ ├── os.h │ │ ├── ostream.h │ │ ├── posix.h │ │ ├── printf.h │ │ └── ranges.h └── src │ └── format.cc ├── hedley.h ├── isa-support.cpp ├── isa-support.hpp ├── libpfc-raw-helpers.hpp ├── libpfc-timer.cpp ├── libpfc-timer.hpp ├── libpfm4-support.cpp ├── libpfm4-support.hpp ├── loadstore-benches.cpp ├── main.cpp ├── matchers.hpp ├── matt-benches.cpp ├── mem-benches-oneshot.cpp ├── mem-benches.cpp ├── mem-studies.cpp ├── misc-benches.cpp ├── nasm-binaries ├── LICENSE ├── NOTE ├── linux │ ├── nasm-2.11.08-1 │ ├── nasm-2.12.02-0 │ ├── nasm-2.13.03-0.fc24 │ └── nasm-2.14.02-0.fc27 └── rpm-extract.sh ├── oneshot-benches.cpp ├── oneshot.hpp ├── opt-control.hpp ├── page-info.c ├── page-info.h ├── perf-timer.cpp ├── perf-timer.hpp ├── resource-stalls.cpp ├── results └── zen3-clock.txt ├── scripts ├── actions-test.sh ├── l2-bandwidth │ ├── plot-all.sh │ ├── run-all.sh │ └── tricky.sh ├── nop-iterator.sh ├── parse.py ├── test-nasm.sh ├── travis-build.sh └── travis-run.sh ├── simple-timer.hpp ├── stats.hpp ├── syscall-benches.cpp ├── table.hpp ├── test ├── catch.hpp ├── unit-test-main.cpp └── unit-test.cpp ├── timer-info.hpp ├── timers.cpp ├── timers.hpp ├── uarch-bench.sh ├── util.cpp ├── util.hpp ├── util ├── .gitignore └── seqtest.c ├── vector-benches.cpp ├── version.hpp ├── x86-avx512.asm ├── x86-branch.asm ├── x86-decode.asm ├── x86-helpers.asm ├── x86-mem-studies.asm ├── x86-memory.asm ├── x86-methods.asm ├── x86-methods2.asm ├── x86-monoid.asm ├── x86-oneshot.asm └── x86-resource-stalls.asm /.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | *.smod 22 | 23 | # Compiled Static libraries 24 | *.lai 25 | *.la 26 | *.a 27 | *.lib 28 | 29 | # Executables 30 | *.exe 31 | *.out 32 | *.app 33 | uarch-bench 34 | unit-test 35 | 36 | # Eclipse CDT artifacts 37 | .cproject 38 | .project 39 | .settings 40 | 41 | # nasm listing file 42 | *.list 43 | 44 | # libpfm4 directory 45 | libpfm-4*/* 46 | 47 | # core files 48 | /core* 49 | /vgcore* 50 | 51 | # perf files 52 | /perf.* 53 | 54 | /tmp/* 55 | 56 | dummy.rebuild 57 | 58 | # local make config file 59 | local.mk 60 | 61 | # event download indicator file 62 | /download_events.touch 63 | 64 | # hotspot error dumps 65 | hs_err_pid*.log 66 | 67 | # nasm rpms 68 | /nasm-binaries/rpms 69 | 70 | .vscode -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libpfc"] 2 | path = libpfc 3 | url = https://github.com/obilaniu/libpfc 4 | [submodule "nasm-utils"] 5 | path = nasm-utils 6 | url = https://github.com/travisdowns/nasm-utils 7 | [submodule "backward-cpp"] 8 | path = backward-cpp 9 | url = https://github.com/bombela/backward-cpp.git 10 | [submodule "libpfm4"] 11 | path = libpfm4 12 | url = https://git.code.sf.net/p/perfmon2/libpfm4 13 | [submodule "portable-snippets"] 14 | path = portable-snippets 15 | url = https://github.com/nemequ/portable-snippets 16 | [submodule "pmu-tools"] 17 | path = pmu-tools 18 | url = https://github.com/travisdowns/pmu-tools 19 | -------------------------------------------------------------------------------- /BUILDING.md: -------------------------------------------------------------------------------- 1 | Certain configurable aspects of the build are controlled by make variables. 2 | 3 | You can get a non-exhaustive list of these variables and their defaults by looking at [config.mk](config.mk). 4 | 5 | Although reasonable defaults are chosen, you may want to override them. 6 | 7 | You may override a variable on a per-invocation basis, by providing a new value on the `make` command line. For example, to build the project in debug mode by overriding the `DEBUG` variable, one could invoke make as follows: 8 | 9 | make DEBUG=1 clean && make DEBUG=1 10 | 11 | Note that there are two invocations of make here, one for the `clean` target and to rebuild the project (default target), both with `DEBUG=1`. This reflects the fact that, generally speaking, when you change any build variable, you need to *explicitly clean and rebuild* the project. That is, make knows when dependencies are out of date, but it doesn't know when you've changed build variables. 12 | 13 | You can also also make some build variables more permanent by adding them to the file `local.mk` in the root project directory (this file doesn't exist by default, you have to create it). This file is included in the main `Makefile` if it exists and here you can set variables that will take effect on every build. Here's what I have in mine, for example: 14 | 15 | 16 | ``` 17 | ASM ?= nasm 18 | DEBUG ?= 0 19 | USE_BACKWARD_CPP ?= 1 20 | BACKWARD_HAS_BFD ?= 1 21 | CPU_ARCH ?= haswell 22 | 23 | # use ccache for C++ compiles 24 | CXX := ccache g++ 25 | CC := ccache gcc 26 | 27 | # use gold linker 28 | LDFLAGS = -fuse-ld=gold 29 | ``` 30 | 31 | Changes to `local.mk` trigger a rebuild, so you usually don't have to do a `clean` when you change a value there. 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 travisdowns 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /bench-declarations.h: -------------------------------------------------------------------------------- 1 | /* 2 | * bench-declarations.hpp 3 | * 4 | * Basic definitions for benchmark methods types, used by assembly and C/C++ benchmark methods alike. 5 | */ 6 | 7 | #ifndef BENCH_DECLARATIONS_H_ 8 | #define BENCH_DECLARATIONS_H_ 9 | 10 | #include 11 | 12 | #if defined(__cplusplus) 13 | extern "C" { 14 | #endif 15 | 16 | /** 17 | * The prototype for a benchmark function. 18 | * 19 | * iters: the number of times the benchmark shoudl execute using its internal loop 20 | * arg: the benchmark specific arg, for benchmarks that need an argument (e.g,. a memory region to read from) 21 | * 22 | * return value: ignored by the benchmarking code, but useful for C/C++ benchmarks to return some value that 23 | * depends on the substance of the benchmark so that the method isn't optimized away. 24 | */ 25 | extern "C" typedef long (bench2_f)(uint64_t iters, void *arg); 26 | 27 | bench2_f dummy_bench; 28 | 29 | // suitable for use with the BOOST_PP_REPEAT macros to generate numbered function declarations 30 | #define DECL_BENCH2(z, n, fname) bench2_f fname ## n; 31 | 32 | #if defined(__cplusplus) 33 | } 34 | #endif 35 | 36 | #endif /* BENCH_DECLARATIONS_H_ */ 37 | -------------------------------------------------------------------------------- /benchmark-group.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * benchmark-group.cpp 3 | */ 4 | #include 5 | 6 | #include "benchmark.hpp" 7 | #include "table.hpp" 8 | #include "simple-timer.hpp" 9 | 10 | using namespace std; 11 | 12 | using namespace table; 13 | 14 | 15 | void BenchmarkGroup::runIf(Context &c, const predicate_t& predicate) { 16 | SimpleTimer timer; 17 | bool header = false; 18 | for (auto& b : benches_) { 19 | if (predicate(b)) { 20 | if (!header) { 21 | c.out() << std::endl << "** Running group " << getId() << " : " << getDescription() << " **" << std::endl; 22 | printGroupHeader(c); 23 | header = true; 24 | } 25 | b->runAndPrint(c); 26 | } 27 | } 28 | if (header) { 29 | c.out() << "Finished in " << timer.elapsed() << " ms (" << getId() << ")" << endl; 30 | } 31 | } 32 | 33 | void BenchmarkGroup::printBenches(std::ostream& out) const { 34 | Table t; 35 | t.colInfo(0).justify = ColInfo::LEFT; 36 | t.newRow().add("ID").add("Description").add("Tags").add("ISA Features"); 37 | for (auto& bench : getBenches()) { 38 | t.newRow() 39 | .add(bench->getPath()) 40 | .add(bench->getDescription()) 41 | .add(container_to_string(bench->getTags())) 42 | .add(container_to_string(bench->getFeatures())); 43 | } 44 | out << t.str(); 45 | } 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/arithmetic.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_ARITHMETIC_HPP 15 | # define BOOST_PREPROCESSOR_ARITHMETIC_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # include 21 | # include 22 | # include 23 | # include 24 | # 25 | # endif 26 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/arithmetic/div.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_ARITHMETIC_DIV_HPP 15 | # define BOOST_PREPROCESSOR_ARITHMETIC_DIV_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_DIV */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_DIV(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE(x, y)) 25 | # else 26 | # define BOOST_PP_DIV(x, y) BOOST_PP_DIV_I(x, y) 27 | # define BOOST_PP_DIV_I(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE(x, y)) 28 | # endif 29 | # 30 | # /* BOOST_PP_DIV_D */ 31 | # 32 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 33 | # define BOOST_PP_DIV_D(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE_D(d, x, y)) 34 | # else 35 | # define BOOST_PP_DIV_D(d, x, y) BOOST_PP_DIV_D_I(d, x, y) 36 | # define BOOST_PP_DIV_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE_D(d, x, y)) 37 | # endif 38 | # 39 | # endif 40 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/arithmetic/mod.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_ARITHMETIC_MOD_HPP 15 | # define BOOST_PREPROCESSOR_ARITHMETIC_MOD_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_MOD */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_MOD(x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE(x, y)) 25 | # else 26 | # define BOOST_PP_MOD(x, y) BOOST_PP_MOD_I(x, y) 27 | # define BOOST_PP_MOD_I(x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE(x, y)) 28 | # endif 29 | # 30 | # /* BOOST_PP_MOD_D */ 31 | # 32 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 33 | # define BOOST_PP_MOD_D(d, x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE_D(d, x, y)) 34 | # else 35 | # define BOOST_PP_MOD_D(d, x, y) BOOST_PP_MOD_D_I(d, x, y) 36 | # define BOOST_PP_MOD_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE_D(d, x, y)) 37 | # endif 38 | # 39 | # endif 40 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/array.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002-2011. * 4 | # * (C) Copyright Edward Diener 2011. * 5 | # * Distributed under the Boost Software License, Version 1.0. (See * 6 | # * accompanying file LICENSE_1_0.txt or copy at * 7 | # * http://www.boost.org/LICENSE_1_0.txt) * 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_ARRAY_HPP 14 | # define BOOST_PREPROCESSOR_ARRAY_HPP 15 | # 16 | # include 17 | # include 18 | # include 19 | # include 20 | # include 21 | # include 22 | # include 23 | # include 24 | # include 25 | # include 26 | # include 27 | # include 28 | # include 29 | # include 30 | # include 31 | # 32 | # endif 33 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/array/data.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ARRAY_DATA_HPP 13 | # define BOOST_PREPROCESSOR_ARRAY_DATA_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_ARRAY_DATA */ 19 | # 20 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 21 | # define BOOST_PP_ARRAY_DATA(array) BOOST_PP_TUPLE_ELEM(2, 1, array) 22 | # else 23 | # define BOOST_PP_ARRAY_DATA(array) BOOST_PP_ARRAY_DATA_I(array) 24 | # define BOOST_PP_ARRAY_DATA_I(array) BOOST_PP_ARRAY_DATA_II array 25 | # define BOOST_PP_ARRAY_DATA_II(size, data) data 26 | # endif 27 | # 28 | # endif 29 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/array/elem.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ARRAY_ELEM_HPP 13 | # define BOOST_PREPROCESSOR_ARRAY_ELEM_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_ARRAY_ELEM */ 21 | # 22 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 23 | # define BOOST_PP_ARRAY_ELEM(i, array) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE(array), i, BOOST_PP_ARRAY_DATA(array)) 24 | # else 25 | # define BOOST_PP_ARRAY_ELEM(i, array) BOOST_PP_ARRAY_ELEM_I(i, array) 26 | # define BOOST_PP_ARRAY_ELEM_I(i, array) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE(array), i, BOOST_PP_ARRAY_DATA(array)) 27 | # endif 28 | # 29 | # endif 30 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/array/enum.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2011. * 4 | # * (C) Copyright Paul Mensonides 2011. * 5 | # * Distributed under the Boost Software License, Version 1.0. (See * 6 | # * accompanying file LICENSE_1_0.txt or copy at * 7 | # * http://www.boost.org/LICENSE_1_0.txt) * 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_ARRAY_ENUM_HPP 14 | # define BOOST_PREPROCESSOR_ARRAY_ENUM_HPP 15 | # 16 | # include 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_ARRAY_ENUM */ 21 | # 22 | # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() 23 | # define BOOST_PP_ARRAY_ENUM(array) BOOST_PP_ARRAY_ENUM_I(BOOST_PP_TUPLE_REM_CTOR, array) 24 | # define BOOST_PP_ARRAY_ENUM_I(m, args) BOOST_PP_ARRAY_ENUM_II(m, args) 25 | # define BOOST_PP_ARRAY_ENUM_II(m, args) BOOST_PP_CAT(m ## args,) 26 | # elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() 27 | # define BOOST_PP_ARRAY_ENUM(array) BOOST_PP_ARRAY_ENUM_I(array) 28 | # define BOOST_PP_ARRAY_ENUM_I(array) BOOST_PP_TUPLE_REM_CTOR ## array 29 | # else 30 | # define BOOST_PP_ARRAY_ENUM(array) BOOST_PP_TUPLE_REM_CTOR array 31 | # endif 32 | # 33 | # endif 34 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/array/pop_back.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ARRAY_POP_BACK_HPP 13 | # define BOOST_PREPROCESSOR_ARRAY_POP_BACK_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_ARRAY_POP_BACK */ 22 | # 23 | # define BOOST_PP_ARRAY_POP_BACK(array) BOOST_PP_ARRAY_POP_BACK_Z(BOOST_PP_DEDUCE_Z(), array) 24 | # 25 | # /* BOOST_PP_ARRAY_POP_BACK_Z */ 26 | # 27 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 28 | # define BOOST_PP_ARRAY_POP_BACK_Z(z, array) BOOST_PP_ARRAY_POP_BACK_I(z, BOOST_PP_ARRAY_SIZE(array), array) 29 | # else 30 | # define BOOST_PP_ARRAY_POP_BACK_Z(z, array) BOOST_PP_ARRAY_POP_BACK_Z_D(z, array) 31 | # define BOOST_PP_ARRAY_POP_BACK_Z_D(z, array) BOOST_PP_ARRAY_POP_BACK_I(z, BOOST_PP_ARRAY_SIZE(array), array) 32 | # endif 33 | # 34 | # define BOOST_PP_ARRAY_POP_BACK_I(z, size, array) (BOOST_PP_DEC(size), (BOOST_PP_ENUM_ ## z(BOOST_PP_DEC(size), BOOST_PP_ARRAY_POP_BACK_M, array))) 35 | # define BOOST_PP_ARRAY_POP_BACK_M(z, n, data) BOOST_PP_ARRAY_ELEM(n, data) 36 | # 37 | # endif 38 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/array/pop_front.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ARRAY_POP_FRONT_HPP 13 | # define BOOST_PREPROCESSOR_ARRAY_POP_FRONT_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # include 20 | # include 21 | # 22 | # /* BOOST_PP_ARRAY_POP_FRONT */ 23 | # 24 | # define BOOST_PP_ARRAY_POP_FRONT(array) BOOST_PP_ARRAY_POP_FRONT_Z(BOOST_PP_DEDUCE_Z(), array) 25 | # 26 | # /* BOOST_PP_ARRAY_POP_FRONT_Z */ 27 | # 28 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 29 | # define BOOST_PP_ARRAY_POP_FRONT_Z(z, array) BOOST_PP_ARRAY_POP_FRONT_I(z, BOOST_PP_ARRAY_SIZE(array), array) 30 | # else 31 | # define BOOST_PP_ARRAY_POP_FRONT_Z(z, array) BOOST_PP_ARRAY_POP_FRONT_Z_D(z, array) 32 | # define BOOST_PP_ARRAY_POP_FRONT_Z_D(z, array) BOOST_PP_ARRAY_POP_FRONT_I(z, BOOST_PP_ARRAY_SIZE(array), array) 33 | # endif 34 | # 35 | # define BOOST_PP_ARRAY_POP_FRONT_I(z, size, array) (BOOST_PP_DEC(size), (BOOST_PP_ENUM_ ## z(BOOST_PP_DEC(size), BOOST_PP_ARRAY_POP_FRONT_M, array))) 36 | # define BOOST_PP_ARRAY_POP_FRONT_M(z, n, data) BOOST_PP_ARRAY_ELEM(BOOST_PP_INC(n), data) 37 | # 38 | # endif 39 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/array/push_back.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * (C) Copyright Edward Diener 2014. 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_ARRAY_PUSH_BACK_HPP 14 | # define BOOST_PREPROCESSOR_ARRAY_PUSH_BACK_HPP 15 | # 16 | # include 17 | # include 18 | # include 19 | # include 20 | # include 21 | # include 22 | # include 23 | # 24 | # /* BOOST_PP_ARRAY_PUSH_BACK */ 25 | # 26 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 27 | # define BOOST_PP_ARRAY_PUSH_BACK(array, elem) BOOST_PP_ARRAY_PUSH_BACK_I(BOOST_PP_ARRAY_SIZE(array), BOOST_PP_ARRAY_DATA(array), elem) 28 | # else 29 | # define BOOST_PP_ARRAY_PUSH_BACK(array, elem) BOOST_PP_ARRAY_PUSH_BACK_D(array, elem) 30 | # define BOOST_PP_ARRAY_PUSH_BACK_D(array, elem) BOOST_PP_ARRAY_PUSH_BACK_I(BOOST_PP_ARRAY_SIZE(array), BOOST_PP_ARRAY_DATA(array), elem) 31 | # endif 32 | # 33 | # define BOOST_PP_ARRAY_PUSH_BACK_I(size, data, elem) (BOOST_PP_INC(size), (BOOST_PP_ARRAY_DETAIL_GET_DATA(size,data) BOOST_PP_COMMA_IF(size) elem)) 34 | # 35 | # endif 36 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/array/push_front.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * (C) Copyright Edward Diener 2014. 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_ARRAY_PUSH_FRONT_HPP 14 | # define BOOST_PREPROCESSOR_ARRAY_PUSH_FRONT_HPP 15 | # 16 | # include 17 | # include 18 | # include 19 | # include 20 | # include 21 | # include 22 | # include 23 | # 24 | # /* BOOST_PP_ARRAY_PUSH_FRONT */ 25 | # 26 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 27 | # define BOOST_PP_ARRAY_PUSH_FRONT(array, elem) BOOST_PP_ARRAY_PUSH_FRONT_I(BOOST_PP_ARRAY_SIZE(array), BOOST_PP_ARRAY_DATA(array), elem) 28 | # else 29 | # define BOOST_PP_ARRAY_PUSH_FRONT(array, elem) BOOST_PP_ARRAY_PUSH_FRONT_D(array, elem) 30 | # define BOOST_PP_ARRAY_PUSH_FRONT_D(array, elem) BOOST_PP_ARRAY_PUSH_FRONT_I(BOOST_PP_ARRAY_SIZE(array), BOOST_PP_ARRAY_DATA(array), elem) 31 | # endif 32 | # 33 | # define BOOST_PP_ARRAY_PUSH_FRONT_I(size, data, elem) (BOOST_PP_INC(size), (elem BOOST_PP_COMMA_IF(size) BOOST_PP_ARRAY_DETAIL_GET_DATA(size,data))) 34 | # 35 | # endif 36 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/array/reverse.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ARRAY_REVERSE_HPP 13 | # define BOOST_PREPROCESSOR_ARRAY_REVERSE_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_ARRAY_REVERSE */ 21 | # 22 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 23 | # define BOOST_PP_ARRAY_REVERSE(array) (BOOST_PP_ARRAY_SIZE(array), BOOST_PP_TUPLE_REVERSE(BOOST_PP_ARRAY_SIZE(array), BOOST_PP_ARRAY_DATA(array))) 24 | # else 25 | # define BOOST_PP_ARRAY_REVERSE(array) BOOST_PP_ARRAY_REVERSE_I(array) 26 | # define BOOST_PP_ARRAY_REVERSE_I(array) (BOOST_PP_ARRAY_SIZE(array), BOOST_PP_TUPLE_REVERSE(BOOST_PP_ARRAY_SIZE(array), BOOST_PP_ARRAY_DATA(array))) 27 | # endif 28 | # 29 | # endif 30 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/array/size.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ARRAY_SIZE_HPP 13 | # define BOOST_PREPROCESSOR_ARRAY_SIZE_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_ARRAY_SIZE */ 19 | # 20 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 21 | # define BOOST_PP_ARRAY_SIZE(array) BOOST_PP_TUPLE_ELEM(2, 0, array) 22 | # else 23 | # define BOOST_PP_ARRAY_SIZE(array) BOOST_PP_ARRAY_SIZE_I(array) 24 | # define BOOST_PP_ARRAY_SIZE_I(array) BOOST_PP_ARRAY_SIZE_II array 25 | # define BOOST_PP_ARRAY_SIZE_II(size, data) size 26 | # endif 27 | # 28 | # endif 29 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/array/to_tuple.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2011. * 4 | # * (C) Copyright Paul Mensonides 2011. * 5 | # * Distributed under the Boost Software License, Version 1.0. (See * 6 | # * accompanying file LICENSE_1_0.txt or copy at * 7 | # * http://www.boost.org/LICENSE_1_0.txt) * 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_ARRAY_TO_TUPLE_HPP 14 | # define BOOST_PREPROCESSOR_ARRAY_TO_TUPLE_HPP 15 | # 16 | # include 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_ARRAY_TO_TUPLE */ 21 | # 22 | # define BOOST_PP_ARRAY_TO_TUPLE(array) \ 23 | BOOST_PP_IF \ 24 | ( \ 25 | BOOST_PP_ARRAY_SIZE(array), \ 26 | BOOST_PP_ARRAY_DATA, \ 27 | BOOST_PP_ARRAY_TO_TUPLE_EMPTY \ 28 | ) \ 29 | (array) \ 30 | /**/ 31 | # define BOOST_PP_ARRAY_TO_TUPLE_EMPTY(array) 32 | # 33 | # endif 34 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/assert_msg.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ASSERT_MSG_HPP 13 | # define BOOST_PREPROCESSOR_ASSERT_MSG_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/cat.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_CAT_HPP 15 | # define BOOST_PREPROCESSOR_CAT_HPP 16 | # 17 | # include 18 | # 19 | # /* BOOST_PP_CAT */ 20 | # 21 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() 22 | # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) 23 | # else 24 | # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_OO((a, b)) 25 | # define BOOST_PP_CAT_OO(par) BOOST_PP_CAT_I ## par 26 | # endif 27 | # 28 | # if (~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1700) 29 | # define BOOST_PP_CAT_I(a, b) a ## b 30 | # else 31 | # define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b) 32 | # define BOOST_PP_CAT_II(p, res) res 33 | # endif 34 | # 35 | # endif 36 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/comma.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_COMMA_HPP 13 | # define BOOST_PREPROCESSOR_COMMA_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/comma_if.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_COMMA_IF_HPP 13 | # define BOOST_PREPROCESSOR_COMMA_IF_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/comparison.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_COMPARISON_HPP 15 | # define BOOST_PREPROCESSOR_COMPARISON_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # include 21 | # include 22 | # include 23 | # 24 | # endif 25 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/comparison/equal.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_COMPARISON_EQUAL_HPP 15 | # define BOOST_PREPROCESSOR_COMPARISON_EQUAL_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_EQUAL */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_EQUAL(x, y) BOOST_PP_COMPL(BOOST_PP_NOT_EQUAL(x, y)) 25 | # else 26 | # define BOOST_PP_EQUAL(x, y) BOOST_PP_EQUAL_I(x, y) 27 | # define BOOST_PP_EQUAL_I(x, y) BOOST_PP_COMPL(BOOST_PP_NOT_EQUAL(x, y)) 28 | # endif 29 | # 30 | # /* BOOST_PP_EQUAL_D */ 31 | # 32 | # define BOOST_PP_EQUAL_D(d, x, y) BOOST_PP_EQUAL(x, y) 33 | # 34 | # endif 35 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/comparison/greater.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_COMPARISON_GREATER_HPP 15 | # define BOOST_PREPROCESSOR_COMPARISON_GREATER_HPP 16 | # 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_GREATER */ 21 | # 22 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 23 | # define BOOST_PP_GREATER(x, y) BOOST_PP_LESS(y, x) 24 | # else 25 | # define BOOST_PP_GREATER(x, y) BOOST_PP_GREATER_I(x, y) 26 | # define BOOST_PP_GREATER_I(x, y) BOOST_PP_LESS(y, x) 27 | # endif 28 | # 29 | # /* BOOST_PP_GREATER_D */ 30 | # 31 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 32 | # define BOOST_PP_GREATER_D(d, x, y) BOOST_PP_LESS_D(d, y, x) 33 | # else 34 | # define BOOST_PP_GREATER_D(d, x, y) BOOST_PP_GREATER_D_I(d, x, y) 35 | # define BOOST_PP_GREATER_D_I(d, x, y) BOOST_PP_LESS_D(d, y, x) 36 | # endif 37 | # 38 | # endif 39 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/comparison/greater_equal.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP 15 | # define BOOST_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP 16 | # 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_GREATER_EQUAL */ 21 | # 22 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 23 | # define BOOST_PP_GREATER_EQUAL(x, y) BOOST_PP_LESS_EQUAL(y, x) 24 | # else 25 | # define BOOST_PP_GREATER_EQUAL(x, y) BOOST_PP_GREATER_EQUAL_I(x, y) 26 | # define BOOST_PP_GREATER_EQUAL_I(x, y) BOOST_PP_LESS_EQUAL(y, x) 27 | # endif 28 | # 29 | # /* BOOST_PP_GREATER_EQUAL_D */ 30 | # 31 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 32 | # define BOOST_PP_GREATER_EQUAL_D(d, x, y) BOOST_PP_LESS_EQUAL_D(d, y, x) 33 | # else 34 | # define BOOST_PP_GREATER_EQUAL_D(d, x, y) BOOST_PP_GREATER_EQUAL_D_I(d, x, y) 35 | # define BOOST_PP_GREATER_EQUAL_D_I(d, x, y) BOOST_PP_LESS_EQUAL_D(d, y, x) 36 | # endif 37 | # 38 | # endif 39 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/comparison/less_equal.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP 15 | # define BOOST_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_LESS_EQUAL */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_LESS_EQUAL(x, y) BOOST_PP_NOT(BOOST_PP_SUB(x, y)) 25 | # else 26 | # define BOOST_PP_LESS_EQUAL(x, y) BOOST_PP_LESS_EQUAL_I(x, y) 27 | # define BOOST_PP_LESS_EQUAL_I(x, y) BOOST_PP_NOT(BOOST_PP_SUB(x, y)) 28 | # endif 29 | # 30 | # /* BOOST_PP_LESS_EQUAL_D */ 31 | # 32 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 33 | # define BOOST_PP_LESS_EQUAL_D(d, x, y) BOOST_PP_NOT(BOOST_PP_SUB_D(d, x, y)) 34 | # else 35 | # define BOOST_PP_LESS_EQUAL_D(d, x, y) BOOST_PP_LESS_EQUAL_D_I(d, x, y) 36 | # define BOOST_PP_LESS_EQUAL_D_I(d, x, y) BOOST_PP_NOT(BOOST_PP_SUB_D(d, x, y)) 37 | # endif 38 | # 39 | # endif 40 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/config/limits.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # /* Revised by Edward Diener (2011) */ 12 | # 13 | # /* See http://www.boost.org for most recent version. */ 14 | # 15 | # ifndef BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP 16 | # define BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP 17 | # 18 | # define BOOST_PP_LIMIT_MAG 256 19 | # define BOOST_PP_LIMIT_TUPLE 64 20 | # define BOOST_PP_LIMIT_DIM 3 21 | # define BOOST_PP_LIMIT_REPEAT 256 22 | # define BOOST_PP_LIMIT_WHILE 256 23 | # define BOOST_PP_LIMIT_FOR 256 24 | # define BOOST_PP_LIMIT_ITERATION 256 25 | # define BOOST_PP_LIMIT_ITERATION_DIM 3 26 | # define BOOST_PP_LIMIT_SEQ 256 27 | # define BOOST_PP_LIMIT_SLOT_SIG 10 28 | # define BOOST_PP_LIMIT_SLOT_COUNT 5 29 | # 30 | # endif 31 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/control.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_CONTROL_HPP 13 | # define BOOST_PREPROCESSOR_CONTROL_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # include 20 | # include 21 | # 22 | # endif 23 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/control/deduce_d.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_CONTROL_DEDUCE_D_HPP 13 | # define BOOST_PREPROCESSOR_CONTROL_DEDUCE_D_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_DEDUCE_D */ 19 | # 20 | # define BOOST_PP_DEDUCE_D() BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256) 21 | # 22 | # endif 23 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/control/expr_if.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_CONTROL_EXPR_IF_HPP 15 | # define BOOST_PREPROCESSOR_CONTROL_EXPR_IF_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_EXPR_IF */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_EXPR_IF(cond, expr) BOOST_PP_EXPR_IIF(BOOST_PP_BOOL(cond), expr) 25 | # else 26 | # define BOOST_PP_EXPR_IF(cond, expr) BOOST_PP_EXPR_IF_I(cond, expr) 27 | # define BOOST_PP_EXPR_IF_I(cond, expr) BOOST_PP_EXPR_IIF(BOOST_PP_BOOL(cond), expr) 28 | # endif 29 | # 30 | # endif 31 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/control/expr_iif.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_CONTROL_EXPR_IIF_HPP 13 | # define BOOST_PREPROCESSOR_CONTROL_EXPR_IIF_HPP 14 | # 15 | # include 16 | # 17 | # /* BOOST_PP_EXPR_IIF */ 18 | # 19 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() 20 | # define BOOST_PP_EXPR_IIF(bit, expr) BOOST_PP_EXPR_IIF_I(bit, expr) 21 | # else 22 | # define BOOST_PP_EXPR_IIF(bit, expr) BOOST_PP_EXPR_IIF_OO((bit, expr)) 23 | # define BOOST_PP_EXPR_IIF_OO(par) BOOST_PP_EXPR_IIF_I ## par 24 | # endif 25 | # 26 | # define BOOST_PP_EXPR_IIF_I(bit, expr) BOOST_PP_EXPR_IIF_ ## bit(expr) 27 | # 28 | # define BOOST_PP_EXPR_IIF_0(expr) 29 | # define BOOST_PP_EXPR_IIF_1(expr) expr 30 | # 31 | # endif 32 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/control/if.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_CONTROL_IF_HPP 15 | # define BOOST_PREPROCESSOR_CONTROL_IF_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_IF */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_IF(cond, t, f) BOOST_PP_IIF(BOOST_PP_BOOL(cond), t, f) 25 | # else 26 | # define BOOST_PP_IF(cond, t, f) BOOST_PP_IF_I(cond, t, f) 27 | # define BOOST_PP_IF_I(cond, t, f) BOOST_PP_IIF(BOOST_PP_BOOL(cond), t, f) 28 | # endif 29 | # 30 | # endif 31 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/control/iif.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_CONTROL_IIF_HPP 13 | # define BOOST_PREPROCESSOR_CONTROL_IIF_HPP 14 | # 15 | # include 16 | # 17 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() 18 | # define BOOST_PP_IIF(bit, t, f) BOOST_PP_IIF_I(bit, t, f) 19 | # else 20 | # define BOOST_PP_IIF(bit, t, f) BOOST_PP_IIF_OO((bit, t, f)) 21 | # define BOOST_PP_IIF_OO(par) BOOST_PP_IIF_I ## par 22 | # endif 23 | # 24 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() 25 | # define BOOST_PP_IIF_I(bit, t, f) BOOST_PP_IIF_ ## bit(t, f) 26 | # else 27 | # define BOOST_PP_IIF_I(bit, t, f) BOOST_PP_IIF_II(BOOST_PP_IIF_ ## bit(t, f)) 28 | # define BOOST_PP_IIF_II(id) id 29 | # endif 30 | # 31 | # define BOOST_PP_IIF_0(t, f) f 32 | # define BOOST_PP_IIF_1(t, f) t 33 | # 34 | # endif 35 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/debug.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_DEBUG_HPP 13 | # define BOOST_PREPROCESSOR_DEBUG_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # endif 19 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/debug/assert.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_DEBUG_ASSERT_HPP 15 | # define BOOST_PREPROCESSOR_DEBUG_ASSERT_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # include 21 | # include 22 | # 23 | # /* BOOST_PP_ASSERT */ 24 | # 25 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 26 | # define BOOST_PP_ASSERT BOOST_PP_ASSERT_D 27 | # else 28 | # define BOOST_PP_ASSERT(cond) BOOST_PP_ASSERT_D(cond) 29 | # endif 30 | # 31 | # define BOOST_PP_ASSERT_D(cond) BOOST_PP_IIF(BOOST_PP_NOT(cond), BOOST_PP_ASSERT_ERROR, BOOST_PP_TUPLE_EAT_1)(...) 32 | # define BOOST_PP_ASSERT_ERROR(x, y, z) 33 | # 34 | # /* BOOST_PP_ASSERT_MSG */ 35 | # 36 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 37 | # define BOOST_PP_ASSERT_MSG BOOST_PP_ASSERT_MSG_D 38 | # else 39 | # define BOOST_PP_ASSERT_MSG(cond, msg) BOOST_PP_ASSERT_MSG_D(cond, msg) 40 | # endif 41 | # 42 | # define BOOST_PP_ASSERT_MSG_D(cond, msg) BOOST_PP_EXPR_IIF(BOOST_PP_NOT(cond), msg) 43 | # 44 | # endif 45 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/debug/error.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_DEBUG_ERROR_HPP 13 | # define BOOST_PREPROCESSOR_DEBUG_ERROR_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_ERROR */ 19 | # 20 | # if BOOST_PP_CONFIG_ERRORS 21 | # define BOOST_PP_ERROR(code) BOOST_PP_CAT(BOOST_PP_ERROR_, code) 22 | # endif 23 | # 24 | # define BOOST_PP_ERROR_0x0000 BOOST_PP_ERROR(0x0000, BOOST_PP_INDEX_OUT_OF_BOUNDS) 25 | # define BOOST_PP_ERROR_0x0001 BOOST_PP_ERROR(0x0001, BOOST_PP_WHILE_OVERFLOW) 26 | # define BOOST_PP_ERROR_0x0002 BOOST_PP_ERROR(0x0002, BOOST_PP_FOR_OVERFLOW) 27 | # define BOOST_PP_ERROR_0x0003 BOOST_PP_ERROR(0x0003, BOOST_PP_REPEAT_OVERFLOW) 28 | # define BOOST_PP_ERROR_0x0004 BOOST_PP_ERROR(0x0004, BOOST_PP_LIST_FOLD_OVERFLOW) 29 | # define BOOST_PP_ERROR_0x0005 BOOST_PP_ERROR(0x0005, BOOST_PP_SEQ_FOLD_OVERFLOW) 30 | # define BOOST_PP_ERROR_0x0006 BOOST_PP_ERROR(0x0006, BOOST_PP_ARITHMETIC_OVERFLOW) 31 | # define BOOST_PP_ERROR_0x0007 BOOST_PP_ERROR(0x0007, BOOST_PP_DIVISION_BY_ZERO) 32 | # 33 | # endif 34 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/debug/line.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_DEBUG_LINE_HPP 13 | # define BOOST_PREPROCESSOR_DEBUG_LINE_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_LINE */ 21 | # 22 | # if BOOST_PP_CONFIG_EXTENDED_LINE_INFO 23 | # define BOOST_PP_LINE(line, file) line BOOST_PP_CAT(BOOST_PP_LINE_, BOOST_PP_IS_ITERATING)(file) 24 | # define BOOST_PP_LINE_BOOST_PP_IS_ITERATING(file) #file 25 | # define BOOST_PP_LINE_1(file) BOOST_PP_STRINGIZE(file BOOST_PP_CAT(BOOST_PP_LINE_I_, BOOST_PP_ITERATION_DEPTH())()) 26 | # define BOOST_PP_LINE_I_1() [BOOST_PP_FRAME_ITERATION(1)] 27 | # define BOOST_PP_LINE_I_2() BOOST_PP_LINE_I_1()[BOOST_PP_FRAME_ITERATION(2)] 28 | # define BOOST_PP_LINE_I_3() BOOST_PP_LINE_I_2()[BOOST_PP_FRAME_ITERATION(3)] 29 | # define BOOST_PP_LINE_I_4() BOOST_PP_LINE_I_3()[BOOST_PP_FRAME_ITERATION(4)] 30 | # define BOOST_PP_LINE_I_5() BOOST_PP_LINE_I_4()[BOOST_PP_FRAME_ITERATION(5)] 31 | # else 32 | # define BOOST_PP_LINE(line, file) line __FILE__ 33 | # endif 34 | # 35 | # endif 36 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/dec.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_DEC_HPP 13 | # define BOOST_PREPROCESSOR_DEC_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/detail/is_binary.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_DETAIL_IS_BINARY_HPP 13 | # define BOOST_PREPROCESSOR_DETAIL_IS_BINARY_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_IS_BINARY */ 19 | # 20 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 21 | # define BOOST_PP_IS_BINARY(x) BOOST_PP_CHECK(x, BOOST_PP_IS_BINARY_CHECK) 22 | # else 23 | # define BOOST_PP_IS_BINARY(x) BOOST_PP_IS_BINARY_I(x) 24 | # define BOOST_PP_IS_BINARY_I(x) BOOST_PP_CHECK(x, BOOST_PP_IS_BINARY_CHECK) 25 | # endif 26 | # 27 | # define BOOST_PP_IS_BINARY_CHECK(a, b) 1 28 | # define BOOST_PP_CHECK_RESULT_BOOST_PP_IS_BINARY_CHECK 0, BOOST_PP_NIL 29 | # 30 | # endif 31 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/detail/is_nullary.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_DETAIL_IS_NULLARY_HPP 13 | # define BOOST_PREPROCESSOR_DETAIL_IS_NULLARY_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_IS_NULLARY */ 19 | # 20 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 21 | # define BOOST_PP_IS_NULLARY(x) BOOST_PP_CHECK(x, BOOST_PP_IS_NULLARY_CHECK) 22 | # else 23 | # define BOOST_PP_IS_NULLARY(x) BOOST_PP_IS_NULLARY_I(x) 24 | # define BOOST_PP_IS_NULLARY_I(x) BOOST_PP_CHECK(x, BOOST_PP_IS_NULLARY_CHECK) 25 | # endif 26 | # 27 | # define BOOST_PP_IS_NULLARY_CHECK() 1 28 | # define BOOST_PP_CHECK_RESULT_BOOST_PP_IS_NULLARY_CHECK 0, BOOST_PP_NIL 29 | # 30 | # endif 31 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/detail/is_unary.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_DETAIL_IS_UNARY_HPP 13 | # define BOOST_PREPROCESSOR_DETAIL_IS_UNARY_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_IS_UNARY */ 19 | # 20 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 21 | # define BOOST_PP_IS_UNARY(x) BOOST_PP_CHECK(x, BOOST_PP_IS_UNARY_CHECK) 22 | # else 23 | # define BOOST_PP_IS_UNARY(x) BOOST_PP_IS_UNARY_I(x) 24 | # define BOOST_PP_IS_UNARY_I(x) BOOST_PP_CHECK(x, BOOST_PP_IS_UNARY_CHECK) 25 | # endif 26 | # 27 | # define BOOST_PP_IS_UNARY_CHECK(a) 1 28 | # define BOOST_PP_CHECK_RESULT_BOOST_PP_IS_UNARY_CHECK 0, BOOST_PP_NIL 29 | # 30 | # endif 31 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/detail/null.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_DETAIL_NULL_HPP 13 | # define BOOST_PREPROCESSOR_DETAIL_NULL_HPP 14 | # 15 | # /* empty file */ 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/detail/split.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # ifndef BOOST_PREPROCESSOR_DETAIL_SPLIT_HPP 11 | # define BOOST_PREPROCESSOR_DETAIL_SPLIT_HPP 12 | # 13 | # include 14 | # 15 | # /* BOOST_PP_SPLIT */ 16 | # 17 | # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() 18 | # define BOOST_PP_SPLIT(n, im) BOOST_PP_SPLIT_I((n, im)) 19 | # define BOOST_PP_SPLIT_I(par) BOOST_PP_SPLIT_II ## par 20 | # define BOOST_PP_SPLIT_II(n, a, b) BOOST_PP_SPLIT_ ## n(a, b) 21 | # elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() 22 | # define BOOST_PP_SPLIT(n, im) BOOST_PP_SPLIT_I(n((im))) 23 | # define BOOST_PP_SPLIT_I(n) BOOST_PP_SPLIT_ID(BOOST_PP_SPLIT_II_ ## n) 24 | # define BOOST_PP_SPLIT_II_0(s) BOOST_PP_SPLIT_ID(BOOST_PP_SPLIT_0 s) 25 | # define BOOST_PP_SPLIT_II_1(s) BOOST_PP_SPLIT_ID(BOOST_PP_SPLIT_1 s) 26 | # define BOOST_PP_SPLIT_ID(id) id 27 | # else 28 | # define BOOST_PP_SPLIT(n, im) BOOST_PP_SPLIT_I(n)(im) 29 | # define BOOST_PP_SPLIT_I(n) BOOST_PP_SPLIT_ ## n 30 | # endif 31 | # 32 | # define BOOST_PP_SPLIT_0(a, b) a 33 | # define BOOST_PP_SPLIT_1(a, b) b 34 | # 35 | # endif 36 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/empty.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_EMPTY_HPP 13 | # define BOOST_PREPROCESSOR_EMPTY_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/enum.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ENUM_HPP 13 | # define BOOST_PREPROCESSOR_ENUM_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/enum_params.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ENUM_PARAMS_HPP 13 | # define BOOST_PREPROCESSOR_ENUM_PARAMS_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/enum_params_with_a_default.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT_HPP 13 | # define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/enum_params_with_defaults.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS_HPP 13 | # define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/enum_shifted.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ENUM_SHIFTED_HPP 13 | # define BOOST_PREPROCESSOR_ENUM_SHIFTED_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/enum_shifted_params.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS_HPP 13 | # define BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/expand.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_EXPAND_HPP 13 | # define BOOST_PREPROCESSOR_EXPAND_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/expr_if.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_EXPR_IF_HPP 13 | # define BOOST_PREPROCESSOR_EXPR_IF_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/facilities.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002-2011. * 4 | # * (C) Copyright Edward Diener 2011. * 5 | # * Distributed under the Boost Software License, Version 1.0. (See * 6 | # * accompanying file LICENSE_1_0.txt or copy at * 7 | # * http://www.boost.org/LICENSE_1_0.txt) * 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_FACILITIES_HPP 14 | # define BOOST_PREPROCESSOR_FACILITIES_HPP 15 | # 16 | # include 17 | # include 18 | # include 19 | # include 20 | # include 21 | # include 22 | # 23 | # endif 24 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/facilities/apply.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_FACILITIES_APPLY_HPP 13 | # define BOOST_PREPROCESSOR_FACILITIES_APPLY_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_APPLY */ 21 | # 22 | # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 23 | # define BOOST_PP_APPLY(x) BOOST_PP_APPLY_I(x) 24 | # define BOOST_PP_APPLY_I(x) BOOST_PP_EXPR_IIF(BOOST_PP_IS_UNARY(x), BOOST_PP_TUPLE_REM_1 x) 25 | # elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC() 26 | # define BOOST_PP_APPLY(x) BOOST_PP_APPLY_I(x) 27 | # define BOOST_PP_APPLY_I(x) BOOST_PP_APPLY_ ## x 28 | # define BOOST_PP_APPLY_(x) x 29 | # define BOOST_PP_APPLY_BOOST_PP_NIL 30 | # else 31 | # define BOOST_PP_APPLY(x) BOOST_PP_EXPR_IIF(BOOST_PP_IS_UNARY(x), BOOST_PP_TUPLE_REM_1 x) 32 | # endif 33 | # 34 | # endif 35 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/facilities/empty.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_FACILITIES_EMPTY_HPP 15 | # define BOOST_PREPROCESSOR_FACILITIES_EMPTY_HPP 16 | # 17 | # include 18 | # 19 | # /* BOOST_PP_EMPTY */ 20 | # 21 | # define BOOST_PP_EMPTY() 22 | # 23 | # endif 24 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/facilities/expand.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_FACILITIES_EXPAND_HPP 15 | # define BOOST_PREPROCESSOR_FACILITIES_EXPAND_HPP 16 | # 17 | # include 18 | # 19 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC() 20 | # define BOOST_PP_EXPAND(x) BOOST_PP_EXPAND_I(x) 21 | # else 22 | # define BOOST_PP_EXPAND(x) BOOST_PP_EXPAND_OO((x)) 23 | # define BOOST_PP_EXPAND_OO(par) BOOST_PP_EXPAND_I ## par 24 | # endif 25 | # 26 | # define BOOST_PP_EXPAND_I(x) x 27 | # 28 | # endif 29 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/facilities/identity.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # /* Revised by Edward Diener (2015) */ 12 | # 13 | # /* See http://www.boost.org for most recent version. */ 14 | # 15 | # ifndef BOOST_PREPROCESSOR_FACILITIES_IDENTITY_HPP 16 | # define BOOST_PREPROCESSOR_FACILITIES_IDENTITY_HPP 17 | # 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_IDENTITY */ 22 | # 23 | # define BOOST_PP_IDENTITY(item) item BOOST_PP_EMPTY 24 | # 25 | # define BOOST_PP_IDENTITY_N(item,n) item BOOST_PP_TUPLE_EAT_N(n) 26 | # 27 | # endif 28 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/facilities/is_1.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2003. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_FACILITIES_IS_1_HPP 13 | # define BOOST_PREPROCESSOR_FACILITIES_IS_1_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_IS_1 */ 19 | # 20 | # define BOOST_PP_IS_1(x) BOOST_PP_IS_EMPTY(BOOST_PP_CAT(BOOST_PP_IS_1_HELPER_, x)) 21 | # define BOOST_PP_IS_1_HELPER_1 22 | # 23 | # endif 24 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/facilities/is_empty_or_1.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2003. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_OR_1_HPP 13 | # define BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_OR_1_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_IS_EMPTY_OR_1 */ 22 | # 23 | # define BOOST_PP_IS_EMPTY_OR_1(x) \ 24 | BOOST_PP_IIF( \ 25 | BOOST_PP_IS_EMPTY(x BOOST_PP_EMPTY()), \ 26 | BOOST_PP_IDENTITY(1), \ 27 | BOOST_PP_IS_1 \ 28 | )(x) \ 29 | /**/ 30 | # 31 | # endif 32 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/facilities/overload.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2011. * 4 | # * (C) Copyright Edward Diener 2011. * 5 | # * Distributed under the Boost Software License, Version 1.0. (See * 6 | # * accompanying file LICENSE_1_0.txt or copy at * 7 | # * http://www.boost.org/LICENSE_1_0.txt) * 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_FACILITIES_OVERLOAD_HPP 14 | # define BOOST_PREPROCESSOR_FACILITIES_OVERLOAD_HPP 15 | # 16 | # include 17 | # include 18 | # 19 | # /* BOOST_PP_OVERLOAD */ 20 | # 21 | # if BOOST_PP_VARIADICS 22 | # define BOOST_PP_OVERLOAD(prefix, ...) BOOST_PP_CAT(prefix, BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)) 23 | # endif 24 | # 25 | # endif 26 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/for.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_FOR_HPP 13 | # define BOOST_PREPROCESSOR_FOR_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/identity.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_IDENTITY_HPP 13 | # define BOOST_PREPROCESSOR_IDENTITY_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/if.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_IF_HPP 13 | # define BOOST_PREPROCESSOR_IF_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/inc.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_INC_HPP 13 | # define BOOST_PREPROCESSOR_INC_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/iterate.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ITERATE_HPP 13 | # define BOOST_PREPROCESSOR_ITERATE_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/iteration.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ITERATION_HPP 13 | # define BOOST_PREPROCESSOR_ITERATION_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # 19 | # endif 20 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/iteration/detail/self.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # if !defined(BOOST_PP_INDIRECT_SELF) 13 | # error BOOST_PP_ERROR: no indirect file to include 14 | # endif 15 | # 16 | # define BOOST_PP_IS_SELFISH 1 17 | # 18 | # include BOOST_PP_INDIRECT_SELF 19 | # 20 | # undef BOOST_PP_IS_SELFISH 21 | # undef BOOST_PP_INDIRECT_SELF 22 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/iteration/local.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ITERATION_LOCAL_HPP 13 | # define BOOST_PREPROCESSOR_ITERATION_LOCAL_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # 19 | # /* BOOST_PP_LOCAL_ITERATE */ 20 | # 21 | # define BOOST_PP_LOCAL_ITERATE() 22 | # 23 | # define BOOST_PP_LOCAL_C(n) (BOOST_PP_LOCAL_S) <= n && (BOOST_PP_LOCAL_F) >= n 24 | # define BOOST_PP_LOCAL_R(n) (BOOST_PP_LOCAL_F) <= n && (BOOST_PP_LOCAL_S) >= n 25 | # 26 | # endif 27 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/iteration/self.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_ITERATION_SELF_HPP 13 | # define BOOST_PREPROCESSOR_ITERATION_SELF_HPP 14 | # 15 | # /* BOOST_PP_INCLUDE_SELF */ 16 | # 17 | # define BOOST_PP_INCLUDE_SELF() 18 | # 19 | # endif 20 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/library.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002-2011. * 4 | # * (C) Copyright Edward Diener 2011. * 5 | # * Distributed under the Boost Software License, Version 1.0. (See * 6 | # * accompanying file LICENSE_1_0.txt or copy at * 7 | # * http://www.boost.org/LICENSE_1_0.txt) * 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_LIBRARY_HPP 14 | # define BOOST_PREPROCESSOR_LIBRARY_HPP 15 | # 16 | # include 17 | # include 18 | # include 19 | # include 20 | # include 21 | # include 22 | # include 23 | # include 24 | # include 25 | # include 26 | # include 27 | # include 28 | # include 29 | # include 30 | # include 31 | # include 32 | # include 33 | # include 34 | # include 35 | # include 36 | # 37 | # endif 38 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/limits.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_LIMITS_HPP 13 | # define BOOST_PREPROCESSOR_LIMITS_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/list.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LIST_HPP 15 | # define BOOST_PREPROCESSOR_LIST_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # include 21 | # include 22 | # include 23 | # include 24 | # include 25 | # include 26 | # include 27 | # include 28 | # include 29 | # include 30 | # include 31 | # include 32 | # include 33 | # include 34 | # include 35 | # include 36 | # 37 | # endif 38 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/list/append.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LIST_APPEND_HPP 15 | # define BOOST_PREPROCESSOR_LIST_APPEND_HPP 16 | # 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_LIST_APPEND */ 21 | # 22 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 23 | # define BOOST_PP_LIST_APPEND(a, b) BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_APPEND_O, b, a) 24 | # else 25 | # define BOOST_PP_LIST_APPEND(a, b) BOOST_PP_LIST_APPEND_I(a, b) 26 | # define BOOST_PP_LIST_APPEND_I(a, b) BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_APPEND_O, b, a) 27 | # endif 28 | # 29 | # define BOOST_PP_LIST_APPEND_O(d, s, x) (x, s) 30 | # 31 | # /* BOOST_PP_LIST_APPEND_D */ 32 | # 33 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 34 | # define BOOST_PP_LIST_APPEND_D(d, a, b) BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_APPEND_O, b, a) 35 | # else 36 | # define BOOST_PP_LIST_APPEND_D(d, a, b) BOOST_PP_LIST_APPEND_D_I(d, a, b) 37 | # define BOOST_PP_LIST_APPEND_D_I(d, a, b) BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_APPEND_O, b, a) 38 | # endif 39 | # 40 | # endif 41 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/list/at.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LIST_AT_HPP 15 | # define BOOST_PREPROCESSOR_LIST_AT_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_LIST_AT */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_LIST_AT(list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N(index, list)) 25 | # else 26 | # define BOOST_PP_LIST_AT(list, index) BOOST_PP_LIST_AT_I(list, index) 27 | # define BOOST_PP_LIST_AT_I(list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N(index, list)) 28 | # endif 29 | # 30 | # /* BOOST_PP_LIST_AT_D */ 31 | # 32 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 33 | # define BOOST_PP_LIST_AT_D(d, list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N_D(d, index, list)) 34 | # else 35 | # define BOOST_PP_LIST_AT_D(d, list, index) BOOST_PP_LIST_AT_D_I(d, list, index) 36 | # define BOOST_PP_LIST_AT_D_I(d, list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N_D(d, index, list)) 37 | # endif 38 | # 39 | # endif 40 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/list/cat.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LIST_CAT_HPP 15 | # define BOOST_PREPROCESSOR_LIST_CAT_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # include 21 | # 22 | # /* BOOST_PP_LIST_CAT */ 23 | # 24 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 25 | # define BOOST_PP_LIST_CAT(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_CAT_O, BOOST_PP_LIST_FIRST(list), BOOST_PP_LIST_REST(list)) 26 | # else 27 | # define BOOST_PP_LIST_CAT(list) BOOST_PP_LIST_CAT_I(list) 28 | # define BOOST_PP_LIST_CAT_I(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_CAT_O, BOOST_PP_LIST_FIRST(list), BOOST_PP_LIST_REST(list)) 29 | # endif 30 | # 31 | # define BOOST_PP_LIST_CAT_O(d, s, x) BOOST_PP_CAT(s, x) 32 | # 33 | # /* BOOST_PP_LIST_CAT_D */ 34 | # 35 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 36 | # define BOOST_PP_LIST_CAT_D(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_CAT_O, BOOST_PP_LIST_FIRST(list), BOOST_PP_LIST_REST(list)) 37 | # else 38 | # define BOOST_PP_LIST_CAT_D(d, list) BOOST_PP_LIST_CAT_D_I(d, list) 39 | # define BOOST_PP_LIST_CAT_D_I(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_CAT_O, BOOST_PP_LIST_FIRST(list), BOOST_PP_LIST_REST(list)) 40 | # endif 41 | # 42 | # endif 43 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/list/enum.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LIST_ENUM_HPP 15 | # define BOOST_PREPROCESSOR_LIST_ENUM_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_LIST_ENUM */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_LIST_ENUM(list) BOOST_PP_LIST_FOR_EACH_I(BOOST_PP_LIST_ENUM_O, BOOST_PP_NIL, list) 25 | # else 26 | # define BOOST_PP_LIST_ENUM(list) BOOST_PP_LIST_ENUM_I(list) 27 | # define BOOST_PP_LIST_ENUM_I(list) BOOST_PP_LIST_FOR_EACH_I(BOOST_PP_LIST_ENUM_O, BOOST_PP_NIL, list) 28 | # endif 29 | # 30 | # define BOOST_PP_LIST_ENUM_O(r, _, i, elem) BOOST_PP_COMMA_IF(i) elem 31 | # 32 | # /* BOOST_PP_LIST_ENUM_R */ 33 | # 34 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 35 | # define BOOST_PP_LIST_ENUM_R(r, list) BOOST_PP_LIST_FOR_EACH_I_R(r, BOOST_PP_LIST_ENUM_O, BOOST_PP_NIL, list) 36 | # else 37 | # define BOOST_PP_LIST_ENUM_R(r, list) BOOST_PP_LIST_ENUM_R_I(r, list) 38 | # define BOOST_PP_LIST_ENUM_R_I(r, list) BOOST_PP_LIST_FOR_EACH_I_R(r, BOOST_PP_LIST_ENUM_O, BOOST_PP_NIL, list) 39 | # endif 40 | # 41 | # endif 42 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/list/fold_right.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP 15 | # define BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # include 21 | # 22 | # if 0 23 | # define BOOST_PP_LIST_FOLD_RIGHT(op, state, list) 24 | # endif 25 | # 26 | # define BOOST_PP_LIST_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256)) 27 | # 28 | # define BOOST_PP_LIST_FOLD_RIGHT_257(o, s, l) BOOST_PP_ERROR(0x0004) 29 | # 30 | # define BOOST_PP_LIST_FOLD_RIGHT_D(d, o, s, l) BOOST_PP_LIST_FOLD_RIGHT_ ## d(o, s, l) 31 | # define BOOST_PP_LIST_FOLD_RIGHT_2ND BOOST_PP_LIST_FOLD_RIGHT 32 | # define BOOST_PP_LIST_FOLD_RIGHT_2ND_D BOOST_PP_LIST_FOLD_RIGHT_D 33 | # 34 | # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 35 | # include 36 | # else 37 | # include 38 | # endif 39 | # 40 | # endif 41 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/list/reverse.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LIST_REVERSE_HPP 15 | # define BOOST_PREPROCESSOR_LIST_REVERSE_HPP 16 | # 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_LIST_REVERSE */ 21 | # 22 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 23 | # define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list) 24 | # else 25 | # define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_REVERSE_I(list) 26 | # define BOOST_PP_LIST_REVERSE_I(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list) 27 | # endif 28 | # 29 | # define BOOST_PP_LIST_REVERSE_O(d, s, x) (x, s) 30 | # 31 | # /* BOOST_PP_LIST_REVERSE_D */ 32 | # 33 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 34 | # define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list) 35 | # else 36 | # define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_LIST_REVERSE_D_I(d, list) 37 | # define BOOST_PP_LIST_REVERSE_D_I(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list) 38 | # endif 39 | # 40 | # endif 41 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/list/to_seq.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2011. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* Revised by Paul Mensonides (2011) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LIST_TO_SEQ_HPP 15 | # define BOOST_PREPROCESSOR_LIST_TO_SEQ_HPP 16 | # 17 | # include 18 | # 19 | # /* BOOST_PP_LIST_TO_SEQ */ 20 | # 21 | # define BOOST_PP_LIST_TO_SEQ(list) \ 22 | BOOST_PP_LIST_FOR_EACH(BOOST_PP_LIST_TO_SEQ_MACRO, ~, list) \ 23 | /**/ 24 | # define BOOST_PP_LIST_TO_SEQ_MACRO(r, data, elem) (elem) 25 | # 26 | # /* BOOST_PP_LIST_TO_SEQ_R */ 27 | # 28 | # define BOOST_PP_LIST_TO_SEQ_R(r, list) \ 29 | BOOST_PP_LIST_FOR_EACH_R(r, BOOST_PP_LIST_TO_SEQ_MACRO, ~, list) \ 30 | /**/ 31 | # 32 | # endif /* BOOST_PREPROCESSOR_LIST_TO_SEQ_HPP */ 33 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/logical.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LOGICAL_HPP 15 | # define BOOST_PREPROCESSOR_LOGICAL_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # include 21 | # include 22 | # include 23 | # include 24 | # include 25 | # include 26 | # include 27 | # include 28 | # 29 | # endif 30 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/logical/and.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LOGICAL_AND_HPP 15 | # define BOOST_PREPROCESSOR_LOGICAL_AND_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_AND */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_AND(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q)) 25 | # else 26 | # define BOOST_PP_AND(p, q) BOOST_PP_AND_I(p, q) 27 | # define BOOST_PP_AND_I(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q)) 28 | # endif 29 | # 30 | # endif 31 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/logical/bitand.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_LOGICAL_BITAND_HPP 13 | # define BOOST_PREPROCESSOR_LOGICAL_BITAND_HPP 14 | # 15 | # include 16 | # 17 | # /* BOOST_PP_BITAND */ 18 | # 19 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() 20 | # define BOOST_PP_BITAND(x, y) BOOST_PP_BITAND_I(x, y) 21 | # else 22 | # define BOOST_PP_BITAND(x, y) BOOST_PP_BITAND_OO((x, y)) 23 | # define BOOST_PP_BITAND_OO(par) BOOST_PP_BITAND_I ## par 24 | # endif 25 | # 26 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() 27 | # define BOOST_PP_BITAND_I(x, y) BOOST_PP_BITAND_ ## x ## y 28 | # else 29 | # define BOOST_PP_BITAND_I(x, y) BOOST_PP_BITAND_ID(BOOST_PP_BITAND_ ## x ## y) 30 | # define BOOST_PP_BITAND_ID(res) res 31 | # endif 32 | # 33 | # define BOOST_PP_BITAND_00 0 34 | # define BOOST_PP_BITAND_01 0 35 | # define BOOST_PP_BITAND_10 0 36 | # define BOOST_PP_BITAND_11 1 37 | # 38 | # endif 39 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/logical/bitnor.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_LOGICAL_BITNOR_HPP 13 | # define BOOST_PREPROCESSOR_LOGICAL_BITNOR_HPP 14 | # 15 | # include 16 | # 17 | # /* BOOST_PP_BITNOR */ 18 | # 19 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() 20 | # define BOOST_PP_BITNOR(x, y) BOOST_PP_BITNOR_I(x, y) 21 | # else 22 | # define BOOST_PP_BITNOR(x, y) BOOST_PP_BITNOR_OO((x, y)) 23 | # define BOOST_PP_BITNOR_OO(par) BOOST_PP_BITNOR_I ## par 24 | # endif 25 | # 26 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() 27 | # define BOOST_PP_BITNOR_I(x, y) BOOST_PP_BITNOR_ ## x ## y 28 | # else 29 | # define BOOST_PP_BITNOR_I(x, y) BOOST_PP_BITNOR_ID(BOOST_PP_BITNOR_ ## x ## y) 30 | # define BOOST_PP_BITNOR_ID(id) id 31 | # endif 32 | # 33 | # define BOOST_PP_BITNOR_00 1 34 | # define BOOST_PP_BITNOR_01 0 35 | # define BOOST_PP_BITNOR_10 0 36 | # define BOOST_PP_BITNOR_11 0 37 | # 38 | # endif 39 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/logical/bitor.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_LOGICAL_BITOR_HPP 13 | # define BOOST_PREPROCESSOR_LOGICAL_BITOR_HPP 14 | # 15 | # include 16 | # 17 | # /* BOOST_PP_BITOR */ 18 | # 19 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() 20 | # define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_I(x, y) 21 | # else 22 | # define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_OO((x, y)) 23 | # define BOOST_PP_BITOR_OO(par) BOOST_PP_BITOR_I ## par 24 | # endif 25 | # 26 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() 27 | # define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ ## x ## y 28 | # else 29 | # define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ID(BOOST_PP_BITOR_ ## x ## y) 30 | # define BOOST_PP_BITOR_ID(id) id 31 | # endif 32 | # 33 | # define BOOST_PP_BITOR_00 0 34 | # define BOOST_PP_BITOR_01 1 35 | # define BOOST_PP_BITOR_10 1 36 | # define BOOST_PP_BITOR_11 1 37 | # 38 | # endif 39 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/logical/bitxor.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_LOGICAL_BITXOR_HPP 13 | # define BOOST_PREPROCESSOR_LOGICAL_BITXOR_HPP 14 | # 15 | # include 16 | # 17 | # /* BOOST_PP_BITXOR */ 18 | # 19 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() 20 | # define BOOST_PP_BITXOR(x, y) BOOST_PP_BITXOR_I(x, y) 21 | # else 22 | # define BOOST_PP_BITXOR(x, y) BOOST_PP_BITXOR_OO((x, y)) 23 | # define BOOST_PP_BITXOR_OO(par) BOOST_PP_BITXOR_I ## par 24 | # endif 25 | # 26 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() 27 | # define BOOST_PP_BITXOR_I(x, y) BOOST_PP_BITXOR_ ## x ## y 28 | # else 29 | # define BOOST_PP_BITXOR_I(x, y) BOOST_PP_BITXOR_ID(BOOST_PP_BITXOR_ ## x ## y) 30 | # define BOOST_PP_BITXOR_ID(id) id 31 | # endif 32 | # 33 | # define BOOST_PP_BITXOR_00 0 34 | # define BOOST_PP_BITXOR_01 1 35 | # define BOOST_PP_BITXOR_10 1 36 | # define BOOST_PP_BITXOR_11 0 37 | # 38 | # endif 39 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/logical/compl.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_LOGICAL_COMPL_HPP 13 | # define BOOST_PREPROCESSOR_LOGICAL_COMPL_HPP 14 | # 15 | # include 16 | # 17 | # /* BOOST_PP_COMPL */ 18 | # 19 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() 20 | # define BOOST_PP_COMPL(x) BOOST_PP_COMPL_I(x) 21 | # else 22 | # define BOOST_PP_COMPL(x) BOOST_PP_COMPL_OO((x)) 23 | # define BOOST_PP_COMPL_OO(par) BOOST_PP_COMPL_I ## par 24 | # endif 25 | # 26 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() 27 | # define BOOST_PP_COMPL_I(x) BOOST_PP_COMPL_ ## x 28 | # else 29 | # define BOOST_PP_COMPL_I(x) BOOST_PP_COMPL_ID(BOOST_PP_COMPL_ ## x) 30 | # define BOOST_PP_COMPL_ID(id) id 31 | # endif 32 | # 33 | # define BOOST_PP_COMPL_0 1 34 | # define BOOST_PP_COMPL_1 0 35 | # 36 | # endif 37 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/logical/nor.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LOGICAL_NOR_HPP 15 | # define BOOST_PREPROCESSOR_LOGICAL_NOR_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_NOR */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_NOR(p, q) BOOST_PP_BITNOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q)) 25 | # else 26 | # define BOOST_PP_NOR(p, q) BOOST_PP_NOR_I(p, q) 27 | # define BOOST_PP_NOR_I(p, q) BOOST_PP_BITNOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q)) 28 | # endif 29 | # 30 | # endif 31 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/logical/not.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LOGICAL_NOT_HPP 15 | # define BOOST_PREPROCESSOR_LOGICAL_NOT_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_NOT */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_NOT(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x)) 25 | # else 26 | # define BOOST_PP_NOT(x) BOOST_PP_NOT_I(x) 27 | # define BOOST_PP_NOT_I(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x)) 28 | # endif 29 | # 30 | # endif 31 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/logical/or.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LOGICAL_OR_HPP 15 | # define BOOST_PREPROCESSOR_LOGICAL_OR_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_OR */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_OR(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q)) 25 | # else 26 | # define BOOST_PP_OR(p, q) BOOST_PP_OR_I(p, q) 27 | # define BOOST_PP_OR_I(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q)) 28 | # endif 29 | # 30 | # endif 31 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/logical/xor.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_LOGICAL_XOR_HPP 15 | # define BOOST_PREPROCESSOR_LOGICAL_XOR_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_XOR */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_XOR(p, q) BOOST_PP_BITXOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q)) 25 | # else 26 | # define BOOST_PP_XOR(p, q) BOOST_PP_XOR_I(p, q) 27 | # define BOOST_PP_XOR_I(p, q) BOOST_PP_BITXOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q)) 28 | # endif 29 | # 30 | # endif 31 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/max.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_MAX_HPP 13 | # define BOOST_PREPROCESSOR_MAX_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/min.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_MIN_HPP 13 | # define BOOST_PREPROCESSOR_MIN_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/punctuation.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_PUNCTUATION_HPP 13 | # define BOOST_PREPROCESSOR_PUNCTUATION_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # include 20 | # include 21 | # 22 | # endif 23 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/punctuation/comma.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_PUNCTUATION_COMMA_HPP 15 | # define BOOST_PREPROCESSOR_PUNCTUATION_COMMA_HPP 16 | # 17 | # /* BOOST_PP_COMMA */ 18 | # 19 | # define BOOST_PP_COMMA() , 20 | # 21 | # endif 22 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/punctuation/comma_if.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP 15 | # define BOOST_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # include 21 | # 22 | # /* BOOST_PP_COMMA_IF */ 23 | # 24 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 25 | # define BOOST_PP_COMMA_IF(cond) BOOST_PP_IF(cond, BOOST_PP_COMMA, BOOST_PP_EMPTY)() 26 | # else 27 | # define BOOST_PP_COMMA_IF(cond) BOOST_PP_COMMA_IF_I(cond) 28 | # define BOOST_PP_COMMA_IF_I(cond) BOOST_PP_IF(cond, BOOST_PP_COMMA, BOOST_PP_EMPTY)() 29 | # endif 30 | # 31 | # endif 32 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/punctuation/is_begin_parens.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2014. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_IS_BEGIN_PARENS_HPP 13 | # define BOOST_PREPROCESSOR_IS_BEGIN_PARENS_HPP 14 | 15 | # include 16 | 17 | #if BOOST_PP_VARIADICS 18 | 19 | #include 20 | 21 | #if BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400 22 | 23 | #define BOOST_PP_IS_BEGIN_PARENS(param) \ 24 | BOOST_PP_DETAIL_IBP_SPLIT \ 25 | ( \ 26 | 0, \ 27 | BOOST_PP_DETAIL_IBP_CAT \ 28 | ( \ 29 | BOOST_PP_DETAIL_IBP_IS_VARIADIC_R_, \ 30 | BOOST_PP_DETAIL_IBP_IS_VARIADIC_C param \ 31 | ) \ 32 | ) \ 33 | /**/ 34 | 35 | #else 36 | 37 | #define BOOST_PP_IS_BEGIN_PARENS(...) \ 38 | BOOST_PP_DETAIL_IBP_SPLIT \ 39 | ( \ 40 | 0, \ 41 | BOOST_PP_DETAIL_IBP_CAT \ 42 | ( \ 43 | BOOST_PP_DETAIL_IBP_IS_VARIADIC_R_, \ 44 | BOOST_PP_DETAIL_IBP_IS_VARIADIC_C __VA_ARGS__ \ 45 | ) \ 46 | ) \ 47 | /**/ 48 | 49 | #endif /* BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400 */ 50 | #endif /* BOOST_PP_VARIADICS */ 51 | #endif /* BOOST_PREPROCESSOR_IS_BEGIN_PARENS_HPP */ 52 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/punctuation/paren.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_PUNCTUATION_PAREN_HPP 13 | # define BOOST_PREPROCESSOR_PUNCTUATION_PAREN_HPP 14 | # 15 | # /* BOOST_PP_LPAREN */ 16 | # 17 | # define BOOST_PP_LPAREN() ( 18 | # 19 | # /* BOOST_PP_RPAREN */ 20 | # 21 | # define BOOST_PP_RPAREN() ) 22 | # 23 | # endif 24 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/punctuation/paren_if.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_PUNCTUATION_PAREN_IF_HPP 13 | # define BOOST_PREPROCESSOR_PUNCTUATION_PAREN_IF_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_LPAREN_IF */ 21 | # 22 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 23 | # define BOOST_PP_LPAREN_IF(cond) BOOST_PP_IF(cond, BOOST_PP_LPAREN, BOOST_PP_EMPTY)() 24 | # else 25 | # define BOOST_PP_LPAREN_IF(cond) BOOST_PP_LPAREN_IF_I(cond) 26 | # define BOOST_PP_LPAREN_IF_I(cond) BOOST_PP_IF(cond, BOOST_PP_LPAREN, BOOST_PP_EMPTY)() 27 | # endif 28 | # 29 | # /* BOOST_PP_RPAREN_IF */ 30 | # 31 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 32 | # define BOOST_PP_RPAREN_IF(cond) BOOST_PP_IF(cond, BOOST_PP_RPAREN, BOOST_PP_EMPTY)() 33 | # else 34 | # define BOOST_PP_RPAREN_IF(cond) BOOST_PP_RPAREN_IF_I(cond) 35 | # define BOOST_PP_RPAREN_IF_I(cond) BOOST_PP_IF(cond, BOOST_PP_RPAREN, BOOST_PP_EMPTY)() 36 | # endif 37 | # 38 | # endif 39 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/punctuation/remove_parens.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2014. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | #ifndef BOOST_PREPROCESSOR_REMOVE_PARENS_HPP 13 | #define BOOST_PREPROCESSOR_REMOVE_PARENS_HPP 14 | 15 | #include 16 | 17 | #if BOOST_PP_VARIADICS 18 | 19 | #include 20 | #include 21 | #include 22 | #include 23 | 24 | #define BOOST_PP_REMOVE_PARENS(param) \ 25 | BOOST_PP_IIF \ 26 | ( \ 27 | BOOST_PP_IS_BEGIN_PARENS(param), \ 28 | BOOST_PP_REMOVE_PARENS_DO, \ 29 | BOOST_PP_IDENTITY \ 30 | ) \ 31 | (param)() \ 32 | /**/ 33 | 34 | #define BOOST_PP_REMOVE_PARENS_DO(param) \ 35 | BOOST_PP_IDENTITY(BOOST_PP_TUPLE_ENUM(param)) \ 36 | /**/ 37 | 38 | #endif /* BOOST_PP_VARIADICS */ 39 | #endif /* BOOST_PREPROCESSOR_REMOVE_PARENS_HPP */ 40 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/repeat.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_REPEAT_HPP 13 | # define BOOST_PREPROCESSOR_REPEAT_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/repeat_2nd.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_REPEAT_2ND_HPP 13 | # define BOOST_PREPROCESSOR_REPEAT_2ND_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/repeat_3rd.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_REPEAT_3RD_HPP 13 | # define BOOST_PREPROCESSOR_REPEAT_3RD_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/repeat_from_to.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_REPEAT_FROM_TO_HPP 13 | # define BOOST_PREPROCESSOR_REPEAT_FROM_TO_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/repeat_from_to_2nd.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_REPEAT_FROM_TO_2ND_HPP 13 | # define BOOST_PREPROCESSOR_REPEAT_FROM_TO_2ND_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/repeat_from_to_3rd.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_REPEAT_FROM_TO_3RD_HPP 13 | # define BOOST_PREPROCESSOR_REPEAT_FROM_TO_3RD_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/repetition.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_REPETITION_HPP 13 | # define BOOST_PREPROCESSOR_REPETITION_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # include 20 | # include 21 | # include 22 | # include 23 | # include 24 | # include 25 | # include 26 | # include 27 | # include 28 | # include 29 | # include 30 | # include 31 | # 32 | # endif 33 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/repetition/deduce_r.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_REPETITION_DEDUCE_R_HPP 13 | # define BOOST_PREPROCESSOR_REPETITION_DEDUCE_R_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_DEDUCE_R */ 19 | # 20 | # define BOOST_PP_DEDUCE_R() BOOST_PP_AUTO_REC(BOOST_PP_FOR_P, 256) 21 | # 22 | # endif 23 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/repetition/deduce_z.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_REPETITION_DEDUCE_Z_HPP 13 | # define BOOST_PREPROCESSOR_REPETITION_DEDUCE_Z_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_DEDUCE_Z */ 19 | # 20 | # define BOOST_PP_DEDUCE_Z() BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4) 21 | # 22 | # endif 23 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/repetition/enum_params.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP 15 | # define BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_ENUM_PARAMS */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_ENUM_PARAMS(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_PARAMS_M, param) 25 | # else 26 | # define BOOST_PP_ENUM_PARAMS(count, param) BOOST_PP_ENUM_PARAMS_I(count, param) 27 | # define BOOST_PP_ENUM_PARAMS_I(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_PARAMS_M, param) 28 | # endif 29 | # 30 | # define BOOST_PP_ENUM_PARAMS_M(z, n, param) BOOST_PP_COMMA_IF(n) param ## n 31 | # 32 | # /* BOOST_PP_ENUM_PARAMS_Z */ 33 | # 34 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 35 | # define BOOST_PP_ENUM_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_PARAMS_M, param) 36 | # else 37 | # define BOOST_PP_ENUM_PARAMS_Z(z, count, param) BOOST_PP_ENUM_PARAMS_Z_I(z, count, param) 38 | # define BOOST_PP_ENUM_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_PARAMS_M, param) 39 | # endif 40 | # 41 | # endif 42 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/repetition/enum_params_with_a_default.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_A_DEFAULT_HPP 15 | # define BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_A_DEFAULT_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT */ 22 | # 23 | # define BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(count, param, def) BOOST_PP_ENUM_BINARY_PARAMS(count, param, = def BOOST_PP_INTERCEPT) 24 | # 25 | # endif 26 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/repetition/enum_params_with_defaults.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_DEFAULTS_HPP 15 | # define BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_DEFAULTS_HPP 16 | # 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS */ 21 | # 22 | # define BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS(count, param, def) BOOST_PP_ENUM_BINARY_PARAMS(count, param, = def) 23 | # 24 | # endif 25 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/selection.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SELECTION_HPP 13 | # define BOOST_PREPROCESSOR_SELECTION_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # endif 19 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/selection/max.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_SELECTION_MAX_HPP 15 | # define BOOST_PREPROCESSOR_SELECTION_MAX_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_MAX */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_MAX(x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL(x, y), y, x) 25 | # else 26 | # define BOOST_PP_MAX(x, y) BOOST_PP_MAX_I(x, y) 27 | # define BOOST_PP_MAX_I(x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL(x, y), y, x) 28 | # endif 29 | # 30 | # /* BOOST_PP_MAX_D */ 31 | # 32 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 33 | # define BOOST_PP_MAX_D(d, x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL_D(d, x, y), y, x) 34 | # else 35 | # define BOOST_PP_MAX_D(d, x, y) BOOST_PP_MAX_D_I(d, x, y) 36 | # define BOOST_PP_MAX_D_I(d, x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL_D(d, x, y), y, x) 37 | # endif 38 | # 39 | # endif 40 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/selection/min.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_SELECTION_MIN_HPP 15 | # define BOOST_PREPROCESSOR_SELECTION_MIN_HPP 16 | # 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_MIN */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_MIN(x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL(y, x), y, x) 25 | # else 26 | # define BOOST_PP_MIN(x, y) BOOST_PP_MIN_I(x, y) 27 | # define BOOST_PP_MIN_I(x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL(y, x), y, x) 28 | # endif 29 | # 30 | # /* BOOST_PP_MIN_D */ 31 | # 32 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 33 | # define BOOST_PP_MIN_D(d, x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL_D(d, y, x), y, x) 34 | # else 35 | # define BOOST_PP_MIN_D(d, x, y) BOOST_PP_MIN_D_I(d, x, y) 36 | # define BOOST_PP_MIN_D_I(d, x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL_D(d, y, x), y, x) 37 | # endif 38 | # 39 | # endif 40 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/detail/is_empty.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2015. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_DETAIL_IS_EMPTY_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_DETAIL_IS_EMPTY_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # include 20 | # 21 | /* An empty seq is one that is just BOOST_PP_SEQ_NIL */ 22 | # 23 | # define BOOST_PP_SEQ_DETAIL_IS_EMPTY(seq) \ 24 | BOOST_PP_COMPL \ 25 | ( \ 26 | BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) \ 27 | ) \ 28 | /**/ 29 | # 30 | # define BOOST_PP_SEQ_DETAIL_IS_EMPTY_SIZE(size) \ 31 | BOOST_PP_COMPL \ 32 | ( \ 33 | BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) \ 34 | ) \ 35 | /**/ 36 | # 37 | # define BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) \ 38 | BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq)) \ 39 | /**/ 40 | # 41 | # define BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) \ 42 | BOOST_PP_BOOL(size) \ 43 | /**/ 44 | # 45 | # define BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq) \ 46 | BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq (nil))) \ 47 | /**/ 48 | # 49 | # endif 50 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/first_n.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_FIRST_N_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_FIRST_N_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # include 20 | # 21 | # /* BOOST_PP_SEQ_FIRST_N */ 22 | # 23 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 24 | # define BOOST_PP_SEQ_FIRST_N(n, seq) BOOST_PP_IF(n, BOOST_PP_TUPLE_ELEM, BOOST_PP_TUPLE_EAT_3)(2, 0, BOOST_PP_SEQ_SPLIT(n, seq (nil))) 25 | # else 26 | # define BOOST_PP_SEQ_FIRST_N(n, seq) BOOST_PP_SEQ_FIRST_N_I(n, seq) 27 | # define BOOST_PP_SEQ_FIRST_N_I(n, seq) BOOST_PP_IF(n, BOOST_PP_TUPLE_ELEM, BOOST_PP_TUPLE_EAT_3)(2, 0, BOOST_PP_SEQ_SPLIT(n, seq (nil))) 28 | # endif 29 | # 30 | # endif 31 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/insert.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_INSERT_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_INSERT_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # 19 | # /* BOOST_PP_SEQ_INSERT */ 20 | # 21 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 22 | # define BOOST_PP_SEQ_INSERT(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(i, seq) 23 | # else 24 | # define BOOST_PP_SEQ_INSERT(seq, i, elem) BOOST_PP_SEQ_INSERT_I(seq, i, elem) 25 | # define BOOST_PP_SEQ_INSERT_I(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(i, seq) 26 | # endif 27 | # 28 | # endif 29 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/pop_back.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_POP_BACK_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_POP_BACK_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_SEQ_POP_BACK */ 21 | # 22 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 23 | # define BOOST_PP_SEQ_POP_BACK(seq) BOOST_PP_SEQ_FIRST_N(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), seq) 24 | # else 25 | # define BOOST_PP_SEQ_POP_BACK(seq) BOOST_PP_SEQ_POP_BACK_I(seq) 26 | # define BOOST_PP_SEQ_POP_BACK_I(seq) BOOST_PP_SEQ_FIRST_N(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), seq) 27 | # endif 28 | # 29 | # endif 30 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/pop_front.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_POP_FRONT_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_POP_FRONT_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_SEQ_POP_FRONT */ 19 | # 20 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 21 | # define BOOST_PP_SEQ_POP_FRONT(seq) BOOST_PP_SEQ_TAIL(seq) 22 | # else 23 | # define BOOST_PP_SEQ_POP_FRONT(seq) BOOST_PP_SEQ_POP_FRONT_I(seq) 24 | # define BOOST_PP_SEQ_POP_FRONT_I(seq) BOOST_PP_SEQ_TAIL(seq) 25 | # endif 26 | # 27 | # endif 28 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/push_back.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_PUSH_BACK_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_PUSH_BACK_HPP 14 | # 15 | # /* BOOST_PP_SEQ_PUSH_BACK */ 16 | # 17 | # define BOOST_PP_SEQ_PUSH_BACK(seq, elem) seq(elem) 18 | # 19 | # endif 20 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/push_front.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_PUSH_FRONT_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_PUSH_FRONT_HPP 14 | # 15 | # /* BOOST_PP_SEQ_PUSH_FRONT */ 16 | # 17 | # define BOOST_PP_SEQ_PUSH_FRONT(seq, elem) (elem)seq 18 | # 19 | # endif 20 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/remove.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_REMOVE_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_REMOVE_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # include 19 | # 20 | # /* BOOST_PP_SEQ_REMOVE */ 21 | # 22 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 23 | # define BOOST_PP_SEQ_REMOVE(seq, i) BOOST_PP_SEQ_FIRST_N(i, seq) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq) 24 | # else 25 | # define BOOST_PP_SEQ_REMOVE(seq, i) BOOST_PP_SEQ_REMOVE_I(seq, i) 26 | # define BOOST_PP_SEQ_REMOVE_I(seq, i) BOOST_PP_SEQ_FIRST_N(i, seq) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq) 27 | # endif 28 | # 29 | # endif 30 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/reverse.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_REVERSE_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_REVERSE_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # 19 | # /* BOOST_PP_SEQ_REVERSE */ 20 | # 21 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 22 | # define BOOST_PP_SEQ_REVERSE(seq) BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_REVERSE_O, BOOST_PP_EMPTY, seq)() 23 | # else 24 | # define BOOST_PP_SEQ_REVERSE(seq) BOOST_PP_SEQ_REVERSE_I(seq) 25 | # define BOOST_PP_SEQ_REVERSE_I(seq) BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_REVERSE_O, BOOST_PP_EMPTY, seq)() 26 | # endif 27 | # 28 | # define BOOST_PP_SEQ_REVERSE_O(s, state, elem) (elem) state 29 | # 30 | # /* BOOST_PP_SEQ_REVERSE_S */ 31 | # 32 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 33 | # define BOOST_PP_SEQ_REVERSE_S(s, seq) BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_REVERSE_O, BOOST_PP_EMPTY, seq)() 34 | # else 35 | # define BOOST_PP_SEQ_REVERSE_S(s, seq) BOOST_PP_SEQ_REVERSE_S_I(s, seq) 36 | # define BOOST_PP_SEQ_REVERSE_S_I(s, seq) BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_REVERSE_O, BOOST_PP_EMPTY, seq)() 37 | # endif 38 | # 39 | # endif 40 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/seq.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_SEQ_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_SEQ_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_SEQ_HEAD */ 19 | # 20 | # define BOOST_PP_SEQ_HEAD(seq) BOOST_PP_SEQ_ELEM(0, seq) 21 | # 22 | # /* BOOST_PP_SEQ_TAIL */ 23 | # 24 | # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() 25 | # define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_1((seq)) 26 | # define BOOST_PP_SEQ_TAIL_1(par) BOOST_PP_SEQ_TAIL_2 ## par 27 | # define BOOST_PP_SEQ_TAIL_2(seq) BOOST_PP_SEQ_TAIL_I ## seq 28 | # elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() 29 | # define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_ID(BOOST_PP_SEQ_TAIL_I seq) 30 | # define BOOST_PP_SEQ_TAIL_ID(id) id 31 | # elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 32 | # define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_D(seq) 33 | # define BOOST_PP_SEQ_TAIL_D(seq) BOOST_PP_SEQ_TAIL_I seq 34 | # else 35 | # define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_I seq 36 | # endif 37 | # 38 | # define BOOST_PP_SEQ_TAIL_I(x) 39 | # 40 | # /* BOOST_PP_SEQ_NIL */ 41 | # 42 | # define BOOST_PP_SEQ_NIL(x) (x) 43 | # 44 | # endif 45 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/subseq.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_SUBSEQ_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_SUBSEQ_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # 19 | # /* BOOST_PP_SEQ_SUBSEQ */ 20 | # 21 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 22 | # define BOOST_PP_SEQ_SUBSEQ(seq, i, len) BOOST_PP_SEQ_FIRST_N(len, BOOST_PP_SEQ_REST_N(i, seq)) 23 | # else 24 | # define BOOST_PP_SEQ_SUBSEQ(seq, i, len) BOOST_PP_SEQ_SUBSEQ_I(seq, i, len) 25 | # define BOOST_PP_SEQ_SUBSEQ_I(seq, i, len) BOOST_PP_SEQ_FIRST_N(len, BOOST_PP_SEQ_REST_N(i, seq)) 26 | # endif 27 | # 28 | # endif 29 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/to_array.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_TO_ARRAY_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_TO_ARRAY_HPP 14 | # 15 | # include 16 | # include 17 | # include 18 | # 19 | # /* BOOST_PP_SEQ_TO_ARRAY */ 20 | # 21 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 22 | # define BOOST_PP_SEQ_TO_ARRAY(seq) (BOOST_PP_SEQ_SIZE(seq), (BOOST_PP_SEQ_ENUM(seq))) 23 | # else 24 | # define BOOST_PP_SEQ_TO_ARRAY(seq) BOOST_PP_SEQ_TO_ARRAY_I(seq) 25 | # define BOOST_PP_SEQ_TO_ARRAY_I(seq) (BOOST_PP_SEQ_SIZE(seq), (BOOST_PP_SEQ_ENUM(seq))) 26 | # endif 27 | # 28 | # endif 29 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/to_tuple.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_TO_TUPLE_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_TO_TUPLE_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_SEQ_TO_TUPLE */ 19 | # 20 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() 21 | # define BOOST_PP_SEQ_TO_TUPLE(seq) (BOOST_PP_SEQ_ENUM(seq)) 22 | # else 23 | # define BOOST_PP_SEQ_TO_TUPLE(seq) BOOST_PP_SEQ_TO_TUPLE_I(seq) 24 | # define BOOST_PP_SEQ_TO_TUPLE_I(seq) (BOOST_PP_SEQ_ENUM(seq)) 25 | # endif 26 | # 27 | # endif 28 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/seq/variadic_seq_to_seq.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2012. * 4 | # * Distributed under the Boost Software License, Version 1.0. (See * 5 | # * accompanying file LICENSE_1_0.txt or copy at * 6 | # * http://www.boost.org/LICENSE_1_0.txt) * 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SEQ_VARIADIC_SEQ_TO_SEQ_HPP 13 | # define BOOST_PREPROCESSOR_SEQ_VARIADIC_SEQ_TO_SEQ_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_VARIADIC_SEQ_TO_SEQ */ 19 | # 20 | # if BOOST_PP_VARIADICS 21 | # define BOOST_PP_VARIADIC_SEQ_TO_SEQ(vseq) BOOST_PP_CAT(BOOST_PP_VARIADIC_SEQ_TO_SEQ_A vseq, 0) 22 | # define BOOST_PP_VARIADIC_SEQ_TO_SEQ_A(...) ((__VA_ARGS__)) BOOST_PP_VARIADIC_SEQ_TO_SEQ_B 23 | # define BOOST_PP_VARIADIC_SEQ_TO_SEQ_B(...) ((__VA_ARGS__)) BOOST_PP_VARIADIC_SEQ_TO_SEQ_A 24 | # define BOOST_PP_VARIADIC_SEQ_TO_SEQ_A0 25 | # define BOOST_PP_VARIADIC_SEQ_TO_SEQ_B0 26 | # endif 27 | # 28 | # endif 29 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/slot.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SLOT_HPP 13 | # define BOOST_PREPROCESSOR_SLOT_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/slot/counter.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2005. * 4 | # * Distributed under the Boost Software License, Version 1.0. (See * 5 | # * accompanying file LICENSE_1_0.txt or copy at * 6 | # * http://www.boost.org/LICENSE_1_0.txt) * 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SLOT_COUNTER_HPP 13 | # define BOOST_PREPROCESSOR_SLOT_COUNTER_HPP 14 | # 15 | # include 16 | # 17 | # /* BOOST_PP_COUNTER */ 18 | # 19 | # define BOOST_PP_COUNTER 0 20 | # 21 | # /* BOOST_PP_UPDATE_COUNTER */ 22 | # 23 | # define BOOST_PP_UPDATE_COUNTER() 24 | # 25 | # endif 26 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/slot/slot.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_SLOT_SLOT_HPP 13 | # define BOOST_PREPROCESSOR_SLOT_SLOT_HPP 14 | # 15 | # include 16 | # include 17 | # 18 | # /* BOOST_PP_ASSIGN_SLOT */ 19 | # 20 | # define BOOST_PP_ASSIGN_SLOT(i) BOOST_PP_CAT(BOOST_PP_ASSIGN_SLOT_, i) 21 | # 22 | # define BOOST_PP_ASSIGN_SLOT_1 23 | # define BOOST_PP_ASSIGN_SLOT_2 24 | # define BOOST_PP_ASSIGN_SLOT_3 25 | # define BOOST_PP_ASSIGN_SLOT_4 26 | # define BOOST_PP_ASSIGN_SLOT_5 27 | # 28 | # /* BOOST_PP_SLOT */ 29 | # 30 | # define BOOST_PP_SLOT(i) BOOST_PP_CAT(BOOST_PP_SLOT_, i)() 31 | # 32 | # endif 33 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/stringize.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # 12 | # /* See http://www.boost.org for most recent version. */ 13 | # 14 | # ifndef BOOST_PREPROCESSOR_STRINGIZE_HPP 15 | # define BOOST_PREPROCESSOR_STRINGIZE_HPP 16 | # 17 | # include 18 | # 19 | # /* BOOST_PP_STRINGIZE */ 20 | # 21 | # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() 22 | # define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_A((text)) 23 | # define BOOST_PP_STRINGIZE_A(arg) BOOST_PP_STRINGIZE_I arg 24 | # elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() 25 | # define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_OO((text)) 26 | # define BOOST_PP_STRINGIZE_OO(par) BOOST_PP_STRINGIZE_I ## par 27 | # else 28 | # define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_I(text) 29 | # endif 30 | # 31 | #if BOOST_PP_VARIADICS 32 | # define BOOST_PP_STRINGIZE_I(...) #__VA_ARGS__ 33 | #else 34 | # define BOOST_PP_STRINGIZE_I(text) #text 35 | #endif 36 | # 37 | # endif 38 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/tuple.hpp: -------------------------------------------------------------------------------- 1 | # /* Copyright (C) 2001 2 | # * Housemarque Oy 3 | # * http://www.housemarque.com 4 | # * 5 | # * Distributed under the Boost Software License, Version 1.0. (See 6 | # * accompanying file LICENSE_1_0.txt or copy at 7 | # * http://www.boost.org/LICENSE_1_0.txt) 8 | # */ 9 | # 10 | # /* Revised by Paul Mensonides (2002) */ 11 | # /* Revised by Edward Diener (2011,2013) */ 12 | # 13 | # /* See http://www.boost.org for most recent version. */ 14 | # 15 | # ifndef BOOST_PREPROCESSOR_TUPLE_HPP 16 | # define BOOST_PREPROCESSOR_TUPLE_HPP 17 | # 18 | # include 19 | # include 20 | # include 21 | # include 22 | # include 23 | # include 24 | # include 25 | # include 26 | # include 27 | # include 28 | # include 29 | # include 30 | # include 31 | # include 32 | # include 33 | # include 34 | # 35 | # endif 36 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/tuple/detail/is_single_return.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2014. * 4 | # * Distributed under the Boost Software License, Version 1.0. (See * 5 | # * accompanying file LICENSE_1_0.txt or copy at * 6 | # * http://www.boost.org/LICENSE_1_0.txt) * 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_TUPLE_DETAIL_IS_SINGLE_RETURN_HPP 13 | # define BOOST_PREPROCESSOR_TUPLE_DETAIL_IS_SINGLE_RETURN_HPP 14 | # 15 | # include 16 | # 17 | # /* BOOST_PP_TUPLE_IS_SINGLE_RETURN */ 18 | # 19 | # if BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC 20 | # include 21 | # include 22 | # include 23 | # define BOOST_PP_TUPLE_IS_SINGLE_RETURN(sr,nsr,tuple) \ 24 | BOOST_PP_IIF(BOOST_PP_IS_1(BOOST_PP_TUPLE_SIZE(tuple)),sr,nsr) \ 25 | /**/ 26 | # endif /* BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC */ 27 | # 28 | # endif /* BOOST_PREPROCESSOR_TUPLE_DETAIL_IS_SINGLE_RETURN_HPP */ 29 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/tuple/enum.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2011. * 4 | # * (C) Copyright Paul Mensonides 2011. * 5 | # * Distributed under the Boost Software License, Version 1.0. (See * 6 | # * accompanying file LICENSE_1_0.txt or copy at * 7 | # * http://www.boost.org/LICENSE_1_0.txt) * 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_TUPLE_ENUM_HPP 14 | # define BOOST_PREPROCESSOR_TUPLE_ENUM_HPP 15 | # 16 | # include 17 | # 18 | # /* BOOST_PP_TUPLE_ENUM */ 19 | # 20 | # define BOOST_PP_TUPLE_ENUM BOOST_PP_TUPLE_REM_CTOR 21 | # 22 | # endif 23 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/tuple/insert.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2013. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_TUPLE_INSERT_HPP 13 | # define BOOST_PREPROCESSOR_TUPLE_INSERT_HPP 14 | # 15 | # include 16 | # 17 | # if BOOST_PP_VARIADICS 18 | # 19 | # include 20 | # include 21 | # include 22 | # 23 | # /* BOOST_PP_TUPLE_INSERT */ 24 | # 25 | # define BOOST_PP_TUPLE_INSERT(tuple, i, elem) \ 26 | BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_INSERT(BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \ 27 | /**/ 28 | # 29 | # /* BOOST_PP_TUPLE_INSERT_D */ 30 | # 31 | # define BOOST_PP_TUPLE_INSERT_D(d, tuple, i, elem) \ 32 | BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_INSERT_D(d, BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \ 33 | /**/ 34 | # 35 | # endif // BOOST_PP_VARIADICS 36 | # 37 | # endif // BOOST_PREPROCESSOR_TUPLE_INSERT_HPP 38 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/tuple/push_back.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2013. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_TUPLE_PUSH_BACK_HPP 13 | # define BOOST_PREPROCESSOR_TUPLE_PUSH_BACK_HPP 14 | # 15 | # include 16 | # 17 | # if BOOST_PP_VARIADICS 18 | # 19 | # include 20 | # include 21 | # include 22 | # 23 | # /* BOOST_PP_TUPLE_PUSH_BACK */ 24 | # 25 | # define BOOST_PP_TUPLE_PUSH_BACK(tuple, elem) \ 26 | BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_PUSH_BACK(BOOST_PP_TUPLE_TO_ARRAY(tuple), elem)) \ 27 | /**/ 28 | # 29 | # endif // BOOST_PP_VARIADICS 30 | # 31 | # endif // BOOST_PREPROCESSOR_TUPLE_PUSH_BACK_HPP 32 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/tuple/push_front.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2013. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_TUPLE_PUSH_FRONT_HPP 13 | # define BOOST_PREPROCESSOR_TUPLE_PUSH_FRONT_HPP 14 | # 15 | # include 16 | # 17 | # if BOOST_PP_VARIADICS 18 | # 19 | # include 20 | # include 21 | # include 22 | # 23 | # 24 | # /* BOOST_PP_TUPLE_PUSH_FRONT */ 25 | # 26 | # define BOOST_PP_TUPLE_PUSH_FRONT(tuple, elem) \ 27 | BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_PUSH_FRONT(BOOST_PP_TUPLE_TO_ARRAY(tuple), elem)) \ 28 | /**/ 29 | # 30 | # endif // BOOST_PP_VARIADICS 31 | # 32 | # endif // BOOST_PREPROCESSOR_TUPLE_PUSH_FRONT_HPP 33 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/tuple/replace.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2013. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_TUPLE_REPLACE_HPP 13 | # define BOOST_PREPROCESSOR_TUPLE_REPLACE_HPP 14 | # 15 | # include 16 | # 17 | # if BOOST_PP_VARIADICS 18 | # 19 | # include 20 | # include 21 | # include 22 | # 23 | # /* BOOST_PP_TUPLE_REPLACE */ 24 | # 25 | # define BOOST_PP_TUPLE_REPLACE(tuple, i, elem) \ 26 | BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REPLACE(BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \ 27 | /**/ 28 | # 29 | # /* BOOST_PP_TUPLE_REPLACE_D */ 30 | # 31 | # define BOOST_PP_TUPLE_REPLACE_D(d, tuple, i, elem) \ 32 | BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REPLACE_D(d, BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \ 33 | /**/ 34 | # 35 | # endif // BOOST_PP_VARIADICS 36 | # 37 | # endif // BOOST_PREPROCESSOR_TUPLE_REPLACE_HPP 38 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/tuple/size.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2011. * 4 | # * (C) Copyright Paul Mensonides 2011. * 5 | # * Distributed under the Boost Software License, Version 1.0. (See * 6 | # * accompanying file LICENSE_1_0.txt or copy at * 7 | # * http://www.boost.org/LICENSE_1_0.txt) * 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_TUPLE_SIZE_HPP 14 | # define BOOST_PREPROCESSOR_TUPLE_SIZE_HPP 15 | # 16 | # include 17 | # include 18 | # include 19 | # 20 | # if BOOST_PP_VARIADICS 21 | # if BOOST_PP_VARIADICS_MSVC 22 | # define BOOST_PP_TUPLE_SIZE(tuple) BOOST_PP_CAT(BOOST_PP_VARIADIC_SIZE tuple,) 23 | # else 24 | # define BOOST_PP_TUPLE_SIZE(tuple) BOOST_PP_VARIADIC_SIZE tuple 25 | # endif 26 | # endif 27 | # 28 | # endif 29 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/variadic.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2011. * 4 | # * (C) Copyright Paul Mensonides 2011. * 5 | # * Distributed under the Boost Software License, Version 1.0. (See * 6 | # * accompanying file LICENSE_1_0.txt or copy at * 7 | # * http://www.boost.org/LICENSE_1_0.txt) * 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_VARIADIC_HPP 14 | # define BOOST_PREPROCESSOR_VARIADIC_HPP 15 | # 16 | # include 17 | # include 18 | # include 19 | # include 20 | # include 21 | # include 22 | # 23 | # endif 24 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/variadic/detail/is_single_return.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2014. * 4 | # * Distributed under the Boost Software License, Version 1.0. (See * 5 | # * accompanying file LICENSE_1_0.txt or copy at * 6 | # * http://www.boost.org/LICENSE_1_0.txt) * 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_VARIADIC_DETAIL_IS_SINGLE_RETURN_HPP 13 | # define BOOST_PREPROCESSOR_VARIADIC_DETAIL_IS_SINGLE_RETURN_HPP 14 | # 15 | # include 16 | # 17 | # /* BOOST_PP_VARIADIC_IS_SINGLE_RETURN */ 18 | # 19 | # if BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC 20 | # include 21 | # include 22 | # include 23 | # define BOOST_PP_VARIADIC_IS_SINGLE_RETURN(sr,nsr,...) \ 24 | BOOST_PP_IIF(BOOST_PP_IS_1(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)),sr,nsr) \ 25 | /**/ 26 | # endif /* BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC */ 27 | # 28 | # endif /* BOOST_PREPROCESSOR_VARIADIC_DETAIL_IS_SINGLE_RETURN_HPP */ 29 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/variadic/to_array.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2011. * 4 | # * (C) Copyright Paul Mensonides 2011. * 5 | # * Distributed under the Boost Software License, Version 1.0. (See * 6 | # * accompanying file LICENSE_1_0.txt or copy at * 7 | # * http://www.boost.org/LICENSE_1_0.txt) * 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_VARIADIC_TO_ARRAY_HPP 14 | # define BOOST_PREPROCESSOR_VARIADIC_TO_ARRAY_HPP 15 | # 16 | # include 17 | # include 18 | # if BOOST_PP_VARIADICS_MSVC 19 | # include 20 | # endif 21 | # 22 | # /* BOOST_PP_VARIADIC_TO_ARRAY */ 23 | # 24 | # if BOOST_PP_VARIADICS 25 | # if BOOST_PP_VARIADICS_MSVC 26 | # define BOOST_PP_VARIADIC_TO_ARRAY(...) BOOST_PP_TUPLE_TO_ARRAY_2(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__),(__VA_ARGS__)) 27 | # else 28 | # define BOOST_PP_VARIADIC_TO_ARRAY(...) BOOST_PP_TUPLE_TO_ARRAY((__VA_ARGS__)) 29 | # endif 30 | # endif 31 | # 32 | # endif 33 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/variadic/to_list.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2011. * 4 | # * (C) Copyright Paul Mensonides 2011. * 5 | # * Distributed under the Boost Software License, Version 1.0. (See * 6 | # * accompanying file LICENSE_1_0.txt or copy at * 7 | # * http://www.boost.org/LICENSE_1_0.txt) * 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_VARIADIC_TO_LIST_HPP 14 | # define BOOST_PREPROCESSOR_VARIADIC_TO_LIST_HPP 15 | # 16 | # include 17 | # include 18 | # 19 | # /* BOOST_PP_VARIADIC_TO_LIST */ 20 | # 21 | # if BOOST_PP_VARIADICS 22 | # define BOOST_PP_VARIADIC_TO_LIST(...) BOOST_PP_TUPLE_TO_LIST((__VA_ARGS__)) 23 | # endif 24 | # 25 | # endif 26 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/variadic/to_seq.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2011. * 4 | # * (C) Copyright Paul Mensonides 2011. * 5 | # * Distributed under the Boost Software License, Version 1.0. (See * 6 | # * accompanying file LICENSE_1_0.txt or copy at * 7 | # * http://www.boost.org/LICENSE_1_0.txt) * 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_VARIADIC_TO_SEQ_HPP 14 | # define BOOST_PREPROCESSOR_VARIADIC_TO_SEQ_HPP 15 | # 16 | # include 17 | # include 18 | # 19 | # /* BOOST_PP_VARIADIC_TO_SEQ */ 20 | # 21 | # if BOOST_PP_VARIADICS 22 | # define BOOST_PP_VARIADIC_TO_SEQ(...) BOOST_PP_TUPLE_TO_SEQ((__VA_ARGS__)) 23 | # endif 24 | # 25 | # endif 26 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/variadic/to_tuple.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Edward Diener 2011. * 4 | # * (C) Copyright Paul Mensonides 2011. * 5 | # * Distributed under the Boost Software License, Version 1.0. (See * 6 | # * accompanying file LICENSE_1_0.txt or copy at * 7 | # * http://www.boost.org/LICENSE_1_0.txt) * 8 | # * * 9 | # ************************************************************************** */ 10 | # 11 | # /* See http://www.boost.org for most recent version. */ 12 | # 13 | # ifndef BOOST_PREPROCESSOR_VARIADIC_TO_TUPLE_HPP 14 | # define BOOST_PREPROCESSOR_VARIADIC_TO_TUPLE_HPP 15 | # 16 | # include 17 | # 18 | # /* BOOST_PP_VARIADIC_TO_TUPLE */ 19 | # 20 | # if BOOST_PP_VARIADICS 21 | # define BOOST_PP_VARIADIC_TO_TUPLE(...) (__VA_ARGS__) 22 | # endif 23 | # 24 | # endif 25 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/while.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_WHILE_HPP 13 | # define BOOST_PREPROCESSOR_WHILE_HPP 14 | # 15 | # include 16 | # 17 | # endif 18 | -------------------------------------------------------------------------------- /boost_1_70_0/boost/preprocessor/wstringize.hpp: -------------------------------------------------------------------------------- 1 | # /* ************************************************************************** 2 | # * * 3 | # * (C) Copyright Paul Mensonides 2002. 4 | # * Distributed under the Boost Software License, Version 1.0. (See 5 | # * accompanying file LICENSE_1_0.txt or copy at 6 | # * http://www.boost.org/LICENSE_1_0.txt) 7 | # * * 8 | # ************************************************************************** */ 9 | # 10 | # /* See http://www.boost.org for most recent version. */ 11 | # 12 | # ifndef BOOST_PREPROCESSOR_WSTRINGIZE_HPP 13 | # define BOOST_PREPROCESSOR_WSTRINGIZE_HPP 14 | # 15 | # include 16 | # 17 | # /* BOOST_PP_WSTRINGIZE */ 18 | # 19 | # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() 20 | # define BOOST_PP_WSTRINGIZE(text) BOOST_PP_WSTRINGIZE_I(text) 21 | # else 22 | # define BOOST_PP_WSTRINGIZE(text) BOOST_PP_WSTRINGIZE_OO((text)) 23 | # define BOOST_PP_WSTRINGIZE_OO(par) BOOST_PP_WSTRINGIZE_I ## par 24 | # endif 25 | # 26 | #if BOOST_PP_VARIADICS 27 | # define BOOST_PP_WSTRINGIZE_I(...) BOOST_PP_WSTRINGIZE_II(#__VA_ARGS__) 28 | #else 29 | # define BOOST_PP_WSTRINGIZE_I(text) BOOST_PP_WSTRINGIZE_II(#text) 30 | #endif 31 | # define BOOST_PP_WSTRINGIZE_II(str) L ## str 32 | # 33 | # endif 34 | -------------------------------------------------------------------------------- /fmt-7.1.3/LICENSE.rst: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012 - present, Victor Zverovich 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | --- Optional exception to the license --- 23 | 24 | As an exception, if, as a result of your compiling your source code, portions 25 | of this Software are embedded into a machine-executable object form of such 26 | source code, you may redistribute such embedded portions in such object form 27 | without including the above copyright and permission notices. 28 | -------------------------------------------------------------------------------- /fmt-7.1.3/include/fmt/posix.h: -------------------------------------------------------------------------------- 1 | #include "os.h" 2 | #warning "fmt/posix.h is deprecated; use fmt/os.h instead" 3 | -------------------------------------------------------------------------------- /isa-support.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * isa-support.cpp 3 | */ 4 | 5 | #include "isa-support.hpp" 6 | #include "cpu/cpu.h" 7 | 8 | #include 9 | 10 | struct Entry { 11 | x86Feature feature; 12 | PSnipCPUFeature psnip_feature; 13 | const char *name; 14 | bool supported() const { 15 | return psnip_cpu_feature_check(psnip_feature); 16 | } 17 | }; 18 | 19 | #define MAKE_ENTRY(x) Entry{x, PSNIP_CPU_FEATURE_X86_ ## x, #x}, 20 | 21 | const Entry FEATURES_ARRAY[] = { 22 | FEATURES_X(MAKE_ENTRY) 23 | }; 24 | 25 | const size_t FEATURES_COUNT = sizeof(FEATURES_ARRAY)/sizeof(FEATURES_ARRAY[0]); 26 | 27 | const Entry& lookup(x86Feature feature) { 28 | assert(feature >= 0); 29 | assert(feature < FEATURES_COUNT); 30 | return FEATURES_ARRAY[feature]; 31 | } 32 | 33 | const char* to_name(x86Feature feature) { 34 | return lookup(feature).name; 35 | } 36 | 37 | bool supports(std::vector features) { 38 | for (auto& f : features) { 39 | if (!lookup(f).supported()) { 40 | return false; 41 | } 42 | } 43 | return true; 44 | } 45 | 46 | std::string to_string(x86Feature f) { 47 | return lookup(f).name; 48 | } 49 | 50 | std::string support_string() { 51 | std::string result; 52 | for (const Entry& e : FEATURES_ARRAY) { 53 | if (e.supported()) { 54 | result += result.empty() ? e.name : std::string(" ") + e.name; 55 | } 56 | } 57 | return result; 58 | } 59 | 60 | std::ostream& operator<<(std::ostream& os, const x86Feature& f) { 61 | os << to_string(f); 62 | return os; 63 | } 64 | 65 | -------------------------------------------------------------------------------- /libpfm4-support.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Support for named PMU events as implemented by libpfm4. 3 | * 4 | * libpfm4-support.hpp 5 | */ 6 | #include 7 | 8 | #include "context.hpp" 9 | 10 | void listPfm4Events(Context &c); 11 | 12 | /* an extra PMU evente requested by the end user */ 13 | struct PmuEvent { 14 | /* full libpfm name, including attributes and PMU prefix */ 15 | std::string full_name; 16 | /* short name that can be used for the table header */ 17 | std::string short_name; 18 | /* the code for PMU programming */ 19 | uint64_t code; 20 | /* the PMU slot assigned to the event (not filled in by parseExtraEvents, fill it in yourself */ 21 | unsigned slot; 22 | 23 | PmuEvent(const std::string& full_name, uint64_t code, unsigned slot = -1); 24 | 25 | static std::string make_short_name(const std::string& full); 26 | }; 27 | 28 | std::vector parseExtraEvents(Context &c, const std::string& event_list); 29 | -------------------------------------------------------------------------------- /main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * main.cpp 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | 18 | #include 19 | 20 | #if USE_BACKWARD_CPP 21 | #include "backward-cpp/backward.hpp" 22 | #endif 23 | 24 | #include "stats.hpp" 25 | #include "version.hpp" 26 | #include "args.hxx" 27 | #include "benchmark.hpp" 28 | #include "timer-info.hpp" 29 | #include "context.hpp" 30 | #include "util.hpp" 31 | #include "timers.hpp" 32 | #include "isa-support.hpp" 33 | #include "matchers.hpp" 34 | 35 | using namespace std; 36 | using namespace std::chrono; 37 | using namespace Stats; 38 | 39 | 40 | 41 | 42 | #if USE_BACKWARD_CPP 43 | backward::SignalHandling sh; 44 | #endif 45 | 46 | int main(int argc, char **argv) { 47 | cout << "Welcome to uarch-bench (" << GIT_VERSION << ")" << endl; 48 | cout << "Supported CPU features: " + support_string() << endl; 49 | 50 | try { 51 | Context context(argc, argv, &std::cout); 52 | context.run(); 53 | } catch (SilentSuccess& e) { 54 | } catch (SilentFailure& e) { 55 | return EXIT_FAILURE; 56 | } catch (const std::exception& e) { 57 | std::cerr << "ERROR: " << e.what() << std::endl; 58 | return EXIT_FAILURE; 59 | } 60 | 61 | return EXIT_SUCCESS; 62 | } 63 | -------------------------------------------------------------------------------- /matchers.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * matchers.hpp 3 | */ 4 | 5 | #ifndef MATCHERS_HPP_ 6 | #define MATCHERS_HPP_ 7 | 8 | #include "util.hpp" 9 | #include 10 | #include 11 | 12 | class TagMatcher { 13 | std::vector yes_patterns, no_patterns; 14 | public: 15 | TagMatcher(std::string pattern_list) { 16 | // filter the list like "foo,~bar" into positive patterns (foo) and negative (bar) 17 | for (auto& p : split_on_string(pattern_list, ",")) { 18 | if (!p.empty() && p[0] == '~') { 19 | no_patterns.push_back(p.substr(1, p.size())); 20 | } else { 21 | yes_patterns.push_back(p); 22 | } 23 | } 24 | } 25 | 26 | bool operator()(const std::vector& tags) const { 27 | bool pos_match = matches(tags, yes_patterns); 28 | bool neg_match = matches(tags, no_patterns); 29 | 30 | // note the yes_patterns.empty() condition: this means that in the special case there 31 | // are zero positive patterns we match _any_ tag that doesn't match the negative tags (it's as if you 32 | // had added a * to the tag list) 33 | return (pos_match || yes_patterns.empty()) && !neg_match; 34 | }; 35 | 36 | bool static matches(const std::vector& tags, const std::vector &patterns) { 37 | for (auto& tag : tags) { 38 | for (auto& pattern : patterns) { 39 | if (wildcard_match(tag, pattern)) { 40 | return true; 41 | } 42 | } 43 | } 44 | return false; 45 | } 46 | }; 47 | 48 | 49 | #endif /* MATCHERS_HPP_ */ 50 | -------------------------------------------------------------------------------- /nasm-binaries/LICENSE: -------------------------------------------------------------------------------- 1 | NASM is now licensed under the 2-clause BSD license, also known as the 2 | simplified BSD license. 3 | 4 | Copyright 1996-2010 the NASM Authors - All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following 8 | conditions are met: 9 | 10 | * Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | * Redistributions in binary form must reproduce the above 13 | copyright notice, this list of conditions and the following 14 | disclaimer in the documentation and/or other materials provided 15 | with the distribution. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 18 | CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 19 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 20 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 22 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 28 | OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 29 | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /nasm-binaries/NOTE: -------------------------------------------------------------------------------- 1 | These nasm binaries are downloaded from: 2 | 3 | https://www.nasm.us/pub/nasm/releasebuilds 4 | 5 | If no nasm binary is found on the current system, an up to date version 6 | is used from this directory. The other versions are used in CI for testing 7 | compatibility with various nasm versions. 8 | 9 | The binaries are extracted from the ./rpms directory (not under source control) 10 | using the rpm-extract.sh script. 11 | -------------------------------------------------------------------------------- /nasm-binaries/linux/nasm-2.11.08-1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/travisdowns/uarch-bench/e4f54d5a8fa7e735d356ba83b5b1cdc8982a6650/nasm-binaries/linux/nasm-2.11.08-1 -------------------------------------------------------------------------------- /nasm-binaries/linux/nasm-2.12.02-0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/travisdowns/uarch-bench/e4f54d5a8fa7e735d356ba83b5b1cdc8982a6650/nasm-binaries/linux/nasm-2.12.02-0 -------------------------------------------------------------------------------- /nasm-binaries/linux/nasm-2.13.03-0.fc24: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/travisdowns/uarch-bench/e4f54d5a8fa7e735d356ba83b5b1cdc8982a6650/nasm-binaries/linux/nasm-2.13.03-0.fc24 -------------------------------------------------------------------------------- /nasm-binaries/linux/nasm-2.14.02-0.fc27: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/travisdowns/uarch-bench/e4f54d5a8fa7e735d356ba83b5b1cdc8982a6650/nasm-binaries/linux/nasm-2.14.02-0.fc27 -------------------------------------------------------------------------------- /nasm-binaries/rpm-extract.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Extracts the nasm binary from the files in the ./rpms directory 4 | # which must have the suffix .x86_64.rpm 5 | 6 | set -euo pipefail 7 | 8 | cd rpms 9 | 10 | for rpm in *.x86_64.rpm; do 11 | prefix=${rpm%".x86_64.rpm"} 12 | echo "Processing $rpm ($prefix)" 13 | rpm2cpio "$rpm" | cpio -ivd './usr/bin/nasm' 14 | mv './usr/bin/nasm' "../linux/$prefix" 15 | done 16 | 17 | rmdir ./usr/bin 18 | rmdir ./usr -------------------------------------------------------------------------------- /scripts/actions-test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This is the script called by GitHub actions. 4 | 5 | set -euo pipefail 6 | 7 | : ${TEST_TAG:='default'} 8 | : ${TEST_NAME:='*'} 9 | 10 | echo "Running tests with name=$TEST_NAME and tag=$TEST_TAG" 11 | ./uarch-bench --test-name="$TEST_NAME" --test-tag="$TEST_TAG" -------------------------------------------------------------------------------- /scripts/l2-bandwidth/plot-all.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | # Creates the plots used in https://github.com/travisdowns/uarch-bench/wiki/Getting-everything-the-L2-has-to-give 4 | 5 | set -e 6 | 7 | IN_DIR=${1-./results} 8 | OUT_DIR=${1-./plots} 9 | 10 | OUT_DIR=$(realpath "$OUT_DIR") 11 | mkdir -p "$OUT_DIR" 12 | 13 | echo "Reading data from $IN_DIR and writing to $OUT_DIR" 14 | 15 | XTITLE="UNROLLB (First/second read offset in lines)" 16 | YTITLE="Cycles per line" 17 | 18 | cd "$IN_DIR" 19 | eplot -x "$XTITLE" -y "$YTITLE" -r '[][1.5:2.5]' 1-wide.cycles --svg -o "$OUT_DIR/1-wide.svg" 20 | eplot -x "$XTITLE" -y "$YTITLE" -r '[][1.3:2.2]' 2-wide.cycles --svg -o "$OUT_DIR/2-wide.svg" 21 | eplot -m -x "$XTITLE" -y "$YTITLE" -r '[][1.3:2.5]' 2-wide*.cycles linear*.cycles --svg -o "$OUT_DIR/2-wide-pfon.svg" 22 | cd - 23 | -------------------------------------------------------------------------------- /scripts/l2-bandwidth/run-all.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | # runs all the tests needed for the l2 max bandwidth investigation at 4 | # https://github.com/travisdowns/uarch-bench/wiki/Maxing-out-the-L2-cache 5 | # to reproduce the results in a reasonable way you should have at least the following things configured: 6 | # sudo cpupower -c all frequency-set -g performance 7 | # disable turboboost 8 | # ensure hugepages are allowed: /sys/kernel/mm/transparent_hugepage/enabled should be [always] or [madvise] 9 | 10 | set -e 11 | 12 | OUT_DIR=${1-./results} 13 | mkdir -p $OUT_DIR 14 | 15 | function do_test { 16 | TEST=$1 scripts/l2-bandwidth/tricky.sh $OUT_DIR/$2 17 | echo 18 | } 19 | 20 | # turn prefetcher off, this only works on Intel chips 21 | echo "Disabling prefetch which needs sudo, you might be prompted for your root password" 22 | sudo wrmsr -a 0x1a4 "$((2#1111))" 23 | 24 | # plot using 25 | # eplot -x "UNROLLB (First/second read offset in lines)" -y "Cycles per line" -r '[][1.5:2.5]' $OUT_DIR/1-wide.cycles2 26 | do_test bandwidth-oneloop-u1-128 1-wide.cycles 27 | do_test bandwidth-oneloop-u2-128 2-wide.cycles 28 | 29 | do_test bandwidth-normal-128 linearA.cycles 30 | do_test bandwidth-normal-128 linearB.cycles 31 | 32 | echo "Enabling prefetch again" 33 | sudo wrmsr -a 0x1a4 0 34 | 35 | do_test bandwidth-oneloop-u2-128 2-wide-pfonA.cycles 36 | do_test bandwidth-oneloop-u2-128 2-wide-pfonB.cycles 37 | 38 | do_test bandwidth-normal-128 linear-pfonA.cycles 39 | do_test bandwidth-normal-128 linear-pfonB.cycles 40 | 41 | -------------------------------------------------------------------------------- /scripts/l2-bandwidth/tricky.sh: -------------------------------------------------------------------------------- 1 | # you should run this script from the base uarch-bench directory 2 | 3 | set -e 4 | 5 | TEST=${TEST-bandwidth-tricky-128} 6 | MAX=${MAX-50} 7 | INCR=${INCR-1} 8 | OUT_FILE=${1-tricky.out} 9 | 10 | mkdir -p $(dirname $OUT_FILE) 11 | 12 | echo "Using output file $OUT_FILE for test $TEST, up to UNROLL of $MAX" 13 | 14 | FTEST=memory/bandwidth/$TEST 15 | 16 | for i in $(seq 1 $INCR $MAX); do 17 | rm -f x86_methods.o x86_methods2.o 18 | echo "UNROLL $i out of $MAX" 19 | NASM_DEFINES="-DUNROLLB=$i $NASM_MORE" make && ./uarch-bench.sh --test-name=$FTEST --precision=6 20 | done | tee "${OUT_FILE}.tmp" | grep 'UNROLL ' 21 | 22 | grep ' bandwidth' "${OUT_FILE}.tmp" | ec 4 > ${OUT_FILE} 23 | rm "${OUT_FILE}.tmp" 24 | echo "Wrote result to ${OUT_FILE}" 25 | -------------------------------------------------------------------------------- /scripts/nop-iterator.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | set -e 3 | 4 | # Recompiles and runs uarch-bench repeatedly, varying the value of a given nasm define (defaulting to NOPCOUNT) 5 | 6 | # You can override any of these variables from outside to customize the behavior of this script. 7 | : ${VAR:="NOPCOUNT"} 8 | : ${TOUCH:="rm -f x86_methods2.o"} 9 | : ${COMPILE:="make"} 10 | : ${TEST:="memory/store-fwd-try/stfwd-raw-mixed"} 11 | : ${CMD:="./uarch-bench --timer=libpfc --test-name=$TEST --extra-events=MACHINE_CLEARS.MEMORY_ORDERING"} 12 | : ${START:=1} 13 | : ${STOP:=1000} 14 | 15 | for nop in $(seq $START $STOP); do 16 | $TOUCH 17 | $COMPILE "NASM_DEFINES=-D${VAR}=${nop}" 18 | $CMD 19 | # $CMD 20 | done -------------------------------------------------------------------------------- /scripts/parse.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import re 4 | import sys 5 | 6 | for line in sys.stdin: 7 | match = re.search('([0-9]*)-KiB serial loads *([0-9\.]*)', line) 8 | if match: 9 | print(match.group(1), match.group(2), sep=',') 10 | -------------------------------------------------------------------------------- /scripts/test-nasm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Extracts the nasm binary from the files in the ./rpms directory 4 | # which must have the suffix .x86_64.rpm 5 | 6 | set -euo pipefail 7 | 8 | function deleteo { 9 | for rpm in *.asm; do 10 | prefix=${rpm%".asm"} 11 | rm "${prefix}.o" 12 | done 13 | } 14 | 15 | make -j4 16 | 17 | for nasm in nasm-binaries/linux/*; do 18 | echo "Testing nasm: $nasm" 19 | deleteo 20 | make -j4 ASM=${nasm} 21 | ./uarch-bench --test-name=basic/* 22 | done -------------------------------------------------------------------------------- /scripts/travis-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This is the script called by TravisCI to do the needful. 4 | 5 | set -euo pipefail 6 | 7 | echo "CC is ${CC-unset}, CXX is ${CXX-unset}" 8 | [[ -z ${CC+x} ]] || ${CC} --version 9 | [[ -z ${CXX+x} ]] || ${CXX} --version 10 | ccache -s 11 | ccache -z 12 | make -j4 13 | ccache -s -------------------------------------------------------------------------------- /scripts/travis-run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This is the script called by TravisCI to do the needful. 4 | 5 | set -euo pipefail 6 | 7 | : ${TEST_TAG:='default'} 8 | : ${TEST_NAME:='*'} 9 | 10 | scripts/travis-build.sh 11 | lscpu 12 | ./unit-test 13 | echo "Running tests with name=$TEST_NAME and tag=$TEST_TAG" 14 | ./uarch-bench --test-name="$TEST_NAME" --test-tag="$TEST_TAG" -------------------------------------------------------------------------------- /test/unit-test-main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * The implementation and main() function for the Catch2 unit tests. 3 | * 4 | * unit-test-main.cpp 5 | */ 6 | 7 | // This tells Catch to provide a main() - only do this in one cpp file 8 | #define CATCH_CONFIG_MAIN 9 | #include "catch.hpp" 10 | -------------------------------------------------------------------------------- /util/.gitignore: -------------------------------------------------------------------------------- 1 | /seqtest 2 | -------------------------------------------------------------------------------- /version.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * version.hpp 3 | */ 4 | 5 | #ifndef VERSION_HPP_ 6 | #define VERSION_HPP_ 7 | 8 | // normally this definition is passed on the compiler command line, but if not (e.g., someone is building this 9 | // from an IDE or whatever) just use unknown 10 | #ifndef GIT_VERSION 11 | #define GIT_VERSION "unknown" 12 | #endif 13 | 14 | #endif /* VERSION_HPP_ */ 15 | -------------------------------------------------------------------------------- /x86-avx512.asm: -------------------------------------------------------------------------------- 1 | %include "x86-helpers.asm" 2 | 3 | nasm_util_assert_boilerplate 4 | thunk_boilerplate 5 | 6 | ; AVX-512 specific x86 tests 7 | 8 | define_bench kreg_lat 9 | xor eax, eax 10 | kxorb k0, k0, k0 11 | .top: 12 | %rep 128 13 | kmovb k0, eax 14 | kmovb eax, k0 15 | %endrep 16 | dec rdi 17 | jnz .top 18 | ret 19 | 20 | ; these next two tests test whether kxorb same, same, same 21 | ; is dependency breaking. The only differences between the 22 | ; nz and z variants is that the former uses different 23 | ; registers for xor input (not zeroing), while z uses the 24 | ; same registers, so is in principle a zeroing idiom 25 | define_bench kreg_lat_nz 26 | xor eax, eax 27 | kxorb k0, k0, k0 28 | kxorb k1, k1, k1 29 | .top: 30 | %rep 128 31 | kmovb k0, eax 32 | kxorb k0, k0, k1 33 | kmovb eax, k0 34 | %endrep 35 | dec rdi 36 | jnz .top 37 | ret 38 | 39 | ; variant with zeroing kxor 40 | define_bench kreg_lat_z 41 | xor eax, eax 42 | kxorb k0, k0, k0 43 | kxorb k1, k1, k1 44 | .top: 45 | %rep 128 46 | kmovb k0, eax 47 | kxorb k0, k0, k0 48 | kmovb eax, k0 49 | %endrep 50 | dec rdi 51 | jnz .top 52 | ret 53 | 54 | ; variant with dep-breaking move from GP 55 | define_bench kreg_lat_mov 56 | xor eax, eax 57 | xor ecx, ecx 58 | kxorb k0, k0, k0 59 | kxorb k1, k1, k1 60 | .top: 61 | %rep 128 62 | kmovb k0, eax 63 | kmovb k0, ecx 64 | kmovb eax, k0 65 | %endrep 66 | dec rdi 67 | jnz .top 68 | ret 69 | -------------------------------------------------------------------------------- /x86-decode.asm: -------------------------------------------------------------------------------- 1 | %include "x86-helpers.asm" 2 | 3 | nasm_util_assert_boilerplate 4 | thunk_boilerplate 5 | 6 | 7 | ; %1 name suffix 8 | ; %2 nop count 9 | ; %3 payload instruction 10 | %macro define_decode_complex 3 11 | define_bench decode_complex_%1 12 | .top: 13 | %rep 200 14 | %3 15 | xor eax, eax 16 | times %2 nop 17 | %endrep 18 | dec rdi 19 | jnz .top 20 | 21 | ret 22 | %endmacro 23 | 24 | define_decode_complex 211,1,cwd 25 | define_decode_complex 2111,2,cwd 26 | define_decode_complex 21111,3,cwd 27 | 28 | define_decode_complex 31,0,{xadd eax, eax} 29 | define_decode_complex 311,1,{xadd eax, eax} 30 | define_decode_complex 3111,2,{xadd eax, eax} -------------------------------------------------------------------------------- /x86-oneshot.asm: -------------------------------------------------------------------------------- 1 | %include "x86-helpers.asm" 2 | 3 | nasm_util_assert_boilerplate 4 | thunk_boilerplate 5 | 6 | define_bench raw_rdpmc0_overhead 7 | assert_eq rdi, 0 8 | assert_eq rsi, 0 9 | mov r8, rdx 10 | readpmc0_start 11 | readpmc0_end 12 | store_pfcnow0 r8 13 | ret 14 | 15 | define_bench raw_rdpmc4_overhead 16 | assert_eq rdi, 0 17 | assert_eq rsi, 0 18 | mov r8, rdx 19 | readpmc4_start 20 | readpmc4_end 21 | store_pfcnow4 r8 22 | ret 23 | 24 | 25 | ; 100 stores with raw rdpmc calls 26 | define_bench store_raw_libpfc 27 | ; loop count should be 1 since we don't have a loop here 28 | assert_eq rdi, 1 29 | sub rsp, 128 30 | mov r8, rdx 31 | readpmc4_start 32 | .top: 33 | %assign offset 0 34 | %rep 100 35 | mov [rsp], BYTE 42 36 | ;sfence 37 | %assign offset offset+1 38 | %endrep 39 | readpmc4_end 40 | store_pfcnow4 r8 41 | add rsp, 128 42 | ret 43 | 44 | 45 | %macro define_oneshot_adds 1 46 | define_bench oneshot_%1adds 47 | push rbx 48 | 49 | mov r8, rdx 50 | xor eax, eax 51 | cpuid 52 | xor r9d, r9d 53 | 54 | readpmc0_start_nofence 55 | lfence 56 | times (%1) add r9, 1 57 | lfence 58 | readpmc0_end_nofence 59 | 60 | store_pfcnow0 r8 61 | 62 | pop rbx 63 | ret 64 | %endmacro 65 | 66 | define_oneshot_adds 6 67 | define_oneshot_adds 11 68 | 69 | define_bench oneshot_loadadds 70 | push rbx 71 | 72 | mov r8, rdx 73 | xor eax, eax 74 | cpuid 75 | xor r9d, r9d 76 | 77 | readpmc0_start_nofence 78 | lfence 79 | mov r9, [rsp] 80 | times 6 add r9, 1 81 | lfence 82 | readpmc0_end_nofence 83 | 84 | store_pfcnow0 r8 85 | 86 | pop rbx 87 | ret --------------------------------------------------------------------------------