| Index: third_party/boost/boost/detail/workaround.hpp
|
| diff --git a/third_party/boost/boost/detail/workaround.hpp b/third_party/boost/boost/detail/workaround.hpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4933a531f908cc6f2ff277f4375d867426aed5c7
|
| --- /dev/null
|
| +++ b/third_party/boost/boost/detail/workaround.hpp
|
| @@ -0,0 +1,202 @@
|
| +// Copyright David Abrahams 2002.
|
| +// Distributed under the Boost Software License, Version 1.0. (See
|
| +// accompanying file LICENSE_1_0.txt or copy at
|
| +// http://www.boost.org/LICENSE_1_0.txt)
|
| +#ifndef WORKAROUND_DWA2002126_HPP
|
| +# define WORKAROUND_DWA2002126_HPP
|
| +
|
| +// Compiler/library version workaround macro
|
| +//
|
| +// Usage:
|
| +//
|
| +// #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
| +// // workaround for eVC4 and VC6
|
| +// ... // workaround code here
|
| +// #endif
|
| +//
|
| +// When BOOST_STRICT_CONFIG is defined, expands to 0. Otherwise, the
|
| +// first argument must be undefined or expand to a numeric
|
| +// value. The above expands to:
|
| +//
|
| +// (BOOST_MSVC) != 0 && (BOOST_MSVC) < 1300
|
| +//
|
| +// When used for workarounds that apply to the latest known version
|
| +// and all earlier versions of a compiler, the following convention
|
| +// should be observed:
|
| +//
|
| +// #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1301))
|
| +//
|
| +// The version number in this case corresponds to the last version in
|
| +// which the workaround was known to have been required. When
|
| +// BOOST_DETECT_OUTDATED_WORKAROUNDS is not the defined, the macro
|
| +// BOOST_TESTED_AT(x) expands to "!= 0", which effectively activates
|
| +// the workaround for any version of the compiler. When
|
| +// BOOST_DETECT_OUTDATED_WORKAROUNDS is defined, a compiler warning or
|
| +// error will be issued if the compiler version exceeds the argument
|
| +// to BOOST_TESTED_AT(). This can be used to locate workarounds which
|
| +// may be obsoleted by newer versions.
|
| +
|
| +# ifndef BOOST_STRICT_CONFIG
|
| +
|
| +#include <boost/config.hpp>
|
| +
|
| +#ifndef __BORLANDC__
|
| +#define __BORLANDC___WORKAROUND_GUARD 1
|
| +#else
|
| +#define __BORLANDC___WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef __MSC_VER
|
| +#define __MSC_VER_WORKAROUND_GUARD 1
|
| +#else
|
| +#define __MSC_VER_WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef _MSC_FULL_VER
|
| +#define _MSC_FULL_VER_WORKAROUND_GUARD 1
|
| +#else
|
| +#define _MSC_FULL_VER_WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef BOOST_MSVC
|
| +#define BOOST_MSVC_WORKAROUND_GUARD 1
|
| +#else
|
| +#define BOOST_MSVC_WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef __GNUC__
|
| +#define __GNUC___WORKAROUND_GUARD 1
|
| +#else
|
| +#define __GNUC___WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef __GNUC_MINOR__
|
| +#define __GNUC_MINOR___WORKAROUND_GUARD 1
|
| +#else
|
| +#define __GNUC_MINOR___WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef __GNUC_PATCHLEVEL__
|
| +#define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 1
|
| +#else
|
| +#define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef __IBMCPP__
|
| +#define __IBMCPP___WORKAROUND_GUARD 1
|
| +#else
|
| +#define __IBMCPP___WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef __SUNPRO_CC
|
| +#define __SUNPRO_CC_WORKAROUND_GUARD 1
|
| +#else
|
| +#define __SUNPRO_CC_WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef __DECCXX_VER
|
| +#define __DECCXX_VER_WORKAROUND_GUARD 1
|
| +#else
|
| +#define __DECCXX_VER_WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef __MWERKS__
|
| +#define __MWERKS___WORKAROUND_GUARD 1
|
| +#else
|
| +#define __MWERKS___WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef __EDG_VERSION__
|
| +#define __EDG_VERSION___WORKAROUND_GUARD 1
|
| +#else
|
| +#define __EDG_VERSION___WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef __HP_aCC
|
| +#define __HP_aCC_WORKAROUND_GUARD 1
|
| +#else
|
| +#define __HP_aCC_WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef _CRAYC
|
| +#define _CRAYC_WORKAROUND_GUARD 1
|
| +#else
|
| +#define _CRAYC_WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef __DMC__
|
| +#define __DMC___WORKAROUND_GUARD 1
|
| +#else
|
| +#define __DMC___WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef MPW_CPLUS
|
| +#define MPW_CPLUS_WORKAROUND_GUARD 1
|
| +#else
|
| +#define MPW_CPLUS_WORKAROUND_GUARD 0
|
| +#endif
|
| +
|
| +#ifndef _RWSTD_VER
|
| +#define _RWSTD_VER_WORKAROUND_GUARD 1
|
| +#else
|
| +#define _RWSTD_VER_WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC
|
| +#define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 1
|
| +#else
|
| +#define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef __SGI_STL_PORT
|
| +#define __SGI_STL_PORT_WORKAROUND_GUARD 1
|
| +#else
|
| +#define __SGI_STL_PORT_WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef _STLPORT_VERSION
|
| +#define _STLPORT_VERSION_WORKAROUND_GUARD 1
|
| +#else
|
| +#define _STLPORT_VERSION_WORKAROUND_GUARD 0
|
| +#endif
|
| +
|
| +#ifndef BOOST_INTEL_CXX_VERSION
|
| +#define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 1
|
| +#else
|
| +#define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef BOOST_INTEL_WIN
|
| +#define BOOST_INTEL_WIN_WORKAROUND_GUARD 1
|
| +#else
|
| +#define BOOST_INTEL_WIN_WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef BOOST_DINKUMWARE_STDLIB
|
| +#define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 1
|
| +#else
|
| +#define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 0
|
| +#endif
|
| +#ifndef BOOST_INTEL
|
| +#define BOOST_INTEL_WORKAROUND_GUARD 1
|
| +#else
|
| +#define BOOST_INTEL_WORKAROUND_GUARD 0
|
| +#endif
|
| +// Always define to zero, if it's used it'll be defined my MPL:
|
| +#define BOOST_MPL_CFG_GCC_WORKAROUND_GUARD 0
|
| +
|
| +# define BOOST_WORKAROUND(symbol, test) \
|
| + ((symbol ## _WORKAROUND_GUARD + 0 == 0) && \
|
| + (symbol != 0) && (1 % (( (symbol test) ) + 1)))
|
| +// ^ ^ ^ ^
|
| +// The extra level of parenthesis nesting above, along with the
|
| +// BOOST_OPEN_PAREN indirection below, is required to satisfy the
|
| +// broken preprocessor in MWCW 8.3 and earlier.
|
| +//
|
| +// The basic mechanism works as follows:
|
| +// (symbol test) + 1 => if (symbol test) then 2 else 1
|
| +// 1 % ((symbol test) + 1) => if (symbol test) then 1 else 0
|
| +//
|
| +// The complication with % is for cooperation with BOOST_TESTED_AT().
|
| +// When "test" is BOOST_TESTED_AT(x) and
|
| +// BOOST_DETECT_OUTDATED_WORKAROUNDS is #defined,
|
| +//
|
| +// symbol test => if (symbol <= x) then 1 else -1
|
| +// (symbol test) + 1 => if (symbol <= x) then 2 else 0
|
| +// 1 % ((symbol test) + 1) => if (symbol <= x) then 1 else divide-by-zero
|
| +//
|
| +
|
| +# ifdef BOOST_DETECT_OUTDATED_WORKAROUNDS
|
| +# define BOOST_OPEN_PAREN (
|
| +# define BOOST_TESTED_AT(value) > value) ?(-1): BOOST_OPEN_PAREN 1
|
| +# else
|
| +# define BOOST_TESTED_AT(value) != ((value)-(value))
|
| +# endif
|
| +
|
| +# else
|
| +
|
| +# define BOOST_WORKAROUND(symbol, test) 0
|
| +
|
| +# endif
|
| +
|
| +#endif // WORKAROUND_DWA2002126_HPP
|
|
|