Index: third_party/boost/boost/mpl/aux_/integral_wrapper.hpp |
diff --git a/third_party/boost/boost/mpl/aux_/integral_wrapper.hpp b/third_party/boost/boost/mpl/aux_/integral_wrapper.hpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f32f70fed81e891d9e1196c40aed299a3019cdba |
--- /dev/null |
+++ b/third_party/boost/boost/mpl/aux_/integral_wrapper.hpp |
@@ -0,0 +1,93 @@ |
+ |
+// Copyright Aleksey Gurtovoy 2000-2006 |
+// |
+// Distributed under the Boost Software License, Version 1.0. |
+// (See accompanying file LICENSE_1_0.txt or copy at |
+// http://www.boost.org/LICENSE_1_0.txt) |
+// |
+// See http://www.boost.org/libs/mpl for documentation. |
+ |
+// $Source$ |
+// $Date: 2007-11-25 13:07:19 -0500 (Sun, 25 Nov 2007) $ |
+// $Revision: 41369 $ |
+ |
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION! |
+ |
+#include <boost/mpl/integral_c_tag.hpp> |
+#include <boost/mpl/aux_/static_cast.hpp> |
+#include <boost/mpl/aux_/nttp_decl.hpp> |
+#include <boost/mpl/aux_/config/static_constant.hpp> |
+#include <boost/mpl/aux_/config/workaround.hpp> |
+ |
+#include <boost/preprocessor/cat.hpp> |
+ |
+#if !defined(AUX_WRAPPER_NAME) |
+# define AUX_WRAPPER_NAME BOOST_PP_CAT(AUX_WRAPPER_VALUE_TYPE,_) |
+#endif |
+ |
+#if !defined(AUX_WRAPPER_PARAMS) |
+# define AUX_WRAPPER_PARAMS(N) BOOST_MPL_AUX_NTTP_DECL(AUX_WRAPPER_VALUE_TYPE, N) |
+#endif |
+ |
+#if !defined(AUX_WRAPPER_INST) |
+# if BOOST_WORKAROUND(__MWERKS__, <= 0x2407) |
+# define AUX_WRAPPER_INST(value) AUX_WRAPPER_NAME< value > |
+# else |
+# define AUX_WRAPPER_INST(value) BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::AUX_WRAPPER_NAME< value > |
+# endif |
+#endif |
+ |
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN |
+ |
+template< AUX_WRAPPER_PARAMS(N) > |
+struct AUX_WRAPPER_NAME |
+{ |
+ BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, value = N); |
+// agurt, 08/mar/03: SGI MIPSpro C++ workaround, have to #ifdef because some |
+// other compilers (e.g. MSVC) are not particulary happy about it |
+#if BOOST_WORKAROUND(__EDG_VERSION__, <= 238) |
+ typedef struct AUX_WRAPPER_NAME type; |
+#else |
+ typedef AUX_WRAPPER_NAME type; |
+#endif |
+ typedef AUX_WRAPPER_VALUE_TYPE value_type; |
+ typedef integral_c_tag tag; |
+ |
+// have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC), |
+// while some other don't like 'value + 1' (Borland), and some don't like |
+// either |
+#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243) |
+ private: |
+ BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1))); |
+ BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1))); |
+ public: |
+ typedef AUX_WRAPPER_INST(next_value) next; |
+ typedef AUX_WRAPPER_INST(prior_value) prior; |
+#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \ |
+ || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \ |
+ || (BOOST_WORKAROUND(__HP_aCC, <= 53800) && (BOOST_WORKAROUND(__hpxstd98, != 1))) |
+ typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)) ) next; |
+ typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)) ) prior; |
+#else |
+ typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value + 1)) ) next; |
+ typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior; |
+#endif |
+ |
+ // enables uniform function call syntax for families of overloaded |
+ // functions that return objects of both arithmetic ('int', 'long', |
+ // 'double', etc.) and wrapped integral types (for an example, see |
+ // "mpl/example/power.cpp") |
+ operator AUX_WRAPPER_VALUE_TYPE() const { return static_cast<AUX_WRAPPER_VALUE_TYPE>(this->value); } |
+}; |
+ |
+#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION) |
+template< AUX_WRAPPER_PARAMS(N) > |
+AUX_WRAPPER_VALUE_TYPE const AUX_WRAPPER_INST(N)::value; |
+#endif |
+ |
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE |
+ |
+#undef AUX_WRAPPER_NAME |
+#undef AUX_WRAPPER_PARAMS |
+#undef AUX_WRAPPER_INST |
+#undef AUX_WRAPPER_VALUE_TYPE |