]> git.lyx.org Git - lyx.git/commitdiff
update boost to version 1.29.0
authorLars Gullik Bjønnes <larsbj@gullik.org>
Tue, 15 Oct 2002 17:51:41 +0000 (17:51 +0000)
committerLars Gullik Bjønnes <larsbj@gullik.org>
Tue, 15 Oct 2002 17:51:41 +0000 (17:51 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5420 a592a061-630c-0410-9148-cb99ea01b6c8

249 files changed:
boost/ChangeLog
boost/boost/array.hpp
boost/boost/bind.hpp
boost/boost/concept_check.hpp
boost/boost/config/compiler/borland.hpp
boost/boost/config/compiler/common_edg.hpp
boost/boost/config/compiler/intel.hpp
boost/boost/config/compiler/kai.hpp
boost/boost/config/compiler/metrowerks.hpp
boost/boost/config/compiler/vacpp.hpp
boost/boost/config/compiler/visualc.hpp
boost/boost/config/platform/aix.hpp
boost/boost/config/stdlib/dinkumware.hpp
boost/boost/config/stdlib/vacpp.hpp
boost/boost/cstdint.hpp
boost/boost/detail/shared_count.hpp
boost/boost/function.hpp
boost/boost/function/function0.hpp
boost/boost/function/function1.hpp
boost/boost/function/function10.hpp
boost/boost/function/function2.hpp
boost/boost/function/function3.hpp
boost/boost/function/function4.hpp
boost/boost/function/function5.hpp
boost/boost/function/function6.hpp
boost/boost/function/function7.hpp
boost/boost/function/function8.hpp
boost/boost/function/function9.hpp
boost/boost/function/function_base.hpp
boost/boost/function/function_template.hpp
boost/boost/integer_traits.hpp
boost/boost/iterator_adaptors.hpp
boost/boost/limits.hpp
boost/boost/mpl/aux_/arity.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/config/dtp.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/config/lambda.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/config/overload_resolution.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/config/preprocessor.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/config/ttp.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/lambda_arity_param.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/lambda_support.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/preprocessor/def_params_tail.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/preprocessor/enum.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/preprocessor/filter_params.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/preprocessor/params.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/preprocessor/sub.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/preprocessor/tuple.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/template_arity_fwd.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/value_wknd.hpp [new file with mode: 0644]
boost/boost/mpl/aux_/void_spec.hpp [new file with mode: 0644]
boost/boost/mpl/bool_c.hpp [new file with mode: 0644]
boost/boost/mpl/if.hpp [new file with mode: 0644]
boost/boost/mpl/integral_c.hpp [new file with mode: 0644]
boost/boost/mpl/lambda_fwd.hpp [new file with mode: 0644]
boost/boost/mpl/limits/arity.hpp [new file with mode: 0644]
boost/boost/mpl/size_t_c.hpp [new file with mode: 0644]
boost/boost/mpl/void.hpp [new file with mode: 0644]
boost/boost/pending/ct_if.hpp
boost/boost/preprocessor.hpp
boost/boost/preprocessor/arithmetic.hpp
boost/boost/preprocessor/arithmetic/add.hpp
boost/boost/preprocessor/arithmetic/div.hpp
boost/boost/preprocessor/arithmetic/inc.hpp [new file with mode: 0644]
boost/boost/preprocessor/arithmetic/mod.hpp
boost/boost/preprocessor/arithmetic/mul.hpp
boost/boost/preprocessor/arithmetic/sub.hpp
boost/boost/preprocessor/array.hpp
boost/boost/preprocessor/assert_msg.hpp
boost/boost/preprocessor/cat.hpp
boost/boost/preprocessor/comma.hpp
boost/boost/preprocessor/comma_if.hpp
boost/boost/preprocessor/comparison.hpp
boost/boost/preprocessor/comparison/equal.hpp
boost/boost/preprocessor/comparison/greater.hpp
boost/boost/preprocessor/comparison/greater_equal.hpp
boost/boost/preprocessor/comparison/less.hpp
boost/boost/preprocessor/comparison/less_equal.hpp
boost/boost/preprocessor/comparison/not_equal.hpp
boost/boost/preprocessor/config/config.hpp [new file with mode: 0644]
boost/boost/preprocessor/control/expr_iif.hpp [new file with mode: 0644]
boost/boost/preprocessor/control/iif.hpp [new file with mode: 0644]
boost/boost/preprocessor/debug/error.hpp [new file with mode: 0644]
boost/boost/preprocessor/dec.hpp
boost/boost/preprocessor/detail/auto_rec.hpp
boost/boost/preprocessor/detail/check.hpp [new file with mode: 0644]
boost/boost/preprocessor/detail/is_binary.hpp [new file with mode: 0644]
boost/boost/preprocessor/empty.hpp
boost/boost/preprocessor/enum.hpp
boost/boost/preprocessor/enum_params.hpp
boost/boost/preprocessor/enum_params_with_a_default.hpp
boost/boost/preprocessor/enum_params_with_defaults.hpp
boost/boost/preprocessor/enum_shifted.hpp
boost/boost/preprocessor/enum_shifted_params.hpp
boost/boost/preprocessor/expand.hpp
boost/boost/preprocessor/expr_if.hpp
boost/boost/preprocessor/facilities/empty.hpp [new file with mode: 0644]
boost/boost/preprocessor/facilities/identity.hpp [new file with mode: 0644]
boost/boost/preprocessor/for.hpp
boost/boost/preprocessor/identity.hpp
boost/boost/preprocessor/if.hpp
boost/boost/preprocessor/inc.hpp
boost/boost/preprocessor/iterate.hpp
boost/boost/preprocessor/limits.hpp
boost/boost/preprocessor/list.hpp
boost/boost/preprocessor/list/adt.hpp
boost/boost/preprocessor/list/append.hpp
boost/boost/preprocessor/list/at.hpp
boost/boost/preprocessor/list/cat.hpp
boost/boost/preprocessor/list/enum.hpp
boost/boost/preprocessor/list/filter.hpp
boost/boost/preprocessor/list/first_n.hpp
boost/boost/preprocessor/list/fold_left.hpp
boost/boost/preprocessor/list/fold_right.hpp
boost/boost/preprocessor/list/for_each.hpp
boost/boost/preprocessor/list/for_each_i.hpp
boost/boost/preprocessor/list/for_each_product.hpp
boost/boost/preprocessor/list/rest_n.hpp
boost/boost/preprocessor/list/reverse.hpp
boost/boost/preprocessor/list/size.hpp
boost/boost/preprocessor/list/to_tuple.hpp
boost/boost/preprocessor/list/transform.hpp
boost/boost/preprocessor/logical.hpp
boost/boost/preprocessor/logical/and.hpp
boost/boost/preprocessor/logical/bool.hpp
boost/boost/preprocessor/logical/compl.hpp [new file with mode: 0644]
boost/boost/preprocessor/logical/nor.hpp
boost/boost/preprocessor/logical/not.hpp
boost/boost/preprocessor/logical/or.hpp
boost/boost/preprocessor/logical/xor.hpp
boost/boost/preprocessor/max.hpp
boost/boost/preprocessor/min.hpp
boost/boost/preprocessor/repeat.hpp
boost/boost/preprocessor/repeat_2nd.hpp
boost/boost/preprocessor/repeat_3rd.hpp
boost/boost/preprocessor/repeat_from_to.hpp
boost/boost/preprocessor/repeat_from_to_2nd.hpp
boost/boost/preprocessor/repeat_from_to_3rd.hpp
boost/boost/preprocessor/repetition/detail/for.hpp [new file with mode: 0644]
boost/boost/preprocessor/repetition/for.hpp [new file with mode: 0644]
boost/boost/preprocessor/slot.hpp
boost/boost/preprocessor/stringize.hpp
boost/boost/preprocessor/tuple.hpp
boost/boost/preprocessor/tuple/eat.hpp
boost/boost/preprocessor/tuple/elem.hpp
boost/boost/preprocessor/tuple/rem.hpp [new file with mode: 0644]
boost/boost/preprocessor/tuple/reverse.hpp
boost/boost/preprocessor/tuple/to_list.hpp
boost/boost/preprocessor/while.hpp
boost/boost/property_map.hpp
boost/boost/ref.hpp
boost/boost/regex.hpp
boost/boost/regex/config.hpp
boost/boost/regex/detail/instances.hpp
boost/boost/regex/detail/regex_match.hpp
boost/boost/regex/pattern_except.hpp
boost/boost/regex_fwd.hpp
boost/boost/scoped_ptr.hpp
boost/boost/signals/connection.hpp
boost/boost/signals/detail/signals_common.hpp
boost/boost/signals/detail/slot_call_iterator.hpp
boost/boost/signals/signal_template.hpp
boost/boost/signals/slot.hpp
boost/boost/signals/trackable.hpp
boost/boost/static_assert.hpp
boost/boost/tuple/detail/tuple_basic.hpp
boost/boost/tuple/detail/tuple_basic_no_partial_spec.hpp
boost/boost/tuple/tuple.hpp
boost/boost/tuple/tuple_io.hpp
boost/boost/type_traits.hpp
boost/boost/type_traits/add_const.hpp [new file with mode: 0644]
boost/boost/type_traits/add_cv.hpp [new file with mode: 0644]
boost/boost/type_traits/add_pointer.hpp [new file with mode: 0644]
boost/boost/type_traits/add_reference.hpp [new file with mode: 0644]
boost/boost/type_traits/add_volatile.hpp [new file with mode: 0644]
boost/boost/type_traits/alignment_of.hpp [new file with mode: 0644]
boost/boost/type_traits/alignment_traits.hpp
boost/boost/type_traits/arithmetic_traits.hpp
boost/boost/type_traits/array_traits.hpp
boost/boost/type_traits/broken_compiler_spec.hpp [new file with mode: 0644]
boost/boost/type_traits/composite_traits.hpp
boost/boost/type_traits/config.hpp [new file with mode: 0644]
boost/boost/type_traits/conversion_traits.hpp
boost/boost/type_traits/cv_traits.hpp
boost/boost/type_traits/detail/bool_trait_def.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/bool_trait_undef.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/cv_traits_impl.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/false_result.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/ice_and.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/ice_eq.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/ice_not.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/ice_or.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/is_function_ptr_helper.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/size_t_trait_def.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/size_t_trait_undef.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/template_arity_spec.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/type_trait_def.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/type_trait_undef.hpp [new file with mode: 0644]
boost/boost/type_traits/detail/yes_no_type.hpp [new file with mode: 0644]
boost/boost/type_traits/function_traits.hpp
boost/boost/type_traits/has_nothrow_assign.hpp [new file with mode: 0644]
boost/boost/type_traits/has_nothrow_constructor.hpp [new file with mode: 0644]
boost/boost/type_traits/has_nothrow_copy.hpp [new file with mode: 0644]
boost/boost/type_traits/has_nothrow_destructor.hpp [new file with mode: 0644]
boost/boost/type_traits/has_trivial_assign.hpp [new file with mode: 0644]
boost/boost/type_traits/has_trivial_constructor.hpp [new file with mode: 0644]
boost/boost/type_traits/has_trivial_copy.hpp [new file with mode: 0644]
boost/boost/type_traits/has_trivial_destructor.hpp [new file with mode: 0644]
boost/boost/type_traits/ice.hpp
boost/boost/type_traits/is_POD.hpp [new file with mode: 0644]
boost/boost/type_traits/is_arithmetic.hpp [new file with mode: 0644]
boost/boost/type_traits/is_array.hpp [new file with mode: 0644]
boost/boost/type_traits/is_base_and_derived.hpp [new file with mode: 0644]
boost/boost/type_traits/is_class.hpp
boost/boost/type_traits/is_compound.hpp [new file with mode: 0644]
boost/boost/type_traits/is_const.hpp [new file with mode: 0644]
boost/boost/type_traits/is_convertible.hpp [new file with mode: 0644]
boost/boost/type_traits/is_empty.hpp [new file with mode: 0644]
boost/boost/type_traits/is_enum.hpp [new file with mode: 0644]
boost/boost/type_traits/is_float.hpp [new file with mode: 0644]
boost/boost/type_traits/is_function.hpp [new file with mode: 0644]
boost/boost/type_traits/is_fundamental.hpp [new file with mode: 0644]
boost/boost/type_traits/is_integral.hpp [new file with mode: 0644]
boost/boost/type_traits/is_member_function_pointer.hpp [new file with mode: 0644]
boost/boost/type_traits/is_member_pointer.hpp [new file with mode: 0644]
boost/boost/type_traits/is_object.hpp [new file with mode: 0644]
boost/boost/type_traits/is_pointer.hpp [new file with mode: 0644]
boost/boost/type_traits/is_reference.hpp [new file with mode: 0644]
boost/boost/type_traits/is_same.hpp [new file with mode: 0644]
boost/boost/type_traits/is_scalar.hpp [new file with mode: 0644]
boost/boost/type_traits/is_stateless.hpp [new file with mode: 0644]
boost/boost/type_traits/is_union.hpp [new file with mode: 0644]
boost/boost/type_traits/is_void.hpp [new file with mode: 0644]
boost/boost/type_traits/is_volatile.hpp [new file with mode: 0644]
boost/boost/type_traits/object_traits.hpp
boost/boost/type_traits/reference_traits.hpp
boost/boost/type_traits/remove_bounds.hpp [new file with mode: 0644]
boost/boost/type_traits/remove_const.hpp [new file with mode: 0644]
boost/boost/type_traits/remove_cv.hpp [new file with mode: 0644]
boost/boost/type_traits/remove_pointer.hpp [new file with mode: 0644]
boost/boost/type_traits/remove_reference.hpp [new file with mode: 0644]
boost/boost/type_traits/remove_volatile.hpp [new file with mode: 0644]
boost/boost/type_traits/same_traits.hpp
boost/boost/type_traits/transform_traits.hpp
boost/boost/type_traits/transform_traits_spec.hpp
boost/boost/type_traits/type_traits_test.hpp
boost/boost/type_traits/type_with_alignment.hpp [new file with mode: 0644]
boost/boost/weak_ptr.hpp
boost/libs/regex/src/cpp_regex_traits.cpp

index ff219510dfebd44a707036d29ac126b8e83017ca..1db2f1a0d30737124b6d3422222906bc96ad27a7 100644 (file)
@@ -1,3 +1,7 @@
+2002-10-15  Lars Gullik Bjønnes  <larsbj@birdstep.com>
+
+       * update boost to version 1.29.0.
+
 2002-08-20  Lars Gullik Bjønnes  <larsbj@gullik.net>
 
        * update boost, we have almost no local changes to the boost files
index 6e78aeb4e9e89eb0e0d4326dd9fa8e0a31f23da9..c90c1f9e488c952f8f9087a5978374330e0eb13a 100644 (file)
@@ -11,6 +11,7 @@
  * This software is provided "as is" without express or implied
  * warranty, and with no claim as to its suitability for any purpose.
  *
+ * 23 Aug 2002 - fix for Non-MSVC compilers combined with MSVC libraries.
  * 05 Aug 2001 - minor update (Nico Josuttis)
  * 20 Jan 2001 - STLport fix (Beman Dawes)
  * 29 Sep 2000 - Initial Revision (Nico Josuttis)
@@ -20,7 +21,9 @@
 
 #include <cstddef>
 #include <stdexcept>
-#include <iterator>
+
+// Handles broken standard libraries better than <iterator>
+#include <boost/detail/iterator.hpp>
 #include <algorithm>
 
 // FIXES for broken compilers
@@ -50,15 +53,15 @@ namespace boost {
         const_iterator end() const { return elems+N; }
 
         // reverse iterator support
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR)
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
         typedef std::reverse_iterator<iterator> reverse_iterator;
         typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1300)
+#elif (defined(BOOST_MSVC) && (BOOST_MSVC == 1300) || (defined(__ICL) && defined(_CPPLIB_VER) && (_CPPLIB_VER == 310))) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
         // workaround for broken reverse_iterator in VC7
         typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, iterator,
                                       reference, iterator, reference> > reverse_iterator;
         typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, const_iterator,
-                                               const_reference, iterator, reference> > const_reverse_iterator;
+                                      const_reference, iterator, reference> > const_reverse_iterator;
 #else
         // workaround for broken reverse_iterator implementations
         typedef std::reverse_iterator<iterator,T> reverse_iterator;
@@ -161,3 +164,6 @@ namespace boost {
 
 #endif /*BOOST_ARRAY_HPP*/
 
+
+
+
index 5480d1f2f8f9aa613c9b97afffa5474ea0619482..1c38452464b67a51466c0ca5fbe43cb99058b7ef 100644 (file)
@@ -166,9 +166,9 @@ public:
 
     explicit list1(A1 a1): a1_(a1) {}
 
-    A1 operator[] (arg<1>) const { return a1_; }
+    A1 operator[] (boost::arg<1>) const { return a1_; }
 
-    A1 operator[] (arg<1> (*) ()) const { return a1_; }
+    A1 operator[] (boost::arg<1> (*) ()) const { return a1_; }
 
     template<class T> T & operator[] (value<T> & v) const { return v.get(); }
 
@@ -212,11 +212,11 @@ public:
 
     list2(A1 a1, A2 a2): a1_(a1), a2_(a2) {}
 
-    A1 operator[] (arg<1>) const { return a1_; }
-    A2 operator[] (arg<2>) const { return a2_; }
+    A1 operator[] (boost::arg<1>) const { return a1_; }
+    A2 operator[] (boost::arg<2>) const { return a2_; }
 
-    A1 operator[] (arg<1> (*) ()) const { return a1_; }
-    A2 operator[] (arg<2> (*) ()) const { return a2_; }
+    A1 operator[] (boost::arg<1> (*) ()) const { return a1_; }
+    A2 operator[] (boost::arg<2> (*) ()) const { return a2_; }
 
     template<class T> T & operator[] (value<T> & v) const { return v.get(); }
 
@@ -262,13 +262,13 @@ public:
 
     list3(A1 a1, A2 a2, A3 a3): a1_(a1), a2_(a2), a3_(a3) {}
 
-    A1 operator[] (arg<1>) const { return a1_; }
-    A2 operator[] (arg<2>) const { return a2_; }
-    A3 operator[] (arg<3>) const { return a3_; }
+    A1 operator[] (boost::arg<1>) const { return a1_; }
+    A2 operator[] (boost::arg<2>) const { return a2_; }
+    A3 operator[] (boost::arg<3>) const { return a3_; }
 
-    A1 operator[] (arg<1> (*) ()) const { return a1_; }
-    A2 operator[] (arg<2> (*) ()) const { return a2_; }
-    A3 operator[] (arg<3> (*) ()) const { return a3_; }
+    A1 operator[] (boost::arg<1> (*) ()) const { return a1_; }
+    A2 operator[] (boost::arg<2> (*) ()) const { return a2_; }
+    A3 operator[] (boost::arg<3> (*) ()) const { return a3_; }
 
     template<class T> T & operator[] (value<T> & v) const { return v.get(); }
 
@@ -316,15 +316,15 @@ public:
 
     list4(A1 a1, A2 a2, A3 a3, A4 a4): a1_(a1), a2_(a2), a3_(a3), a4_(a4) {}
 
-    A1 operator[] (arg<1>) const { return a1_; }
-    A2 operator[] (arg<2>) const { return a2_; }
-    A3 operator[] (arg<3>) const { return a3_; }
-    A4 operator[] (arg<4>) const { return a4_; }
+    A1 operator[] (boost::arg<1>) const { return a1_; }
+    A2 operator[] (boost::arg<2>) const { return a2_; }
+    A3 operator[] (boost::arg<3>) const { return a3_; }
+    A4 operator[] (boost::arg<4>) const { return a4_; }
 
-    A1 operator[] (arg<1> (*) ()) const { return a1_; }
-    A2 operator[] (arg<2> (*) ()) const { return a2_; }
-    A3 operator[] (arg<3> (*) ()) const { return a3_; }
-    A4 operator[] (arg<4> (*) ()) const { return a4_; }
+    A1 operator[] (boost::arg<1> (*) ()) const { return a1_; }
+    A2 operator[] (boost::arg<2> (*) ()) const { return a2_; }
+    A3 operator[] (boost::arg<3> (*) ()) const { return a3_; }
+    A4 operator[] (boost::arg<4> (*) ()) const { return a4_; }
 
     template<class T> T & operator[] (value<T> & v) const { return v.get(); }
 
@@ -374,17 +374,17 @@ public:
 
     list5(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5): a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5) {}
 
-    A1 operator[] (arg<1>) const { return a1_; }
-    A2 operator[] (arg<2>) const { return a2_; }
-    A3 operator[] (arg<3>) const { return a3_; }
-    A4 operator[] (arg<4>) const { return a4_; }
-    A5 operator[] (arg<5>) const { return a5_; }
+    A1 operator[] (boost::arg<1>) const { return a1_; }
+    A2 operator[] (boost::arg<2>) const { return a2_; }
+    A3 operator[] (boost::arg<3>) const { return a3_; }
+    A4 operator[] (boost::arg<4>) const { return a4_; }
+    A5 operator[] (boost::arg<5>) const { return a5_; }
 
-    A1 operator[] (arg<1> (*) ()) const { return a1_; }
-    A2 operator[] (arg<2> (*) ()) const { return a2_; }
-    A3 operator[] (arg<3> (*) ()) const { return a3_; }
-    A4 operator[] (arg<4> (*) ()) const { return a4_; }
-    A5 operator[] (arg<5> (*) ()) const { return a5_; }
+    A1 operator[] (boost::arg<1> (*) ()) const { return a1_; }
+    A2 operator[] (boost::arg<2> (*) ()) const { return a2_; }
+    A3 operator[] (boost::arg<3> (*) ()) const { return a3_; }
+    A4 operator[] (boost::arg<4> (*) ()) const { return a4_; }
+    A5 operator[] (boost::arg<5> (*) ()) const { return a5_; }
 
     template<class T> T & operator[] (value<T> & v) const { return v.get(); }
 
@@ -436,19 +436,19 @@ public:
 
     list6(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6): a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6) {}
 
-    A1 operator[] (arg<1>) const { return a1_; }
-    A2 operator[] (arg<2>) const { return a2_; }
-    A3 operator[] (arg<3>) const { return a3_; }
-    A4 operator[] (arg<4>) const { return a4_; }
-    A5 operator[] (arg<5>) const { return a5_; }
-    A6 operator[] (arg<6>) const { return a6_; }
+    A1 operator[] (boost::arg<1>) const { return a1_; }
+    A2 operator[] (boost::arg<2>) const { return a2_; }
+    A3 operator[] (boost::arg<3>) const { return a3_; }
+    A4 operator[] (boost::arg<4>) const { return a4_; }
+    A5 operator[] (boost::arg<5>) const { return a5_; }
+    A6 operator[] (boost::arg<6>) const { return a6_; }
 
-    A1 operator[] (arg<1> (*) ()) const { return a1_; }
-    A2 operator[] (arg<2> (*) ()) const { return a2_; }
-    A3 operator[] (arg<3> (*) ()) const { return a3_; }
-    A4 operator[] (arg<4> (*) ()) const { return a4_; }
-    A5 operator[] (arg<5> (*) ()) const { return a5_; }
-    A6 operator[] (arg<6> (*) ()) const { return a6_; }
+    A1 operator[] (boost::arg<1> (*) ()) const { return a1_; }
+    A2 operator[] (boost::arg<2> (*) ()) const { return a2_; }
+    A3 operator[] (boost::arg<3> (*) ()) const { return a3_; }
+    A4 operator[] (boost::arg<4> (*) ()) const { return a4_; }
+    A5 operator[] (boost::arg<5> (*) ()) const { return a5_; }
+    A6 operator[] (boost::arg<6> (*) ()) const { return a6_; }
 
     template<class T> T & operator[] (value<T> & v) const { return v.get(); }
 
@@ -502,21 +502,21 @@ public:
 
     list7(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7): a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7) {}
 
-    A1 operator[] (arg<1>) const { return a1_; }
-    A2 operator[] (arg<2>) const { return a2_; }
-    A3 operator[] (arg<3>) const { return a3_; }
-    A4 operator[] (arg<4>) const { return a4_; }
-    A5 operator[] (arg<5>) const { return a5_; }
-    A6 operator[] (arg<6>) const { return a6_; }
-    A7 operator[] (arg<7>) const { return a7_; }
-
-    A1 operator[] (arg<1> (*) ()) const { return a1_; }
-    A2 operator[] (arg<2> (*) ()) const { return a2_; }
-    A3 operator[] (arg<3> (*) ()) const { return a3_; }
-    A4 operator[] (arg<4> (*) ()) const { return a4_; }
-    A5 operator[] (arg<5> (*) ()) const { return a5_; }
-    A6 operator[] (arg<6> (*) ()) const { return a6_; }
-    A7 operator[] (arg<7> (*) ()) const { return a7_; }
+    A1 operator[] (boost::arg<1>) const { return a1_; }
+    A2 operator[] (boost::arg<2>) const { return a2_; }
+    A3 operator[] (boost::arg<3>) const { return a3_; }
+    A4 operator[] (boost::arg<4>) const { return a4_; }
+    A5 operator[] (boost::arg<5>) const { return a5_; }
+    A6 operator[] (boost::arg<6>) const { return a6_; }
+    A7 operator[] (boost::arg<7>) const { return a7_; }
+
+    A1 operator[] (boost::arg<1> (*) ()) const { return a1_; }
+    A2 operator[] (boost::arg<2> (*) ()) const { return a2_; }
+    A3 operator[] (boost::arg<3> (*) ()) const { return a3_; }
+    A4 operator[] (boost::arg<4> (*) ()) const { return a4_; }
+    A5 operator[] (boost::arg<5> (*) ()) const { return a5_; }
+    A6 operator[] (boost::arg<6> (*) ()) const { return a6_; }
+    A7 operator[] (boost::arg<7> (*) ()) const { return a7_; }
 
     template<class T> T & operator[] (value<T> & v) const { return v.get(); }
 
@@ -572,23 +572,23 @@ public:
 
     list8(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8): a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8) {}
 
-    A1 operator[] (arg<1>) const { return a1_; }
-    A2 operator[] (arg<2>) const { return a2_; }
-    A3 operator[] (arg<3>) const { return a3_; }
-    A4 operator[] (arg<4>) const { return a4_; }
-    A5 operator[] (arg<5>) const { return a5_; }
-    A6 operator[] (arg<6>) const { return a6_; }
-    A7 operator[] (arg<7>) const { return a7_; }
-    A8 operator[] (arg<8>) const { return a8_; }
-
-    A1 operator[] (arg<1> (*) ()) const { return a1_; }
-    A2 operator[] (arg<2> (*) ()) const { return a2_; }
-    A3 operator[] (arg<3> (*) ()) const { return a3_; }
-    A4 operator[] (arg<4> (*) ()) const { return a4_; }
-    A5 operator[] (arg<5> (*) ()) const { return a5_; }
-    A6 operator[] (arg<6> (*) ()) const { return a6_; }
-    A7 operator[] (arg<7> (*) ()) const { return a7_; }
-    A8 operator[] (arg<8> (*) ()) const { return a8_; }
+    A1 operator[] (boost::arg<1>) const { return a1_; }
+    A2 operator[] (boost::arg<2>) const { return a2_; }
+    A3 operator[] (boost::arg<3>) const { return a3_; }
+    A4 operator[] (boost::arg<4>) const { return a4_; }
+    A5 operator[] (boost::arg<5>) const { return a5_; }
+    A6 operator[] (boost::arg<6>) const { return a6_; }
+    A7 operator[] (boost::arg<7>) const { return a7_; }
+    A8 operator[] (boost::arg<8>) const { return a8_; }
+
+    A1 operator[] (boost::arg<1> (*) ()) const { return a1_; }
+    A2 operator[] (boost::arg<2> (*) ()) const { return a2_; }
+    A3 operator[] (boost::arg<3> (*) ()) const { return a3_; }
+    A4 operator[] (boost::arg<4> (*) ()) const { return a4_; }
+    A5 operator[] (boost::arg<5> (*) ()) const { return a5_; }
+    A6 operator[] (boost::arg<6> (*) ()) const { return a6_; }
+    A7 operator[] (boost::arg<7> (*) ()) const { return a7_; }
+    A8 operator[] (boost::arg<8> (*) ()) const { return a8_; }
 
     template<class T> T & operator[] (value<T> & v) const { return v.get(); }
 
@@ -646,25 +646,25 @@ public:
 
     list9(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9): a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9) {}
 
-    A1 operator[] (arg<1>) const { return a1_; }
-    A2 operator[] (arg<2>) const { return a2_; }
-    A3 operator[] (arg<3>) const { return a3_; }
-    A4 operator[] (arg<4>) const { return a4_; }
-    A5 operator[] (arg<5>) const { return a5_; }
-    A6 operator[] (arg<6>) const { return a6_; }
-    A7 operator[] (arg<7>) const { return a7_; }
-    A8 operator[] (arg<8>) const { return a8_; }
-    A9 operator[] (arg<9>) const { return a9_; }
-
-    A1 operator[] (arg<1> (*) ()) const { return a1_; }
-    A2 operator[] (arg<2> (*) ()) const { return a2_; }
-    A3 operator[] (arg<3> (*) ()) const { return a3_; }
-    A4 operator[] (arg<4> (*) ()) const { return a4_; }
-    A5 operator[] (arg<5> (*) ()) const { return a5_; }
-    A6 operator[] (arg<6> (*) ()) const { return a6_; }
-    A7 operator[] (arg<7> (*) ()) const { return a7_; }
-    A8 operator[] (arg<8> (*) ()) const { return a8_; }
-    A9 operator[] (arg<9> (*) ()) const { return a9_; }
+    A1 operator[] (boost::arg<1>) const { return a1_; }
+    A2 operator[] (boost::arg<2>) const { return a2_; }
+    A3 operator[] (boost::arg<3>) const { return a3_; }
+    A4 operator[] (boost::arg<4>) const { return a4_; }
+    A5 operator[] (boost::arg<5>) const { return a5_; }
+    A6 operator[] (boost::arg<6>) const { return a6_; }
+    A7 operator[] (boost::arg<7>) const { return a7_; }
+    A8 operator[] (boost::arg<8>) const { return a8_; }
+    A9 operator[] (boost::arg<9>) const { return a9_; }
+
+    A1 operator[] (boost::arg<1> (*) ()) const { return a1_; }
+    A2 operator[] (boost::arg<2> (*) ()) const { return a2_; }
+    A3 operator[] (boost::arg<3> (*) ()) const { return a3_; }
+    A4 operator[] (boost::arg<4> (*) ()) const { return a4_; }
+    A5 operator[] (boost::arg<5> (*) ()) const { return a5_; }
+    A6 operator[] (boost::arg<6> (*) ()) const { return a6_; }
+    A7 operator[] (boost::arg<7> (*) ()) const { return a7_; }
+    A8 operator[] (boost::arg<8> (*) ()) const { return a8_; }
+    A9 operator[] (boost::arg<9> (*) ()) const { return a9_; }
 
     template<class T> T & operator[] (value<T> & v) const { return v.get(); }
 
@@ -989,12 +989,12 @@ template<class T> struct add_value< reference_wrapper<T> >
 
 template<int I> struct add_value< arg<I> >
 {
-    typedef arg<I> type;
+    typedef boost::arg<I> type;
 };
 
 template<int I> struct add_value< arg<I> (*) () >
 {
-    typedef arg<I> (*type) ();
+    typedef boost::arg<I> (*type) ();
 };
 
 template<class R, class F, class L> struct add_value< bind_t<R, F, L> >
@@ -1404,12 +1404,12 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl
 // data member pointers
 
 template<class R, class T, class A1>
-    _bi::bind_t< R, _mfi::dm<R, T>, typename _bi::list_av_1<A1>::type >
+    _bi::bind_t< R const &, _mfi::dm<R, T>, typename _bi::list_av_1<A1>::type >
     BOOST_BIND(R T::*f, A1 a1)
 {
     typedef _mfi::dm<R, T> F;
     typedef typename _bi::list_av_1<A1>::type list_type;
-    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
+    return _bi::bind_t<R const &, F, list_type>(F(f), list_type(a1));
 }
 
 } // namespace boost
index decd41316609ba73422f322cfaa4e9674fa3f099..b5bdbe45614c02adc18c342c9da3edc210d1e2b5 100644 (file)
@@ -48,6 +48,43 @@ inline void function_requires(type<Concept>* = 0)
 #endif
 }
 
+#define BOOST_CLASS_REQUIRE(type_var, ns, concept) \
+  typedef void (ns::concept <type_var>::* func##type_var##concept)(); \
+  template <func##type_var##concept _Tp1> \
+  struct concept_checking_##type_var##concept { }; \
+  typedef concept_checking_##type_var##concept< \
+    BOOST_FPTR ns::concept<type_var>::constraints> \
+    concept_checking_typedef_##type_var##concept
+
+#define BOOST_CLASS_REQUIRE2(type_var1, type_var2, ns, concept) \
+  typedef void (ns::concept <type_var1,type_var2>::* \
+     func##type_var1##type_var2##concept)(); \
+  template <func##type_var1##type_var2##concept _Tp1> \
+  struct concept_checking_##type_var1##type_var2##concept { }; \
+  typedef concept_checking_##type_var1##type_var2##concept< \
+    BOOST_FPTR ns::concept<type_var1,type_var2>::constraints> \
+    concept_checking_typedef_##type_var1##type_var2##concept
+
+#define BOOST_CLASS_REQUIRE3(tv1, tv2, tv3, ns, concept) \
+  typedef void (ns::concept <tv1,tv2,tv3>::* \
+     func##tv1##tv2##tv3##concept)(); \
+  template <func##tv1##tv2##tv3##concept _Tp1> \
+  struct concept_checking_##tv1##tv2##tv3##concept { }; \
+  typedef concept_checking_##tv1##tv2##tv3##concept< \
+    BOOST_FPTR ns::concept<tv1,tv2,tv3>::constraints> \
+    concept_checking_typedef_##tv1##tv2##tv3##concept
+
+#define BOOST_CLASS_REQUIRE4(tv1, tv2, tv3, tv4, ns, concept) \
+  typedef void (ns::concept <tv1,tv2,tv3,tv4>::* \
+     func##tv1##tv2##tv3##tv4##concept)(); \
+  template <func##tv1##tv2##tv3##tv4##concept _Tp1> \
+  struct concept_checking_##tv1##tv2##tv3##tv4##concept { }; \
+  typedef concept_checking_##tv1##tv2##tv3##tv4##concept< \
+    BOOST_FPTR ns::concept<tv1,tv2,tv3,tv4>::constraints> \
+    concept_checking_typedef_##tv1##tv2##tv3##tv4##concept
+
+// NOTE: The BOOST_CLASS_REQUIRES (with an 'S' at the end) is deprecated.
+
 // The BOOST_CLASS_REQUIRES macros use function pointers as
 // template parameters, which VC++ does not support.
 
index 9d2d99a19fd3abf0ac5988125d76eb416ceb69f9..9ab4aaf540a7b5d37cbd88f646cc8bb4d76d9393 100644 (file)
 #  define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
 #endif
 
-// Version 6.0 and below:
-#if (__BORLANDC__ <= 0x560) || !defined(BOOST_STRICT_CONFIG)
-#  define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+// Version 7.0 (Kylix) and below:
+#if (__BORLANDC__ <= 0x570) || !defined(BOOST_STRICT_CONFIG)
 #  define BOOST_NO_INTEGRAL_INT64_T
+#  define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
 #  define BOOST_NO_PRIVATE_IN_AGGREGATE
-#  define BOOST_NO_SWPRINTF
 #  define BOOST_NO_USING_TEMPLATE
 #  define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
 #  define BOOST_NO_TEMPLATE_TEMPLATES
    // we shouldn't really need this - but too many things choke
    // without it, this needs more investigation:
 #  define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+
+//
+// new bug in 5.61:
+#if __BORLANDC__ >= 0x561
+   // this seems to be needed by the command line compiler, but not the IDE:
+#  define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+#endif
+
+#  ifdef _WIN32
+#     define BOOST_NO_SWPRINTF
+#  elif defined(linux) || defined(__linux__) || defined(__linux)
+      // we should really be able to do without this
+      // but the wcs* functions aren't imported into std::
+#     define BOOST_NO_STDC_NAMESPACE
+      // _CPPUNWIND doesn't get automatically set for some reason:
+#     pragma defineonoption BOOST_CPPUNWIND -x
+#  endif
+#endif
+
+//
+// Post 0x561 we have long long and stdint.h:
+#if __BORLANDC__ >= 0x561
+#  define BOOST_HAS_LONG_LONG
+   // On non-Win32 platforms let the platform config figure this out:
+#  ifdef _WIN32
+#      define BOOST_HAS_STDINT_H
+#  endif
 #endif
 
 // Borland C++Builder 6 defaults to using STLPort.  If _USE_OLD_RW_STL is
@@ -56,7 +82,7 @@
 //
 // check for exception handling support:
 //
-#ifndef _CPPUNWIND
+#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND)
 #  define BOOST_NO_EXCEPTIONS
 #endif
 //
 #  error "Compiler not supported or configured - please reconfigure"
 #endif
 //
-// last known and checked version is 5.6:
-#if (__BORLANDC__ > 0x560)
+// last known and checked version is 5.7 (Kylix 3):
+#if (__BORLANDC__ > 0x570)
 #  if defined(BOOST_ASSERT_CONFIG)
 #     error "Unknown compiler version - please run the configure tests and report the results"
 #  else
 
 
 
+
+
+
index 93a5ee3a629fdda4fe302c8f139c1f63e09093e3..1f0fe32dd33198b54071b5d969898de5b7bfec8c 100644 (file)
@@ -10,7 +10,7 @@
 //
 // This is included from within the individual compiler mini-configs.
 
-#ifndef __EDG_VERSION__
+#ifndef  __EDG_VERSION__
 #  error This file requires that __EDG_VERSION__ be defined.
 #endif
 
 #   define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
 #endif
 
-# if !defined(__EXCEPTIONS)
+#if (__EDG_VERSION__ <= 245) && !defined(BOOST_NO_TEMPLATE_TEMPLATES)
+#   define BOOST_NO_TEMPLATE_TEMPLATES
+#endif 
+
+// See also kai.hpp which checks a Kai-specific symbol for EH
+# if !defined(__KCC) && !defined(__EXCEPTIONS)
 #     define BOOST_NO_EXCEPTIONS
 # endif
 
index 4d76eab6a9f89bd4799bf49f6fe363b740f3e67b..05b2db0a71098f0c06fc40a6198b0276433051b2 100644 (file)
@@ -32,6 +32,8 @@
       // variable scoping. (reported by Thomas Witt)
       // Intel C++ 6.0 (currently in Beta test) doesn't have any front-end
       // changes at all.  (reported by Kirk Klobe)
+      // That can't be right, since it supports template template
+      // arguments (reported by Dave Abrahams)
 #     ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
 #        define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
 #     endif
index 6b8ab84bc4750903ab0b7f38884e7d4c8f9270bc..a7451936882c9bcfd0c5639fd4960206bfdb55a6 100644 (file)
 #     define BOOST_NO_STDC_NAMESPACE
 #   endif
 
+// see also common_edg.hpp which needs a special check for __KCC
+# if !defined(_EXCEPTIONS)
+#     define BOOST_NO_EXCEPTIONS
+# endif
+
 #define BOOST_COMPILER "Kai C++ version " BOOST_STRINGIZE(__KCC_VERSION)
 
 //
index 43f35008bc9b661a512075522bfcdc2e791b9ef1..cc8305bfe3c3c8e34d6d28c5f4f725fa92fd4502 100644 (file)
@@ -36,6 +36,8 @@
 #     define BOOST_COMPILER_VERSION 8.0
 #   elif __MWERKS__ == 0x3001
 #     define BOOST_COMPILER_VERSION 8.1
+#   elif __MWERKS__ == 0x3002
+#     define BOOST_COMPILER_VERSION 8.2
 #   else
 #     define BOOST_COMPILER_VERSION __MWERKS__
 #   endif 
@@ -49,8 +51,8 @@
 #  error "Compiler not supported or configured - please reconfigure"
 #endif
 //
-// last known and checked version is 0x3001:
-#if (__MWERKS__ > 0x3001)
+// last known and checked version:
+#if (__MWERKS__ > 0x3002)
 #  if defined(BOOST_ASSERT_CONFIG)
 #     error "Unknown compiler version - please run the configure tests and report the results"
 #  endif
index c4ef9f188fba2dee91d49597904300c5edb1889f..336fabe3d7135f6f0880bd65cd434a8d0fc669b5 100644 (file)
@@ -7,9 +7,21 @@
 
 //  Visual Age (IBM) C++ compiler setup:
 
-#define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-#define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-#define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+#if __IBMCPP__ <= 501
+#  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+#  define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+#endif
+
+#if (__IBMCPP__ <= 502) || !defined(BOOST_STRICT_CONFIG)
+// Actually the compiler supports inclass member initialization but it
+// requires a definition for the class member and it doesn't recognize
+// it as an integral constant expression when used as a template argument.
+#  define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+
+#  define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+#  define BOOST_NO_INTEGRAL_INT64_T
+#endif
+
 //
 // On AIX thread support seems to be indicated by _THREAD_SAFE:
 //
@@ -27,7 +39,7 @@
 #endif
 //
 // last known and checked version is 500:
-#if (__IBMCPP__ > 500)
+#if (__IBMCPP__ > 502)
 #  if defined(BOOST_ASSERT_CONFIG)
 #     error "Unknown compiler version - please run the configure tests and report the results"
 #  endif
index 8aeb1e187b58bb8d1c4330a9fe16740527deb4d9..9194db5aa94ee6768e884a2fce7bff77a961756f 100644 (file)
 #  define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
 #  define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
 #  define BOOST_NO_VOID_RETURNS
+#  define BOOST_NO_EXCEPTION_STD_NAMESPACE
    // disable min/max macro defines on vc6:
    //
 #endif
 
-#if (_MSC_VER <= 1300) // || !defined(BOOST_STRICT_CONFIG) // VC7 Beta 2 or later
+#if (_MSC_VER <= 1300)
 
 #if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS)      // VC7 bug with /Za
 #  define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
@@ -51,7 +52,7 @@
 
 #endif
 
-#if _MSC_VER <= 1301
+#if _MSC_VER < 1310
 #  define BOOST_NO_SWPRINTF
 #endif
 
@@ -71,6 +72,9 @@
 #if (_MSC_VER >= 1200) && defined(_MSC_EXTENSIONS)
 #   define BOOST_HAS_MS_INT64
 #endif
+#if (_MSC_VER >= 1310) && defined(_MSC_EXTENSIONS)
+#   define BOOST_HAS_LONG_LONG
+#endif
 //
 // disable Win32 API's if compiler extentions are
 // turned off:
@@ -83,6 +87,8 @@
 #   define BOOST_COMPILER_VERSION 6.0
 # elif _MSC_VER == 1300
 #   define BOOST_COMPILER_VERSION 7.0
+# elif _MSC_VER == 1310
+#   define BOOST_COMPILER_VERSION 7.1
 # else
 #   define BOOST_COMPILER_VERSION _MSC_VER
 # endif
 
 
 
+
+
index 670bf0bcbb9d5baef3789aaabb4f8286e0bd3bab..f1bb1b2f2d7fb26cf8443773bf4bb6be14ba84a0 100644 (file)
 #define BOOST_PLATFORM "IBM Aix"
 
 #define BOOST_HAS_UNISTD_H
-#define BOOST_HAS_PTHREADS
 #define BOOST_HAS_NL_TYPES_H
+#define BOOST_HAS_NANOSLEEP
+#define BOOST_HAS_CLOCK_GETTIME
+
+// This needs support in "boost/cstdint.hpp" exactly like FreeBSD.
+// This platform has header named <inttypes.h> which includes all
+// the things needed.
+#define BOOST_HAS_STDINT_H
 
 // Threading API's:
+#define BOOST_HAS_PTHREADS
 #define BOOST_HAS_PTHREAD_DELAY_NP
-#define BOOST_HAS_PTHREAD_YIELD
+#define BOOST_HAS_SCHED_YIELD
+//#define BOOST_HAS_PTHREAD_YIELD
 
 // boilerplate code:
 #include <boost/config/posix_features.hpp>
index 3b2cc12e83d862d964121b4893cdbf280170d8d6..f6da425194f46fe49166832abc8ff8b84c5265b7 100644 (file)
@@ -21,7 +21,7 @@
 #  if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(_STD)   // can be defined in yvals.h
 #     define BOOST_NO_STDC_NAMESPACE
 #  endif
-#  if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0))
+#  if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0)) && !(defined(_MSC_VER) && (_MSC_VER > 1300))
 #     define BOOST_NO_STD_ALLOCATOR
 #  endif
 #  if defined(_MSC_VER) && (_MSC_VER < 1300)
       // and nor is <exception>
 #     define BOOST_NO_EXCEPTION_STD_NAMESPACE
 #  endif
+// There's no numeric_limits<long long> support unless _LONGLONG is defined:
+#  if !defined(_LONGLONG) && (_CPPLIB_VER <= 310)
+#     define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+#  endif
 // 3.06 appears to have (non-sgi versions of) <hash_set> & <hash_map>, 
 // and no <slist> at all
 #else
 #  define BOOST_NO_STD_ITERATOR_TRAITS
 #endif
 
+#if defined(__ICL) && defined(_CPPLIB_VER) && (_CPPLIB_VER <= 310)
+// Intel C++ chokes over any non-trivial use of <locale>
+// this may be an overly restrictive define, but regex fails without it:
+#  define BOOST_NO_STD_LOCALE
+#endif
+
 #ifdef _CPPLIB_VER
 #  define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER)
 #else
@@ -68,3 +78,5 @@
 
 
 
+
+
index ad4d2fc470ff801f79498ca706ae52db1e1a0257..2d5bf5709d91c5246efc23d57be276fba41723f7 100644 (file)
@@ -5,8 +5,11 @@
 
 //  See http://www.boost.org for most recent version.
 
+#if __IBMCPP__ <= 501
+#  define BOOST_NO_STD_ALLOCATOR
+#endif
+
 #define BOOST_HAS_MACRO_USE_FACET
-#define BOOST_NO_STD_ALLOCATOR
 
 #define BOOST_STDLIB "Visual Age default standard library"
 
index 20678c5076334486d384db15f82a1ea8d4504eef..6f65b903642f15c8cba71ef7e615cf310f06d933 100644 (file)
@@ -35,7 +35,7 @@
       // this is triggered with GCC, because it defines __cplusplus < 199707L
 #     define BOOST_NO_INT64_T
 #   endif 
-# elif defined(__FreeBSD__)
+# elif defined(__FreeBSD__) || defined(__IBMCPP__)
 #   include <inttypes.h>
 # else
 #   include <stdint.h>
index 6de061a721cf707c1ea9947f7d632a7e99c09dfb..cd5ae8f79e1751cb01f7064650b3f0be81decc76 100644 (file)
@@ -55,7 +55,7 @@ public:
 
     virtual char const * what() const throw()
     {
-               return "boost::use_count_is_zero";
+        return "boost::use_count_is_zero";
     }
 };
 
index 53cdb1abfce237778f765eed405e5389363fd506..8fe6a49ff964ab9165bc1193deab556cbab74e77 100644 (file)
 //
 // This software is provided "as is" without express or implied warranty,
 // and with no claim as to its suitability for any purpose.
+
 // For more information, see http://www.boost.org
+
 // William Kempf, Jesse Jones and Karl Nelson were all very helpful in the
 // design of this library.
 
 #ifndef BOOST_FUNCTION_HPP
 #define BOOST_FUNCTION_HPP
 
+#if defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730
+// Work around a compiler bug.
+// boost::python::detail::function has to be seen by the compiler before the
+// boost::function class template.
+namespace boost { namespace python { namespace detail {
+  class function;
+}}}
+#endif
+
 #include <boost/function/function_base.hpp>
 #include <boost/type_traits/function_traits.hpp>
 #include <boost/type_traits/same_traits.hpp>
@@ -51,7 +60,7 @@ namespace boost {
       struct real_get_function_impl<0>
       {
         template<
-          typename R, 
+          typename R,
           typename T1,
           typename T2,
           typename T3,
@@ -70,9 +79,9 @@ namespace boost {
         >
         struct params
         {
-          typedef function0<R, 
+          typedef function0<R,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-                            Policy, Mixin, 
+                            Policy, Mixin,
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
                             Allocator> type;
         };
@@ -82,7 +91,7 @@ namespace boost {
       struct real_get_function_impl<1>
       {
         template<
-          typename R, 
+          typename R,
           typename T1,
           typename T2,
           typename T3,
@@ -101,9 +110,9 @@ namespace boost {
         >
         struct params
         {
-          typedef function1<R, T1, 
+          typedef function1<R, T1,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-                            Policy, Mixin, 
+                            Policy, Mixin,
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
                             Allocator> type;
         };
@@ -113,7 +122,7 @@ namespace boost {
       struct real_get_function_impl<2>
       {
         template<
-          typename R, 
+          typename R,
           typename T1,
           typename T2,
           typename T3,
@@ -132,9 +141,9 @@ namespace boost {
         >
         struct params
         {
-          typedef function2<R, T1, T2, 
+          typedef function2<R, T1, T2,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-                            Policy, Mixin, 
+                            Policy, Mixin,
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
                             Allocator> type;
         };
@@ -144,7 +153,7 @@ namespace boost {
       struct real_get_function_impl<3>
       {
         template<
-          typename R, 
+          typename R,
           typename T1,
           typename T2,
           typename T3,
@@ -163,9 +172,9 @@ namespace boost {
         >
         struct params
         {
-          typedef function3<R, T1, T2, T3, 
+          typedef function3<R, T1, T2, T3,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-                            Policy, Mixin, 
+                            Policy, Mixin,
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
                             Allocator> type;
         };
@@ -175,7 +184,7 @@ namespace boost {
       struct real_get_function_impl<4>
       {
         template<
-          typename R, 
+          typename R,
           typename T1,
           typename T2,
           typename T3,
@@ -194,9 +203,9 @@ namespace boost {
         >
         struct params
         {
-          typedef function4<R, T1, T2, T3, T4, 
+          typedef function4<R, T1, T2, T3, T4,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-                            Policy, Mixin, 
+                            Policy, Mixin,
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
                             Allocator> type;
         };
@@ -206,7 +215,7 @@ namespace boost {
       struct real_get_function_impl<5>
       {
         template<
-          typename R, 
+          typename R,
           typename T1,
           typename T2,
           typename T3,
@@ -225,11 +234,11 @@ namespace boost {
         >
         struct params
         {
-          typedef function5<R, T1, T2, T3, T4, T5, 
+          typedef function5<R, T1, T2, T3, T4, T5,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-                            Policy, Mixin, 
+                            Policy, Mixin,
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
-                            Allocator> 
+                            Allocator>
           type;
         };
       };
@@ -238,7 +247,7 @@ namespace boost {
       struct real_get_function_impl<6>
       {
         template<
-          typename R, 
+          typename R,
           typename T1,
           typename T2,
           typename T3,
@@ -257,9 +266,9 @@ namespace boost {
         >
         struct params
         {
-          typedef function6<R, T1, T2, T3, T4, T5, T6, 
+          typedef function6<R, T1, T2, T3, T4, T5, T6,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-                            Policy, Mixin, 
+                            Policy, Mixin,
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
                             Allocator>
           type;
@@ -270,7 +279,7 @@ namespace boost {
       struct real_get_function_impl<7>
       {
         template<
-          typename R, 
+          typename R,
           typename T1,
           typename T2,
           typename T3,
@@ -289,9 +298,9 @@ namespace boost {
         >
         struct params
         {
-          typedef function7<R, T1, T2, T3, T4, T5, T6, T7, 
+          typedef function7<R, T1, T2, T3, T4, T5, T6, T7,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-                            Policy, Mixin, 
+                            Policy, Mixin,
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
                             Allocator> type;
         };
@@ -301,7 +310,7 @@ namespace boost {
       struct real_get_function_impl<8>
       {
         template<
-          typename R, 
+          typename R,
           typename T1,
           typename T2,
           typename T3,
@@ -320,9 +329,9 @@ namespace boost {
         >
         struct params
         {
-          typedef function8<R, T1, T2, T3, T4, T5, T6, T7, T8, 
+          typedef function8<R, T1, T2, T3, T4, T5, T6, T7, T8,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-                            Policy, Mixin, 
+                            Policy, Mixin,
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
                             Allocator> type;
         };
@@ -332,7 +341,7 @@ namespace boost {
       struct real_get_function_impl<9>
       {
         template<
-          typename R, 
+          typename R,
           typename T1,
           typename T2,
           typename T3,
@@ -351,9 +360,9 @@ namespace boost {
         >
         struct params
         {
-          typedef function9<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, 
+          typedef function9<R, T1, T2, T3, T4, T5, T6, T7, T8, T9,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-                            Policy, Mixin, 
+                            Policy, Mixin,
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
                             Allocator> type;
         };
@@ -363,7 +372,7 @@ namespace boost {
       struct real_get_function_impl<10>
       {
         template<
-          typename R, 
+          typename R,
           typename T1,
           typename T2,
           typename T3,
@@ -382,151 +391,151 @@ namespace boost {
         >
         struct params
         {
-          typedef function10<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 
+          typedef function10<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-                             Policy, Mixin, 
+                             Policy, Mixin,
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
                              Allocator> type;
         };
       };
 
 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-      template<bool GetIt, typename Traits> 
+      template<bool GetIt, typename Traits>
       struct get_arg1_type
       {
         typedef unusable type;
       };
 
-      template<typename Traits> 
+      template<typename Traits>
       struct get_arg1_type<true, Traits>
       {
         typedef typename Traits::arg1_type type;
       };
 
-      template<bool GetIt, typename Traits> 
+      template<bool GetIt, typename Traits>
       struct get_arg2_type
       {
         typedef unusable type;
       };
 
-      template<typename Traits> 
+      template<typename Traits>
       struct get_arg2_type<true, Traits>
       {
         typedef typename Traits::arg2_type type;
       };
 
-      template<bool GetIt, typename Traits> 
+      template<bool GetIt, typename Traits>
       struct get_arg3_type
       {
         typedef unusable type;
       };
 
-      template<typename Traits> 
+      template<typename Traits>
       struct get_arg3_type<true, Traits>
       {
         typedef typename Traits::arg3_type type;
       };
 
-      template<bool GetIt, typename Traits> 
+      template<bool GetIt, typename Traits>
       struct get_arg4_type
       {
         typedef unusable type;
       };
 
-      template<typename Traits> 
+      template<typename Traits>
       struct get_arg4_type<true, Traits>
       {
         typedef typename Traits::arg4_type type;
       };
 
-      template<bool GetIt, typename Traits> 
+      template<bool GetIt, typename Traits>
       struct get_arg5_type
       {
         typedef unusable type;
       };
 
-      template<typename Traits> 
+      template<typename Traits>
       struct get_arg5_type<true, Traits>
       {
         typedef typename Traits::arg5_type type;
       };
 
-      template<bool GetIt, typename Traits> 
+      template<bool GetIt, typename Traits>
       struct get_arg6_type
       {
         typedef unusable type;
       };
 
-      template<typename Traits> 
+      template<typename Traits>
       struct get_arg6_type<true, Traits>
       {
         typedef typename Traits::arg6_type type;
       };
 
-      template<bool GetIt, typename Traits> 
+      template<bool GetIt, typename Traits>
       struct get_arg7_type
       {
         typedef unusable type;
       };
 
-      template<typename Traits> 
+      template<typename Traits>
       struct get_arg7_type<true, Traits>
       {
         typedef typename Traits::arg7_type type;
       };
 
-      template<bool GetIt, typename Traits> 
+      template<bool GetIt, typename Traits>
       struct get_arg8_type
       {
         typedef unusable type;
       };
 
-      template<typename Traits> 
+      template<typename Traits>
       struct get_arg8_type<true, Traits>
       {
         typedef typename Traits::arg8_type type;
       };
 
-      template<bool GetIt, typename Traits> 
+      template<bool GetIt, typename Traits>
       struct get_arg9_type
       {
         typedef unusable type;
       };
 
-      template<typename Traits> 
+      template<typename Traits>
       struct get_arg9_type<true, Traits>
       {
         typedef typename Traits::arg9_type type;
       };
 
-      template<bool GetIt, typename Traits> 
+      template<bool GetIt, typename Traits>
       struct get_arg10_type
       {
         typedef unusable type;
       };
 
-      template<typename Traits> 
+      template<typename Traits>
       struct get_arg10_type<true, Traits>
       {
         typedef typename Traits::arg10_type type;
       };
 
-      template<int X, int Y> 
+      template<int X, int Y>
       struct gte
       {
         BOOST_STATIC_CONSTANT(bool, value = (X >= Y));
       };
 
       template<bool IsFunction,
-               typename InR, 
-               typename InT1, 
-               typename InT2, 
-               typename InT3, 
+               typename InR,
+               typename InT1,
+               typename InT2,
+               typename InT3,
                typename InT4,
-               typename InT5, 
-               typename InT6, 
-               typename InT7, 
-               typename InT8, 
+               typename InT5,
+               typename InT6,
+               typename InT7,
+               typename InT8,
                typename InT9,
                typename InT10,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
@@ -539,25 +548,25 @@ namespace boost {
         typedef function_traits<InR> traits;
 
         typedef typename traits::result_type R;
-        typedef typename get_arg1_type<(gte<(traits::arity), 1>::value), 
+        typedef typename get_arg1_type<(gte<(traits::arity), 1>::value),
                                        traits>::type T1;
-        typedef typename get_arg2_type<(gte<(traits::arity), 2>::value), 
+        typedef typename get_arg2_type<(gte<(traits::arity), 2>::value),
                                        traits>::type T2;
-        typedef typename get_arg3_type<(gte<(traits::arity), 3>::value), 
+        typedef typename get_arg3_type<(gte<(traits::arity), 3>::value),
                                        traits>::type T3;
-        typedef typename get_arg4_type<(gte<(traits::arity), 4>::value), 
+        typedef typename get_arg4_type<(gte<(traits::arity), 4>::value),
                                        traits>::type T4;
-        typedef typename get_arg5_type<(gte<(traits::arity), 5>::value), 
+        typedef typename get_arg5_type<(gte<(traits::arity), 5>::value),
                                        traits>::type T5;
-        typedef typename get_arg6_type<(gte<(traits::arity), 6>::value), 
+        typedef typename get_arg6_type<(gte<(traits::arity), 6>::value),
                                        traits>::type T6;
-        typedef typename get_arg7_type<(gte<(traits::arity), 7>::value), 
+        typedef typename get_arg7_type<(gte<(traits::arity), 7>::value),
                                        traits>::type T7;
-        typedef typename get_arg8_type<(gte<(traits::arity), 8>::value), 
+        typedef typename get_arg8_type<(gte<(traits::arity), 8>::value),
                                        traits>::type T8;
-        typedef typename get_arg9_type<(gte<(traits::arity), 9>::value), 
+        typedef typename get_arg9_type<(gte<(traits::arity), 9>::value),
                                        traits>::type T9;
-        typedef typename get_arg10_type<(gte<(traits::arity), 10>::value), 
+        typedef typename get_arg10_type<(gte<(traits::arity), 10>::value),
                                         traits>::type T10;
 
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
@@ -578,15 +587,15 @@ namespace boost {
       };
 
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-      template<typename InR, 
-               typename InT1, 
-               typename InT2, 
-               typename InT3, 
+      template<typename InR,
+               typename InT1,
+               typename InT2,
+               typename InT3,
                typename InT4,
-               typename InT5, 
-               typename InT6, 
-               typename InT7, 
-               typename InT8, 
+               typename InT5,
+               typename InT6,
+               typename InT7,
+               typename InT8,
                typename InT9,
                typename InT10,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
@@ -598,7 +607,7 @@ namespace boost {
                                         InT5, InT6, InT7, InT8, InT9, InT10,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
                                         InPolicy, InMixin,
-#endif // ndef BOOST_FUNCTION_NO_DEPRECATED 
+#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
                                         InAllocator>
       {
         // Not a function, so just map the types directly
@@ -625,20 +634,20 @@ namespace boost {
 #endif // ndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
       template<
-        typename InR, 
-        typename InT1, 
-        typename InT2, 
-        typename InT3, 
+        typename InR,
+        typename InT1,
+        typename InT2,
+        typename InT3,
         typename InT4,
-        typename InT5, 
-        typename InT6, 
-        typename InT7, 
-        typename InT8, 
+        typename InT5,
+        typename InT6,
+        typename InT7,
+        typename InT8,
         typename InT9,
         typename InT10,
         typename InPolicy = empty_function_policy,
         typename InMixin = empty_function_mixin,
-        typename InAllocator = std::allocator<function_base> 
+        typename InAllocator = std::allocator<function_base>
       >
       struct get_function_impl
       {
@@ -647,7 +656,7 @@ namespace boost {
                                            InR, InT1, InT2, InT3, InT4, InT5,
                                            InT6, InT7, InT8, InT9, InT10,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-                                           InPolicy, InMixin, 
+                                           InPolicy, InMixin,
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
                                            InAllocator> decoder;
         typedef typename decoder::R R;
@@ -685,9 +694,9 @@ namespace boost {
 
         typedef typename real_get_function_impl<
           (count_used_args<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::value)
-          >::template params<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 
+          >::template params<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-                             Policy, Mixin, 
+                             Policy, Mixin,
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
                              Allocator>::type
         type;
@@ -695,25 +704,25 @@ namespace boost {
 
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
   template<
-    typename InR, 
-    typename InT1, 
-    typename InT2, 
-    typename InT3, 
+    typename InR,
+    typename InT1,
+    typename InT2,
+    typename InT3,
     typename InT4,
-    typename InT5, 
-    typename InT6, 
-    typename InT7, 
-    typename InT8, 
+    typename InT5,
+    typename InT6,
+    typename InT7,
+    typename InT8,
     typename InT9,
     typename InT10,
     typename InMyPolicy = empty_function_policy,
     typename InMyMixin = empty_function_mixin,
-    typename InMyAllocator = std::allocator<function_base> 
+    typename InMyAllocator = std::allocator<function_base>
   >
   class function_traits_builder
   {
-    typedef get_function_impl<InR, InT1, InT2, InT3, InT4, InT5, InT6, InT7, 
-                              InT8, InT9, InT10, InMyPolicy, InMyMixin, 
+    typedef get_function_impl<InR, InT1, InT2, InT3, InT4, InT5, InT6, InT7,
+                              InT8, InT9, InT10, InMyPolicy, InMyMixin,
                               InMyAllocator>
       impl;
 
@@ -740,29 +749,29 @@ namespace boost {
 
 #ifndef BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
     template<typename Policy>
-    struct policy : 
+    struct policy :
         public function_traits_builder<MyR, MyT1, MyT2, MyT3, MyT4, MyT5, MyT6,
-                                       MyT7, MyT8, MyT9, MyT10, Policy, 
+                                       MyT7, MyT8, MyT9, MyT10, Policy,
                                        mixin_type, allocator_type> {};
 
     template<typename Mixin>
-    struct mixin : 
+    struct mixin :
         public function_traits_builder<MyR, MyT1, MyT2, MyT3, MyT4, MyT5, MyT6,
-                                       MyT7, MyT8, MyT9, MyT10, policy_type, 
+                                       MyT7, MyT8, MyT9, MyT10, policy_type,
                                        Mixin, allocator_type> {};
 
     template<typename Allocator>
-    struct allocator : 
+    struct allocator :
         public function_traits_builder<MyR, MyT1, MyT2, MyT3, MyT4, MyT5, MyT6,
-                                       MyT7, MyT8, MyT9, MyT10, policy_type, 
+                                       MyT7, MyT8, MyT9, MyT10, policy_type,
                                        mixin_type, Allocator> {};
 #else
     template<typename Policy>
-    struct policy 
+    struct policy
     {
-      typedef typename function_traits_builder<MyR, MyT1, MyT2, MyT3, MyT4, 
-                                               MyT5, MyT6, MyT7, MyT8, MyT9, 
-                                               MyT10, Policy, mixin_type, 
+      typedef typename function_traits_builder<MyR, MyT1, MyT2, MyT3, MyT4,
+                                               MyT5, MyT6, MyT7, MyT8, MyT9,
+                                               MyT10, Policy, mixin_type,
                                                allocator_type>::type
         type;
     };
@@ -770,8 +779,8 @@ namespace boost {
     template<typename Mixin>
     struct mixin
     {
-      typedef typename function_traits_builder<MyR, MyT1, MyT2, MyT3, MyT4, 
-                                               MyT5, MyT6, MyT7, MyT8, MyT9, 
+      typedef typename function_traits_builder<MyR, MyT1, MyT2, MyT3, MyT4,
+                                               MyT5, MyT6, MyT7, MyT8, MyT9,
                                                MyT10, policy_type, Mixin,
                                                allocator_type>::type
         type;
@@ -780,8 +789,8 @@ namespace boost {
     template<typename Allocator>
     struct allocator
     {
-      typedef typename function_traits_builder<MyR, MyT1, MyT2, MyT3, MyT4, 
-                                               MyT5, MyT6, MyT7, MyT8, MyT9, 
+      typedef typename function_traits_builder<MyR, MyT1, MyT2, MyT3, MyT4,
+                                               MyT5, MyT6, MyT7, MyT8, MyT9,
                                                MyT10, policy_type, mixin_type,
                                                Allocator>::type
         type;
@@ -793,8 +802,8 @@ namespace boost {
   } // end namespace detail
 
   template<
-    typename R, 
-    typename T1 = detail::function::unusable, 
+    typename R,
+    typename T1 = detail::function::unusable,
     typename T2 = detail::function::unusable,
     typename T3 = detail::function::unusable,
     typename T4 = detail::function::unusable,
@@ -806,16 +815,16 @@ namespace boost {
     typename T10 = detail::function::unusable
   >
   class function :
-    public detail::function::get_function_impl<R, T1, T2, T3, T4, T5, T6, T7, 
+    public detail::function::get_function_impl<R, T1, T2, T3, T4, T5, T6, T7,
                                                T8, T9, T10>::type
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
-    , public detail::function::function_traits_builder<R, T1, T2, T3, T4, T5, 
+    , public detail::function::function_traits_builder<R, T1, T2, T3, T4, T5,
                                                        T6, T7, T8, T9, T10>
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
   {
     typedef typename detail::function::get_function_impl<R, T1, T2, T3, T4, T5,
                                                          T6, T7, T8, T9, T10
-                                                         >::type 
+                                                         >::type
       base_type;
 
   public:
@@ -823,16 +832,16 @@ namespace boost {
     typedef typename base_type::policy_type policy_type;
     typedef typename base_type::mixin_type mixin_type;
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
-    typedef typename base_type::allocator_type allocator_type;              
-    typedef function self_type;                                     
-                                                                            
-    function() : base_type() {}                                     
-                                                                            
-    template<typename Functor>                                              
+    typedef typename base_type::allocator_type allocator_type;
+    typedef function self_type;
+
+    function() : base_type() {}
+
+    template<typename Functor>
     function(Functor BOOST_FUNCTION_TARGET_FIX(const &) f) : base_type(f) {}
-                      
+
     function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
-         
+
     template<typename Functor>
     self_type& operator=(Functor BOOST_FUNCTION_TARGET_FIX(const &) f)
     {
@@ -847,38 +856,38 @@ namespace boost {
     }
 
     self_type& operator=(const self_type& f)
-    {   
+    {
       self_type(f).swap(*this);
       return *this;
     }
 
 #ifndef BOOST_FUNCTION_NO_DEPRECATED
     template<typename Functor>
-    BOOST_FUNCTION_DEPRECATED_PRE 
-        void set(Functor BOOST_FUNCTION_TARGET_FIX(const &) f) 
+    BOOST_FUNCTION_DEPRECATED_PRE
+        void set(Functor BOOST_FUNCTION_TARGET_FIX(const &) f)
     {
       BOOST_FUNCTION_DEPRECATED_INNER
       self_type(f).swap(*this);
     }
 
     BOOST_FUNCTION_DEPRECATED_PRE
-    void set(const base_type& f) 
+    void set(const base_type& f)
     {
       BOOST_FUNCTION_DEPRECATED_INNER
       self_type(f).swap(*this);
     }
 
     BOOST_FUNCTION_DEPRECATED_PRE
-    void set(const self_type& f)                             
+    void set(const self_type& f)
     {
       BOOST_FUNCTION_DEPRECATED_INNER
       self_type(f).swap(*this);
-    }   
+    }
 #endif // ndef BOOST_FUNCTION_NO_DEPRECATED
   };
 
   template<typename R,
-           typename T1, 
+           typename T1,
            typename T2,
            typename T3,
            typename T4,
index 8f913d5397da688931e577c0851c954c0e41c5ac..8f37ae6e2e1fc7df46f68ca46384c4d98637538a 100644 (file)
 #define BOOST_FUNCTION_ARGS 
 #define BOOST_FUNCTION_NOT_0_PARMS 
 #define BOOST_FUNCTION_NOT_0_ARGS 
+#define BOOST_FUNCTION_ARG_TYPES 
 
 #include <boost/function/function_template.hpp>
 
+#undef BOOST_FUNCTION_ARG_TYPES
 #undef BOOST_FUNCTION_NOT_0_ARGS
 #undef BOOST_FUNCTION_NOT_0_PARMS
 #undef BOOST_FUNCTION_ARGS
index 7d41f1d4b4774dc97b950ea929afb92342b340e6..7cf9b23eb1093bba1ef4aaa599a210a5fd56646a 100644 (file)
 #define BOOST_FUNCTION_ARGS a0
 #define BOOST_FUNCTION_NOT_0_PARMS 
 #define BOOST_FUNCTION_NOT_0_ARGS 
+#define BOOST_FUNCTION_ARG_TYPES typedef T0 arg1_type;
 
 #include <boost/function/function_template.hpp>
 
+#undef BOOST_FUNCTION_ARG_TYPES
 #undef BOOST_FUNCTION_NOT_0_ARGS
 #undef BOOST_FUNCTION_NOT_0_PARMS
 #undef BOOST_FUNCTION_ARGS
index 53fe784da3bc0a07884ab3b1ba2343d734df2932..afdb5b1cc5b7e1ddaac7123b458209154237dab1 100644 (file)
 #define BOOST_FUNCTION_ARGS a0, a1, a2, a3, a4, a5, a6, a7, a8, a9
 #define BOOST_FUNCTION_NOT_0_PARMS T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7, T8 a8, T9 a9
 #define BOOST_FUNCTION_NOT_0_ARGS a1, a2, a3, a4, a5, a6, a7, a8, a9
+#define BOOST_FUNCTION_ARG_TYPES typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type; typedef T8 arg9_type; typedef T9 arg10_type;
 
 #include <boost/function/function_template.hpp>
 
+#undef BOOST_FUNCTION_ARG_TYPES
 #undef BOOST_FUNCTION_NOT_0_ARGS
 #undef BOOST_FUNCTION_NOT_0_PARMS
 #undef BOOST_FUNCTION_ARGS
index 6e41629e2152a3b0063fb4cf18d1d96c2f2d56d5..31a539708a2d7109b37b29cce4b5718c6839d0a5 100644 (file)
 #define BOOST_FUNCTION_ARGS a0, a1
 #define BOOST_FUNCTION_NOT_0_PARMS T1 a1
 #define BOOST_FUNCTION_NOT_0_ARGS a1
+#define BOOST_FUNCTION_ARG_TYPES typedef T0 arg1_type; typedef T1 arg2_type;
 
 #include <boost/function/function_template.hpp>
 
+#undef BOOST_FUNCTION_ARG_TYPES
 #undef BOOST_FUNCTION_NOT_0_ARGS
 #undef BOOST_FUNCTION_NOT_0_PARMS
 #undef BOOST_FUNCTION_ARGS
index 7659374d9525106ef5b65918ab43b7cfb61f8c1a..38c64cb5768aaeeb2d73faf335b45020159c6ed8 100644 (file)
 #define BOOST_FUNCTION_ARGS a0, a1, a2
 #define BOOST_FUNCTION_NOT_0_PARMS T1 a1, T2 a2
 #define BOOST_FUNCTION_NOT_0_ARGS a1, a2
+#define BOOST_FUNCTION_ARG_TYPES typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type;
 
 #include <boost/function/function_template.hpp>
-
+#undef BOOST_FUNCTION_ARG_TYPES
 #undef BOOST_FUNCTION_NOT_0_ARGS
 #undef BOOST_FUNCTION_NOT_0_PARMS
 #undef BOOST_FUNCTION_ARGS
index a266ec3c7e1a9c753b06b528491760554840e249..7049964745c5cb81bfd2627dfbe87ab09af681b1 100644 (file)
 #define BOOST_FUNCTION_ARGS a0, a1, a2, a3
 #define BOOST_FUNCTION_NOT_0_PARMS T1 a1, T2 a2, T3 a3
 #define BOOST_FUNCTION_NOT_0_ARGS a1, a2, a3
+#define BOOST_FUNCTION_ARG_TYPES typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type;
 
 #include <boost/function/function_template.hpp>
 
+#undef BOOST_FUNCTION_ARG_TYPES
 #undef BOOST_FUNCTION_NOT_0_ARGS
 #undef BOOST_FUNCTION_NOT_0_PARMS
 #undef BOOST_FUNCTION_ARGS
index abc6f705672f212a92125b2b683213d717075fd2..b133426af7441e76d012de8baeae537cf03e328f 100644 (file)
 #define BOOST_FUNCTION_ARGS a0, a1, a2, a3, a4
 #define BOOST_FUNCTION_NOT_0_PARMS T1 a1, T2 a2, T3 a3, T4 a4
 #define BOOST_FUNCTION_NOT_0_ARGS a1, a2, a3, a4
+#define BOOST_FUNCTION_ARG_TYPES typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type;
 
 #include <boost/function/function_template.hpp>
 
+#undef BOOST_FUNCTION_ARG_TYPES
 #undef BOOST_FUNCTION_NOT_0_ARGS
 #undef BOOST_FUNCTION_NOT_0_PARMS
 #undef BOOST_FUNCTION_ARGS
index 422d213dc643a7e597c62fb0a11e360ab993ba91..44563347eeaababc9dca4aaf860ff20b744433a8 100644 (file)
 #define BOOST_FUNCTION_ARGS a0, a1, a2, a3, a4, a5
 #define BOOST_FUNCTION_NOT_0_PARMS T1 a1, T2 a2, T3 a3, T4 a4, T5 a5
 #define BOOST_FUNCTION_NOT_0_ARGS a1, a2, a3, a4, a5
+#define BOOST_FUNCTION_ARG_TYPES typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type;
 
 #include <boost/function/function_template.hpp>
 
+#undef BOOST_FUNCTION_ARG_TYPES
 #undef BOOST_FUNCTION_NOT_0_ARGS
 #undef BOOST_FUNCTION_NOT_0_PARMS
 #undef BOOST_FUNCTION_ARGS
index f8c4d091b2152c9719ffc9156bc7763126ed3738..46544fde5f0c4aee52aa2c805d03a1037d45cb70 100644 (file)
 #define BOOST_FUNCTION_ARGS a0, a1, a2, a3, a4, a5, a6
 #define BOOST_FUNCTION_NOT_0_PARMS T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6
 #define BOOST_FUNCTION_NOT_0_ARGS a1, a2, a3, a4, a5, a6
+#define BOOST_FUNCTION_ARG_TYPES typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type;
 
 #include <boost/function/function_template.hpp>
 
+#undef BOOST_FUNCTION_ARG_TYPES
 #undef BOOST_FUNCTION_NOT_0_ARGS
 #undef BOOST_FUNCTION_NOT_0_PARMS
 #undef BOOST_FUNCTION_ARGS
index 1ea7dea7bf235f1fe191ad31313fc99ef47e4868..ca08983d2ffbd2cbaa50ab2b43eb666d3fc55a62 100644 (file)
 #define BOOST_FUNCTION_ARGS a0, a1, a2, a3, a4, a5, a6, a7
 #define BOOST_FUNCTION_NOT_0_PARMS T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7
 #define BOOST_FUNCTION_NOT_0_ARGS a1, a2, a3, a4, a5, a6, a7
+#define BOOST_FUNCTION_ARG_TYPES typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type;
 
 #include <boost/function/function_template.hpp>
 
+#undef BOOST_FUNCTION_ARG_TYPES
 #undef BOOST_FUNCTION_NOT_0_ARGS
 #undef BOOST_FUNCTION_NOT_0_PARMS
 #undef BOOST_FUNCTION_ARGS
index bf590b755b8e06a0eafd8030e3ed2908839be0c3..db42f66637c91c93c854d1dbd9f6f165d2f24778 100644 (file)
 #define BOOST_FUNCTION_ARGS a0, a1, a2, a3, a4, a5, a6, a7, a8
 #define BOOST_FUNCTION_NOT_0_PARMS T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7, T8 a8
 #define BOOST_FUNCTION_NOT_0_ARGS a1, a2, a3, a4, a5, a6, a7, a8
+#define BOOST_FUNCTION_ARG_TYPES typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type; typedef T8 arg9_type;
 
 #include <boost/function/function_template.hpp>
 
+#undef BOOST_FUNCTION_ARG_TYPES
 #undef BOOST_FUNCTION_NOT_0_ARGS
 #undef BOOST_FUNCTION_NOT_0_PARMS
 #undef BOOST_FUNCTION_ARGS
index 04e0a6ebac2fc96a4517f30df6d86ac3a96b4178..27002c93d6b6c4f73ac40398be3359f57eaf548d 100644 (file)
@@ -278,25 +278,6 @@ namespace boost {
                            detail::function::any_pointer, 
                            detail::function::functor_manager_operation_type);
     detail::function::any_pointer functor;
-
-#if (defined __SUNPRO_CC) && (__SUNPRO_CC <= 0x530) && !(defined BOOST_NO_COMPILER_CONFIG)
-    // Sun C++ 5.3 can't handle the safe_bool idiom, so don't use it
-    operator bool () const { return !this->empty(); }
-#else
-  private:
-    struct dummy {
-      void nonnull() {};
-    };
-
-    typedef void (dummy::*safe_bool)();
-
-  public:
-    operator safe_bool () const 
-      { return (this->empty())? 0 : &dummy::nonnull; }
-
-    safe_bool operator!() const
-      { return (this->empty())? &dummy::nonnull : 0; }
-#endif
   };
 
   /* Poison comparison between Boost.Function objects (because it is 
index c2ff200425ccf67c297129c074848a44669469ed..488d84502754235a675cd8a88bbf425155a963b9 100644 (file)
@@ -253,6 +253,9 @@ namespace boost {
     typedef T1 second_argument_type;
 #endif
 
+    BOOST_STATIC_CONSTANT(int, arity = BOOST_FUNCTION_NUM_ARGS);
+    BOOST_FUNCTION_ARG_TYPES
+
 #ifndef BOOST_NO_VOID_RETURNS
     typedef R         result_type;
 #else
@@ -416,6 +419,25 @@ namespace boost {
       invoker = 0;
     }
 
+#if (defined __SUNPRO_CC) && (__SUNPRO_CC <= 0x530) && !(defined BOOST_NO_COMPILER_CONFIG)
+    // Sun C++ 5.3 can't handle the safe_bool idiom, so don't use it
+    operator bool () const { return !this->empty(); }
+#else
+  private:
+    struct dummy {
+      void nonnull() {};
+    };
+
+    typedef void (dummy::*safe_bool)();
+
+  public:
+    operator safe_bool () const 
+      { return (this->empty())? 0 : &dummy::nonnull; }
+
+    bool operator!() const
+      { return this->empty(); }
+#endif
+
   private:
     void assign_to_own(const BOOST_FUNCTION_FUNCTION& f)
     {
index 6d97c9bde2478afcef1508a7af978656ded81bb5..54526907cef5ac259336736b845dcafccbe33317 100644 (file)
@@ -10,7 +10,7 @@
  * software for any purpose. It is provided "as is" without express or
  * implied warranty.
  *
- * $Id: integer_traits.hpp,v 1.19 2002/07/13 12:26:19 david_abrahams Exp $
+ * $Id: integer_traits.hpp,v 1.19.4.1 2002/09/24 11:38:33 johnmaddock Exp $
  *
  * Idea by Beman Dawes, Ed Brey, Steve Cleary, and Nathan Myers
  */
@@ -147,42 +147,64 @@ class integer_traits<unsigned long>
     public detail::integer_traits_base<unsigned long, 0, ULONG_MAX>
 { };
 
-#if defined(ULLONG_MAX) && !defined(__SUNPRO_CC)
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T)
+#if defined(ULLONG_MAX) && defined(BOOST_HAS_LONG_LONG)
+
 template<>
 class integer_traits<long long>
   : public std::numeric_limits<long long>,
     public detail::integer_traits_base<long long, LLONG_MIN, LLONG_MAX>
 { };
+
 template<>
 class integer_traits<unsigned long long>
   : public std::numeric_limits<unsigned long long>,
     public detail::integer_traits_base<unsigned long long, 0, ULLONG_MAX>
 { };
-#elif defined(ULONG_LONG_MAX)
+
+#elif defined(ULONG_LONG_MAX) && defined(BOOST_HAS_LONG_LONG)
+
 template<>
-class integer_traits<long long>
-  : public std::numeric_limits<long long>,
-    public detail::integer_traits_base<long long, LONG_LONG_MIN, LONG_LONG_MAX>
-{ };
+class integer_traits<long long>  : public std::numeric_limits<long long>,    public detail::integer_traits_base<long long, LONG_LONG_MIN, LONG_LONG_MAX>{ };
 template<>
 class integer_traits<unsigned long long>
   : public std::numeric_limits<unsigned long long>,
     public detail::integer_traits_base<unsigned long long, 0, ULONG_LONG_MAX>
 { };
-#elif defined(ULONGLONG_MAX) && !defined(BOOST_MSVC) && !defined(__BORLANDC__)
+
+#elif defined(ULONGLONG_MAX) && defined(BOOST_HAS_LONG_LONG)
+
 template<>
 class integer_traits<long long>
   : public std::numeric_limits<long long>,
     public detail::integer_traits_base<long long, LONGLONG_MIN, LONGLONG_MAX>
 { };
+
 template<>
 class integer_traits<unsigned long long>
   : public std::numeric_limits<unsigned long long>,
     public detail::integer_traits_base<unsigned long long, 0, ULONGLONG_MAX>
 { };
+
+#elif defined(_LLONG_MAX) && defined(_C2) && defined(BOOST_HAS_LONG_LONG)
+
+template<>
+class integer_traits<long long>
+  : public std::numeric_limits<long long>,
+    public detail::integer_traits_base<long long, -_LLONG_MAX - _C2, _LLONG_MAX>
+{ };
+
+template<>
+class integer_traits<unsigned long long>
+  : public std::numeric_limits<unsigned long long>,
+    public detail::integer_traits_base<unsigned long long, 0, _ULLONG_MAX>
+{ };
+
+#endif
 #endif
 
 } // namespace boost
 
 #endif /* BOOST_INTEGER_TRAITS_HPP */
 
+
index df91dcf7759f361c4096414d08129d192f10b08d..18e7c9c3e2895b5c81a0cb17d8fcc64cd0602d65 100644 (file)
 # include <boost/type.hpp>
 # include <boost/static_assert.hpp>
 # include <boost/type_traits.hpp>
+# include <boost/type_traits/conversion_traits.hpp>
 # include <boost/detail/iterator.hpp>
 # include <boost/detail/select_type.hpp>
 
@@ -761,6 +762,12 @@ namespace detail {
 
       BOOST_STATIC_ASSERT(forward_iter_with_real_reference);
   };
+
+  template <class T, class Result> struct dependent
+  {
+    typedef Result type;
+  };
+
 } // namespace detail
 
 
@@ -880,7 +887,8 @@ struct iterator_adaptor :
 # pragma warning(pop)
 #endif
 
-    value_type operator[](difference_type n) const
+    template <class diff_type>
+    typename detail::dependent<diff_type, value_type>::type operator[](diff_type n) const
         { return *(*this + n); }
 
     self& operator++() {
index da7cfff48d9399589fe80679f68b0248da8cabc3..b01bbad96173774952412334539f23f0c22ec22c 100644 (file)
@@ -93,15 +93,15 @@ namespace std
 #elif defined(ULLONG_MAX) && defined(ULLONG_MIN)
       static unsigned BOOST_LLT min(){ return ULLONG_MIN; }
       static unsigned BOOST_LLT max(){ return ULLONG_MAX; }
-#elif defined(ULONGLONG_MAX) && defined(ULONG_LONG_MIN)
+#elif defined(ULONGLONG_MAX) && defined(ULONGLONG_MIN)
       static unsigned BOOST_LLT min(){ return ULONGLONG_MIN; }
       static unsigned BOOST_LLT max(){ return ULONGLONG_MAX; }
 #else
       static unsigned BOOST_LLT min(){ return 0uLL; }
       static unsigned BOOST_LLT max(){ return ~0uLL; }
 #endif
-      BOOST_STATIC_CONSTANT(int, digits = sizeof(BOOST_LLT) * CHAR_BIT -1);
-      BOOST_STATIC_CONSTANT(int, digits10 = (CHAR_BIT * sizeof (BOOST_LLT) - 1) * 301L / 1000);
+      BOOST_STATIC_CONSTANT(int, digits = sizeof(BOOST_LLT) * CHAR_BIT);
+      BOOST_STATIC_CONSTANT(int, digits10 = (CHAR_BIT * sizeof (BOOST_LLT)) * 301L / 1000);
       BOOST_STATIC_CONSTANT(bool, is_signed = false);
       BOOST_STATIC_CONSTANT(bool, is_integer = true);
       BOOST_STATIC_CONSTANT(bool, is_exact = true);
diff --git a/boost/boost/mpl/aux_/arity.hpp b/boost/boost/mpl/aux_/arity.hpp
new file mode 100644 (file)
index 0000000..59f76f5
--- /dev/null
@@ -0,0 +1,45 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/arity.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2001-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_ARITY_HPP_INCLUDED
+#define BOOST_MPL_AUX_ARITY_HPP_INCLUDED
+
+#include "boost/mpl/aux_/config/dtp.hpp"
+
+#if defined(BOOST_BROKEN_DEFAULT_TEMPLATE_PARAMETERS_IN_NESTED_TEMPLATES)
+
+#   include "boost/config.hpp"
+
+namespace boost {
+namespace mpl {
+namespace aux {
+
+// agurt, 15/mar/02: it's possible to implement the template so that it will 
+// "just work" and do not require any specialization, but not on the compilers
+// that require the arity workaround in the first place
+template< typename F, int N >
+struct arity
+{
+    BOOST_STATIC_CONSTANT(int, value = N);
+};
+
+} // namespace aux
+} // namespace mpl
+} // namespace boost
+
+#endif // BOOST_BROKEN_DEFAULT_TEMPLATE_PARAMETERS_IN_NESTED_TEMPLATES
+
+#endif // BOOST_MPL_AUX_ARITY_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/config/dtp.hpp b/boost/boost/mpl/aux_/config/dtp.hpp
new file mode 100644 (file)
index 0000000..d6bfb3b
--- /dev/null
@@ -0,0 +1,41 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/config/dtp.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2001-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+// MWCW 7.x-8.0 "losts" default template parameters of nested class 
+// templates when their owner classes are passed as arguments to other 
+// templates; Borland 5.5.1 "forgets" them from the very beginning (if 
+// the owner class is a class template), and Borland 5.6 isn't even
+// able to compile a definition of nested class template with DTP
+
+#if defined(__BORLANDC__) && __BORLANDC__ >= 0x560 && \
+    (__BORLANDC__ <= 0x561 || !defined(BOOST_STRICT_CONFIG)) \
+ && !defined(BOOST_NO_DEFAULT_TEMPLATE_PARAMETERS_IN_NESTED_TEMPLATES)
+#   define BOOST_NO_DEFAULT_TEMPLATE_PARAMETERS_IN_NESTED_TEMPLATES
+#endif
+
+#if defined(__MWERKS__) && __MWERKS__ <= 0x3001 \
+ || defined(__BORLANDC__) && (__BORLANDC__ <= 0x570 || !defined(BOOST_STRICT_CONFIG)) \
+ || defined(BOOST_NO_DEFAULT_TEMPLATE_PARAMETERS_IN_NESTED_TEMPLATES) \
+ && !defined(BOOST_BROKEN_DEFAULT_TEMPLATE_PARAMETERS_IN_NESTED_TEMPLATES)
+#   define BOOST_BROKEN_DEFAULT_TEMPLATE_PARAMETERS_IN_NESTED_TEMPLATES
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/config/lambda.hpp b/boost/boost/mpl/aux_/config/lambda.hpp
new file mode 100644 (file)
index 0000000..50630b0
--- /dev/null
@@ -0,0 +1,35 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/config/lambda.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2002
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
+
+#include "boost/mpl/aux_/config/ttp.hpp"
+#include "boost/config.hpp"
+
+// agurt, 15/jan/02: full-fledged implementation requires both 
+// template template parameters _and_ partial specialization
+
+#if defined(BOOST_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
+ || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_MPL_NO_FULL_LAMBDA_SUPPORT)
+#   define BOOST_MPL_NO_FULL_LAMBDA_SUPPORT
+#endif
+
+//#define BOOST_MPL_NO_UNNAMED_PLACEHOLDER_SUPPORT
+//#define BOOST_MPL_NO_LAMBDA_HEURISTIC
+
+#endif // BOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/config/overload_resolution.hpp b/boost/boost/mpl/aux_/config/overload_resolution.hpp
new file mode 100644 (file)
index 0000000..009ccc8
--- /dev/null
@@ -0,0 +1,28 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/config/overload_resolution.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2002
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x561 || !defined(BOOST_STRICT_CONFIG)) \
+ || defined(__MWERKS__) && __MWERKS__ < 0x3001 \
+ && !defined(BOOST_MPL_BROKEN_OVERLOAD_RESOLUTION)
+#   define BOOST_MPL_BROKEN_OVERLOAD_RESOLUTION
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/config/preprocessor.hpp b/boost/boost/mpl/aux_/config/preprocessor.hpp
new file mode 100644 (file)
index 0000000..66cef48
--- /dev/null
@@ -0,0 +1,30 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/config/preprocessor.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2000-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+#if defined(__MWERKS__) && (__MWERKS__ <= 0x3003 || !defined(BOOST_STRICT_CONFIG)) \
+ || defined(__BORLANDC__) && (__BORLANDC__ <= 0x561 || !defined(BOOST_STRICT_CONFIG)) \
+ || defined(__IBMCPP__) && (__IBMCPP__ <= 502 || !defined(BOOST_STRICT_CONFIG))
+#   define BOOST_MPL_BROKEN_PP_MACRO_EXPANSION
+#endif
+
+//#define BOOST_MPL_NO_OWN_PP_PRIMITIVES
+
+#endif // BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/config/ttp.hpp b/boost/boost/mpl/aux_/config/ttp.hpp
new file mode 100644 (file)
index 0000000..29f1fc6
--- /dev/null
@@ -0,0 +1,34 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/config/ttp.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2000-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+#if defined(BOOST_NO_TEMPLATE_TEMPLATES) \
+ && (!defined(BOOST_MSVC) || BOOST_MSVC < 1300)
+#   define BOOST_NO_TEMPLATE_TEMPLATE_PARAMETERS
+#endif
+
+#if defined(__GNUC__) && (__GNUC__ < 3 || __GNUC__ == 3 && __GNUC_MINOR__ <= 2 \
+    || !defined(BOOST_STRICT_CONFIG)) \
+ || defined(__BORLANDC__) && (__BORLANDC__ <= 0x561 || !defined(BOOST_STRICT_CONFIG)) \
+ && !defined(BOOST_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+#   define BOOST_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/lambda_arity_param.hpp b/boost/boost/mpl/aux_/lambda_arity_param.hpp
new file mode 100644 (file)
index 0000000..926e3a3
--- /dev/null
@@ -0,0 +1,28 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/lambda_arity_param.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2001-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
+#define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
+
+#include "boost/mpl/aux_/config/ttp.hpp"
+
+#if !defined(BOOST_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+#   define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param)    
+#else
+#   define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param) , param
+#endif
+
+#endif // BOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/lambda_support.hpp b/boost/boost/mpl/aux_/lambda_support.hpp
new file mode 100644 (file)
index 0000000..65c158a
--- /dev/null
@@ -0,0 +1,58 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/lambda_support.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2001-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
+#define BOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
+
+#include "boost/mpl/aux_/config/lambda.hpp"
+
+#if !defined(BOOST_MPL_NO_FULL_LAMBDA_SUPPORT)
+
+#   define BOOST_MPL_AUX_LAMBDA_SUPPORT(i,name,params) /**/
+
+#else
+
+#   include "boost/mpl/aux_/preprocessor/params.hpp"
+#   include "boost/preprocessor/tuple/to_list.hpp"
+#   include "boost/preprocessor/list/for_each_i.hpp"
+#   include "boost/preprocessor/inc.hpp"
+#   include "boost/preprocessor/cat.hpp"
+
+#   define BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC(R,typedef_,i,param) \
+    typedef_ param BOOST_PP_CAT(arg,BOOST_PP_INC(i)); \
+    /**/
+
+#   define BOOST_MPL_AUX_LAMBDA_SUPPORT(i,name,params) \
+    struct rebind \
+    { \
+        BOOST_STATIC_CONSTANT(int, arity = i); \
+        BOOST_PP_LIST_FOR_EACH_I_R( \
+              1 \
+            , BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \
+            , typedef \
+            , BOOST_PP_TUPLE_TO_LIST(i,params) \
+            ) \
+        \
+        template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
+        { \
+            typedef typename name< BOOST_MPL_PP_PARAMS(i,U) >::type type; \
+        }; \
+    }; \
+    /**/
+
+#endif // BOOST_MPL_NO_FULL_LAMBDA_SUPPORT
+
+#endif // BOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/preprocessor/def_params_tail.hpp b/boost/boost/mpl/aux_/preprocessor/def_params_tail.hpp
new file mode 100644 (file)
index 0000000..0ef5da4
--- /dev/null
@@ -0,0 +1,103 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/preprocessor/def_params_tail.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2000-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
+
+#include "boost/mpl/limits/arity.hpp"
+#include "boost/mpl/aux_/config/dtp.hpp"
+#include "boost/mpl/aux_/config/preprocessor.hpp"
+
+#include "boost/preprocessor/identity.hpp"
+#include "boost/preprocessor/empty.hpp"
+
+// BOOST_MPL_PP_DEF_PARAMS_TAIL(1,T): , T1 = void_, .., Tn = void_
+// BOOST_MPL_PP_DEF_PARAMS_TAIL(2,T): , T2 = void_, .., Tn = void_
+// BOOST_MPL_PP_DEF_PARAMS_TAIL(n,T): <nothing>
+
+#if !defined(BOOST_MPL_NO_OWN_PP_PRIMITIVES)
+
+#   include "boost/mpl/aux_/preprocessor/filter_params.hpp"
+#   include "boost/mpl/aux_/preprocessor/sub.hpp"
+
+#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, value_func) \
+    BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_1( \
+          i \
+        , BOOST_MPL_PP_SUB(BOOST_MPL_METAFUNCTION_MAX_ARITY,i) \
+        , param \
+        , value_func \
+        ) \
+    /**/
+
+#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_1(i, n, param, value_func) \
+    BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_2(i,n,param,value_func) \
+    /**/
+
+#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_2(i, n, param, value_func) \
+    , BOOST_MPL_PP_DEF_PARAMS_TAIL_##i(n,param,value_func) \
+    /**/
+
+#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_1(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##2 v(),p##3 v(),p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1)
+#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_2(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##3 v(),p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2)
+#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_3(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3)
+#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_4(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4)
+#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_5(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4,p5)
+#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_6(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4,p5,p6)
+#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_7(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##8 v(),p##9 v(),p1,p2,p3,p4,p5,p6,p7)
+#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_8(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##9 v(),p1,p2,p3,p4,p5,p6,p7,p8)
+#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_9(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p1,p2,p3,p4,p5,p6,p7,p8,p9)
+
+#else
+
+#   include "boost/preprocessor/arithmetic/add.hpp"
+#   include "boost/preprocessor/arithmetic/sub.hpp"
+#   include "boost/preprocessor/inc.hpp"
+#   include "boost/preprocessor/tuple/elem.hpp"
+#   include "boost/preprocessor/repeat.hpp"
+#   include "boost/preprocessor/cat.hpp"
+
+#   define BOOST_MPL_PP_AUX_TAIL_PARAM_FUNC(unused, i, op) \
+    , BOOST_PP_CAT( \
+          BOOST_PP_TUPLE_ELEM(3, 1, op) \
+        , BOOST_PP_ADD_D(1, i, BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(3, 0, op))) \
+        ) BOOST_PP_TUPLE_ELEM(3, 2, op)() \
+    /**/
+
+#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, value_func) \
+    BOOST_PP_REPEAT_1( \
+          BOOST_PP_SUB_D(1, BOOST_MPL_METAFUNCTION_MAX_ARITY, i) \
+        , BOOST_MPL_PP_AUX_TAIL_PARAM_FUNC \
+        , (i, param, value_func) \
+        ) \
+    /**/
+
+#endif // BOOST_MPL_NO_OWN_PP_PRIMITIVES
+
+#define BOOST_MPL_PP_DEF_PARAMS_TAIL(i, param, value) \
+    BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_IDENTITY(=value)) \
+    /**/
+
+#if !defined(BOOST_NO_DEFAULT_TEMPLATE_PARAMETERS_IN_NESTED_TEMPLATES)
+#   define BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, param, value) \
+    BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_IDENTITY(=value)) \
+    /**/
+#else
+#   define BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, param, value) \
+    BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_EMPTY) \
+    /**/
+#endif
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/preprocessor/enum.hpp b/boost/boost/mpl/aux_/preprocessor/enum.hpp
new file mode 100644 (file)
index 0000000..8297875
--- /dev/null
@@ -0,0 +1,65 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/preprocessor/enum.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2000-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
+
+#include "boost/mpl/aux_/config/preprocessor.hpp"
+
+// BOOST_MPL_PP_ENUM(0,int): <nothing>
+// BOOST_MPL_PP_ENUM(1,int): int
+// BOOST_MPL_PP_ENUM(2,int): int, int
+// BOOST_MPL_PP_ENUM(n,int): int, int, .., int
+
+#if !defined(BOOST_MPL_NO_OWN_PP_PRIMITIVES)
+
+#   include "boost/preprocessor/cat.hpp"
+
+#   define BOOST_MPL_PP_ENUM(n, param) \
+    BOOST_PP_CAT(BOOST_MPL_PP_ENUM_,n)(param) \
+    /**/
+    
+#   define BOOST_MPL_PP_ENUM_0(p)
+#   define BOOST_MPL_PP_ENUM_1(p) p
+#   define BOOST_MPL_PP_ENUM_2(p) p,p
+#   define BOOST_MPL_PP_ENUM_3(p) p,p,p
+#   define BOOST_MPL_PP_ENUM_4(p) p,p,p,p
+#   define BOOST_MPL_PP_ENUM_5(p) p,p,p,p,p
+#   define BOOST_MPL_PP_ENUM_6(p) p,p,p,p,p,p
+#   define BOOST_MPL_PP_ENUM_7(p) p,p,p,p,p,p,p
+#   define BOOST_MPL_PP_ENUM_8(p) p,p,p,p,p,p,p,p
+#   define BOOST_MPL_PP_ENUM_9(p) p,p,p,p,p,p,p,p,p
+
+#else
+
+#   include "boost/preprocessor/comma_if.hpp"
+#   include "boost/preprocessor/repeat.hpp"
+
+#   define BOOST_MPL_PP_AUX_ENUM_FUNC(unused, i, param) \
+    BOOST_PP_COMMA_IF(i) param \
+    /**/
+
+#   define BOOST_MPL_PP_ENUM(n, param) \
+    BOOST_PP_REPEAT_1( \
+          n \
+        , BOOST_MPL_PP_AUX_ENUM_FUNC \
+        , param \
+        ) \
+    /**/
+
+#endif // BOOST_MPL_NO_OWN_PP_PRIMITIVES
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/preprocessor/filter_params.hpp b/boost/boost/mpl/aux_/preprocessor/filter_params.hpp
new file mode 100644 (file)
index 0000000..b6dc3f9
--- /dev/null
@@ -0,0 +1,31 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/preprocessor/filter_params.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2000-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
+
+#define BOOST_MPL_PP_FILTER_PARAMS_0(p1,p2,p3,p4,p5,p6,p7,p8,p9) 
+#define BOOST_MPL_PP_FILTER_PARAMS_1(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1
+#define BOOST_MPL_PP_FILTER_PARAMS_2(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2
+#define BOOST_MPL_PP_FILTER_PARAMS_3(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3
+#define BOOST_MPL_PP_FILTER_PARAMS_4(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4
+#define BOOST_MPL_PP_FILTER_PARAMS_5(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5
+#define BOOST_MPL_PP_FILTER_PARAMS_6(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6
+#define BOOST_MPL_PP_FILTER_PARAMS_7(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7
+#define BOOST_MPL_PP_FILTER_PARAMS_8(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7,p8
+#define BOOST_MPL_PP_FILTER_PARAMS_9(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7,p8,p9
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/preprocessor/params.hpp b/boost/boost/mpl/aux_/preprocessor/params.hpp
new file mode 100644 (file)
index 0000000..baaac7d
--- /dev/null
@@ -0,0 +1,68 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/preprocessor/params.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2000-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
+
+#include "boost/mpl/aux_/config/preprocessor.hpp"
+
+// BOOST_MPL_PP_PARAMS(0,T): <nothing>
+// BOOST_MPL_PP_PARAMS(1,T): T1
+// BOOST_MPL_PP_PARAMS(2,T): T1, T2
+// BOOST_MPL_PP_PARAMS(n,T): T1, T2, .., Tn
+
+#if !defined(BOOST_MPL_NO_OWN_PP_PRIMITIVES)
+
+#   include "boost/preprocessor/cat.hpp"
+
+#   define BOOST_MPL_PP_PARAMS(n,p) \
+    BOOST_PP_CAT(BOOST_MPL_PP_PARAMS_,n)(p) \
+    /**/
+
+#   define BOOST_MPL_PP_PARAMS_0(p)
+#   define BOOST_MPL_PP_PARAMS_1(p) p##1
+#   define BOOST_MPL_PP_PARAMS_2(p) p##1,p##2
+#   define BOOST_MPL_PP_PARAMS_3(p) p##1,p##2,p##3
+#   define BOOST_MPL_PP_PARAMS_4(p) p##1,p##2,p##3,p##4
+#   define BOOST_MPL_PP_PARAMS_5(p) p##1,p##2,p##3,p##4,p##5
+#   define BOOST_MPL_PP_PARAMS_6(p) p##1,p##2,p##3,p##4,p##5,p##6
+#   define BOOST_MPL_PP_PARAMS_7(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7
+#   define BOOST_MPL_PP_PARAMS_8(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8
+#   define BOOST_MPL_PP_PARAMS_9(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8,p##9
+
+#else
+
+#   include "boost/preprocessor/comma_if.hpp"
+#   include "boost/preprocessor/repeat.hpp"
+#   include "boost/preprocessor/inc.hpp"
+#   include "boost/preprocessor/cat.hpp"
+
+#   define BOOST_MPL_PP_AUX_PARAM_FUNC(unused, i, param) \
+    BOOST_PP_COMMA_IF(i) \
+    BOOST_PP_CAT(param, BOOST_PP_INC(i)) \
+    /**/
+
+#   define BOOST_MPL_PP_PARAMS(n, param) \
+    BOOST_PP_REPEAT_1( \
+          n \
+        , BOOST_MPL_PP_AUX_PARAM_FUNC \
+        , param \
+        ) \
+    /**/
+
+#endif // BOOST_MPL_NO_OWN_PP_PRIMITIVES
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/preprocessor/sub.hpp b/boost/boost/mpl/aux_/preprocessor/sub.hpp
new file mode 100644 (file)
index 0000000..e16ffda
--- /dev/null
@@ -0,0 +1,55 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/preprocessor/sub.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2002
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
+
+#include "boost/mpl/aux_/preprocessor/tuple.hpp"
+#include "boost/mpl/aux_/config/preprocessor.hpp"
+
+#if defined(BOOST_MPL_BROKEN_PP_MACRO_EXPANSION)
+#   include "boost/preprocessor/cat.hpp"
+
+#   define BOOST_MPL_PP_SUB(i,j) \
+    BOOST_MPL_PP_SUB_DELAY(i,j) \
+    /**/
+
+#   define BOOST_MPL_PP_SUB_DELAY(i,j) \
+    BOOST_PP_CAT(BOOST_MPL_PP_TUPLE_11_ELEM_##i,BOOST_MPL_PP_SUB_##j) \
+    /**/
+#else
+#   define BOOST_MPL_PP_SUB(i,j) \
+    BOOST_MPL_PP_SUB_DELAY(i,j) \
+    /**/
+
+#   define BOOST_MPL_PP_SUB_DELAY(i,j) \
+    BOOST_MPL_PP_TUPLE_11_ELEM_##i BOOST_MPL_PP_SUB_##j \
+    /**/
+#endif // BOOST_MPL_BROKEN_PP_MACRO_EXPANSION
+
+#define BOOST_MPL_PP_SUB_0 (0,1,2,3,4,5,6,7,8,9,10)
+#define BOOST_MPL_PP_SUB_1 (0,0,1,2,3,4,5,6,7,8,9)
+#define BOOST_MPL_PP_SUB_2 (0,0,0,1,2,3,4,5,6,7,8)
+#define BOOST_MPL_PP_SUB_3 (0,0,0,0,1,2,3,4,5,6,7)
+#define BOOST_MPL_PP_SUB_4 (0,0,0,0,0,1,2,3,4,5,6)
+#define BOOST_MPL_PP_SUB_5 (0,0,0,0,0,0,1,2,3,4,5)
+#define BOOST_MPL_PP_SUB_6 (0,0,0,0,0,0,0,1,2,3,4)
+#define BOOST_MPL_PP_SUB_7 (0,0,0,0,0,0,0,0 1,2,3)
+#define BOOST_MPL_PP_SUB_8 (0,0,0,0,0,0,0,0,0,1,2)
+#define BOOST_MPL_PP_SUB_9 (0,0,0,0,0,0,0,0,0,0,1)
+#define BOOST_MPL_PP_SUB_10 (0,0,0,0,0,0,0,0,0,0,0)
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/preprocessor/tuple.hpp b/boost/boost/mpl/aux_/preprocessor/tuple.hpp
new file mode 100644 (file)
index 0000000..a719843
--- /dev/null
@@ -0,0 +1,32 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/preprocessor/tuple.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2002
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
+
+#define BOOST_MPL_PP_TUPLE_11_ELEM_0(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e0
+#define BOOST_MPL_PP_TUPLE_11_ELEM_1(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e1
+#define BOOST_MPL_PP_TUPLE_11_ELEM_2(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e2
+#define BOOST_MPL_PP_TUPLE_11_ELEM_3(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e3
+#define BOOST_MPL_PP_TUPLE_11_ELEM_4(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e4
+#define BOOST_MPL_PP_TUPLE_11_ELEM_5(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e5
+#define BOOST_MPL_PP_TUPLE_11_ELEM_6(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e6
+#define BOOST_MPL_PP_TUPLE_11_ELEM_7(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e7
+#define BOOST_MPL_PP_TUPLE_11_ELEM_8(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e8
+#define BOOST_MPL_PP_TUPLE_11_ELEM_9(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e9
+#define BOOST_MPL_PP_TUPLE_11_ELEM_10(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e10
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/template_arity_fwd.hpp b/boost/boost/mpl/aux_/template_arity_fwd.hpp
new file mode 100644 (file)
index 0000000..6cb409e
--- /dev/null
@@ -0,0 +1,30 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/template_arity_fwd.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2001-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
+#define BOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
+
+namespace boost {
+namespace mpl {
+namespace aux {
+
+template< typename F > struct template_arity;
+
+} // namespace aux
+} // namespace mpl
+} // namespace boost
+
+#endif // BOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/value_wknd.hpp b/boost/boost/mpl/aux_/value_wknd.hpp
new file mode 100644 (file)
index 0000000..4fb0283
--- /dev/null
@@ -0,0 +1,42 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/value_wknd.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2000-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
+#define BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x561 || !defined(BOOST_STRICT_CONFIG))
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename C >
+struct value_wknd
+    : C
+{
+};
+
+}}} // namespace boost::mpl::aux
+
+#   define BOOST_MPL_AUX_VALUE_WKND(C) ::boost::mpl::aux::value_wknd< C >
+
+#else
+
+#   define BOOST_MPL_AUX_VALUE_WKND(C) C
+
+#endif // __BORLANDC__
+
+#endif // BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
diff --git a/boost/boost/mpl/aux_/void_spec.hpp b/boost/boost/mpl/aux_/void_spec.hpp
new file mode 100644 (file)
index 0000000..52200fe
--- /dev/null
@@ -0,0 +1,140 @@
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/void_spec.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2001-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_AUX_VOID_SPEC_HPP_INCLUDED
+#define BOOST_MPL_AUX_VOID_SPEC_HPP_INCLUDED
+
+#include "boost/mpl/lambda_fwd.hpp"
+#include "boost/mpl/void.hpp"
+#include "boost/mpl/aux_/preprocessor/params.hpp"
+#include "boost/mpl/aux_/preprocessor/enum.hpp"
+#include "boost/mpl/aux_/preprocessor/def_params_tail.hpp"
+#include "boost/mpl/aux_/arity.hpp"
+#include "boost/mpl/aux_/template_arity_fwd.hpp"
+#include "boost/mpl/aux_/lambda_arity_param.hpp"
+#include "boost/mpl/aux_/config/dtp.hpp"
+#include "boost/mpl/aux_/config/ttp.hpp"
+#include "boost/mpl/aux_/config/lambda.hpp"
+#include "boost/mpl/aux_/config/overload_resolution.hpp"
+
+#include "boost/config.hpp"
+
+#define BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) \
+    BOOST_MPL_PP_ENUM(i, void_) \
+/**/
+
+#if defined(BOOST_BROKEN_DEFAULT_TEMPLATE_PARAMETERS_IN_NESTED_TEMPLATES)
+#   define BOOST_MPL_AUX_VOID_SPEC_ARITY(i, name) \
+namespace aux { \
+template< int N > \
+struct arity< \
+      name< BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) > \
+    , N \
+    > \
+{ \
+    BOOST_STATIC_CONSTANT(int \
+        , value = BOOST_MPL_METAFUNCTION_MAX_ARITY \
+        ); \
+}; \
+} \
+/**/
+#else
+#   define BOOST_MPL_AUX_VOID_SPEC_ARITY(i, name) /**/
+#endif
+
+#define BOOST_MPL_AUX_VOID_SPEC_MAIN(i, name) \
+template<> \
+struct name< BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) > \
+{ \
+    template< \
+          BOOST_MPL_PP_PARAMS(i, typename T) \
+        BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, void_) \
+        > \
+    struct apply \
+        : name< BOOST_MPL_PP_PARAMS(i, T) > \
+    { \
+    }; \
+}; \
+/**/
+
+#if defined(BOOST_MPL_NO_FULL_LAMBDA_SUPPORT)
+#   define BOOST_MPL_AUX_VOID_SPEC_LAMBDA(i, name) \
+template<> \
+struct lambda< \
+      name< BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) > \
+    , true \
+    > \
+{ \
+    typedef name< BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) > type; \
+}; \
+/**/
+#else
+#   define BOOST_MPL_AUX_VOID_SPEC_LAMBDA(i, name) \
+template<> \
+struct lambda< \
+      name< BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) > \
+    BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(-1) \
+    > \
+{ \
+    typedef name< BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) > type; \
+}; \
+/**/
+#endif
+
+#if defined(BOOST_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) || \
+    defined(BOOST_MPL_NO_FULL_LAMBDA_SUPPORT) && \
+    defined(BOOST_MPL_BROKEN_OVERLOAD_RESOLUTION)
+#   define BOOST_MPL_AUX_VOID_SPEC_TEMPLATE_ARITY(i, j, name) \
+namespace aux { \
+template< BOOST_MPL_PP_PARAMS(j, typename T) > \
+struct template_arity< \
+      name< BOOST_MPL_PP_PARAMS(j, T) > \
+    > \
+{ \
+    BOOST_STATIC_CONSTANT(int, value = j); \
+}; \
+\
+template<> \
+struct template_arity< \
+      name< BOOST_MPL_PP_ENUM(i, void_) > \
+    > \
+{ \
+    BOOST_STATIC_CONSTANT(int, value = -1); \
+}; \
+} \
+/**/
+#else
+#   define BOOST_MPL_AUX_VOID_SPEC_TEMPLATE_ARITY(i, j, name) /**/
+#endif
+
+
+#define BOOST_MPL_AUX_VOID_SPEC_PARAM(param) param = void_
+
+#define BOOST_MPL_AUX_VOID_SPEC(i, name) \
+BOOST_MPL_AUX_VOID_SPEC_MAIN(i, name) \
+BOOST_MPL_AUX_VOID_SPEC_LAMBDA(i, name) \
+BOOST_MPL_AUX_VOID_SPEC_ARITY(i, name) \
+BOOST_MPL_AUX_VOID_SPEC_TEMPLATE_ARITY(i, i, name) \
+/**/
+
+#define BOOST_MPL_AUX_VOID_SPEC_EXT(i, j, name) \
+BOOST_MPL_AUX_VOID_SPEC_MAIN(i, name) \
+BOOST_MPL_AUX_VOID_SPEC_LAMBDA(i, name) \
+BOOST_MPL_AUX_VOID_SPEC_ARITY(i, name) \
+BOOST_MPL_AUX_VOID_SPEC_TEMPLATE_ARITY(i, j, name) \
+/**/
+
+#endif // BOOST_MPL_AUX_VOID_SPEC_HPP_INCLUDED
diff --git a/boost/boost/mpl/bool_c.hpp b/boost/boost/mpl/bool_c.hpp
new file mode 100644 (file)
index 0000000..272d584
--- /dev/null
@@ -0,0 +1,40 @@
+//-----------------------------------------------------------------------------
+// boost mpl/bool_c.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2000-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_BOOL_C_HPP_INCLUDED
+#define BOOST_MPL_BOOL_C_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+namespace boost {
+namespace mpl {
+
+template< bool C > struct bool_c
+{
+    BOOST_STATIC_CONSTANT(bool, value = C);
+    typedef bool_c type;
+    typedef bool value_type;
+    operator bool() const { return this->value; }
+};
+
+// shorcuts
+typedef bool_c<true> true_c;
+typedef bool_c<false> false_c;
+
+} // namespace mpl
+} // namespace boost 
+
+#endif // BOOST_MPL_BOOL_C_HPP_INCLUDED
diff --git a/boost/boost/mpl/if.hpp b/boost/boost/mpl/if.hpp
new file mode 100644 (file)
index 0000000..7283e5b
--- /dev/null
@@ -0,0 +1,163 @@
+//-----------------------------------------------------------------------------
+// boost/mpl/if.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2000-02 Boost.org
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_IF_HPP_INCLUDED
+#define BOOST_MPL_IF_HPP_INCLUDED
+
+#include "boost/mpl/aux_/value_wknd.hpp"
+#include "boost/mpl/aux_/void_spec.hpp"
+#include "boost/mpl/aux_/lambda_support.hpp"
+#include "boost/config.hpp"
+
+namespace boost {
+namespace mpl {
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template<
+      bool C
+    , typename T1
+    , typename T2
+    >
+struct if_c
+{
+    typedef T1 type;
+};
+
+template<
+      typename T1
+    , typename T2
+    >
+struct if_c<false,T1,T2>
+{
+    typedef T2 type;
+};
+
+template<
+      typename BOOST_MPL_AUX_VOID_SPEC_PARAM(C)
+    , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
+    , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
+    >
+struct if_
+{
+    typedef typename if_c<
+          BOOST_MPL_AUX_VALUE_WKND(C)::value
+        , T1
+        , T2
+        >::type type;
+
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(C,T1,T2))
+};
+
+#elif defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
+
+// MSVC6.5-specific version
+
+template<
+      bool C
+    , typename T1
+    , typename T2
+    >
+struct if_c
+{
+ private:
+    template<bool> struct answer        { typedef T1 type; };
+    template<>     struct answer<false>        { typedef T2 type; };
+ public:
+    typedef typename answer< C >::type type;
+};
+
+// (almost) copy & paste in order to save one more 
+// recursively nested template instantiation to user
+template<
+      typename C
+    , typename T1
+    , typename T2
+    >
+struct if_
+{
+ private:
+    template<bool> struct answer        { typedef T1 type; };
+    template<>     struct answer<false>        { typedef T2 type; };
+
+    // agurt, 17/sep/02: in some situations MSVC 7.0 doesn't 
+    // handle 'answer<C::value>' expression very well
+    enum { c_ = C::value };
+
+ public:
+    typedef typename answer<c_>::type type;
+};
+
+#else
+
+// no partial class template specialization
+
+namespace aux {
+
+template< bool C >
+struct if_impl
+{
+    template< typename T1, typename T2 > struct result_
+    {
+        typedef T1 type;
+    };
+};
+
+template<>
+struct if_impl<false>
+{
+    template< typename T1, typename T2 > struct result_
+    { 
+        typedef T2 type;
+    };
+};
+
+} // namespace aux
+
+template<
+      bool C
+    , typename T1
+    , typename T2
+    >
+struct if_c
+{
+    typedef typename aux::if_impl< C >
+        ::template result_<T1,T2>::type type;
+};
+
+// (almost) copy & paste in order to save one more 
+// recursively nested template instantiation to user
+template<
+      typename BOOST_MPL_AUX_VOID_SPEC_PARAM(C)
+    , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
+    , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
+    >
+struct if_
+{
+    typedef typename aux::if_impl< C::value >
+        ::template result_<T1,T2>::type type;
+
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(C,T1,T2))
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+BOOST_MPL_AUX_VOID_SPEC(3, if_)
+
+} // namespace mpl
+} // namespace boost
+
+#endif // BOOST_MPL_IF_HPP_INCLUDED
diff --git a/boost/boost/mpl/integral_c.hpp b/boost/boost/mpl/integral_c.hpp
new file mode 100644 (file)
index 0000000..15cfd47
--- /dev/null
@@ -0,0 +1,73 @@
+//-----------------------------------------------------------------------------
+// boost/mpl/intergal_c.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2000-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
+#define BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+namespace boost {
+namespace mpl {
+
+template< typename T, T N >
+struct integral_c
+{
+    BOOST_STATIC_CONSTANT(T, value = N);
+    typedef integral_c type;
+    typedef T value_type;
+
+    // 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 defined(__EDG_VERSION__) && __EDG_VERSION__ <= 243
+ private:
+    BOOST_STATIC_CONSTANT(T, next_value = (N + 1));
+    BOOST_STATIC_CONSTANT(T, prior_value = (N - 1));
+ public:
+    typedef integral_c<T, next_value> next;
+    typedef integral_c<T, prior_value> prior;
+#elif defined(__BORLANDC__) && (__BORLANDC__ <= 0x561 || !defined(BOOST_STRICT_CONFIG)) \
+   || defined(__IBMCPP__) && (__IBMCPP__ <= 502 || !defined(BOOST_STRICT_CONFIG))
+    typedef integral_c<T, (N + 1)> next;
+    typedef integral_c<T, (N - 1)> prior;
+#else
+    typedef integral_c<T, (value + 1)> next;
+    typedef integral_c<T, (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 'integral_c<..>' types (for an example, see 
+    // "mpl/example/power.cpp")
+    operator T() const { return this->value; } 
+};
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(__BORLANDC__) || __BORLANDC__ > 0x551
+// 'bool' constant doesn't have 'next'/'prior' members
+template< bool C >
+struct integral_c<bool, C>
+{
+    BOOST_STATIC_CONSTANT(bool, value = C);
+    typedef integral_c type;
+    operator bool() const { return this->value; }
+};
+#endif
+
+} // namespace mpl
+} // namespace boost 
+
+#endif // BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
diff --git a/boost/boost/mpl/lambda_fwd.hpp b/boost/boost/mpl/lambda_fwd.hpp
new file mode 100644 (file)
index 0000000..ba9b4f6
--- /dev/null
@@ -0,0 +1,36 @@
+//-----------------------------------------------------------------------------
+// boost mpl/labmda_fwd.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2001-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
+#define BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
+
+#include "boost/mpl/aux_/lambda_arity_param.hpp"
+#include "boost/mpl/aux_/config/lambda.hpp"
+
+namespace boost {
+namespace mpl {
+
+#if !defined(BOOST_MPL_NO_FULL_LAMBDA_SUPPORT)
+template< typename T BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(long Arity) >
+struct lambda;
+#else
+template< typename T, bool Protect > struct lambda;
+#endif
+
+} // namespace mpl
+} // namespace boost
+
+#endif // BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
diff --git a/boost/boost/mpl/limits/arity.hpp b/boost/boost/mpl/limits/arity.hpp
new file mode 100644 (file)
index 0000000..a045c3c
--- /dev/null
@@ -0,0 +1,24 @@
+//-----------------------------------------------------------------------------
+// boost mpl/limits/arity.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2000-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
+#define BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
+
+#if !defined(BOOST_MPL_METAFUNCTION_MAX_ARITY)
+#   define BOOST_MPL_METAFUNCTION_MAX_ARITY 5
+#endif
+
+#endif // BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
diff --git a/boost/boost/mpl/size_t_c.hpp b/boost/boost/mpl/size_t_c.hpp
new file mode 100644 (file)
index 0000000..ecbdeda
--- /dev/null
@@ -0,0 +1,49 @@
+//-----------------------------------------------------------------------------
+// boost mpl/size_t_c.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2000-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_SIZE_T_C_HPP_INCLUDED
+#define BOOST_MPL_SIZE_T_C_HPP_INCLUDED
+
+#include "boost/mpl/integral_c.hpp"
+#include "boost/config.hpp"
+#include <cstddef> // for std::size_t
+
+namespace boost {
+namespace mpl {
+
+template< std::size_t N > struct size_t_c
+#if !defined(__BORLANDC__)
+    : integral_c< std::size_t,N >
+{
+    typedef size_t_c type;
+};
+#else
+{
+    BOOST_STATIC_CONSTANT(std::size_t, value = N);
+    typedef size_t_c type;
+    typedef std::size_t value_type;
+
+    typedef size_t_c<N + 1> next;
+    typedef size_t_c<N - 1> prior;
+
+    operator std::size_t() const { return this->value; }
+};
+#endif
+
+} // namespace mpl
+} // namespace boost 
+
+#endif // BOOST_MPL_SIZE_T_C_HPP_INCLUDED
diff --git a/boost/boost/mpl/void.hpp b/boost/boost/mpl/void.hpp
new file mode 100644 (file)
index 0000000..2f6c06b
--- /dev/null
@@ -0,0 +1,49 @@
+//-----------------------------------------------------------------------------
+// boost mpl/void.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2001-02
+// Peter Dimov, Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+#ifndef BOOST_MPL_VOID_HPP_INCLUDED
+#define BOOST_MPL_VOID_HPP_INCLUDED
+
+#include "boost/mpl/bool_c.hpp"
+#include "boost/config.hpp"
+
+namespace boost {
+namespace mpl {
+
+struct void_;
+
+template< typename T >
+struct is_void_
+    : false_c
+{
+#if defined(BOOST_MSVC) && BOOST_MSVC < 1300
+    using false_c::value;
+#endif
+};
+
+template<>
+struct is_void_<void_>
+    : true_c
+{
+#if defined(BOOST_MSVC) && BOOST_MSVC < 1300
+    using true_c::value;
+#endif
+};
+
+} // namespace mpl
+} // namespace boost
+
+#endif // BOOST_MPL_VOID_HPP_INCLUDED
index 1655cfab5ab3b8390d8f747d94965f6cf193ec52..5fbb045f9ae783641e9488f23745f33fedde5452 100644 (file)
@@ -36,12 +36,23 @@ namespace boost {
 
 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-  template <int cond, class A, class B>
+// agurt, 15/sep/02: in certain cases Borland has problems with
+// choosing the right 'ct_if' specialization even though 'cond' 
+// _does_ equal '1'; the easiest way to fix it is to make first 
+// 'ct_if' non-type template parameter boolean.
+#if !defined(__BORLANDC__)
+  template <bool cond, class A, class B>
   struct ct_if { typedef ct_if_error type; };
   template <class A, class B>
-  struct ct_if<1, A, B> { typedef A type; };
+  struct ct_if<true, A, B> { typedef A type; };
   template <class A, class B>
-  struct ct_if<0, A, B> { typedef B type; };
+  struct ct_if<false, A, B> { typedef B type; };
+#else
+  template <bool cond, class A, class B>
+  struct ct_if { typedef A type; };
+  template <class A, class B>
+  struct ct_if<false, A, B> { typedef B type; };
+#endif
 
   template <class cond, class A, class B>
   struct ct_if_t { typedef ct_if_error type; };
index 970ba30c30be08cd160b60c34f22f89274a12cdd..66cef48846e0c5747fd709ea3772a288c1d4521e 100644 (file)
@@ -1,34 +1,30 @@
-#ifndef BOOST_PREPROCESSOR_HPP
-#define BOOST_PREPROCESSOR_HPP
+//-----------------------------------------------------------------------------
+// boost mpl/aux_/config/preprocessor.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2000-02
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
 
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
+#ifndef BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
 
-/** <p>Includes all Preprocessor library headers.</p> */
+#include "boost/config.hpp"
 
-#include <boost/preprocessor/arithmetic.hpp>
-#include <boost/preprocessor/assert_msg.hpp>
-#include <boost/preprocessor/comparison.hpp>
-#include <boost/preprocessor/enum_params.hpp>
-#include <boost/preprocessor/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/enum_params_with_defaults.hpp>
-#include <boost/preprocessor/enum_shifted_params.hpp>
-#include <boost/preprocessor/expand.hpp>
-#include <boost/preprocessor/for.hpp>
-#include <boost/preprocessor/limits.hpp>
-#include <boost/preprocessor/list.hpp>
-#include <boost/preprocessor/logical.hpp>
-#include <boost/preprocessor/max.hpp>
-#include <boost/preprocessor/min.hpp>
-#include <boost/preprocessor/repeat_from_to.hpp>
-#include <boost/preprocessor/stringize.hpp>
+#if defined(__MWERKS__) && (__MWERKS__ <= 0x3003 || !defined(BOOST_STRICT_CONFIG)) \
+ || defined(__BORLANDC__) && (__BORLANDC__ <= 0x561 || !defined(BOOST_STRICT_CONFIG)) \
+ || defined(__IBMCPP__) && (__IBMCPP__ <= 502 || !defined(BOOST_STRICT_CONFIG))
+#   define BOOST_MPL_BROKEN_PP_MACRO_EXPANSION
 #endif
+
+//#define BOOST_MPL_NO_OWN_PP_PRIMITIVES
+
+#endif // BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
index 89e4d76365e770291e52fc22b348ee7fa02690cc..c9844957466f2da4f9e978f9e0fbfc4579e1cf79 100644 (file)
@@ -1,21 +1,26 @@
-#ifndef BOOST_PREPROCESSOR_ARITHMETIC_HPP
-#define BOOST_PREPROCESSOR_ARITHMETIC_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>Includes all arithmetic headers.</p> */
-
-#include <boost/preprocessor/arithmetic/div.hpp>
-#include <boost/preprocessor/arithmetic/mod.hpp>
-#include <boost/preprocessor/arithmetic/mul.hpp>
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_HPP
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/div.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/arithmetic/mod.hpp>
+# include <boost/preprocessor/arithmetic/mul.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+#
+# endif
index d7d2c24b45a4e78ae698d96d6b9c62a7592d1662..2cb0489e1a6d2459b32cd26f85b09f417858033e 100644 (file)
@@ -1,41 +1,52 @@
-#ifndef BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP
-#define BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/dec.hpp>
-#include <boost/preprocessor/inc.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/while.hpp>
-
-/** <p>Expands to the sum of <code>X</code> and <code>Y</code>.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_ADD(4,3)</code> expands to <code>7</code> (a
-single token).</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/arithmetic_test.cpp">arithmetic_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_ADD(X,Y) BOOST_PP_ADD_D(0,X,Y)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_ADD_D(D,X,Y) BOOST_PP_TUPLE_ELEM(2,0,BOOST_PP_WHILE##D(BOOST_PP_ADD_C,BOOST_PP_ADD_F,(X,Y)))
-
-#define BOOST_PP_ADD_C(D,RC) BOOST_PP_TUPLE_ELEM(2,1,RC)
-#define BOOST_PP_ADD_F(D,RC) (BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(2,0,RC)),BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(2,1,RC)))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ADD */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_ADD(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
+# else
+#    define BOOST_PP_ADD(x, y) BOOST_PP_ADD_I(x, y)
+#    define BOOST_PP_ADD_I(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
+# endif
+#
+# define BOOST_PP_ADD_P(d, xy) BOOST_PP_TUPLE_ELEM(2, 1, xy)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_ADD_O(d, xy) BOOST_PP_ADD_O_I xy
+# else
+#    define BOOST_PP_ADD_O(d, xy) BOOST_PP_ADD_O_I(BOOST_PP_TUPLE_ELEM(2, 0, xy), BOOST_PP_TUPLE_ELEM(2, 1, xy))
+# endif
+#
+# define BOOST_PP_ADD_O_I(x, y) (BOOST_PP_INC(x), BOOST_PP_DEC(y))
+#
+# /* BOOST_PP_ADD_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_ADD_D(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
+# else
+#    define BOOST_PP_ADD_D(d, x, y) BOOST_PP_ADD_D_I(d, x, y)
+#    define BOOST_PP_ADD_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
+# endif
+#
+# endif
index 0074c5682367e660efe26bdb48f4b22475d51e54..1bab39ab94804c3d861e12ef8bbddb8807b3c254 100644 (file)
@@ -1,39 +1,40 @@
-#ifndef BOOST_PREPROCESSOR_ARITHMETIC_DIV_HPP
-#define BOOST_PREPROCESSOR_ARITHMETIC_DIV_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/comparison/less_equal.hpp>
-#include <boost/preprocessor/inc.hpp>
-
-/** <p>Expands to the quotient of <code>X</code> and <code>Y</code>.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_DIV(4,3)</code> expands to <code>1</code> (a
-single token).</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/arithmetic_test.cpp">arithmetic_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_DIV(X,Y) BOOST_PP_DIV_D(0,X,Y)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_DIV_D(D,X,Y) BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_WHILE##D(BOOST_PP_DIV_C,BOOST_PP_DIV_F,(0,X,Y)))
-
-#define BOOST_PP_DIV_C(D,RCY) BOOST_PP_LESS_EQUAL_D(D,BOOST_PP_TUPLE_ELEM(3,2,RCY),BOOST_PP_TUPLE_ELEM(3,1,RCY))
-#define BOOST_PP_DIV_F(D,RCY) (BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(3,0,RCY)),BOOST_PP_SUB_D(D,BOOST_PP_TUPLE_ELEM(3,1,RCY),BOOST_PP_TUPLE_ELEM(3,2,RCY)),BOOST_PP_TUPLE_ELEM(3,2,RCY))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DIV_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_DIV_HPP
+#
+# include <boost/preprocessor/arithmetic/detail/div_base.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_DIV */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_DIV(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE(x, y))
+# else
+#    define BOOST_PP_DIV(x, y) BOOST_PP_DIV_I(x, y)
+#    define BOOST_PP_DIV_I(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE(x, y))
+# endif
+#
+# /* BOOST_PP_DIV_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_DIV_D(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE_D(d, x, y))
+# else
+#    define BOOST_PP_DIV_D(d, x, y) BOOST_PP_DIV_D_I(d, x, y)
+#    define BOOST_PP_DIV_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE_D(d, x, y))
+# endif
+#
+# endif
diff --git a/boost/boost/preprocessor/arithmetic/inc.hpp b/boost/boost/preprocessor/arithmetic/inc.hpp
new file mode 100644 (file)
index 0000000..817e8a6
--- /dev/null
@@ -0,0 +1,289 @@
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_INC_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_INC_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_INC */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_INC(x) BOOST_PP_INC_I(x)
+# else
+#    define BOOST_PP_INC(x) BOOST_PP_INC_OO((x))
+#    define BOOST_PP_INC_OO(par) BOOST_PP_INC_I ## par
+# endif
+#
+# define BOOST_PP_INC_I(x) BOOST_PP_INC_ ## x
+#
+# define BOOST_PP_INC_0 1
+# define BOOST_PP_INC_1 2
+# define BOOST_PP_INC_2 3
+# define BOOST_PP_INC_3 4
+# define BOOST_PP_INC_4 5
+# define BOOST_PP_INC_5 6
+# define BOOST_PP_INC_6 7
+# define BOOST_PP_INC_7 8
+# define BOOST_PP_INC_8 9
+# define BOOST_PP_INC_9 10
+# define BOOST_PP_INC_10 11
+# define BOOST_PP_INC_11 12
+# define BOOST_PP_INC_12 13
+# define BOOST_PP_INC_13 14
+# define BOOST_PP_INC_14 15
+# define BOOST_PP_INC_15 16
+# define BOOST_PP_INC_16 17
+# define BOOST_PP_INC_17 18
+# define BOOST_PP_INC_18 19
+# define BOOST_PP_INC_19 20
+# define BOOST_PP_INC_20 21
+# define BOOST_PP_INC_21 22
+# define BOOST_PP_INC_22 23
+# define BOOST_PP_INC_23 24
+# define BOOST_PP_INC_24 25
+# define BOOST_PP_INC_25 26
+# define BOOST_PP_INC_26 27
+# define BOOST_PP_INC_27 28
+# define BOOST_PP_INC_28 29
+# define BOOST_PP_INC_29 30
+# define BOOST_PP_INC_30 31
+# define BOOST_PP_INC_31 32
+# define BOOST_PP_INC_32 33
+# define BOOST_PP_INC_33 34
+# define BOOST_PP_INC_34 35
+# define BOOST_PP_INC_35 36
+# define BOOST_PP_INC_36 37
+# define BOOST_PP_INC_37 38
+# define BOOST_PP_INC_38 39
+# define BOOST_PP_INC_39 40
+# define BOOST_PP_INC_40 41
+# define BOOST_PP_INC_41 42
+# define BOOST_PP_INC_42 43
+# define BOOST_PP_INC_43 44
+# define BOOST_PP_INC_44 45
+# define BOOST_PP_INC_45 46
+# define BOOST_PP_INC_46 47
+# define BOOST_PP_INC_47 48
+# define BOOST_PP_INC_48 49
+# define BOOST_PP_INC_49 50
+# define BOOST_PP_INC_50 51
+# define BOOST_PP_INC_51 52
+# define BOOST_PP_INC_52 53
+# define BOOST_PP_INC_53 54
+# define BOOST_PP_INC_54 55
+# define BOOST_PP_INC_55 56
+# define BOOST_PP_INC_56 57
+# define BOOST_PP_INC_57 58
+# define BOOST_PP_INC_58 59
+# define BOOST_PP_INC_59 60
+# define BOOST_PP_INC_60 61
+# define BOOST_PP_INC_61 62
+# define BOOST_PP_INC_62 63
+# define BOOST_PP_INC_63 64
+# define BOOST_PP_INC_64 65
+# define BOOST_PP_INC_65 66
+# define BOOST_PP_INC_66 67
+# define BOOST_PP_INC_67 68
+# define BOOST_PP_INC_68 69
+# define BOOST_PP_INC_69 70
+# define BOOST_PP_INC_70 71
+# define BOOST_PP_INC_71 72
+# define BOOST_PP_INC_72 73
+# define BOOST_PP_INC_73 74
+# define BOOST_PP_INC_74 75
+# define BOOST_PP_INC_75 76
+# define BOOST_PP_INC_76 77
+# define BOOST_PP_INC_77 78
+# define BOOST_PP_INC_78 79
+# define BOOST_PP_INC_79 80
+# define BOOST_PP_INC_80 81
+# define BOOST_PP_INC_81 82
+# define BOOST_PP_INC_82 83
+# define BOOST_PP_INC_83 84
+# define BOOST_PP_INC_84 85
+# define BOOST_PP_INC_85 86
+# define BOOST_PP_INC_86 87
+# define BOOST_PP_INC_87 88
+# define BOOST_PP_INC_88 89
+# define BOOST_PP_INC_89 90
+# define BOOST_PP_INC_90 91
+# define BOOST_PP_INC_91 92
+# define BOOST_PP_INC_92 93
+# define BOOST_PP_INC_93 94
+# define BOOST_PP_INC_94 95
+# define BOOST_PP_INC_95 96
+# define BOOST_PP_INC_96 97
+# define BOOST_PP_INC_97 98
+# define BOOST_PP_INC_98 99
+# define BOOST_PP_INC_99 100
+# define BOOST_PP_INC_100 101
+# define BOOST_PP_INC_101 102
+# define BOOST_PP_INC_102 103
+# define BOOST_PP_INC_103 104
+# define BOOST_PP_INC_104 105
+# define BOOST_PP_INC_105 106
+# define BOOST_PP_INC_106 107
+# define BOOST_PP_INC_107 108
+# define BOOST_PP_INC_108 109
+# define BOOST_PP_INC_109 110
+# define BOOST_PP_INC_110 111
+# define BOOST_PP_INC_111 112
+# define BOOST_PP_INC_112 113
+# define BOOST_PP_INC_113 114
+# define BOOST_PP_INC_114 115
+# define BOOST_PP_INC_115 116
+# define BOOST_PP_INC_116 117
+# define BOOST_PP_INC_117 118
+# define BOOST_PP_INC_118 119
+# define BOOST_PP_INC_119 120
+# define BOOST_PP_INC_120 121
+# define BOOST_PP_INC_121 122
+# define BOOST_PP_INC_122 123
+# define BOOST_PP_INC_123 124
+# define BOOST_PP_INC_124 125
+# define BOOST_PP_INC_125 126
+# define BOOST_PP_INC_126 127
+# define BOOST_PP_INC_127 128
+# define BOOST_PP_INC_128 129
+# define BOOST_PP_INC_129 130
+# define BOOST_PP_INC_130 131
+# define BOOST_PP_INC_131 132
+# define BOOST_PP_INC_132 133
+# define BOOST_PP_INC_133 134
+# define BOOST_PP_INC_134 135
+# define BOOST_PP_INC_135 136
+# define BOOST_PP_INC_136 137
+# define BOOST_PP_INC_137 138
+# define BOOST_PP_INC_138 139
+# define BOOST_PP_INC_139 140
+# define BOOST_PP_INC_140 141
+# define BOOST_PP_INC_141 142
+# define BOOST_PP_INC_142 143
+# define BOOST_PP_INC_143 144
+# define BOOST_PP_INC_144 145
+# define BOOST_PP_INC_145 146
+# define BOOST_PP_INC_146 147
+# define BOOST_PP_INC_147 148
+# define BOOST_PP_INC_148 149
+# define BOOST_PP_INC_149 150
+# define BOOST_PP_INC_150 151
+# define BOOST_PP_INC_151 152
+# define BOOST_PP_INC_152 153
+# define BOOST_PP_INC_153 154
+# define BOOST_PP_INC_154 155
+# define BOOST_PP_INC_155 156
+# define BOOST_PP_INC_156 157
+# define BOOST_PP_INC_157 158
+# define BOOST_PP_INC_158 159
+# define BOOST_PP_INC_159 160
+# define BOOST_PP_INC_160 161
+# define BOOST_PP_INC_161 162
+# define BOOST_PP_INC_162 163
+# define BOOST_PP_INC_163 164
+# define BOOST_PP_INC_164 165
+# define BOOST_PP_INC_165 166
+# define BOOST_PP_INC_166 167
+# define BOOST_PP_INC_167 168
+# define BOOST_PP_INC_168 169
+# define BOOST_PP_INC_169 170
+# define BOOST_PP_INC_170 171
+# define BOOST_PP_INC_171 172
+# define BOOST_PP_INC_172 173
+# define BOOST_PP_INC_173 174
+# define BOOST_PP_INC_174 175
+# define BOOST_PP_INC_175 176
+# define BOOST_PP_INC_176 177
+# define BOOST_PP_INC_177 178
+# define BOOST_PP_INC_178 179
+# define BOOST_PP_INC_179 180
+# define BOOST_PP_INC_180 181
+# define BOOST_PP_INC_181 182
+# define BOOST_PP_INC_182 183
+# define BOOST_PP_INC_183 184
+# define BOOST_PP_INC_184 185
+# define BOOST_PP_INC_185 186
+# define BOOST_PP_INC_186 187
+# define BOOST_PP_INC_187 188
+# define BOOST_PP_INC_188 189
+# define BOOST_PP_INC_189 190
+# define BOOST_PP_INC_190 191
+# define BOOST_PP_INC_191 192
+# define BOOST_PP_INC_192 193
+# define BOOST_PP_INC_193 194
+# define BOOST_PP_INC_194 195
+# define BOOST_PP_INC_195 196
+# define BOOST_PP_INC_196 197
+# define BOOST_PP_INC_197 198
+# define BOOST_PP_INC_198 199
+# define BOOST_PP_INC_199 200
+# define BOOST_PP_INC_200 201
+# define BOOST_PP_INC_201 202
+# define BOOST_PP_INC_202 203
+# define BOOST_PP_INC_203 204
+# define BOOST_PP_INC_204 205
+# define BOOST_PP_INC_205 206
+# define BOOST_PP_INC_206 207
+# define BOOST_PP_INC_207 208
+# define BOOST_PP_INC_208 209
+# define BOOST_PP_INC_209 210
+# define BOOST_PP_INC_210 211
+# define BOOST_PP_INC_211 212
+# define BOOST_PP_INC_212 213
+# define BOOST_PP_INC_213 214
+# define BOOST_PP_INC_214 215
+# define BOOST_PP_INC_215 216
+# define BOOST_PP_INC_216 217
+# define BOOST_PP_INC_217 218
+# define BOOST_PP_INC_218 219
+# define BOOST_PP_INC_219 220
+# define BOOST_PP_INC_220 221
+# define BOOST_PP_INC_221 222
+# define BOOST_PP_INC_222 223
+# define BOOST_PP_INC_223 224
+# define BOOST_PP_INC_224 225
+# define BOOST_PP_INC_225 226
+# define BOOST_PP_INC_226 227
+# define BOOST_PP_INC_227 228
+# define BOOST_PP_INC_228 229
+# define BOOST_PP_INC_229 230
+# define BOOST_PP_INC_230 231
+# define BOOST_PP_INC_231 232
+# define BOOST_PP_INC_232 233
+# define BOOST_PP_INC_233 234
+# define BOOST_PP_INC_234 235
+# define BOOST_PP_INC_235 236
+# define BOOST_PP_INC_236 237
+# define BOOST_PP_INC_237 238
+# define BOOST_PP_INC_238 239
+# define BOOST_PP_INC_239 240
+# define BOOST_PP_INC_240 241
+# define BOOST_PP_INC_241 242
+# define BOOST_PP_INC_242 243
+# define BOOST_PP_INC_243 244
+# define BOOST_PP_INC_244 245
+# define BOOST_PP_INC_245 246
+# define BOOST_PP_INC_246 247
+# define BOOST_PP_INC_247 248
+# define BOOST_PP_INC_248 249
+# define BOOST_PP_INC_249 250
+# define BOOST_PP_INC_250 251
+# define BOOST_PP_INC_251 252
+# define BOOST_PP_INC_252 253
+# define BOOST_PP_INC_253 254
+# define BOOST_PP_INC_254 255
+# define BOOST_PP_INC_255 256
+# define BOOST_PP_INC_256 256
+#
+# endif
index 268e2207104000e3c006c19e04fe29ef718a11fd..7bbf9d87f64d5586988cfe44fae4adf076d071e7 100644 (file)
@@ -1,37 +1,40 @@
-#ifndef BOOST_PREPROCESSOR_ARITHMETIC_MOD_HPP
-#define BOOST_PREPROCESSOR_ARITHMETIC_MOD_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/comparison/less_equal.hpp>
-
-/** <p>Expands to the remainder of <code>X</code> and <code>Y</code>.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_MOD(4,3)</code> expands to <code>1</code> (a
-single token).</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/arithmetic_test.cpp">arithmetic_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_MOD(X,Y) BOOST_PP_MOD_D(0,X,Y)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_MOD_D(D,X,Y) BOOST_PP_TUPLE_ELEM(2,0,BOOST_PP_WHILE##D(BOOST_PP_MOD_C,BOOST_PP_MOD_F,(X,Y)))
-#define BOOST_PP_MOD_C(D,RY) BOOST_PP_LESS_EQUAL_D(D,BOOST_PP_TUPLE_ELEM(2,1,RY),BOOST_PP_TUPLE_ELEM(2,0,RY))
-#define BOOST_PP_MOD_F(D,RY) (BOOST_PP_SUB_D(D,BOOST_PP_TUPLE_ELEM(2,0,RY),BOOST_PP_TUPLE_ELEM(2,1,RY)),BOOST_PP_TUPLE_ELEM(2,1,RY))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_MOD_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_MOD_HPP
+#
+# include <boost/preprocessor/arithmetic/detail/div_base.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_MOD */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_MOD(x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE(x, y))
+# else
+#    define BOOST_PP_MOD(x, y) BOOST_PP_MOD_I(x, y)
+#    define BOOST_PP_MOD_I(x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE(x, y))
+# endif
+#
+# /* BOOST_PP_MOD_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_MOD_D(d, x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE_D(d, x, y))
+# else
+#    define BOOST_PP_MOD_D(d, x, y) BOOST_PP_MOD_D_I(d, x, y)
+#    define BOOST_PP_MOD_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE_D(d, x, y))
+# endif
+#
+# endif
index e6af287cde57fbec764abe1d9439b89b17f3a051..a00b81ae8229cf08cea221955f0960b2f3c6c940 100644 (file)
@@ -1,38 +1,54 @@
-#ifndef BOOST_PREPROCESSOR_ARITHMETIC_MUL_HPP
-#define BOOST_PREPROCESSOR_ARITHMETIC_MUL_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/arithmetic/add.hpp>
-
-/** <p>Expands to the product of <code>X</code> and <code>Y</code>.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_MUL(4,3)</code> expands to <code>12</code> (a
-single token).</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/arithmetic_test.cpp">arithmetic_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_MUL(X,Y) BOOST_PP_MUL_D(0,X,Y)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_MUL_D(D,X,Y) BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_WHILE##D(BOOST_PP_MUL_C,BOOST_PP_MUL_F,(0,X,Y)))
-
-#define BOOST_PP_MUL_C(D,RXC) BOOST_PP_TUPLE_ELEM(3,2,RXC)
-#define BOOST_PP_MUL_F(D,RXC) (BOOST_PP_ADD_D(D,BOOST_PP_TUPLE_ELEM(3,0,RXC),BOOST_PP_TUPLE_ELEM(3,1,RXC)),BOOST_PP_TUPLE_ELEM(3,1,RXC),BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(3,2,RXC)))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_MUL_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_MUL_HPP
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_MUL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_MUL(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE(BOOST_PP_MUL_P, BOOST_PP_MUL_O, (0, x, y)))
+# else
+#    define BOOST_PP_MUL(x, y) BOOST_PP_MUL_I(x, y)
+#    define BOOST_PP_MUL_I(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE(BOOST_PP_MUL_P, BOOST_PP_MUL_O, (0, x, y)))
+# endif
+#
+# define BOOST_PP_MUL_P(d, rxy) BOOST_PP_TUPLE_ELEM(3, 2, rxy)
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+#    define BOOST_PP_MUL_O(d, rxy) BOOST_PP_MUL_O_IM(d, BOOST_PP_TUPLE_REM_3 rxy)
+#    define BOOST_PP_MUL_O_IM(d, im) BOOST_PP_MUL_O_I(d, im)
+# else
+#    define BOOST_PP_MUL_O(d, rxy) BOOST_PP_MUL_O_I(d, BOOST_PP_TUPLE_ELEM(3, 0, rxy), BOOST_PP_TUPLE_ELEM(3, 1, rxy), BOOST_PP_TUPLE_ELEM(3, 2, rxy))
+# endif
+#
+# define BOOST_PP_MUL_O_I(d, r, x, y) (BOOST_PP_ADD_D(d, r, x), x, BOOST_PP_DEC(y))
+#
+# /* BOOST_PP_MUL_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_MUL_D(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_MUL_P, BOOST_PP_MUL_O, (0, x, y)))
+# else
+#    define BOOST_PP_MUL_D(d, x, y) BOOST_PP_MUL_D_I(d, x, y)
+#    define BOOST_PP_MUL_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_MUL_P, BOOST_PP_MUL_O, (0, x, y)))
+# endif
+#
+# endif
index 7c0844aa63480e65aaf32a26865c720f3d90a35b..cc9663fa8f47e594cf62ca497ca6c471c0ed5b55 100644 (file)
@@ -1,40 +1,51 @@
-#ifndef BOOST_PREPROCESSOR_ARITHMETIC_SUB_HPP
-#define BOOST_PREPROCESSOR_ARITHMETIC_SUB_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/dec.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/while.hpp>
-
-/** <p>Expands to the difference of <code>X</code> and <code>Y</code>.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_SUB(4,3)</code> expands to <code>1</code> (a
-single token).</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/arithmetic_test.cpp">arithmetic_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_SUB(X,Y) BOOST_PP_SUB_D(0,X,Y)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_SUB_D(D,X,Y) BOOST_PP_TUPLE_ELEM(2,0,BOOST_PP_WHILE##D(BOOST_PP_SUB_C,BOOST_PP_SUB_F,(X,Y)))
-
-#define BOOST_PP_SUB_C(D,RC) BOOST_PP_TUPLE_ELEM(2,1,RC)
-#define BOOST_PP_SUB_F(D,RC) (BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(2,0,RC)),BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(2,1,RC)))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_SUB_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_SUB_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_SUB */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_SUB(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
+# else
+#    define BOOST_PP_SUB(x, y) BOOST_PP_SUB_I(x, y)
+#    define BOOST_PP_SUB_I(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
+# endif
+#
+# define BOOST_PP_SUB_P(d, xy) BOOST_PP_TUPLE_ELEM(2, 1, xy)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_SUB_O(d, xy) BOOST_PP_SUB_O_I xy
+# else
+#    define BOOST_PP_SUB_O(d, xy) BOOST_PP_SUB_O_I(BOOST_PP_TUPLE_ELEM(2, 0, xy), BOOST_PP_TUPLE_ELEM(2, 1, xy))
+# endif
+#
+# define BOOST_PP_SUB_O_I(x, y) (BOOST_PP_DEC(x), BOOST_PP_DEC(y))
+#
+# /* BOOST_PP_SUB_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_SUB_D(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
+# else
+#    define BOOST_PP_SUB_D(d, x, y) BOOST_PP_SUB_D_I(d, x, y)
+#    define BOOST_PP_SUB_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
+# endif
+#
+# endif
index 7daa289ffea8c2c496d05c33594e4a1f4639d906..7cf86199cd1318e9f0e5c10ca89dbbe1f697d1a6 100644 (file)
@@ -1,6 +1,3 @@
-# ifndef BOOST_PREPROCESSOR_ARRAY_HPP
-# define BOOST_PREPROCESSOR_ARRAY_HPP
-#
 # /* **************************************************************************
 #  *                                                                          *
 #  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
 #  *                                                                          *
 #  ************************************************************************** */
 #
-# include <boost/preprocessor/tuple/elem.hpp>
-#
-# define BOOST_PP_ARRAY(size, data) (size, data)
-#
-# if !defined(__MWERKS__) || defined(BOOST_NO_COMPILER_CONFIG) || __MWERKS__ > 0x3002 
-#   define BOOST_PP_ARRAY_SIZE(arr) BOOST_PP_ARRAY_SIZE_I arr
-# else
-#   define BOOST_PP_ARRAY_SIZE(arr) BOOST_PP_ARRAY_SIZE_D(arr)
-#   define BOOST_PP_ARRAY_SIZE_D(arr) BOOST_PP_ARRAY_SIZE_I ## arr
-# endif
-#
-# define BOOST_PP_ARRAY_SIZE_I(size, data) size
-#
-# if !defined(__MWERKS__) || defined(BOOST_NO_COMPILER_CONFIG) || __MWERKS__ > 0x3002
-#   define BOOST_PP_ARRAY_DATA(arr) BOOST_PP_ARRAY_DATA_I arr
-# else
-#   define BOOST_PP_ARRAY_DATA(arr) BOOST_PP_ARRAY_DATA_D(arr)
-#   define BOOST_PP_ARRAY_DATA_D(arr) BOOST_PP_ARRAY_DATA_I ## arr
-# endif
+# /* See http://www.boost.org for most recent version. */
 #
-# define BOOST_PP_ARRAY_DATA_I(size, data) data
+# ifndef BOOST_PREPROCESSOR_ARRAY_HPP
+# define BOOST_PREPROCESSOR_ARRAY_HPP
 #
-# if !defined(__MWERKS__) || defined(BOOST_NO_COMPILER_CONFIG) || __MWERKS__ > 0x3002
-#   define BOOST_PP_ARRAY_ELEM(i, arr) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE_I arr, i, BOOST_PP_ARRAY_DATA_I arr)
-# else
-#   define BOOST_PP_ARRAY_ELEM(i, arr) BOOST_PP_ARRAY_ELEM_D(i, arr)
-#   define BOOST_PP_ARRAY_ELEM_D(i, arr) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE(arr), i, BOOST_PP_ARRAY_DATA(arr))
-# endif
+# include <boost/preprocessor/array/data.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/array/size.hpp>
 #
 # endif
index 1f1abb456c9b6f8e00b82de465d8ae9fa149e19d..e98fcfe1bbfae5bb14fb5dec225bfc28f09f1b79 100644 (file)
@@ -1,27 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_ASSERT_MSG_HPP
-#define BOOST_PREPROCESSOR_ASSERT_MSG_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/expr_if.hpp>
-#include <boost/preprocessor/logical/not.hpp>
-
-/** <p>Expands to nothing if <code>COND != 0</code> and to <code>MSG</code> if
-<code>COND == 0</code>.</p>
-
-<p><code>COND</code> must expand to an integer literal in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_ASSERT_MSG(1,A BUG!)</code> expands to <code>A BUG!</code>.</p>
-*/
-#define BOOST_PP_ASSERT_MSG(COND,MSG) BOOST_PP_EXPR_IF(BOOST_PP_NOT(COND),MSG)
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ASSERT_MSG_HPP
+# define BOOST_PREPROCESSOR_ASSERT_MSG_HPP
+#
+# include <boost/preprocessor/debug/assert.hpp>
+#
+# endif
index 2fa3a27be0b1c625702fdf3bae6b73b67237a5c4..946bdcd106e9cfc58df8dbeba4586ae23dfa1b67 100644 (file)
@@ -1,35 +1,36 @@
-#ifndef BOOST_PREPROCESSOR_CAT_HPP
-#define BOOST_PREPROCESSOR_CAT_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>Concatenates <code>X</code> and <code>Y</code> after they are macro
-expanded.</p>
-
-<p>For example, <code>BOOST_PP_CAT(A,BOOST_PP_CAT(_,B))</code> expands to <code>A_B</code>.</p>
-
-<h3>Example</h3>
-<ul>
-  <li><a href="../../example/static_assert.c">static_assert.c</a></li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/preprocessor_test.cpp">preprocessor_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_CAT(X,Y) BOOST_PP_CAT_DELAY(X,Y)
-
-#define BOOST_PP_CAT_DELAY(X,Y) BOOST_PP_DO_CAT(X,Y)
-#define BOOST_PP_DO_CAT(X,Y) X##Y
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CAT_HPP
+# define BOOST_PREPROCESSOR_CAT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_CAT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
+# else
+#    define BOOST_PP_CAT(a, b) BOOST_PP_CAT_OO((a, b))
+#    define BOOST_PP_CAT_OO(par) BOOST_PP_CAT_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+#    define BOOST_PP_CAT_I(a, b) a ## b
+# else
+#    define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(a ## b)
+#    define BOOST_PP_CAT_II(res) res
+# endif
+#
+# endif
index 6b1504d1aa3b53c2c149a0e468f19c14199bea0a..8d9d6127390e5571e38737294e1562fce813eda6 100644 (file)
@@ -1,35 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_COMMA_HPP
-#define BOOST_PREPROCESSOR_COMMA_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>Expands to a comma.</p>
-
-<p>Commas need special handling in preprocessor code, because commas are used
-for separating macro parameters.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_IF(1,BOOST_PP_COMMA,BOOST_PP_EMPTY)()
-</pre>
-
-<p>expands to a comma.</p>
-
-<h3>See</h3>
-<ul>
-  <li>BOOST_PP_COMMA_IF()</li>
-</ul>
-*/
-#define BOOST_PP_COMMA() ,
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMMA_HPP
+# define BOOST_PREPROCESSOR_COMMA_HPP
+#
+# include <boost/preprocessor/punctuation/comma.hpp>
+#
+# endif
index 2232505a21fa7a06fc8f6fa8da41ad43ca94d686..e74a52ebba4b935367dd393b69201230cda18fb8 100644 (file)
@@ -1,28 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_COMMA_IF_HPP
-#define BOOST_PREPROCESSOR_COMMA_IF_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/comma.hpp>
-#include <boost/preprocessor/empty.hpp>
-#include <boost/preprocessor/if.hpp>
-
-/** <p>Expands to a comma if <code>COND != 0</code> and nothing if
-<code>COND == 0</code>.</p>
-
-<p><code>COND</code> must expand to an integer literal in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_COMMA_IF(0)</code> expands to nothing.</p>
-*/
-#define BOOST_PP_COMMA_IF(COND) BOOST_PP_IF(COND,BOOST_PP_COMMA,BOOST_PP_EMPTY)()
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMMA_IF_HPP
+# define BOOST_PREPROCESSOR_COMMA_IF_HPP
+#
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+#
+# endif
index b9bb152778dcc82aa7fee412624ec439594c226f..6cc78b82ed14b36b6e8dc353371f996027406ef5 100644 (file)
@@ -1,21 +1,25 @@
-#ifndef BOOST_PREPROCESSOR_COMPARISON_HPP
-#define BOOST_PREPROCESSOR_COMPARISON_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>Includes all comparison headers.</p> */
-
-#include <boost/preprocessor/comparison/equal.hpp>
-#include <boost/preprocessor/comparison/greater.hpp>
-#include <boost/preprocessor/comparison/greater_equal.hpp>
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_HPP
+#
+# include <boost/preprocessor/comparison/equal.hpp>
+# include <boost/preprocessor/comparison/greater.hpp>
+# include <boost/preprocessor/comparison/greater_equal.hpp>
+# include <boost/preprocessor/comparison/less.hpp>
+# include <boost/preprocessor/comparison/less_equal.hpp>
+# include <boost/preprocessor/comparison/not_equal.hpp>
+#
+# endif
index b5a447cf601476ced67e3e28c4822b3f269c9237..ba34cf3e57196ffde805ede8ce0942a1c3b12010 100644 (file)
@@ -1,36 +1,35 @@
-#ifndef BOOST_PREPROCESSOR_COMPARISON_EQUAL_HPP
-#define BOOST_PREPROCESSOR_COMPARISON_EQUAL_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/comparison/not_equal.hpp>
-#include <boost/preprocessor/logical/not.hpp>
-
-/** <p>Expands to <code>1</code> if <code>X == Y</code> and <code>0</code>
-otherwise.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_EQUAL(4,4)</code> expands to <code>1</code>.</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/arithmetic_test.cpp">arithmetic_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_EQUAL(X,Y) BOOST_PP_EQUAL_D(0,X,Y)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_EQUAL_D(D,X,Y) BOOST_PP_NOT(BOOST_PP_NOT_EQUAL_D(D,X,Y))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_EQUAL_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_EQUAL_HPP
+#
+# include <boost/preprocessor/comparison/not_equal.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/compl.hpp>
+#
+# /* BOOST_PP_EQUAL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_EQUAL(x, y) BOOST_PP_COMPL(BOOST_PP_NOT_EQUAL(x, y))
+# else
+#    define BOOST_PP_EQUAL(x, y) BOOST_PP_EQUAL_I(x, y)
+#    define BOOST_PP_EQUAL_I(x, y) BOOST_PP_COMPL(BOOST_PP_NOT_EQUAL(x, y))
+# endif
+#
+# /* BOOST_PP_EQUAL_D */
+#
+# define BOOST_PP_EQUAL_D(d, x, y) BOOST_PP_EQUAL(x, y)
+#
+# endif
index f1e6778b8f50804e97e8e7ef773bc91f15729754..b559088eed33398ea4b5a34612ca09f618f2c9a4 100644 (file)
@@ -1,35 +1,39 @@
-#ifndef BOOST_PREPROCESSOR_COMPARISON_GREATER_HPP
-#define BOOST_PREPROCESSOR_COMPARISON_GREATER_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/comparison/less.hpp>
-
-/** <p>Expands to <code>1</code> if <code>X &gt; Y</code> and <code>0</code>
-otherwise.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_GREATER(4,3)</code> expands to <code>1</code>.</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/arithmetic_test.cpp">arithmetic_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_GREATER(X,Y) BOOST_PP_GREATER_D(0,X,Y)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_GREATER_D(D,X,Y) BOOST_PP_LESS_D(D,Y,X)
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_GREATER_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_GREATER_HPP
+#
+# include <boost/preprocessor/comparison/less.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_GREATER */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_GREATER(x, y) BOOST_PP_LESS(y, x)
+# else
+#    define BOOST_PP_GREATER(x, y) BOOST_PP_GREATER_I(x, y)
+#    define BOOST_PP_GREATER_I(x, y) BOOST_PP_LESS(y, x)
+# endif
+#
+# /* BOOST_PP_GREATER_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_GREATER_D(d, x, y) BOOST_PP_LESS_D(d, y, x)
+# else
+#    define BOOST_PP_GREATER_D(d, x, y) BOOST_PP_GREATER_D_I(d, x, y)
+#    define BOOST_PP_GREATER_D_I(d, x, y) BOOST_PP_LESS_D(d, y, x)
+# endif
+#
+# endif
index 0ce8eb980584493545219166ed2e641b401ac734..b1440531e2fa9cc813851da2679a0d27fadef44c 100644 (file)
@@ -1,35 +1,39 @@
-#ifndef BOOST_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP
-#define BOOST_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/comparison/less_equal.hpp>
-
-/** <p>Expands to <code>1</code> if <code>X &gt;= Y</code> and <code>0</code>
-otherwise.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_GREATER_EQUAL(1,3)</code> expands to <code>0</code>.</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/arithmetic_test.cpp">arithmetic_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_GREATER_EQUAL(X,Y) BOOST_PP_GREATER_EQUAL_D(0,X,Y)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_GREATER_EQUAL_D(D,X,Y) BOOST_PP_LESS_EQUAL_D(D,Y,X)
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP
+#
+# include <boost/preprocessor/comparison/less_equal.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_GREATER_EQUAL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_GREATER_EQUAL(x, y) BOOST_PP_LESS_EQUAL(y, x)
+# else
+#    define BOOST_PP_GREATER_EQUAL(x, y) BOOST_PP_GREATER_EQUAL_I(x, y)
+#    define BOOST_PP_GREATER_EQUAL_I(x, y) BOOST_PP_LESS_EQUAL(y, x)
+# endif
+#
+# /* BOOST_PP_GREATER_EQUAL_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_GREATER_EQUAL_D(d, x, y) BOOST_PP_LESS_EQUAL_D(d, y, x)
+# else
+#    define BOOST_PP_GREATER_EQUAL_D(d, x, y) BOOST_PP_GREATER_EQUAL_D_I(d, x, y)
+#    define BOOST_PP_GREATER_EQUAL_D_I(d, x, y) BOOST_PP_LESS_EQUAL_D(d, y, x)
+# endif
+#
+# endif
index c96ec039e8d0bbef374ac50570f8f4baa0991282..26b09adef0a0793585649ffe278b9535d279eb34 100644 (file)
@@ -1,37 +1,47 @@
-#ifndef BOOST_PREPROCESSOR_COMPARISON_LESS_HPP
-#define BOOST_PREPROCESSOR_COMPARISON_LESS_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/comparison/less_equal.hpp>
-#include <boost/preprocessor/comparison/not_equal.hpp>
-#include <boost/preprocessor/logical/and.hpp>
-
-/** <p>Expands to <code>1</code> if <code>X &lt; Y</code> and <code>0</code>
-otherwise.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_LESS(2,6)</code> expands to <code>1</code>.</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/arithmetic_test.cpp">arithmetic_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LESS(X,Y) BOOST_PP_LESS_D(0,X,Y)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_LESS_D(D,X,Y) BOOST_PP_AND(BOOST_PP_NOT_EQUAL_D(D,X,Y),BOOST_PP_LESS_EQUAL_D(D,X,Y))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_LESS_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_LESS_HPP
+#
+# include <boost/preprocessor/comparison/less_equal.hpp>
+# include <boost/preprocessor/comparison/not_equal.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bitand.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* BOOST_PP_LESS */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_LESS(x, y) BOOST_PP_BITAND(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL(x, y))
+# elif ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LESS(x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL, 0 BOOST_PP_TUPLE_EAT_2)(x, y)
+# else
+#    define BOOST_PP_LESS(x, y) BOOST_PP_LESS_I(x, y)
+#    define BOOST_PP_LESS_I(x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL, 0 BOOST_PP_TUPLE_EAT_2)(x, y)
+# endif
+#
+# /* BOOST_PP_LESS_D */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_LESS_D(d, x, y) BOOST_PP_BITAND(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D(d, x, y))
+# elif ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LESS_D(d, x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D, 0 BOOST_PP_TUPLE_EAT_3)(d, x, y)
+# else
+#    define BOOST_PP_LESS_D(d, x, y) BOOST_PP_LESS_D_I(d, x, y)
+#    define BOOST_PP_LESS_D_I(d, x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D, 0 BOOST_PP_TUPLE_EAT_3)(d, x, y)
+# endif
+#
+# endif
index bb0b417426533e70dc9e48662a5c107c5083b153..87bec055dcd53a0b378bbc7a7e0d2794c4a6b7ea 100644 (file)
@@ -1,36 +1,40 @@
-#ifndef BOOST_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP
-#define BOOST_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/arithmetic/sub.hpp>
-#include <boost/preprocessor/logical/not.hpp>
-
-/** <p>Expands to <code>1</code> if <code>X &lt;= Y</code> and <code>0</code>
-otherwise.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_LESS_EQUAL(7,5)</code> expands to <code>0</code>.</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/arithmetic_test.cpp">arithmetic_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LESS_EQUAL(X,Y) BOOST_PP_LESS_EQUAL_D(0,X,Y)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_LESS_EQUAL_D(D,X,Y) BOOST_PP_NOT(BOOST_PP_SUB_D(D,X,Y))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP
+#
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/not.hpp>
+#
+# /* BOOST_PP_LESS_EQUAL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LESS_EQUAL(x, y) BOOST_PP_NOT(BOOST_PP_SUB(x, y))
+# else
+#    define BOOST_PP_LESS_EQUAL(x, y) BOOST_PP_LESS_EQUAL_I(x, y)
+#    define BOOST_PP_LESS_EQUAL_I(x, y) BOOST_PP_NOT(BOOST_PP_SUB(x, y))
+# endif
+#
+# /* BOOST_PP_LESS_EQUAL_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LESS_EQUAL_D(d, x, y) BOOST_PP_NOT(BOOST_PP_SUB_D(d, x, y))
+# else
+#    define BOOST_PP_LESS_EQUAL_D(d, x, y) BOOST_PP_LESS_EQUAL_D_I(d, x, y)
+#    define BOOST_PP_LESS_EQUAL_D_I(d, x, y) BOOST_PP_NOT(BOOST_PP_SUB_D(d, x, y))
+# endif
+#
+# endif
index ed8cd200efcf83c1d15feb35588565088af1b056..7dc71414d72fb638a337d8aa51faff36ccc2030b 100644 (file)
-#ifndef BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_HPP
-#define BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/arithmetic/add.hpp>
-#include <boost/preprocessor/arithmetic/sub.hpp>
-#include <boost/preprocessor/logical/bool.hpp>
-
-/** <p>Expands to <code>1</code> if <code>X != Y</code> and <code>0</code>
-otherwise.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_NOT_EQUAL(4,4)</code> expands to <code>0</code>.</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/arithmetic_test.cpp">arithmetic_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_NOT_EQUAL(X,Y) BOOST_PP_NOT_EQUAL_D(0,X,Y)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_NOT_EQUAL_D(D,X,Y) BOOST_PP_BOOL(BOOST_PP_ADD_D(D,BOOST_PP_SUB_D(D,X,Y),BOOST_PP_SUB_D(D,Y,X)))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+#
+# /* BOOST_PP_NOT_EQUAL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_NOT_EQUAL(x, y) BOOST_PP_NOT_EQUAL_I(x, y)
+# else
+#    define BOOST_PP_NOT_EQUAL(x, y) BOOST_PP_NOT_EQUAL_OO((x, y))
+#    define BOOST_PP_NOT_EQUAL_OO(par) BOOST_PP_NOT_EQUAL_I ## par
+# endif
+#
+# define BOOST_PP_NOT_EQUAL_I(x, y) BOOST_PP_CAT(BOOST_PP_NOT_EQUAL_CHECK_, BOOST_PP_NOT_EQUAL_ ## x(0, BOOST_PP_NOT_EQUAL_ ## y))
+#
+# /* BOOST_PP_NOT_EQUAL_D */
+#
+# define BOOST_PP_NOT_EQUAL_D(d, x, y) BOOST_PP_NOT_EQUAL(x, y)
+#
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_0(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_2(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_3(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_4(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_5(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_6(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_7(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_8(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_9(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_10(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_11(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_12(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_13(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_14(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_15(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_16(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_17(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_18(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_19(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_20(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_21(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_22(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_23(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_24(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_25(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_26(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_27(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_28(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_29(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_30(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_31(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_32(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_33(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_34(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_35(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_36(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_37(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_38(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_39(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_40(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_41(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_42(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_43(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_44(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_45(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_46(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_47(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_48(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_49(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_50(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_51(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_52(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_53(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_54(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_55(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_56(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_57(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_58(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_59(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_60(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_61(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_62(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_63(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_64(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_65(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_66(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_67(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_68(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_69(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_70(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_71(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_72(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_73(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_74(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_75(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_76(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_77(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_78(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_79(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_80(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_81(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_82(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_83(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_84(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_85(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_86(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_87(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_88(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_89(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_90(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_91(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_92(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_93(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_94(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_95(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_96(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_97(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_98(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_99(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_100(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_101(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_102(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_103(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_104(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_105(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_106(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_107(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_108(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_109(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_110(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_111(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_112(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_113(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_114(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_115(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_116(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_117(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_118(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_119(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_120(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_121(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_122(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_123(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_124(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_125(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_126(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_127(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_128(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_129(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_130(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_131(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_132(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_133(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_134(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_135(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_136(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_137(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_138(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_139(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_140(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_141(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_142(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_143(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_144(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_145(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_146(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_147(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_148(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_149(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_150(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_151(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_152(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_153(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_154(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_155(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_156(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_157(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_158(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_159(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_160(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_161(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_162(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_163(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_164(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_165(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_166(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_167(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_168(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_169(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_170(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_171(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_172(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_173(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_174(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_175(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_176(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_177(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_178(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_179(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_180(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_181(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_182(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_183(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_184(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_185(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_186(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_187(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_188(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_189(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_190(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_191(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_192(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_193(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_194(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_195(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_196(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_197(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_198(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_199(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_200(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_201(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_202(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_203(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_204(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_205(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_206(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_207(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_208(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_209(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_210(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_211(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_212(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_213(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_214(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_215(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_216(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_217(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_218(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_219(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_220(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_221(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_222(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_223(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_224(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_225(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_226(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_227(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_228(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_229(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_230(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_231(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_232(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_233(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_234(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_235(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_236(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_237(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_238(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_239(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_240(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_241(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_242(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_243(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_244(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_245(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_246(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_247(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_248(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_249(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_250(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_251(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_252(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_253(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_254(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_255(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_256(c, y) 0
+#
+# define BOOST_PP_NOT_EQUAL_0(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_1(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_2(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_3(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_4(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_5(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_6(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_7(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_8(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_9(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_10(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_11(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_12(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_13(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_14(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_15(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_16(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_17(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_18(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_19(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_20(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_21(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_22(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_23(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_24(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_25(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_26(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_27(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_28(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_29(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_30(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_31(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_32(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_33(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_34(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_35(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_36(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_37(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_38(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_39(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_40(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_41(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_42(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_43(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_44(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_45(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_46(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_47(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_48(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_49(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_50(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_51(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_52(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_53(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_54(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_55(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_56(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_57(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_58(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_59(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_60(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_61(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_62(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_63(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_64(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_65(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_66(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_67(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_68(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_69(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_70(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_71(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_72(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_73(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_74(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_75(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_76(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_77(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_78(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_79(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_80(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_81(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_82(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_83(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_84(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_85(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_86(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_87(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_88(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_89(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_90(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_91(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_92(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_93(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_94(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_95(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_96(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_97(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_98(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_99(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_100(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_101(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_102(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_103(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_104(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_105(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_106(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_107(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_108(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_109(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_110(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_111(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_112(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_113(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_114(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_115(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_116(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_117(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_118(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_119(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_120(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_121(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_122(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_123(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_124(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_125(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_126(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_127(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_128(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_129(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_130(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_131(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_132(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_133(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_134(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_135(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_136(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_137(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_138(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_139(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_140(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_141(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_142(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_143(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_144(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_145(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_146(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_147(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_148(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_149(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_150(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_151(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_152(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_153(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_154(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_155(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_156(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_157(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_158(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_159(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_160(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_161(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_162(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_163(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_164(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_165(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_166(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_167(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_168(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_169(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_170(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_171(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_172(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_173(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_174(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_175(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_176(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_177(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_178(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_179(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_180(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_181(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_182(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_183(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_184(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_185(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_186(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_187(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_188(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_189(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_190(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_191(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_192(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_193(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_194(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_195(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_196(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_197(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_198(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_199(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_200(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_201(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_202(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_203(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_204(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_205(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_206(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_207(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_208(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_209(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_210(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_211(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_212(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_213(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_214(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_215(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_216(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_217(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_218(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_219(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_220(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_221(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_222(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_223(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_224(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_225(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_226(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_227(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_228(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_229(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_230(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_231(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_232(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_233(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_234(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_235(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_236(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_237(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_238(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_239(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_240(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_241(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_242(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_243(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_244(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_245(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_246(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_247(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_248(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_249(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_250(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_251(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_252(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_253(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_254(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_255(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_256(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+#
+# endif
diff --git a/boost/boost/preprocessor/config/config.hpp b/boost/boost/preprocessor/config/config.hpp
new file mode 100644 (file)
index 0000000..5e5925d
--- /dev/null
@@ -0,0 +1,46 @@
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONFIG_CONFIG_HPP
+# define BOOST_PREPROCESSOR_CONFIG_CONFIG_HPP
+#
+# /* BOOST_PP_CONFIG_FLAGS */
+#
+# define BOOST_PP_CONFIG_STRICT() 0x0001
+# define BOOST_PP_CONFIG_IDEAL() 0x0002
+#
+# define BOOST_PP_CONFIG_MSVC() 0x0004
+# define BOOST_PP_CONFIG_MWCC() 0x0008
+# define BOOST_PP_CONFIG_BCC() 0x0010
+# define BOOST_PP_CONFIG_EDG() 0x0020
+#
+# ifndef BOOST_PP_CONFIG_FLAGS
+#    if defined(__EDG__) || defined(__EDG_VERSION__)
+#        define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_EDG() | BOOST_PP_CONFIG_STRICT())
+#    elif defined(__MWERKS__)
+#        define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MWCC())
+#    elif defined(__BORLANDC__) || defined(__IBMC__) || defined(__IBMCPP__)
+#        define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_BCC())
+#    elif defined(_MSC_VER)
+#        define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC())
+#    else
+#        define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
+#    endif
+# endif
+#
+# /* BOOST_PP_CONFIG_EXTENDED_LINE_INFO */
+#
+# ifndef BOOST_PP_CONFIG_EXTENDED_LINE_INFO
+#    define BOOST_PP_CONFIG_EXTENDED_LINE_INFO 0
+# endif
+#
+# endif
diff --git a/boost/boost/preprocessor/control/expr_iif.hpp b/boost/boost/preprocessor/control/expr_iif.hpp
new file mode 100644 (file)
index 0000000..f69b957
--- /dev/null
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_EXPR_IIF_HPP
+# define BOOST_PREPROCESSOR_CONTROL_EXPR_IIF_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_EXPR_IIF */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_EXPR_IIF(bit, expr) BOOST_PP_EXPR_IIF_I(bit, expr)
+# else
+#    define BOOST_PP_EXPR_IIF(bit, expr) BOOST_PP_EXPR_IIF_OO((bit, expr))
+#    define BOOST_PP_EXPR_IIF_OO(par) BOOST_PP_EXPR_IIF_I ## par
+# endif
+#
+# define BOOST_PP_EXPR_IIF_I(bit, expr) BOOST_PP_EXPR_IIF_ ## bit(expr)
+#
+# define BOOST_PP_EXPR_IIF_0(expr)
+# define BOOST_PP_EXPR_IIF_1(expr) expr
+#
+# endif
diff --git a/boost/boost/preprocessor/control/iif.hpp b/boost/boost/preprocessor/control/iif.hpp
new file mode 100644 (file)
index 0000000..d8b2f3d
--- /dev/null
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_IIF_HPP
+# define BOOST_PREPROCESSOR_CONTROL_IIF_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_IIF(bit, t, f) BOOST_PP_IIF_I(bit, t, f)
+# else
+#    define BOOST_PP_IIF(bit, t, f) BOOST_PP_IIF_OO((bit, t, f))
+#    define BOOST_PP_IIF_OO(par) BOOST_PP_IIF_I ## par
+# endif
+#
+# define BOOST_PP_IIF_I(bit, t, f) BOOST_PP_IIF_ ## bit(t, f)
+#
+# define BOOST_PP_IIF_0(t, f) f
+# define BOOST_PP_IIF_1(t, f) t
+#
+# endif
diff --git a/boost/boost/preprocessor/debug/error.hpp b/boost/boost/preprocessor/debug/error.hpp
new file mode 100644 (file)
index 0000000..ca7d398
--- /dev/null
@@ -0,0 +1,31 @@
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DEBUG_ERROR_HPP
+# define BOOST_PREPROCESSOR_DEBUG_ERROR_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_ERROR */
+#
+# if BOOST_PP_CONFIG_ERRORS
+#    define BOOST_PP_ERROR(code) BOOST_PP_CAT(BOOST_PP_ERROR_, code)
+# endif
+#
+# define BOOST_PP_ERROR_0x0000 BOOST_PP_ERROR(0x0000, BOOST_PP_INDEX_OUT_OF_BOUNDS)
+# define BOOST_PP_ERROR_0x0001 BOOST_PP_ERROR(0x0001, BOOST_PP_WHILE_OVERFLOW)
+# define BOOST_PP_ERROR_0x0002 BOOST_PP_ERROR(0x0002, BOOST_PP_FOR_OVERFLOW)
+# define BOOST_PP_ERROR_0x0003 BOOST_PP_ERROR(0x0003, BOOST_PP_REPEAT_OVERFLOW)
+# define BOOST_PP_ERROR_0x0004 BOOST_PP_ERROR(0x0004, BOOST_PP_FOLD_OVERFLOW)
+#
+# endif
index f4145225c23a4069edeae0605580b13b786b3655..87b724744c351748f9fcb90b93c0f03dc1e4fa00 100644 (file)
-#ifndef BOOST_PREPROCESSOR_DEC_HPP
-#define BOOST_PREPROCESSOR_DEC_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/detail/cat.hpp>
-
-/** <p>Decrements <code>X</code> expanding to a single token.</p>
-
-<p>For example, <code>BOOST_PP_DEC(3)</code> expands to <code>2</code> (a
-single token).</p>
-
-<p>BOOST_PP_DEC() uses saturation arithmetic. Decrementing 0 yeilds a 0.</p>
-
-<p>Only decimal integer literals in the range [0,BOOST_PP_LIMIT_MAG] are
-supported.</p>
-*/
-#define BOOST_PP_DEC(X) BOOST_PP_DETAIL_CAT2(BOOST_PP_DEC,X)
-
-#define BOOST_PP_DEC0 0
-#define BOOST_PP_DEC1 0
-#define BOOST_PP_DEC2 1
-#define BOOST_PP_DEC3 2
-#define BOOST_PP_DEC4 3
-#define BOOST_PP_DEC5 4
-#define BOOST_PP_DEC6 5
-#define BOOST_PP_DEC7 6
-#define BOOST_PP_DEC8 7
-#define BOOST_PP_DEC9 8
-#define BOOST_PP_DEC10 9
-#define BOOST_PP_DEC11 10
-#define BOOST_PP_DEC12 11
-#define BOOST_PP_DEC13 12
-#define BOOST_PP_DEC14 13
-#define BOOST_PP_DEC15 14
-#define BOOST_PP_DEC16 15
-#define BOOST_PP_DEC17 16
-#define BOOST_PP_DEC18 17
-#define BOOST_PP_DEC19 18
-#define BOOST_PP_DEC20 19
-#define BOOST_PP_DEC21 20
-#define BOOST_PP_DEC22 21
-#define BOOST_PP_DEC23 22
-#define BOOST_PP_DEC24 23
-#define BOOST_PP_DEC25 24
-#define BOOST_PP_DEC26 25
-#define BOOST_PP_DEC27 26
-#define BOOST_PP_DEC28 27
-#define BOOST_PP_DEC29 28
-#define BOOST_PP_DEC30 29
-#define BOOST_PP_DEC31 30
-#define BOOST_PP_DEC32 31
-#define BOOST_PP_DEC33 32
-#define BOOST_PP_DEC34 33
-#define BOOST_PP_DEC35 34
-#define BOOST_PP_DEC36 35
-#define BOOST_PP_DEC37 36
-#define BOOST_PP_DEC38 37
-#define BOOST_PP_DEC39 38
-#define BOOST_PP_DEC40 39
-#define BOOST_PP_DEC41 40
-#define BOOST_PP_DEC42 41
-#define BOOST_PP_DEC43 42
-#define BOOST_PP_DEC44 43
-#define BOOST_PP_DEC45 44
-#define BOOST_PP_DEC46 45
-#define BOOST_PP_DEC47 46
-#define BOOST_PP_DEC48 47
-#define BOOST_PP_DEC49 48
-#define BOOST_PP_DEC50 49
-#define BOOST_PP_DEC51 50
-#define BOOST_PP_DEC52 51
-#define BOOST_PP_DEC53 52
-#define BOOST_PP_DEC54 53
-#define BOOST_PP_DEC55 54
-#define BOOST_PP_DEC56 55
-#define BOOST_PP_DEC57 56
-#define BOOST_PP_DEC58 57
-#define BOOST_PP_DEC59 58
-#define BOOST_PP_DEC60 59
-#define BOOST_PP_DEC61 60
-#define BOOST_PP_DEC62 61
-#define BOOST_PP_DEC63 62
-#define BOOST_PP_DEC64 63
-#define BOOST_PP_DEC65 64
-#define BOOST_PP_DEC66 65
-#define BOOST_PP_DEC67 66
-#define BOOST_PP_DEC68 67
-#define BOOST_PP_DEC69 68
-#define BOOST_PP_DEC70 69
-#define BOOST_PP_DEC71 70
-#define BOOST_PP_DEC72 71
-#define BOOST_PP_DEC73 72
-#define BOOST_PP_DEC74 73
-#define BOOST_PP_DEC75 74
-#define BOOST_PP_DEC76 75
-#define BOOST_PP_DEC77 76
-#define BOOST_PP_DEC78 77
-#define BOOST_PP_DEC79 78
-#define BOOST_PP_DEC80 79
-#define BOOST_PP_DEC81 80
-#define BOOST_PP_DEC82 81
-#define BOOST_PP_DEC83 82
-#define BOOST_PP_DEC84 83
-#define BOOST_PP_DEC85 84
-#define BOOST_PP_DEC86 85
-#define BOOST_PP_DEC87 86
-#define BOOST_PP_DEC88 87
-#define BOOST_PP_DEC89 88
-#define BOOST_PP_DEC90 89
-#define BOOST_PP_DEC91 90
-#define BOOST_PP_DEC92 91
-#define BOOST_PP_DEC93 92
-#define BOOST_PP_DEC94 93
-#define BOOST_PP_DEC95 94
-#define BOOST_PP_DEC96 95
-#define BOOST_PP_DEC97 96
-#define BOOST_PP_DEC98 97
-#define BOOST_PP_DEC99 98
-#define BOOST_PP_DEC100 99
-#define BOOST_PP_DEC101 100
-#define BOOST_PP_DEC102 101
-#define BOOST_PP_DEC103 102
-#define BOOST_PP_DEC104 103
-#define BOOST_PP_DEC105 104
-#define BOOST_PP_DEC106 105
-#define BOOST_PP_DEC107 106
-#define BOOST_PP_DEC108 107
-#define BOOST_PP_DEC109 108
-#define BOOST_PP_DEC110 109
-#define BOOST_PP_DEC111 110
-#define BOOST_PP_DEC112 111
-#define BOOST_PP_DEC113 112
-#define BOOST_PP_DEC114 113
-#define BOOST_PP_DEC115 114
-#define BOOST_PP_DEC116 115
-#define BOOST_PP_DEC117 116
-#define BOOST_PP_DEC118 117
-#define BOOST_PP_DEC119 118
-#define BOOST_PP_DEC120 119
-#define BOOST_PP_DEC121 120
-#define BOOST_PP_DEC122 121
-#define BOOST_PP_DEC123 122
-#define BOOST_PP_DEC124 123
-#define BOOST_PP_DEC125 124
-#define BOOST_PP_DEC126 125
-#define BOOST_PP_DEC127 126
-#define BOOST_PP_DEC128 127
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DEC_HPP
+# define BOOST_PREPROCESSOR_DEC_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+#
+# endif
index c82dc1a3d157d17cc2e5f1cfe1dea8ba2be2f031..0f13e7b9672369187a55c57eb9bf35e32e0cf179 100644 (file)
-#ifndef BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
-#define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
-
-/* Copyright (C) 2002 Vesa Karvonen
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * Based on an original idea by Paul Mensonides this header defines macros
- * for the definition of automatically recursive macros.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/* Identity macro for auto rec support. */
-#define BOOST_PP_AUTO_REC_ID(X) X
-
-/* Catenation macros for auto rec support. */
-#define BOOST_PP_AUTO_REC_CAT0(X,Y) BOOST_PP_AUTO_REC_DELAY_CAT0(X,Y)
-#define BOOST_PP_AUTO_REC_CAT1(X,Y) BOOST_PP_AUTO_REC_DELAY_CAT1(X,Y)
-#define BOOST_PP_AUTO_REC_CAT2(X,Y) BOOST_PP_AUTO_REC_DELAY_CAT2(X,Y)
-#define BOOST_PP_AUTO_REC_CAT3(X,Y) BOOST_PP_AUTO_REC_DELAY_CAT3(X,Y)
-#define BOOST_PP_AUTO_REC_CAT4(X,Y) BOOST_PP_AUTO_REC_DELAY_CAT4(X,Y)
-#define BOOST_PP_AUTO_REC_CAT5(X,Y) BOOST_PP_AUTO_REC_DELAY_CAT5(X,Y)
-#define BOOST_PP_AUTO_REC_CAT6(X,Y) BOOST_PP_AUTO_REC_DELAY_CAT6(X,Y)
-#define BOOST_PP_AUTO_REC_CAT7(X,Y) BOOST_PP_AUTO_REC_DELAY_CAT7(X,Y)
-#define BOOST_PP_AUTO_REC_CAT8(X,Y) BOOST_PP_AUTO_REC_DELAY_CAT8(X,Y)
-#define BOOST_PP_AUTO_REC_CAT9(X,Y) BOOST_PP_AUTO_REC_DELAY_CAT9(X,Y)
-
-#define BOOST_PP_AUTO_REC_DELAY_CAT0(X,Y) BOOST_PP_AUTO_REC_DO_CAT0(X,Y)
-#define BOOST_PP_AUTO_REC_DELAY_CAT1(X,Y) BOOST_PP_AUTO_REC_DO_CAT1(X,Y)
-#define BOOST_PP_AUTO_REC_DELAY_CAT2(X,Y) BOOST_PP_AUTO_REC_DO_CAT2(X,Y)
-#define BOOST_PP_AUTO_REC_DELAY_CAT3(X,Y) BOOST_PP_AUTO_REC_DO_CAT3(X,Y)
-#define BOOST_PP_AUTO_REC_DELAY_CAT4(X,Y) BOOST_PP_AUTO_REC_DO_CAT4(X,Y)
-#define BOOST_PP_AUTO_REC_DELAY_CAT5(X,Y) BOOST_PP_AUTO_REC_DO_CAT5(X,Y)
-#define BOOST_PP_AUTO_REC_DELAY_CAT6(X,Y) BOOST_PP_AUTO_REC_DO_CAT6(X,Y)
-#define BOOST_PP_AUTO_REC_DELAY_CAT7(X,Y) BOOST_PP_AUTO_REC_DO_CAT7(X,Y)
-#define BOOST_PP_AUTO_REC_DELAY_CAT8(X,Y) BOOST_PP_AUTO_REC_DO_CAT8(X,Y)
-#define BOOST_PP_AUTO_REC_DELAY_CAT9(X,Y) BOOST_PP_AUTO_REC_DO_CAT9(X,Y)
-
-#define BOOST_PP_AUTO_REC_DO_CAT0(X,Y) X##Y
-#define BOOST_PP_AUTO_REC_DO_CAT1(X,Y) X##Y
-#define BOOST_PP_AUTO_REC_DO_CAT2(X,Y) X##Y
-#define BOOST_PP_AUTO_REC_DO_CAT3(X,Y) X##Y
-#define BOOST_PP_AUTO_REC_DO_CAT4(X,Y) X##Y
-#define BOOST_PP_AUTO_REC_DO_CAT5(X,Y) X##Y
-#define BOOST_PP_AUTO_REC_DO_CAT6(X,Y) X##Y
-#define BOOST_PP_AUTO_REC_DO_CAT7(X,Y) X##Y
-#define BOOST_PP_AUTO_REC_DO_CAT8(X,Y) X##Y
-#define BOOST_PP_AUTO_REC_DO_CAT9(X,Y) X##Y
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
+# define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
+#
+# //include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+#
+# /* BOOST_PP_AUTO_REC */
+#
+# define BOOST_PP_AUTO_REC(pred, n) BOOST_PP_NODE_ENTRY_ ## n(pred)
+#
+# define BOOST_PP_NODE_ENTRY_256(p) BOOST_PP_NODE_128(p)(p)(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_128(p) BOOST_PP_NODE_64(p)(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_64(p) BOOST_PP_NODE_32(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_32(p) BOOST_PP_NODE_16(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_16(p) BOOST_PP_NODE_8(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_8(p) BOOST_PP_NODE_4(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_4(p) BOOST_PP_NODE_2(p)(p)
+# define BOOST_PP_NODE_ENTRY_2(p) BOOST_PP_NODE_1(p)
+#
+# define BOOST_PP_NODE_128(p) BOOST_PP_IIF(p(128), BOOST_PP_NODE_64, BOOST_PP_NODE_192)
+#    define BOOST_PP_NODE_64(p) BOOST_PP_IIF(p(64), BOOST_PP_NODE_32, BOOST_PP_NODE_96)
+#        define BOOST_PP_NODE_32(p) BOOST_PP_IIF(p(32), BOOST_PP_NODE_16, BOOST_PP_NODE_48)
+#            define BOOST_PP_NODE_16(p) BOOST_PP_IIF(p(16), BOOST_PP_NODE_8, BOOST_PP_NODE_24)
+#                define BOOST_PP_NODE_8(p) BOOST_PP_IIF(p(8), BOOST_PP_NODE_4, BOOST_PP_NODE_12)
+#                    define BOOST_PP_NODE_4(p) BOOST_PP_IIF(p(4), BOOST_PP_NODE_2, BOOST_PP_NODE_6)
+#                        define BOOST_PP_NODE_2(p) BOOST_PP_IIF(p(2), BOOST_PP_NODE_1, BOOST_PP_NODE_3)
+#                            define BOOST_PP_NODE_1(p) BOOST_PP_IIF(p(1), 1, 2)
+#                            define BOOST_PP_NODE_3(p) BOOST_PP_IIF(p(3), 3, 4)
+#                        define BOOST_PP_NODE_6(p) BOOST_PP_IIF(p(6), BOOST_PP_NODE_5, BOOST_PP_NODE_7)
+#                            define BOOST_PP_NODE_5(p) BOOST_PP_IIF(p(5), 5, 6)
+#                            define BOOST_PP_NODE_7(p) BOOST_PP_IIF(p(7), 7, 8)
+#                    define BOOST_PP_NODE_12(p) BOOST_PP_IIF(p(12), BOOST_PP_NODE_10, BOOST_PP_NODE_14)
+#                        define BOOST_PP_NODE_10(p) BOOST_PP_IIF(p(10), BOOST_PP_NODE_9, BOOST_PP_NODE_11)
+#                            define BOOST_PP_NODE_9(p) BOOST_PP_IIF(p(9), 9, 10)
+#                            define BOOST_PP_NODE_11(p) BOOST_PP_IIF(p(11), 11, 12)
+#                        define BOOST_PP_NODE_14(p) BOOST_PP_IIF(p(14), BOOST_PP_NODE_13, BOOST_PP_NODE_15)
+#                            define BOOST_PP_NODE_13(p) BOOST_PP_IIF(p(13), 13, 14)
+#                            define BOOST_PP_NODE_15(p) BOOST_PP_IIF(p(15), 15, 16)
+#                define BOOST_PP_NODE_24(p) BOOST_PP_IIF(p(24), BOOST_PP_NODE_20, BOOST_PP_NODE_28)
+#                    define BOOST_PP_NODE_20(p) BOOST_PP_IIF(p(20), BOOST_PP_NODE_18, BOOST_PP_NODE_22)
+#                        define BOOST_PP_NODE_18(p) BOOST_PP_IIF(p(18), BOOST_PP_NODE_17, BOOST_PP_NODE_19)
+#                            define BOOST_PP_NODE_17(p) BOOST_PP_IIF(p(17), 17, 18)
+#                            define BOOST_PP_NODE_19(p) BOOST_PP_IIF(p(19), 19, 20)
+#                        define BOOST_PP_NODE_22(p) BOOST_PP_IIF(p(22), BOOST_PP_NODE_21, BOOST_PP_NODE_23)
+#                            define BOOST_PP_NODE_21(p) BOOST_PP_IIF(p(21), 21, 22)
+#                            define BOOST_PP_NODE_23(p) BOOST_PP_IIF(p(23), 23, 24)
+#                    define BOOST_PP_NODE_28(p) BOOST_PP_IIF(p(28), BOOST_PP_NODE_26, BOOST_PP_NODE_30)
+#                        define BOOST_PP_NODE_26(p) BOOST_PP_IIF(p(26), BOOST_PP_NODE_25, BOOST_PP_NODE_27)
+#                            define BOOST_PP_NODE_25(p) BOOST_PP_IIF(p(25), 25, 26)
+#                            define BOOST_PP_NODE_27(p) BOOST_PP_IIF(p(27), 27, 28)
+#                        define BOOST_PP_NODE_30(p) BOOST_PP_IIF(p(30), BOOST_PP_NODE_29, BOOST_PP_NODE_31)
+#                            define BOOST_PP_NODE_29(p) BOOST_PP_IIF(p(29), 29, 30)
+#                            define BOOST_PP_NODE_31(p) BOOST_PP_IIF(p(31), 31, 32)
+#            define BOOST_PP_NODE_48(p) BOOST_PP_IIF(p(48), BOOST_PP_NODE_40, BOOST_PP_NODE_56)
+#                define BOOST_PP_NODE_40(p) BOOST_PP_IIF(p(40), BOOST_PP_NODE_36, BOOST_PP_NODE_44)
+#                    define BOOST_PP_NODE_36(p) BOOST_PP_IIF(p(36), BOOST_PP_NODE_34, BOOST_PP_NODE_38)
+#                        define BOOST_PP_NODE_34(p) BOOST_PP_IIF(p(34), BOOST_PP_NODE_33, BOOST_PP_NODE_35)
+#                            define BOOST_PP_NODE_33(p) BOOST_PP_IIF(p(33), 33, 34)
+#                            define BOOST_PP_NODE_35(p) BOOST_PP_IIF(p(35), 35, 36)
+#                        define BOOST_PP_NODE_38(p) BOOST_PP_IIF(p(38), BOOST_PP_NODE_37, BOOST_PP_NODE_39)
+#                            define BOOST_PP_NODE_37(p) BOOST_PP_IIF(p(37), 37, 38)
+#                            define BOOST_PP_NODE_39(p) BOOST_PP_IIF(p(39), 39, 40)
+#                    define BOOST_PP_NODE_44(p) BOOST_PP_IIF(p(44), BOOST_PP_NODE_42, BOOST_PP_NODE_46)
+#                        define BOOST_PP_NODE_42(p) BOOST_PP_IIF(p(42), BOOST_PP_NODE_41, BOOST_PP_NODE_43)
+#                            define BOOST_PP_NODE_41(p) BOOST_PP_IIF(p(41), 41, 42)
+#                            define BOOST_PP_NODE_43(p) BOOST_PP_IIF(p(43), 43, 44)
+#                        define BOOST_PP_NODE_46(p) BOOST_PP_IIF(p(46), BOOST_PP_NODE_45, BOOST_PP_NODE_47)
+#                            define BOOST_PP_NODE_45(p) BOOST_PP_IIF(p(45), 45, 46)
+#                            define BOOST_PP_NODE_47(p) BOOST_PP_IIF(p(47), 47, 48)
+#                define BOOST_PP_NODE_56(p) BOOST_PP_IIF(p(56), BOOST_PP_NODE_52, BOOST_PP_NODE_60)
+#                    define BOOST_PP_NODE_52(p) BOOST_PP_IIF(p(52), BOOST_PP_NODE_50, BOOST_PP_NODE_54)
+#                        define BOOST_PP_NODE_50(p) BOOST_PP_IIF(p(50), BOOST_PP_NODE_49, BOOST_PP_NODE_51)
+#                            define BOOST_PP_NODE_49(p) BOOST_PP_IIF(p(49), 49, 50)
+#                            define BOOST_PP_NODE_51(p) BOOST_PP_IIF(p(51), 51, 52)
+#                        define BOOST_PP_NODE_54(p) BOOST_PP_IIF(p(54), BOOST_PP_NODE_53, BOOST_PP_NODE_55)
+#                            define BOOST_PP_NODE_53(p) BOOST_PP_IIF(p(53), 53, 54)
+#                            define BOOST_PP_NODE_55(p) BOOST_PP_IIF(p(55), 55, 56)
+#                    define BOOST_PP_NODE_60(p) BOOST_PP_IIF(p(60), BOOST_PP_NODE_58, BOOST_PP_NODE_62)
+#                        define BOOST_PP_NODE_58(p) BOOST_PP_IIF(p(58), BOOST_PP_NODE_57, BOOST_PP_NODE_59)
+#                            define BOOST_PP_NODE_57(p) BOOST_PP_IIF(p(57), 57, 58)
+#                            define BOOST_PP_NODE_59(p) BOOST_PP_IIF(p(59), 59, 60)
+#                        define BOOST_PP_NODE_62(p) BOOST_PP_IIF(p(62), BOOST_PP_NODE_61, BOOST_PP_NODE_63)
+#                            define BOOST_PP_NODE_61(p) BOOST_PP_IIF(p(61), 61, 62)
+#                            define BOOST_PP_NODE_63(p) BOOST_PP_IIF(p(63), 63, 64)
+#        define BOOST_PP_NODE_96(p) BOOST_PP_IIF(p(96), BOOST_PP_NODE_80, BOOST_PP_NODE_112)
+#            define BOOST_PP_NODE_80(p) BOOST_PP_IIF(p(80), BOOST_PP_NODE_72, BOOST_PP_NODE_88)
+#                define BOOST_PP_NODE_72(p) BOOST_PP_IIF(p(72), BOOST_PP_NODE_68, BOOST_PP_NODE_76)
+#                    define BOOST_PP_NODE_68(p) BOOST_PP_IIF(p(68), BOOST_PP_NODE_66, BOOST_PP_NODE_70)
+#                        define BOOST_PP_NODE_66(p) BOOST_PP_IIF(p(66), BOOST_PP_NODE_65, BOOST_PP_NODE_67)
+#                            define BOOST_PP_NODE_65(p) BOOST_PP_IIF(p(65), 65, 66)
+#                            define BOOST_PP_NODE_67(p) BOOST_PP_IIF(p(67), 67, 68)
+#                        define BOOST_PP_NODE_70(p) BOOST_PP_IIF(p(70), BOOST_PP_NODE_69, BOOST_PP_NODE_71)
+#                            define BOOST_PP_NODE_69(p) BOOST_PP_IIF(p(69), 69, 70)
+#                            define BOOST_PP_NODE_71(p) BOOST_PP_IIF(p(71), 71, 72)
+#                    define BOOST_PP_NODE_76(p) BOOST_PP_IIF(p(76), BOOST_PP_NODE_74, BOOST_PP_NODE_78)
+#                        define BOOST_PP_NODE_74(p) BOOST_PP_IIF(p(74), BOOST_PP_NODE_73, BOOST_PP_NODE_75)
+#                            define BOOST_PP_NODE_73(p) BOOST_PP_IIF(p(73), 73, 74)
+#                            define BOOST_PP_NODE_75(p) BOOST_PP_IIF(p(75), 75, 76)
+#                        define BOOST_PP_NODE_78(p) BOOST_PP_IIF(p(78), BOOST_PP_NODE_77, BOOST_PP_NODE_79)
+#                            define BOOST_PP_NODE_77(p) BOOST_PP_IIF(p(77), 77, 78)
+#                            define BOOST_PP_NODE_79(p) BOOST_PP_IIF(p(79), 79, 80)
+#                define BOOST_PP_NODE_88(p) BOOST_PP_IIF(p(88), BOOST_PP_NODE_84, BOOST_PP_NODE_92)
+#                    define BOOST_PP_NODE_84(p) BOOST_PP_IIF(p(84), BOOST_PP_NODE_82, BOOST_PP_NODE_86)
+#                        define BOOST_PP_NODE_82(p) BOOST_PP_IIF(p(82), BOOST_PP_NODE_81, BOOST_PP_NODE_83)
+#                            define BOOST_PP_NODE_81(p) BOOST_PP_IIF(p(81), 81, 82)
+#                            define BOOST_PP_NODE_83(p) BOOST_PP_IIF(p(83), 83, 84)
+#                        define BOOST_PP_NODE_86(p) BOOST_PP_IIF(p(86), BOOST_PP_NODE_85, BOOST_PP_NODE_87)
+#                            define BOOST_PP_NODE_85(p) BOOST_PP_IIF(p(85), 85, 86)
+#                            define BOOST_PP_NODE_87(p) BOOST_PP_IIF(p(87), 87, 88)
+#                    define BOOST_PP_NODE_92(p) BOOST_PP_IIF(p(92), BOOST_PP_NODE_90, BOOST_PP_NODE_94)
+#                        define BOOST_PP_NODE_90(p) BOOST_PP_IIF(p(90), BOOST_PP_NODE_89, BOOST_PP_NODE_91)
+#                            define BOOST_PP_NODE_89(p) BOOST_PP_IIF(p(89), 89, 90)
+#                            define BOOST_PP_NODE_91(p) BOOST_PP_IIF(p(91), 91, 92)
+#                        define BOOST_PP_NODE_94(p) BOOST_PP_IIF(p(94), BOOST_PP_NODE_93, BOOST_PP_NODE_95)
+#                            define BOOST_PP_NODE_93(p) BOOST_PP_IIF(p(93), 93, 94)
+#                            define BOOST_PP_NODE_95(p) BOOST_PP_IIF(p(95), 95, 96)
+#            define BOOST_PP_NODE_112(p) BOOST_PP_IIF(p(112), BOOST_PP_NODE_104, BOOST_PP_NODE_120)
+#                define BOOST_PP_NODE_104(p) BOOST_PP_IIF(p(104), BOOST_PP_NODE_100, BOOST_PP_NODE_108)
+#                    define BOOST_PP_NODE_100(p) BOOST_PP_IIF(p(100), BOOST_PP_NODE_98, BOOST_PP_NODE_102)
+#                        define BOOST_PP_NODE_98(p) BOOST_PP_IIF(p(98), BOOST_PP_NODE_97, BOOST_PP_NODE_99)
+#                            define BOOST_PP_NODE_97(p) BOOST_PP_IIF(p(97), 97, 98)
+#                            define BOOST_PP_NODE_99(p) BOOST_PP_IIF(p(99), 99, 100)
+#                        define BOOST_PP_NODE_102(p) BOOST_PP_IIF(p(102), BOOST_PP_NODE_101, BOOST_PP_NODE_103)
+#                            define BOOST_PP_NODE_101(p) BOOST_PP_IIF(p(101), 101, 102)
+#                            define BOOST_PP_NODE_103(p) BOOST_PP_IIF(p(103), 103, 104)
+#                    define BOOST_PP_NODE_108(p) BOOST_PP_IIF(p(108), BOOST_PP_NODE_106, BOOST_PP_NODE_110)
+#                        define BOOST_PP_NODE_106(p) BOOST_PP_IIF(p(106), BOOST_PP_NODE_105, BOOST_PP_NODE_107)
+#                            define BOOST_PP_NODE_105(p) BOOST_PP_IIF(p(105), 105, 106)
+#                            define BOOST_PP_NODE_107(p) BOOST_PP_IIF(p(107), 107, 108)
+#                        define BOOST_PP_NODE_110(p) BOOST_PP_IIF(p(110), BOOST_PP_NODE_109, BOOST_PP_NODE_111)
+#                            define BOOST_PP_NODE_109(p) BOOST_PP_IIF(p(109), 109, 110)
+#                            define BOOST_PP_NODE_111(p) BOOST_PP_IIF(p(111), 111, 112)
+#                define BOOST_PP_NODE_120(p) BOOST_PP_IIF(p(120), BOOST_PP_NODE_116, BOOST_PP_NODE_124)
+#                    define BOOST_PP_NODE_116(p) BOOST_PP_IIF(p(116), BOOST_PP_NODE_114, BOOST_PP_NODE_118)
+#                        define BOOST_PP_NODE_114(p) BOOST_PP_IIF(p(114), BOOST_PP_NODE_113, BOOST_PP_NODE_115)
+#                            define BOOST_PP_NODE_113(p) BOOST_PP_IIF(p(113), 113, 114)
+#                            define BOOST_PP_NODE_115(p) BOOST_PP_IIF(p(115), 115, 116)
+#                        define BOOST_PP_NODE_118(p) BOOST_PP_IIF(p(118), BOOST_PP_NODE_117, BOOST_PP_NODE_119)
+#                            define BOOST_PP_NODE_117(p) BOOST_PP_IIF(p(117), 117, 118)
+#                            define BOOST_PP_NODE_119(p) BOOST_PP_IIF(p(119), 119, 120)
+#                    define BOOST_PP_NODE_124(p) BOOST_PP_IIF(p(124), BOOST_PP_NODE_122, BOOST_PP_NODE_126)
+#                        define BOOST_PP_NODE_122(p) BOOST_PP_IIF(p(122), BOOST_PP_NODE_121, BOOST_PP_NODE_123)
+#                            define BOOST_PP_NODE_121(p) BOOST_PP_IIF(p(121), 121, 122)
+#                            define BOOST_PP_NODE_123(p) BOOST_PP_IIF(p(123), 123, 124)
+#                        define BOOST_PP_NODE_126(p) BOOST_PP_IIF(p(126), BOOST_PP_NODE_125, BOOST_PP_NODE_127)
+#                            define BOOST_PP_NODE_125(p) BOOST_PP_IIF(p(125), 125, 126)
+#                            define BOOST_PP_NODE_127(p) BOOST_PP_IIF(p(127), 127, 128)
+#    define BOOST_PP_NODE_192(p) BOOST_PP_IIF(p(192), BOOST_PP_NODE_160, BOOST_PP_NODE_224)
+#        define BOOST_PP_NODE_160(p) BOOST_PP_IIF(p(160), BOOST_PP_NODE_144, BOOST_PP_NODE_176)
+#            define BOOST_PP_NODE_144(p) BOOST_PP_IIF(p(144), BOOST_PP_NODE_136, BOOST_PP_NODE_152)
+#                define BOOST_PP_NODE_136(p) BOOST_PP_IIF(p(136), BOOST_PP_NODE_132, BOOST_PP_NODE_140)
+#                    define BOOST_PP_NODE_132(p) BOOST_PP_IIF(p(132), BOOST_PP_NODE_130, BOOST_PP_NODE_134)
+#                        define BOOST_PP_NODE_130(p) BOOST_PP_IIF(p(130), BOOST_PP_NODE_129, BOOST_PP_NODE_131)
+#                            define BOOST_PP_NODE_129(p) BOOST_PP_IIF(p(129), 129, 130)
+#                            define BOOST_PP_NODE_131(p) BOOST_PP_IIF(p(131), 131, 132)
+#                        define BOOST_PP_NODE_134(p) BOOST_PP_IIF(p(134), BOOST_PP_NODE_133, BOOST_PP_NODE_135)
+#                            define BOOST_PP_NODE_133(p) BOOST_PP_IIF(p(133), 133, 134)
+#                            define BOOST_PP_NODE_135(p) BOOST_PP_IIF(p(135), 135, 136)
+#                    define BOOST_PP_NODE_140(p) BOOST_PP_IIF(p(140), BOOST_PP_NODE_138, BOOST_PP_NODE_142)
+#                        define BOOST_PP_NODE_138(p) BOOST_PP_IIF(p(138), BOOST_PP_NODE_137, BOOST_PP_NODE_139)
+#                            define BOOST_PP_NODE_137(p) BOOST_PP_IIF(p(137), 137, 138)
+#                            define BOOST_PP_NODE_139(p) BOOST_PP_IIF(p(139), 139, 140)
+#                        define BOOST_PP_NODE_142(p) BOOST_PP_IIF(p(142), BOOST_PP_NODE_141, BOOST_PP_NODE_143)
+#                            define BOOST_PP_NODE_141(p) BOOST_PP_IIF(p(141), 141, 142)
+#                            define BOOST_PP_NODE_143(p) BOOST_PP_IIF(p(143), 143, 144)
+#                define BOOST_PP_NODE_152(p) BOOST_PP_IIF(p(152), BOOST_PP_NODE_148, BOOST_PP_NODE_156)
+#                    define BOOST_PP_NODE_148(p) BOOST_PP_IIF(p(148), BOOST_PP_NODE_146, BOOST_PP_NODE_150)
+#                        define BOOST_PP_NODE_146(p) BOOST_PP_IIF(p(146), BOOST_PP_NODE_145, BOOST_PP_NODE_147)
+#                            define BOOST_PP_NODE_145(p) BOOST_PP_IIF(p(145), 145, 146)
+#                            define BOOST_PP_NODE_147(p) BOOST_PP_IIF(p(147), 147, 148)
+#                        define BOOST_PP_NODE_150(p) BOOST_PP_IIF(p(150), BOOST_PP_NODE_149, BOOST_PP_NODE_151)
+#                            define BOOST_PP_NODE_149(p) BOOST_PP_IIF(p(149), 149, 150)
+#                            define BOOST_PP_NODE_151(p) BOOST_PP_IIF(p(151), 151, 152)
+#                    define BOOST_PP_NODE_156(p) BOOST_PP_IIF(p(156), BOOST_PP_NODE_154, BOOST_PP_NODE_158)
+#                        define BOOST_PP_NODE_154(p) BOOST_PP_IIF(p(154), BOOST_PP_NODE_153, BOOST_PP_NODE_155)
+#                            define BOOST_PP_NODE_153(p) BOOST_PP_IIF(p(153), 153, 154)
+#                            define BOOST_PP_NODE_155(p) BOOST_PP_IIF(p(155), 155, 156)
+#                        define BOOST_PP_NODE_158(p) BOOST_PP_IIF(p(158), BOOST_PP_NODE_157, BOOST_PP_NODE_159)
+#                            define BOOST_PP_NODE_157(p) BOOST_PP_IIF(p(157), 157, 158)
+#                            define BOOST_PP_NODE_159(p) BOOST_PP_IIF(p(159), 159, 160)
+#            define BOOST_PP_NODE_176(p) BOOST_PP_IIF(p(176), BOOST_PP_NODE_168, BOOST_PP_NODE_184)
+#                define BOOST_PP_NODE_168(p) BOOST_PP_IIF(p(168), BOOST_PP_NODE_164, BOOST_PP_NODE_172)
+#                    define BOOST_PP_NODE_164(p) BOOST_PP_IIF(p(164), BOOST_PP_NODE_162, BOOST_PP_NODE_166)
+#                        define BOOST_PP_NODE_162(p) BOOST_PP_IIF(p(162), BOOST_PP_NODE_161, BOOST_PP_NODE_163)
+#                            define BOOST_PP_NODE_161(p) BOOST_PP_IIF(p(161), 161, 162)
+#                            define BOOST_PP_NODE_163(p) BOOST_PP_IIF(p(163), 163, 164)
+#                        define BOOST_PP_NODE_166(p) BOOST_PP_IIF(p(166), BOOST_PP_NODE_165, BOOST_PP_NODE_167)
+#                            define BOOST_PP_NODE_165(p) BOOST_PP_IIF(p(165), 165, 166)
+#                            define BOOST_PP_NODE_167(p) BOOST_PP_IIF(p(167), 167, 168)
+#                    define BOOST_PP_NODE_172(p) BOOST_PP_IIF(p(172), BOOST_PP_NODE_170, BOOST_PP_NODE_174)
+#                        define BOOST_PP_NODE_170(p) BOOST_PP_IIF(p(170), BOOST_PP_NODE_169, BOOST_PP_NODE_171)
+#                            define BOOST_PP_NODE_169(p) BOOST_PP_IIF(p(169), 169, 170)
+#                            define BOOST_PP_NODE_171(p) BOOST_PP_IIF(p(171), 171, 172)
+#                        define BOOST_PP_NODE_174(p) BOOST_PP_IIF(p(174), BOOST_PP_NODE_173, BOOST_PP_NODE_175)
+#                            define BOOST_PP_NODE_173(p) BOOST_PP_IIF(p(173), 173, 174)
+#                            define BOOST_PP_NODE_175(p) BOOST_PP_IIF(p(175), 175, 176)
+#                define BOOST_PP_NODE_184(p) BOOST_PP_IIF(p(184), BOOST_PP_NODE_180, BOOST_PP_NODE_188)
+#                    define BOOST_PP_NODE_180(p) BOOST_PP_IIF(p(180), BOOST_PP_NODE_178, BOOST_PP_NODE_182)
+#                        define BOOST_PP_NODE_178(p) BOOST_PP_IIF(p(178), BOOST_PP_NODE_177, BOOST_PP_NODE_179)
+#                            define BOOST_PP_NODE_177(p) BOOST_PP_IIF(p(177), 177, 178)
+#                            define BOOST_PP_NODE_179(p) BOOST_PP_IIF(p(179), 179, 180)
+#                        define BOOST_PP_NODE_182(p) BOOST_PP_IIF(p(182), BOOST_PP_NODE_181, BOOST_PP_NODE_183)
+#                            define BOOST_PP_NODE_181(p) BOOST_PP_IIF(p(181), 181, 182)
+#                            define BOOST_PP_NODE_183(p) BOOST_PP_IIF(p(183), 183, 184)
+#                    define BOOST_PP_NODE_188(p) BOOST_PP_IIF(p(188), BOOST_PP_NODE_186, BOOST_PP_NODE_190)
+#                        define BOOST_PP_NODE_186(p) BOOST_PP_IIF(p(186), BOOST_PP_NODE_185, BOOST_PP_NODE_187)
+#                            define BOOST_PP_NODE_185(p) BOOST_PP_IIF(p(185), 185, 186)
+#                            define BOOST_PP_NODE_187(p) BOOST_PP_IIF(p(187), 187, 188)
+#                        define BOOST_PP_NODE_190(p) BOOST_PP_IIF(p(190), BOOST_PP_NODE_189, BOOST_PP_NODE_191)
+#                            define BOOST_PP_NODE_189(p) BOOST_PP_IIF(p(189), 189, 190)
+#                            define BOOST_PP_NODE_191(p) BOOST_PP_IIF(p(191), 191, 192)
+#        define BOOST_PP_NODE_224(p) BOOST_PP_IIF(p(224), BOOST_PP_NODE_208, BOOST_PP_NODE_240)
+#            define BOOST_PP_NODE_208(p) BOOST_PP_IIF(p(208), BOOST_PP_NODE_200, BOOST_PP_NODE_216)
+#                define BOOST_PP_NODE_200(p) BOOST_PP_IIF(p(200), BOOST_PP_NODE_196, BOOST_PP_NODE_204)
+#                    define BOOST_PP_NODE_196(p) BOOST_PP_IIF(p(196), BOOST_PP_NODE_194, BOOST_PP_NODE_198)
+#                        define BOOST_PP_NODE_194(p) BOOST_PP_IIF(p(194), BOOST_PP_NODE_193, BOOST_PP_NODE_195)
+#                            define BOOST_PP_NODE_193(p) BOOST_PP_IIF(p(193), 193, 194)
+#                            define BOOST_PP_NODE_195(p) BOOST_PP_IIF(p(195), 195, 196)
+#                        define BOOST_PP_NODE_198(p) BOOST_PP_IIF(p(198), BOOST_PP_NODE_197, BOOST_PP_NODE_199)
+#                            define BOOST_PP_NODE_197(p) BOOST_PP_IIF(p(197), 197, 198)
+#                            define BOOST_PP_NODE_199(p) BOOST_PP_IIF(p(199), 199, 200)
+#                    define BOOST_PP_NODE_204(p) BOOST_PP_IIF(p(204), BOOST_PP_NODE_202, BOOST_PP_NODE_206)
+#                        define BOOST_PP_NODE_202(p) BOOST_PP_IIF(p(202), BOOST_PP_NODE_201, BOOST_PP_NODE_203)
+#                            define BOOST_PP_NODE_201(p) BOOST_PP_IIF(p(201), 201, 202)
+#                            define BOOST_PP_NODE_203(p) BOOST_PP_IIF(p(203), 203, 204)
+#                        define BOOST_PP_NODE_206(p) BOOST_PP_IIF(p(206), BOOST_PP_NODE_205, BOOST_PP_NODE_207)
+#                            define BOOST_PP_NODE_205(p) BOOST_PP_IIF(p(205), 205, 206)
+#                            define BOOST_PP_NODE_207(p) BOOST_PP_IIF(p(207), 207, 208)
+#                define BOOST_PP_NODE_216(p) BOOST_PP_IIF(p(216), BOOST_PP_NODE_212, BOOST_PP_NODE_220)
+#                    define BOOST_PP_NODE_212(p) BOOST_PP_IIF(p(212), BOOST_PP_NODE_210, BOOST_PP_NODE_214)
+#                        define BOOST_PP_NODE_210(p) BOOST_PP_IIF(p(210), BOOST_PP_NODE_209, BOOST_PP_NODE_211)
+#                            define BOOST_PP_NODE_209(p) BOOST_PP_IIF(p(209), 209, 210)
+#                            define BOOST_PP_NODE_211(p) BOOST_PP_IIF(p(211), 211, 212)
+#                        define BOOST_PP_NODE_214(p) BOOST_PP_IIF(p(214), BOOST_PP_NODE_213, BOOST_PP_NODE_215)
+#                            define BOOST_PP_NODE_213(p) BOOST_PP_IIF(p(213), 213, 214)
+#                            define BOOST_PP_NODE_215(p) BOOST_PP_IIF(p(215), 215, 216)
+#                    define BOOST_PP_NODE_220(p) BOOST_PP_IIF(p(220), BOOST_PP_NODE_218, BOOST_PP_NODE_222)
+#                        define BOOST_PP_NODE_218(p) BOOST_PP_IIF(p(218), BOOST_PP_NODE_217, BOOST_PP_NODE_219)
+#                            define BOOST_PP_NODE_217(p) BOOST_PP_IIF(p(217), 217, 218)
+#                            define BOOST_PP_NODE_219(p) BOOST_PP_IIF(p(219), 219, 220)
+#                        define BOOST_PP_NODE_222(p) BOOST_PP_IIF(p(222), BOOST_PP_NODE_221, BOOST_PP_NODE_223)
+#                            define BOOST_PP_NODE_221(p) BOOST_PP_IIF(p(221), 221, 222)
+#                            define BOOST_PP_NODE_223(p) BOOST_PP_IIF(p(223), 223, 224)
+#            define BOOST_PP_NODE_240(p) BOOST_PP_IIF(p(240), BOOST_PP_NODE_232, BOOST_PP_NODE_248)
+#                define BOOST_PP_NODE_232(p) BOOST_PP_IIF(p(232), BOOST_PP_NODE_228, BOOST_PP_NODE_236)
+#                    define BOOST_PP_NODE_228(p) BOOST_PP_IIF(p(228), BOOST_PP_NODE_226, BOOST_PP_NODE_230)
+#                        define BOOST_PP_NODE_226(p) BOOST_PP_IIF(p(226), BOOST_PP_NODE_225, BOOST_PP_NODE_227)
+#                            define BOOST_PP_NODE_225(p) BOOST_PP_IIF(p(225), 225, 226)
+#                            define BOOST_PP_NODE_227(p) BOOST_PP_IIF(p(227), 227, 228)
+#                        define BOOST_PP_NODE_230(p) BOOST_PP_IIF(p(230), BOOST_PP_NODE_229, BOOST_PP_NODE_231)
+#                            define BOOST_PP_NODE_229(p) BOOST_PP_IIF(p(229), 229, 230)
+#                            define BOOST_PP_NODE_231(p) BOOST_PP_IIF(p(231), 231, 232)
+#                    define BOOST_PP_NODE_236(p) BOOST_PP_IIF(p(236), BOOST_PP_NODE_234, BOOST_PP_NODE_238)
+#                        define BOOST_PP_NODE_234(p) BOOST_PP_IIF(p(234), BOOST_PP_NODE_233, BOOST_PP_NODE_235)
+#                            define BOOST_PP_NODE_233(p) BOOST_PP_IIF(p(233), 233, 234)
+#                            define BOOST_PP_NODE_235(p) BOOST_PP_IIF(p(235), 235, 236)
+#                        define BOOST_PP_NODE_238(p) BOOST_PP_IIF(p(238), BOOST_PP_NODE_237, BOOST_PP_NODE_239)
+#                            define BOOST_PP_NODE_237(p) BOOST_PP_IIF(p(237), 237, 238)
+#                            define BOOST_PP_NODE_239(p) BOOST_PP_IIF(p(239), 239, 240)
+#                define BOOST_PP_NODE_248(p) BOOST_PP_IIF(p(248), BOOST_PP_NODE_244, BOOST_PP_NODE_252)
+#                    define BOOST_PP_NODE_244(p) BOOST_PP_IIF(p(244), BOOST_PP_NODE_242, BOOST_PP_NODE_246)
+#                        define BOOST_PP_NODE_242(p) BOOST_PP_IIF(p(242), BOOST_PP_NODE_241, BOOST_PP_NODE_243)
+#                            define BOOST_PP_NODE_241(p) BOOST_PP_IIF(p(241), 241, 242)
+#                            define BOOST_PP_NODE_243(p) BOOST_PP_IIF(p(243), 243, 244)
+#                        define BOOST_PP_NODE_246(p) BOOST_PP_IIF(p(246), BOOST_PP_NODE_245, BOOST_PP_NODE_247)
+#                            define BOOST_PP_NODE_245(p) BOOST_PP_IIF(p(245), 245, 246)
+#                            define BOOST_PP_NODE_247(p) BOOST_PP_IIF(p(247), 247, 248)
+#                    define BOOST_PP_NODE_252(p) BOOST_PP_IIF(p(252), BOOST_PP_NODE_250, BOOST_PP_NODE_254)
+#                        define BOOST_PP_NODE_250(p) BOOST_PP_IIF(p(250), BOOST_PP_NODE_249, BOOST_PP_NODE_251)
+#                            define BOOST_PP_NODE_249(p) BOOST_PP_IIF(p(249), 249, 250)
+#                            define BOOST_PP_NODE_251(p) BOOST_PP_IIF(p(251), 251, 252)
+#                        define BOOST_PP_NODE_254(p) BOOST_PP_IIF(p(254), BOOST_PP_NODE_253, BOOST_PP_NODE_255)
+#                            define BOOST_PP_NODE_253(p) BOOST_PP_IIF(p(253), 253, 254)
+#                            define BOOST_PP_NODE_255(p) BOOST_PP_IIF(p(255), 255, 256)
+#
+# endif
diff --git a/boost/boost/preprocessor/detail/check.hpp b/boost/boost/preprocessor/detail/check.hpp
new file mode 100644 (file)
index 0000000..1a12e26
--- /dev/null
@@ -0,0 +1,43 @@
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DETAIL_CHECK_HPP
+# define BOOST_PREPROCESSOR_DETAIL_CHECK_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_CHECK */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_CHECK(x, type) BOOST_PP_CHECK_D(x, type)
+# else
+#    define BOOST_PP_CHECK(x, type) BOOST_PP_CHECK_OO((x, type))
+#    define BOOST_PP_CHECK_OO(par) BOOST_PP_CHECK_D ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+#    define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_1(BOOST_PP_CAT(BOOST_PP_CHECK_RESULT_, type x))
+#    define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk)
+#    define BOOST_PP_CHECK_2(res, _) res
+# else
+#    define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_1(type x)
+#    define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk)
+#    define BOOST_PP_CHECK_2(chk) BOOST_PP_CHECK_3((BOOST_PP_CHECK_RESULT_ ## chk))
+#    define BOOST_PP_CHECK_3(im) BOOST_PP_CHECK_5(BOOST_PP_CHECK_4 im)
+#    define BOOST_PP_CHECK_4(res, _) res
+#    define BOOST_PP_CHECK_5(res) res
+# endif
+#
+# define BOOST_PP_CHECK_RESULT_1 1, BOOST_PP_NIL
+#
+# endif
diff --git a/boost/boost/preprocessor/detail/is_binary.hpp b/boost/boost/preprocessor/detail/is_binary.hpp
new file mode 100644 (file)
index 0000000..8a2f267
--- /dev/null
@@ -0,0 +1,31 @@
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DETAIL_IS_BINARY_HPP
+# define BOOST_PREPROCESSOR_DETAIL_IS_BINARY_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/detail/check.hpp>
+#
+# /* BOOST_PP_IS_BINARY */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_IS_BINARY(x) BOOST_PP_CHECK(x, BOOST_PP_IS_BINARY_CHECK)
+# else
+#    define BOOST_PP_IS_BINARY(x) BOOST_PP_IS_BINARY_I(x)
+#    define BOOST_PP_IS_BINARY_I(x) BOOST_PP_CHECK(x, BOOST_PP_IS_BINARY_CHECK)
+# endif
+#
+# define BOOST_PP_IS_BINARY_CHECK(a, b) 1
+# define BOOST_PP_CHECK_RESULT_BOOST_PP_IS_BINARY_CHECK 0, BOOST_PP_NIL
+#
+# endif
index f97d5bcaf28d10c6e40091f8122cd37b6c6bf5ac..cbd9ab3dae7243a0fe43c3c46851e6a5c045dd50 100644 (file)
@@ -1,37 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_EMPTY_HPP
-#define BOOST_PREPROCESSOR_EMPTY_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>Expands to nothing.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_IF(0,BOOST_PP_COMMA,BOOST_PP_EMPTY)()
-</pre>
-
-<p>expands to nothing.</p>
-
-<h3>Example</h3>
-<ul>
-  <li><a href="../../example/subscript_layer.cpp">subscript_layer.cpp</a></li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/preprocessor_test.cpp">preprocessor_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_EMPTY()
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_EMPTY_HPP
+# define BOOST_PREPROCESSOR_EMPTY_HPP
+#
+# include <boost/preprocessor/facilities/empty.hpp>
+#
+# endif
index 888e9a35a0931b35b5ced5e27c14a0137bcf9808..411b9055e09f3d49e88f8211354fd524df055e25 100644 (file)
-#ifndef BOOST_PREPROCESSOR_ENUM_HPP
-#define BOOST_PREPROCESSOR_ENUM_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/comma_if.hpp>
-#include <boost/preprocessor/repeat.hpp>
-#include <boost/preprocessor/tuple.hpp>
-
-/** <p>Generates a comma separated list.</p>
-
-<p>In other words, expands to the sequence:</p>
-
-<pre>
-MACRO(0,DATA), MACRO(1,DATA), ..., MACRO(BOOST_PP_DEC(COUNT),DATA)
-</pre>
-
-<p>For example,</p>
-
-<pre>
-#define TYPED_PARAM(INDEX,DATA)\
-  BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2,0,DATA),INDEX) BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2,1,DATA),INDEX)
-BOOST_PP_ENUM(3,TYPED_PARAM,(X,x))
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-X0 x0, X1 x1, X2 x2
-</pre>
-
-<h3>2D and 3D repetition</h3>
-
-<p>BOOST_PP_ENUM() implements automatic recursion. 2D and 3D repetition
-are directly supported.</p>
-
-<h3>See</h3>
-<ul>
-  <li>BOOST_PP_FOR()</li>
-  <li>BOOST_PP_LIMIT_DIM</li>
-  <li>BOOST_PP_LIMIT_MAG</li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/repeat_test.cpp">repeat_test.cpp</a></li>
-</ul>
-*/
-#if 0
-#  define BOOST_PP_ENUM(COUNT,MACRO,DATA)
-#endif
-
-#if !defined(BOOST_NO_COMPILER_CONFIG) && defined(_MSC_VER)
-
-/* This is a workaround for a MSVC++ PP bug. You'll need to add further
- * BOOST_PP_ENUM_AUTO_REC3/4/etc. wrapping as the maximum level of 
- * nesting REPEATS increases
- */
-#  define BOOST_PP_ENUM\
-    BOOST_PP_AUTO_REC_CAT1(BOOST_PP_ENUM_,BOOST_PP_ENUM_AUTO_REC2(\
-      BOOST_PP_ENUM_AUTO_REC1,(BOOST_PP_AUTO_REC_ID,(1))\
-      ))
-
-#  define BOOST_PP_ENUM_BOOST_PP_ENUM_AUTO_REC1(M,P)\
-    BOOST_PP_AUTO_REC_CAT2(BOOST_PP_ENUM_,BOOST_PP_ENUM_AUTO_REC2(BOOST_PP_AUTO_REC_ID,(2)))
-#  define BOOST_PP_ENUM_BOOST_PP_ENUM_AUTO_REC2(M,P)\
-    BOOST_PP_AUTO_REC_CAT3(BOOST_PP_ENUM_,BOOST_PP_ENUM_AUTO_REC3(BOOST_PP_AUTO_REC_ID,(3)))
-#  define BOOST_PP_ENUM_BOOST_PP_ENUM_AUTO_REC3(M,P)\
-    (TOO MANY NESTED REPEATS!)
-
-#  define BOOST_PP_ENUM_AUTO_REC1(M,P) BOOST_PP_EXPAND(M P)
-#  define BOOST_PP_ENUM_AUTO_REC2(M,P) BOOST_PP_EXPAND(M P)
-#  define BOOST_PP_ENUM_AUTO_REC3(M,P) BOOST_PP_EXPAND(M P)
-
-#  define BOOST_PP_ENUM_1(C,M,D) BOOST_PP_ENUM_AUTO_REC1(BOOST_PP_REPEAT,(C,BOOST_PP_ENUM_M1,(M,D)))
-#  define BOOST_PP_ENUM_2(C,M,D) BOOST_PP_ENUM_AUTO_REC2(BOOST_PP_REPEAT,(C,BOOST_PP_ENUM_M2,(M,D)))
-#  define BOOST_PP_ENUM_3(C,M,D) BOOST_PP_ENUM_AUTO_REC3(BOOST_PP_REPEAT,(C,BOOST_PP_ENUM_M3,(M,D)))
-
-#else
-
-#  define BOOST_PP_ENUM\
-    BOOST_PP_AUTO_REC_CAT1(BOOST_PP_ENUM,BOOST_PP_REPEAT_AUTO_REC1(BOOST_PP_AUTO_REC_ID,(1)))
-#  define BOOST_PP_ENUMBOOST_PP_REPEAT_AUTO_REC1(M,P)\
-    BOOST_PP_AUTO_REC_CAT2(BOOST_PP_ENUM,BOOST_PP_REPEAT_AUTO_REC2(BOOST_PP_AUTO_REC_ID,(2)))
-#  define BOOST_PP_ENUMBOOST_PP_REPEAT_AUTO_REC2(M,P)\
-    BOOST_PP_AUTO_REC_CAT3(BOOST_PP_ENUM,BOOST_PP_REPEAT_AUTO_REC3(BOOST_PP_AUTO_REC_ID,(3)))
-#  define BOOST_PP_ENUMBOOST_PP_REPEAT_AUTO_REC3(M,P)\
-    (TOO MANY NESTED REPEATS!)
-
-#  define BOOST_PP_ENUM1(C,M,D) BOOST_PP_REPEAT(C,BOOST_PP_ENUM_M1,(M,D))
-#  define BOOST_PP_ENUM2(C,M,D) BOOST_PP_REPEAT(C,BOOST_PP_ENUM_M2,(M,D))
-#  define BOOST_PP_ENUM3(C,M,D) BOOST_PP_REPEAT(C,BOOST_PP_ENUM_M3,(M,D))
-
-#endif
-
-#define BOOST_PP_ENUM_M1(I,MD) BOOST_PP_COMMA_IF(I) BOOST_PP_TUPLE_ELEM(2,0,MD)(I,BOOST_PP_TUPLE_ELEM(2,1,MD))
-#define BOOST_PP_ENUM_M2(I,MD) BOOST_PP_COMMA_IF(I) BOOST_PP_TUPLE_ELEM(2,0,MD)(I,BOOST_PP_TUPLE_ELEM(2,1,MD))
-#define BOOST_PP_ENUM_M3(I,MD) BOOST_PP_COMMA_IF(I) BOOST_PP_TUPLE_ELEM(2,0,MD)(I,BOOST_PP_TUPLE_ELEM(2,1,MD))
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ENUM_HPP
+# define BOOST_PREPROCESSOR_ENUM_HPP
+#
+# include <boost/preprocessor/repetition/enum.hpp>
+#
+# endif
index 3774f46da2ba93e48f51759be2cd9785f5825186..c0ff593fc8c2020bed5007edc47183a93d2d1f09 100644 (file)
@@ -1,52 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_ENUM_PARAMS_HPP
-#define BOOST_PREPROCESSOR_ENUM_PARAMS_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/enum.hpp>
-
-/** <p>Generates a comma separated list of parameters.</p>
-
-<p>In other words, expands to the sequence:</p>
-
-<pre>
-BOOST_PP_CAT(PARAM,0), BOOST_PP_CAT(PARAM,1), ..., BOOST_PP_CAT(PARAM,BOOST_PP_DEC(COUNT))
-</pre>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_ENUM_PARAMS(3,x)
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-x0, x1, x2
-</pre>
-
-<h3>Uses</h3>
-<ul>
-  <li>BOOST_PP_REPEAT()</li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/repeat_test.cpp">repeat_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_ENUM_PARAMS(COUNT,PARAM) BOOST_PP_ENUM(COUNT,BOOST_PP_ENUM_PARAMS_F,PARAM)
-
-#define BOOST_PP_ENUM_PARAMS_F(I,P) BOOST_PP_CAT(P,I)
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ENUM_PARAMS_HPP
+# define BOOST_PREPROCESSOR_ENUM_PARAMS_HPP
+#
+# include <boost/preprocessor/repetition/enum_params.hpp>
+#
+# endif
index cb1629d9d7e4947add8877dbd0d63c9721909f57..173bf82c35e567c7a49689460ea80c1ed88d6c48 100644 (file)
@@ -1,55 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT_HPP
-#define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/enum.hpp>
-
-/** <p>Generates a comma separated list of parameters with a default.</p>
-
-<p>In other words, expands to the sequence:</p>
-
-<pre>
-BOOST_PP_CAT(PARAM,0) = DEFAULT,
-BOOST_PP_CAT(PARAM,1) = DEFAULT,
-...,
-BOOST_PP_CAT(PARAM,BOOST_PP_DEC(COUNT)) = DEFAULT
-</pre>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(3,x,y)
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-x0 = y, x1 = y, x2 = y
-</pre>
-
-<h3>Uses</h3>
-<ul>
-  <li>BOOST_PP_REPEAT()</li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/repeat_test.cpp">repeat_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(COUNT,PARAM,DEFAULT) BOOST_PP_ENUM(COUNT,BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT_F,(PARAM,DEFAULT))
-
-#define BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT_F(I,PD) BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2,0,PD),I)=BOOST_PP_TUPLE_ELEM(2,1,PD)
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+# define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+#
+# include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#
+# endif
index 68e75a5deec7c872861578cd63ef1dfb800a0347..486a04b10afbb0ae3c9083355756eb5e0f7d95ae 100644 (file)
@@ -1,55 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS_HPP
-#define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/enum.hpp>
-
-/** <p>Generates a comma separated list of parameters with defaults.</p>
-
-<p>In other words, expands to the sequence:</p>
-
-<pre>
-BOOST_PP_CAT(PARAM,0) = BOOST_PP_CAT(DEFAULT,0),
-BOOST_PP_CAT(PARAM,1) = BOOST_PP_CAT(DEFAULT,1),
-...,
-BOOST_PP_CAT(PARAM,BOOST_PP_DEC(COUNT)) = BOOST_PP_CAT(DEFAULT,BOOST_PP_DEC(COUNT))
-</pre>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS(3,x,y)
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-x0 = y0, x1 = y1, x2 = y2
-</pre>
-
-<h3>Uses</h3>
-<ul>
-  <li>BOOST_PP_REPEAT()</li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/repeat_test.cpp">repeat_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS(COUNT,PARAM,DEFAULT) BOOST_PP_ENUM(COUNT,BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS_F,(PARAM,DEFAULT))
-
-#define BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS_F(I,PD) BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2,0,PD),I)=BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2,1,PD),I)
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS_HPP
+# define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS_HPP
+#
+# include <boost/preprocessor/repetition/enum_params_with_defaults.hpp>
+#
+# endif
index f0ba1b4fd4789b55cce3db43f911b0c80be00037..69778a122c2bb838cf5a8fbb5b5e4a0457b73590 100644 (file)
@@ -1,50 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_ENUM_SHIFTED_HPP
-#define BOOST_PREPROCESSOR_ENUM_SHIFTED_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/enum.hpp>
-#include <boost/preprocessor/dec.hpp>
-#include <boost/preprocessor/inc.hpp>
-
-/** <p>Generates a comma separated shifted list.</p>
-
-<p>In other words, expands to the sequence:</p>
-
-<pre>
-MACRO(1,DATA), MACRO(2,DATA), ..., MACRO(BOOST_PP_DEC(COUNT),DATA)
-</pre>
-
-<p>For example,</p>
-
-<pre>
-#define TYPED_PARAM(INDEX,DATA)\
-  BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2,0,DATA),INDEX) BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2,1,DATA),INDEX)
-BOOST_PP_ENUM_SHIFTED(3,TYPED_PARAM,(X,x))
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-X1 x1, X2 x2
-</pre>
-
-<h3>Uses</h3>
-<ul>
-  <li>BOOST_PP_REPEAT()</li>
-</ul>
-*/
-#define BOOST_PP_ENUM_SHIFTED(COUNT,MACRO,DATA) BOOST_PP_ENUM(BOOST_PP_DEC(COUNT),BOOST_PP_ENUM_SHIFTED_F,(MACRO,DATA))
-
-#define BOOST_PP_ENUM_SHIFTED_F(I,MD) BOOST_PP_TUPLE_ELEM(2,0,MD)(BOOST_PP_INC(I),BOOST_PP_TUPLE_ELEM(2,1,MD))
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ENUM_SHIFTED_HPP
+# define BOOST_PREPROCESSOR_ENUM_SHIFTED_HPP
+#
+# include <boost/preprocessor/repetition/enum_shifted.hpp>
+#
+# endif
index 46df958680bfebe4c4f600f4e82901f9de990a7a..472e628c7087a65520aa03e425a029c391a14184 100644 (file)
@@ -1,57 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS_HPP
-#define BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/enum_shifted.hpp>
-
-/** <p>Generates a comma separated list of shifted actual parameters.</p>
-
-<p>In other words, expands to the sequence:</p>
-
-<pre>
-BOOST_PP_CAT(PARAM,1), BOOST_PP_CAT(PARAM,2), ..., BOOST_PP_CAT(PARAM,BOOST_PP_DEC(COUNT))
-</pre>
-<p>For example,</p>
-
-<pre>
-BOOST_PP_ENUM_SHIFTED_PARAMS(3,x)
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-x1, x2
-</pre>
-
-<h3>Uses</h3>
-<ul>
-  <li>BOOST_PP_REPEAT()</li>
-</ul>
-
-<h3>Rationale</h3>
-<ul>
-  <li>This macro facilitates a typical usage of the library. Shifted parameter
-      lists are common in template metaprograms.</li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/repeat_2nd_test.cpp">repeat_2nd_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_ENUM_SHIFTED_PARAMS(COUNT,PARAM) BOOST_PP_ENUM_SHIFTED(COUNT,BOOST_PP_ENUM_SHIFTED_PARAMS_F,PARAM)
-
-#define BOOST_PP_ENUM_SHIFTED_PARAMS_F(I,P) BOOST_PP_CAT(P,I)
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS_HPP
+# define BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS_HPP
+#
+# include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+#
+# endif
index 9f81b509fad2081c8790861828f34748fb86c0dc..ea9dd3f082214cad71f577a79cb3c35b7241b1ad 100644 (file)
@@ -1,20 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_EXPAND_HPP
-#define BOOST_PREPROCESSOR_EXPAND_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/identity.hpp>
-
-/** <p>Essentially macro expands the parameter <code>X</code> twice.</p> */
-#define BOOST_PP_EXPAND(X) X
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_EXPAND_HPP
+# define BOOST_PREPROCESSOR_EXPAND_HPP
+#
+# include <boost/preprocessor/facilities/expand.hpp>
+#
+# endif
index 4bf77cb17b8c097d15c8070b21f740fdc9489683..82026e507cbfa60f3fa95cfdb266be0bb6bc75e0 100644 (file)
@@ -1,36 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_EXPR_IF_HPP
-#define BOOST_PREPROCESSOR_EXPR_IF_HPP
-
-/* Copyright (C) 2002
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/logical/bool.hpp>
-
-/** <p>Expands to <code>EXPR</code> if <code>COND != 0</code> and to nothing if <code>COND == 0</code>.</p>
-
-<p><code>COND</code> must expand to an integer literal in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_EXPR_IF(1,^)</code> expands to <code>^</code>.</p>
-
-<h3>See</h3>
-<ul>
-  <li>BOOST_PP_IF()</li>
-</ul>
-*/
-#define BOOST_PP_EXPR_IF(COND,EXPR) BOOST_PP_EXPR_IF_BOOL(BOOST_PP_BOOL(COND),EXPR) /* original:  BOOST_PP_DETAIL_CAT2(BOOST_PP_EXPR_IF,BOOST_PP_BOOL(COND))(EXPR) */
-
-#define BOOST_PP_EXPR_IF_BOOL(COND,EXPR) BOOST_PP_EXPR_IF_BOOL_DELAY(COND,EXPR)
-#define BOOST_PP_EXPR_IF_BOOL_DELAY(COND,EXPR) BOOST_PP_EXPR_IF##COND(EXPR)
-
-#define BOOST_PP_EXPR_IF0(E)
-#define BOOST_PP_EXPR_IF1(E) E
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_EXPR_IF_HPP
+# define BOOST_PREPROCESSOR_EXPR_IF_HPP
+#
+# include <boost/preprocessor/control/expr_if.hpp>
+#
+# endif
diff --git a/boost/boost/preprocessor/facilities/empty.hpp b/boost/boost/preprocessor/facilities/empty.hpp
new file mode 100644 (file)
index 0000000..715fb69
--- /dev/null
@@ -0,0 +1,22 @@
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_EMPTY_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_EMPTY_HPP
+#
+# /* BOOST_PP_EMPTY */
+#
+# define BOOST_PP_EMPTY()
+#
+# endif
diff --git a/boost/boost/preprocessor/facilities/identity.hpp b/boost/boost/preprocessor/facilities/identity.hpp
new file mode 100644 (file)
index 0000000..d1b911f
--- /dev/null
@@ -0,0 +1,24 @@
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_IDENTITY_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_IDENTITY_HPP
+#
+# include <boost/preprocessor/facilities/empty.hpp>
+#
+# /* BOOST_PP_IDENTITY */
+#
+# define BOOST_PP_IDENTITY(item) item BOOST_PP_EMPTY
+#
+# endif
index d91b32d35d327f8c62a065e219f6f648acc3e61d..ebc8ad3665ba5f1f99685162ba78c3c4b84787d2 100644 (file)
-#ifndef BOOST_PREPROCESSOR_FOR_HPP
-#define BOOST_PREPROCESSOR_FOR_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/if.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-
-/** <p>Repeats <code>MACRO(R,STATE)</code> and iterates <code>OP(R,STATE)</code> while
-<code>PRED(R,STATE)</code> is true.</p>
-
-<p>In other words, expands to the sequence:</p>
-
-<pre>
-MACRO(R,STATE)
-MACRO(R,OP(R,STATE))
-MACRO(R,OP(R,OP(R,STATE)))
-...
-MACRO(R,OP(R,OP(...OP(R,STATE)...)))
-</pre>
-
-<p>The length of the sequence is determined by <code>PRED(R,STATE)</code>.</p>
-
-<p>For example,</p>
-
-<pre>
-#define PRED(R,STATE) BOOST_PP_LESS(BOOST_PP_TUPLE_ELEM(2,0,STATE),BOOST_PP_TUPLE_ELEM(2,1,STATE))
-#define OP(R,STATE) (BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(2,0,STATE)),BOOST_PP_TUPLE_ELEM(2,1,STATE))
-#define MACRO(R,STATE) BOOST_PP_TUPLE_ELEM(2,0,STATE)
-BOOST_PP_FOR((0,3),PRED,OP,MACRO)
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-0 1 2
-</pre>
-
-<h3>Legend</h3>
-<ul>
-  <li><b>STATE</b> is the current state of iteration. The state is usually a tuple.</li>
-  <li><b>PRED</b> is the condition for iteration. It must expand to a decimal
-      integer literal.</li>
-  <li><b>OP</b> is the iterated macro. Note that if the state is a tuple, then
-      OP(R,STATE) usually expands to a tuple of the same number of elements.</li>
-  <li><b>MACRO</b> is the state instantiation macro.</li>
-  <li><b>R</b> is the recursion depth and should only be used as a parameter to
-      other macros using BOOST_PP_FOR() or for invoking BOOST_PP_FOR##R()
-      directly. For each macro using BOOST_PP_FOR(), e.g. BOOST_PP_LIST_FOR_EACH(),
-      there is a version of the macro, e.g. BOOST_PP_LIST_FOR_EACH_R(), distinguished
-      by the R suffix, that accepts an additional recursion depth as the first
-      parameter. This technique is necessary to avoid recursively expanding the same
-      macro again, which is not permitted by the C++ preprocessor.</li>
-</ul>
-
-<h3>BOOST_PP_REPEAT() vs BOOST_PP_FOR()</h3>
-
-<p>BOOST_PP_FOR() is a generalization of BOOST_PP_REPEAT(). This means that
-BOOST_PP_REPEAT() can be implemented using BOOST_PP_FOR(). However,
-BOOST_PP_REPEAT() was introduced earlier, is generally easier to use, and is
-still quite useful on its own.</p>
-
-<h3>2D and 3D repetition</h3>
-
-<p>BOOST_PP_FOR() can be used for multidimensional repetition simply by
-invoking BOOST_PP_FOR##R() directly.</p>
-
-<h3>Automatic recursion?</h3>
-
-<p>BOOST_PP_FOR() currently does not implement automatic recursion. The reason
-for this is that it would lead to very poor performance. The automatic recursion
-technique takes O(N) steps just to find out that the Nth recursion should be used.
-This would dramatically effect the time complexity of macros using automatic
-recursion.</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/for_test.cpp">for_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_FOR(STATE,PRED,OP,MACRO) BOOST_PP_FOR0(STATE,PRED,OP,MACRO)
-
-#define BOOST_PP_FOR_C0(P,R,S,M) BOOST_PP_IF(P(R,S),M,BOOST_PP_TUPLE2_EAT)
-#define BOOST_PP_FOR_C1(P,R,S) BOOST_PP_IF(P(R,S),BOOST_PP_FOR##R,BOOST_PP_TUPLE4_EAT)
-#define BOOST_PP_FOR0(S,P,O,M) BOOST_PP_FOR_C0(P,1,S,M)(1,S) BOOST_PP_FOR_C1(P,1,S)(O(1,S),P,O,M)
-#define BOOST_PP_FOR1(S,P,O,M) BOOST_PP_FOR_C0(P,2,S,M)(2,S) BOOST_PP_FOR_C1(P,2,S)(O(2,S),P,O,M)
-#define BOOST_PP_FOR2(S,P,O,M) BOOST_PP_FOR_C0(P,3,S,M)(3,S) BOOST_PP_FOR_C1(P,3,S)(O(3,S),P,O,M)
-#define BOOST_PP_FOR3(S,P,O,M) BOOST_PP_FOR_C0(P,4,S,M)(4,S) BOOST_PP_FOR_C1(P,4,S)(O(4,S),P,O,M)
-#define BOOST_PP_FOR4(S,P,O,M) BOOST_PP_FOR_C0(P,5,S,M)(5,S) BOOST_PP_FOR_C1(P,5,S)(O(5,S),P,O,M)
-#define BOOST_PP_FOR5(S,P,O,M) BOOST_PP_FOR_C0(P,6,S,M)(6,S) BOOST_PP_FOR_C1(P,6,S)(O(6,S),P,O,M)
-#define BOOST_PP_FOR6(S,P,O,M) BOOST_PP_FOR_C0(P,7,S,M)(7,S) BOOST_PP_FOR_C1(P,7,S)(O(7,S),P,O,M)
-#define BOOST_PP_FOR7(S,P,O,M) BOOST_PP_FOR_C0(P,8,S,M)(8,S) BOOST_PP_FOR_C1(P,8,S)(O(8,S),P,O,M)
-#define BOOST_PP_FOR8(S,P,O,M) BOOST_PP_FOR_C0(P,9,S,M)(9,S) BOOST_PP_FOR_C1(P,9,S)(O(9,S),P,O,M)
-#define BOOST_PP_FOR9(S,P,O,M) BOOST_PP_FOR_C0(P,10,S,M)(10,S) BOOST_PP_FOR_C1(P,10,S)(O(10,S),P,O,M)
-#define BOOST_PP_FOR10(S,P,O,M) BOOST_PP_FOR_C0(P,11,S,M)(11,S) BOOST_PP_FOR_C1(P,11,S)(O(11,S),P,O,M)
-#define BOOST_PP_FOR11(S,P,O,M) BOOST_PP_FOR_C0(P,12,S,M)(12,S) BOOST_PP_FOR_C1(P,12,S)(O(12,S),P,O,M)
-#define BOOST_PP_FOR12(S,P,O,M) BOOST_PP_FOR_C0(P,13,S,M)(13,S) BOOST_PP_FOR_C1(P,13,S)(O(13,S),P,O,M)
-#define BOOST_PP_FOR13(S,P,O,M) BOOST_PP_FOR_C0(P,14,S,M)(14,S) BOOST_PP_FOR_C1(P,14,S)(O(14,S),P,O,M)
-#define BOOST_PP_FOR14(S,P,O,M) BOOST_PP_FOR_C0(P,15,S,M)(15,S) BOOST_PP_FOR_C1(P,15,S)(O(15,S),P,O,M)
-#define BOOST_PP_FOR15(S,P,O,M) BOOST_PP_FOR_C0(P,16,S,M)(16,S) BOOST_PP_FOR_C1(P,16,S)(O(16,S),P,O,M)
-#define BOOST_PP_FOR16(S,P,O,M) BOOST_PP_FOR_C0(P,17,S,M)(17,S) BOOST_PP_FOR_C1(P,17,S)(O(17,S),P,O,M)
-#define BOOST_PP_FOR17(S,P,O,M) BOOST_PP_FOR_C0(P,18,S,M)(18,S) BOOST_PP_FOR_C1(P,18,S)(O(18,S),P,O,M)
-#define BOOST_PP_FOR18(S,P,O,M) BOOST_PP_FOR_C0(P,19,S,M)(19,S) BOOST_PP_FOR_C1(P,19,S)(O(19,S),P,O,M)
-#define BOOST_PP_FOR19(S,P,O,M) BOOST_PP_FOR_C0(P,20,S,M)(20,S) BOOST_PP_FOR_C1(P,20,S)(O(20,S),P,O,M)
-#define BOOST_PP_FOR20(S,P,O,M) BOOST_PP_FOR_C0(P,21,S,M)(21,S) BOOST_PP_FOR_C1(P,21,S)(O(21,S),P,O,M)
-#define BOOST_PP_FOR21(S,P,O,M) BOOST_PP_FOR_C0(P,22,S,M)(22,S) BOOST_PP_FOR_C1(P,22,S)(O(22,S),P,O,M)
-#define BOOST_PP_FOR22(S,P,O,M) BOOST_PP_FOR_C0(P,23,S,M)(23,S) BOOST_PP_FOR_C1(P,23,S)(O(23,S),P,O,M)
-#define BOOST_PP_FOR23(S,P,O,M) BOOST_PP_FOR_C0(P,24,S,M)(24,S) BOOST_PP_FOR_C1(P,24,S)(O(24,S),P,O,M)
-#define BOOST_PP_FOR24(S,P,O,M) BOOST_PP_FOR_C0(P,25,S,M)(25,S) BOOST_PP_FOR_C1(P,25,S)(O(25,S),P,O,M)
-#define BOOST_PP_FOR25(S,P,O,M) BOOST_PP_FOR_C0(P,26,S,M)(26,S) BOOST_PP_FOR_C1(P,26,S)(O(26,S),P,O,M)
-#define BOOST_PP_FOR26(S,P,O,M) BOOST_PP_FOR_C0(P,27,S,M)(27,S) BOOST_PP_FOR_C1(P,27,S)(O(27,S),P,O,M)
-#define BOOST_PP_FOR27(S,P,O,M) BOOST_PP_FOR_C0(P,28,S,M)(28,S) BOOST_PP_FOR_C1(P,28,S)(O(28,S),P,O,M)
-#define BOOST_PP_FOR28(S,P,O,M) BOOST_PP_FOR_C0(P,29,S,M)(29,S) BOOST_PP_FOR_C1(P,29,S)(O(29,S),P,O,M)
-#define BOOST_PP_FOR29(S,P,O,M) BOOST_PP_FOR_C0(P,30,S,M)(30,S) BOOST_PP_FOR_C1(P,30,S)(O(30,S),P,O,M)
-#define BOOST_PP_FOR30(S,P,O,M) BOOST_PP_FOR_C0(P,31,S,M)(31,S) BOOST_PP_FOR_C1(P,31,S)(O(31,S),P,O,M)
-#define BOOST_PP_FOR31(S,P,O,M) BOOST_PP_FOR_C0(P,32,S,M)(32,S) BOOST_PP_FOR_C1(P,32,S)(O(32,S),P,O,M)
-#define BOOST_PP_FOR32(S,P,O,M) BOOST_PP_FOR_C0(P,33,S,M)(33,S) BOOST_PP_FOR_C1(P,33,S)(O(33,S),P,O,M)
-#define BOOST_PP_FOR33(S,P,O,M) BOOST_PP_FOR_C0(P,34,S,M)(34,S) BOOST_PP_FOR_C1(P,34,S)(O(34,S),P,O,M)
-#define BOOST_PP_FOR34(S,P,O,M) BOOST_PP_FOR_C0(P,35,S,M)(35,S) BOOST_PP_FOR_C1(P,35,S)(O(35,S),P,O,M)
-#define BOOST_PP_FOR35(S,P,O,M) BOOST_PP_FOR_C0(P,36,S,M)(36,S) BOOST_PP_FOR_C1(P,36,S)(O(36,S),P,O,M)
-#define BOOST_PP_FOR36(S,P,O,M) BOOST_PP_FOR_C0(P,37,S,M)(37,S) BOOST_PP_FOR_C1(P,37,S)(O(37,S),P,O,M)
-#define BOOST_PP_FOR37(S,P,O,M) BOOST_PP_FOR_C0(P,38,S,M)(38,S) BOOST_PP_FOR_C1(P,38,S)(O(38,S),P,O,M)
-#define BOOST_PP_FOR38(S,P,O,M) BOOST_PP_FOR_C0(P,39,S,M)(39,S) BOOST_PP_FOR_C1(P,39,S)(O(39,S),P,O,M)
-#define BOOST_PP_FOR39(S,P,O,M) BOOST_PP_FOR_C0(P,40,S,M)(40,S) BOOST_PP_FOR_C1(P,40,S)(O(40,S),P,O,M)
-#define BOOST_PP_FOR40(S,P,O,M) BOOST_PP_FOR_C0(P,41,S,M)(41,S) BOOST_PP_FOR_C1(P,41,S)(O(41,S),P,O,M)
-#define BOOST_PP_FOR41(S,P,O,M) BOOST_PP_FOR_C0(P,42,S,M)(42,S) BOOST_PP_FOR_C1(P,42,S)(O(42,S),P,O,M)
-#define BOOST_PP_FOR42(S,P,O,M) BOOST_PP_FOR_C0(P,43,S,M)(43,S) BOOST_PP_FOR_C1(P,43,S)(O(43,S),P,O,M)
-#define BOOST_PP_FOR43(S,P,O,M) BOOST_PP_FOR_C0(P,44,S,M)(44,S) BOOST_PP_FOR_C1(P,44,S)(O(44,S),P,O,M)
-#define BOOST_PP_FOR44(S,P,O,M) BOOST_PP_FOR_C0(P,45,S,M)(45,S) BOOST_PP_FOR_C1(P,45,S)(O(45,S),P,O,M)
-#define BOOST_PP_FOR45(S,P,O,M) BOOST_PP_FOR_C0(P,46,S,M)(46,S) BOOST_PP_FOR_C1(P,46,S)(O(46,S),P,O,M)
-#define BOOST_PP_FOR46(S,P,O,M) BOOST_PP_FOR_C0(P,47,S,M)(47,S) BOOST_PP_FOR_C1(P,47,S)(O(47,S),P,O,M)
-#define BOOST_PP_FOR47(S,P,O,M) BOOST_PP_FOR_C0(P,48,S,M)(48,S) BOOST_PP_FOR_C1(P,48,S)(O(48,S),P,O,M)
-#define BOOST_PP_FOR48(S,P,O,M) BOOST_PP_FOR_C0(P,49,S,M)(49,S) BOOST_PP_FOR_C1(P,49,S)(O(49,S),P,O,M)
-#define BOOST_PP_FOR49(S,P,O,M) BOOST_PP_FOR_C0(P,50,S,M)(50,S) BOOST_PP_FOR_C1(P,50,S)(O(50,S),P,O,M)
-#define BOOST_PP_FOR50(S,P,O,M) BOOST_PP_FOR_C0(P,51,S,M)(51,S) BOOST_PP_FOR_C1(P,51,S)(O(51,S),P,O,M)
-#define BOOST_PP_FOR51(S,P,O,M) BOOST_PP_FOR_C0(P,52,S,M)(52,S) BOOST_PP_FOR_C1(P,52,S)(O(52,S),P,O,M)
-#define BOOST_PP_FOR52(S,P,O,M) BOOST_PP_FOR_C0(P,53,S,M)(53,S) BOOST_PP_FOR_C1(P,53,S)(O(53,S),P,O,M)
-#define BOOST_PP_FOR53(S,P,O,M) BOOST_PP_FOR_C0(P,54,S,M)(54,S) BOOST_PP_FOR_C1(P,54,S)(O(54,S),P,O,M)
-#define BOOST_PP_FOR54(S,P,O,M) BOOST_PP_FOR_C0(P,55,S,M)(55,S) BOOST_PP_FOR_C1(P,55,S)(O(55,S),P,O,M)
-#define BOOST_PP_FOR55(S,P,O,M) BOOST_PP_FOR_C0(P,56,S,M)(56,S) BOOST_PP_FOR_C1(P,56,S)(O(56,S),P,O,M)
-#define BOOST_PP_FOR56(S,P,O,M) BOOST_PP_FOR_C0(P,57,S,M)(57,S) BOOST_PP_FOR_C1(P,57,S)(O(57,S),P,O,M)
-#define BOOST_PP_FOR57(S,P,O,M) BOOST_PP_FOR_C0(P,58,S,M)(58,S) BOOST_PP_FOR_C1(P,58,S)(O(58,S),P,O,M)
-#define BOOST_PP_FOR58(S,P,O,M) BOOST_PP_FOR_C0(P,59,S,M)(59,S) BOOST_PP_FOR_C1(P,59,S)(O(59,S),P,O,M)
-#define BOOST_PP_FOR59(S,P,O,M) BOOST_PP_FOR_C0(P,60,S,M)(60,S) BOOST_PP_FOR_C1(P,60,S)(O(60,S),P,O,M)
-#define BOOST_PP_FOR60(S,P,O,M) BOOST_PP_FOR_C0(P,61,S,M)(61,S) BOOST_PP_FOR_C1(P,61,S)(O(61,S),P,O,M)
-#define BOOST_PP_FOR61(S,P,O,M) BOOST_PP_FOR_C0(P,62,S,M)(62,S) BOOST_PP_FOR_C1(P,62,S)(O(62,S),P,O,M)
-#define BOOST_PP_FOR62(S,P,O,M) BOOST_PP_FOR_C0(P,63,S,M)(63,S) BOOST_PP_FOR_C1(P,63,S)(O(63,S),P,O,M)
-#define BOOST_PP_FOR63(S,P,O,M) BOOST_PP_FOR_C0(P,64,S,M)(64,S) BOOST_PP_FOR_C1(P,64,S)(O(64,S),P,O,M)
-#define BOOST_PP_FOR64(S,P,O,M) BOOST_PP_FOR_C0(P,65,S,M)(65,S) BOOST_PP_FOR_C1(P,65,S)(O(65,S),P,O,M)
-#define BOOST_PP_FOR65(S,P,O,M) BOOST_PP_FOR_C0(P,66,S,M)(66,S) BOOST_PP_FOR_C1(P,66,S)(O(66,S),P,O,M)
-#define BOOST_PP_FOR66(S,P,O,M) BOOST_PP_FOR_C0(P,67,S,M)(67,S) BOOST_PP_FOR_C1(P,67,S)(O(67,S),P,O,M)
-#define BOOST_PP_FOR67(S,P,O,M) BOOST_PP_FOR_C0(P,68,S,M)(68,S) BOOST_PP_FOR_C1(P,68,S)(O(68,S),P,O,M)
-#define BOOST_PP_FOR68(S,P,O,M) BOOST_PP_FOR_C0(P,69,S,M)(69,S) BOOST_PP_FOR_C1(P,69,S)(O(69,S),P,O,M)
-#define BOOST_PP_FOR69(S,P,O,M) BOOST_PP_FOR_C0(P,70,S,M)(70,S) BOOST_PP_FOR_C1(P,70,S)(O(70,S),P,O,M)
-#define BOOST_PP_FOR70(S,P,O,M) BOOST_PP_FOR_C0(P,71,S,M)(71,S) BOOST_PP_FOR_C1(P,71,S)(O(71,S),P,O,M)
-#define BOOST_PP_FOR71(S,P,O,M) BOOST_PP_FOR_C0(P,72,S,M)(72,S) BOOST_PP_FOR_C1(P,72,S)(O(72,S),P,O,M)
-#define BOOST_PP_FOR72(S,P,O,M) BOOST_PP_FOR_C0(P,73,S,M)(73,S) BOOST_PP_FOR_C1(P,73,S)(O(73,S),P,O,M)
-#define BOOST_PP_FOR73(S,P,O,M) BOOST_PP_FOR_C0(P,74,S,M)(74,S) BOOST_PP_FOR_C1(P,74,S)(O(74,S),P,O,M)
-#define BOOST_PP_FOR74(S,P,O,M) BOOST_PP_FOR_C0(P,75,S,M)(75,S) BOOST_PP_FOR_C1(P,75,S)(O(75,S),P,O,M)
-#define BOOST_PP_FOR75(S,P,O,M) BOOST_PP_FOR_C0(P,76,S,M)(76,S) BOOST_PP_FOR_C1(P,76,S)(O(76,S),P,O,M)
-#define BOOST_PP_FOR76(S,P,O,M) BOOST_PP_FOR_C0(P,77,S,M)(77,S) BOOST_PP_FOR_C1(P,77,S)(O(77,S),P,O,M)
-#define BOOST_PP_FOR77(S,P,O,M) BOOST_PP_FOR_C0(P,78,S,M)(78,S) BOOST_PP_FOR_C1(P,78,S)(O(78,S),P,O,M)
-#define BOOST_PP_FOR78(S,P,O,M) BOOST_PP_FOR_C0(P,79,S,M)(79,S) BOOST_PP_FOR_C1(P,79,S)(O(79,S),P,O,M)
-#define BOOST_PP_FOR79(S,P,O,M) BOOST_PP_FOR_C0(P,80,S,M)(80,S) BOOST_PP_FOR_C1(P,80,S)(O(80,S),P,O,M)
-#define BOOST_PP_FOR80(S,P,O,M) BOOST_PP_FOR_C0(P,81,S,M)(81,S) BOOST_PP_FOR_C1(P,81,S)(O(81,S),P,O,M)
-#define BOOST_PP_FOR81(S,P,O,M) BOOST_PP_FOR_C0(P,82,S,M)(82,S) BOOST_PP_FOR_C1(P,82,S)(O(82,S),P,O,M)
-#define BOOST_PP_FOR82(S,P,O,M) BOOST_PP_FOR_C0(P,83,S,M)(83,S) BOOST_PP_FOR_C1(P,83,S)(O(83,S),P,O,M)
-#define BOOST_PP_FOR83(S,P,O,M) BOOST_PP_FOR_C0(P,84,S,M)(84,S) BOOST_PP_FOR_C1(P,84,S)(O(84,S),P,O,M)
-#define BOOST_PP_FOR84(S,P,O,M) BOOST_PP_FOR_C0(P,85,S,M)(85,S) BOOST_PP_FOR_C1(P,85,S)(O(85,S),P,O,M)
-#define BOOST_PP_FOR85(S,P,O,M) BOOST_PP_FOR_C0(P,86,S,M)(86,S) BOOST_PP_FOR_C1(P,86,S)(O(86,S),P,O,M)
-#define BOOST_PP_FOR86(S,P,O,M) BOOST_PP_FOR_C0(P,87,S,M)(87,S) BOOST_PP_FOR_C1(P,87,S)(O(87,S),P,O,M)
-#define BOOST_PP_FOR87(S,P,O,M) BOOST_PP_FOR_C0(P,88,S,M)(88,S) BOOST_PP_FOR_C1(P,88,S)(O(88,S),P,O,M)
-#define BOOST_PP_FOR88(S,P,O,M) BOOST_PP_FOR_C0(P,89,S,M)(89,S) BOOST_PP_FOR_C1(P,89,S)(O(89,S),P,O,M)
-#define BOOST_PP_FOR89(S,P,O,M) BOOST_PP_FOR_C0(P,90,S,M)(90,S) BOOST_PP_FOR_C1(P,90,S)(O(90,S),P,O,M)
-#define BOOST_PP_FOR90(S,P,O,M) BOOST_PP_FOR_C0(P,91,S,M)(91,S) BOOST_PP_FOR_C1(P,91,S)(O(91,S),P,O,M)
-#define BOOST_PP_FOR91(S,P,O,M) BOOST_PP_FOR_C0(P,92,S,M)(92,S) BOOST_PP_FOR_C1(P,92,S)(O(92,S),P,O,M)
-#define BOOST_PP_FOR92(S,P,O,M) BOOST_PP_FOR_C0(P,93,S,M)(93,S) BOOST_PP_FOR_C1(P,93,S)(O(93,S),P,O,M)
-#define BOOST_PP_FOR93(S,P,O,M) BOOST_PP_FOR_C0(P,94,S,M)(94,S) BOOST_PP_FOR_C1(P,94,S)(O(94,S),P,O,M)
-#define BOOST_PP_FOR94(S,P,O,M) BOOST_PP_FOR_C0(P,95,S,M)(95,S) BOOST_PP_FOR_C1(P,95,S)(O(95,S),P,O,M)
-#define BOOST_PP_FOR95(S,P,O,M) BOOST_PP_FOR_C0(P,96,S,M)(96,S) BOOST_PP_FOR_C1(P,96,S)(O(96,S),P,O,M)
-#define BOOST_PP_FOR96(S,P,O,M) BOOST_PP_FOR_C0(P,97,S,M)(97,S) BOOST_PP_FOR_C1(P,97,S)(O(97,S),P,O,M)
-#define BOOST_PP_FOR97(S,P,O,M) BOOST_PP_FOR_C0(P,98,S,M)(98,S) BOOST_PP_FOR_C1(P,98,S)(O(98,S),P,O,M)
-#define BOOST_PP_FOR98(S,P,O,M) BOOST_PP_FOR_C0(P,99,S,M)(99,S) BOOST_PP_FOR_C1(P,99,S)(O(99,S),P,O,M)
-#define BOOST_PP_FOR99(S,P,O,M) BOOST_PP_FOR_C0(P,100,S,M)(100,S) BOOST_PP_FOR_C1(P,100,S)(O(100,S),P,O,M)
-#define BOOST_PP_FOR100(S,P,O,M) BOOST_PP_FOR_C0(P,101,S,M)(101,S) BOOST_PP_FOR_C1(P,101,S)(O(101,S),P,O,M)
-#define BOOST_PP_FOR101(S,P,O,M) BOOST_PP_FOR_C0(P,102,S,M)(102,S) BOOST_PP_FOR_C1(P,102,S)(O(102,S),P,O,M)
-#define BOOST_PP_FOR102(S,P,O,M) BOOST_PP_FOR_C0(P,103,S,M)(103,S) BOOST_PP_FOR_C1(P,103,S)(O(103,S),P,O,M)
-#define BOOST_PP_FOR103(S,P,O,M) BOOST_PP_FOR_C0(P,104,S,M)(104,S) BOOST_PP_FOR_C1(P,104,S)(O(104,S),P,O,M)
-#define BOOST_PP_FOR104(S,P,O,M) BOOST_PP_FOR_C0(P,105,S,M)(105,S) BOOST_PP_FOR_C1(P,105,S)(O(105,S),P,O,M)
-#define BOOST_PP_FOR105(S,P,O,M) BOOST_PP_FOR_C0(P,106,S,M)(106,S) BOOST_PP_FOR_C1(P,106,S)(O(106,S),P,O,M)
-#define BOOST_PP_FOR106(S,P,O,M) BOOST_PP_FOR_C0(P,107,S,M)(107,S) BOOST_PP_FOR_C1(P,107,S)(O(107,S),P,O,M)
-#define BOOST_PP_FOR107(S,P,O,M) BOOST_PP_FOR_C0(P,108,S,M)(108,S) BOOST_PP_FOR_C1(P,108,S)(O(108,S),P,O,M)
-#define BOOST_PP_FOR108(S,P,O,M) BOOST_PP_FOR_C0(P,109,S,M)(109,S) BOOST_PP_FOR_C1(P,109,S)(O(109,S),P,O,M)
-#define BOOST_PP_FOR109(S,P,O,M) BOOST_PP_FOR_C0(P,110,S,M)(110,S) BOOST_PP_FOR_C1(P,110,S)(O(110,S),P,O,M)
-#define BOOST_PP_FOR110(S,P,O,M) BOOST_PP_FOR_C0(P,111,S,M)(111,S) BOOST_PP_FOR_C1(P,111,S)(O(111,S),P,O,M)
-#define BOOST_PP_FOR111(S,P,O,M) BOOST_PP_FOR_C0(P,112,S,M)(112,S) BOOST_PP_FOR_C1(P,112,S)(O(112,S),P,O,M)
-#define BOOST_PP_FOR112(S,P,O,M) BOOST_PP_FOR_C0(P,113,S,M)(113,S) BOOST_PP_FOR_C1(P,113,S)(O(113,S),P,O,M)
-#define BOOST_PP_FOR113(S,P,O,M) BOOST_PP_FOR_C0(P,114,S,M)(114,S) BOOST_PP_FOR_C1(P,114,S)(O(114,S),P,O,M)
-#define BOOST_PP_FOR114(S,P,O,M) BOOST_PP_FOR_C0(P,115,S,M)(115,S) BOOST_PP_FOR_C1(P,115,S)(O(115,S),P,O,M)
-#define BOOST_PP_FOR115(S,P,O,M) BOOST_PP_FOR_C0(P,116,S,M)(116,S) BOOST_PP_FOR_C1(P,116,S)(O(116,S),P,O,M)
-#define BOOST_PP_FOR116(S,P,O,M) BOOST_PP_FOR_C0(P,117,S,M)(117,S) BOOST_PP_FOR_C1(P,117,S)(O(117,S),P,O,M)
-#define BOOST_PP_FOR117(S,P,O,M) BOOST_PP_FOR_C0(P,118,S,M)(118,S) BOOST_PP_FOR_C1(P,118,S)(O(118,S),P,O,M)
-#define BOOST_PP_FOR118(S,P,O,M) BOOST_PP_FOR_C0(P,119,S,M)(119,S) BOOST_PP_FOR_C1(P,119,S)(O(119,S),P,O,M)
-#define BOOST_PP_FOR119(S,P,O,M) BOOST_PP_FOR_C0(P,120,S,M)(120,S) BOOST_PP_FOR_C1(P,120,S)(O(120,S),P,O,M)
-#define BOOST_PP_FOR120(S,P,O,M) BOOST_PP_FOR_C0(P,121,S,M)(121,S) BOOST_PP_FOR_C1(P,121,S)(O(121,S),P,O,M)
-#define BOOST_PP_FOR121(S,P,O,M) BOOST_PP_FOR_C0(P,122,S,M)(122,S) BOOST_PP_FOR_C1(P,122,S)(O(122,S),P,O,M)
-#define BOOST_PP_FOR122(S,P,O,M) BOOST_PP_FOR_C0(P,123,S,M)(123,S) BOOST_PP_FOR_C1(P,123,S)(O(123,S),P,O,M)
-#define BOOST_PP_FOR123(S,P,O,M) BOOST_PP_FOR_C0(P,124,S,M)(124,S) BOOST_PP_FOR_C1(P,124,S)(O(124,S),P,O,M)
-#define BOOST_PP_FOR124(S,P,O,M) BOOST_PP_FOR_C0(P,125,S,M)(125,S) BOOST_PP_FOR_C1(P,125,S)(O(125,S),P,O,M)
-#define BOOST_PP_FOR125(S,P,O,M) BOOST_PP_FOR_C0(P,126,S,M)(126,S) BOOST_PP_FOR_C1(P,126,S)(O(126,S),P,O,M)
-#define BOOST_PP_FOR126(S,P,O,M) BOOST_PP_FOR_C0(P,127,S,M)(127,S) BOOST_PP_FOR_C1(P,127,S)(O(127,S),P,O,M)
-#define BOOST_PP_FOR127(S,P,O,M) BOOST_PP_FOR_C0(P,128,S,M)(128,S) BOOST_PP_FOR_C1(P,128,S)(O(128,S),P,O,M)
-#define BOOST_PP_FOR128(S,P,O,M) BOOST_PP_FOR_C0(P,129,S,M)(129,S) BOOST_PP_FOR_C1(P,129,S)(O(129,S),P,O,M)
-#define BOOST_PP_FOR129(S,P,O,M) (RECURSION DEPTH EXCEEDED!)
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FOR_HPP
+# define BOOST_PREPROCESSOR_FOR_HPP
+#
+# include <boost/preprocessor/repetition/for.hpp>
+#
+# endif
index 3235256e3ad124cb4ca0126d275f15e8def3ba75..a08687b2d0aed539ead8fc05a3b41a75ba3614d3 100644 (file)
@@ -1,41 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_IDENTITY_HPP
-#define BOOST_PREPROCESSOR_IDENTITY_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/empty.hpp>
-
-/** <p>Expands to <code>X</code> once invoked.</p>
-
-<p>Designed to be used with BOOST_PP_IF(), when one of the clauses need to be
-invoked.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_IF(1,BOOST_PP_IDENTITY(X),BOOST_PP_EMPTY)<b>()</b>
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-X
-</pre>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/preprocessor_test.cpp">preprocessor_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_IDENTITY(X) X BOOST_PP_EMPTY
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_IDENTITY_HPP
+# define BOOST_PREPROCESSOR_IDENTITY_HPP
+#
+# include <boost/preprocessor/facilities/identity.hpp>
+#
+# endif
index 0ade0993f128012f1c5d0de7a0ca1d922845dc78..78f0cc4967018ddbeddd4b6d89e609a66f011a02 100644 (file)
@@ -1,42 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_IF_HPP
-#define BOOST_PREPROCESSOR_IF_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/logical/bool.hpp>
-
-/** <p>Expands to <code>THEN</code> if <code>COND != 0</code> and <code>ELSE</code> if
-<code>COND == 0</code>.</p>
-
-<p><code>COND</code> must expand to an integer literal in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_IF(0,1,2)</code> expands to <code>2</code>.</p>
-
-<h3>See</h3>
-<ul>
-  <li>BOOST_PP_EXPR_IF()</li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/preprocessor_test.cpp">preprocessor_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_IF(COND,THEN,ELSE) BOOST_PP_IF_BOOL(BOOST_PP_BOOL(COND),ELSE,THEN)
-
-#define BOOST_PP_IF_BOOL(C,E,T) BOOST_PP_IF_BOOL_DELAY(C,E,T)
-#define BOOST_PP_IF_BOOL_DELAY(C,E,T) BOOST_PP_IF##C(E,T)
-
-#define BOOST_PP_IF0(E,T) E
-#define BOOST_PP_IF1(E,T) T
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_IF_HPP
+# define BOOST_PREPROCESSOR_IF_HPP
+#
+# include <boost/preprocessor/control/if.hpp>
+#
+# endif
index 8bf735b38fff6ac7dfb3e3c9fff703afb401e8e2..20a6a8f5445b34472c30bfa145d2495ba8bee87a 100644 (file)
-#ifndef BOOST_PREPROCESSOR_INC_HPP
-#define BOOST_PREPROCESSOR_INC_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/detail/cat.hpp>
-
-/** <p>Increments <code>X</code> expanding to a single token.</p>
-
-<p>For example, <code>BOOST_PP_INC(3)</code> expands to <code>4</code> (a
-single token).</p>
-
-<p>BOOST_PP_INC() uses saturation arithmetic. Incrementing a
-BOOST_PP_LIMIT_MAG yields a BOOST_PP_LIMIT_MAG.</p>
-
-<p>Only decimal integer literals in the range [0,BOOST_PP_LIMIT_MAG] are
-supported.</p>
-*/
-#define BOOST_PP_INC(X) BOOST_PP_DETAIL_CAT2(BOOST_PP_INC,X)
-
-#define BOOST_PP_INC0 1
-#define BOOST_PP_INC1 2
-#define BOOST_PP_INC2 3
-#define BOOST_PP_INC3 4
-#define BOOST_PP_INC4 5
-#define BOOST_PP_INC5 6
-#define BOOST_PP_INC6 7
-#define BOOST_PP_INC7 8
-#define BOOST_PP_INC8 9
-#define BOOST_PP_INC9 10
-#define BOOST_PP_INC10 11
-#define BOOST_PP_INC11 12
-#define BOOST_PP_INC12 13
-#define BOOST_PP_INC13 14
-#define BOOST_PP_INC14 15
-#define BOOST_PP_INC15 16
-#define BOOST_PP_INC16 17
-#define BOOST_PP_INC17 18
-#define BOOST_PP_INC18 19
-#define BOOST_PP_INC19 20
-#define BOOST_PP_INC20 21
-#define BOOST_PP_INC21 22
-#define BOOST_PP_INC22 23
-#define BOOST_PP_INC23 24
-#define BOOST_PP_INC24 25
-#define BOOST_PP_INC25 26
-#define BOOST_PP_INC26 27
-#define BOOST_PP_INC27 28
-#define BOOST_PP_INC28 29
-#define BOOST_PP_INC29 30
-#define BOOST_PP_INC30 31
-#define BOOST_PP_INC31 32
-#define BOOST_PP_INC32 33
-#define BOOST_PP_INC33 34
-#define BOOST_PP_INC34 35
-#define BOOST_PP_INC35 36
-#define BOOST_PP_INC36 37
-#define BOOST_PP_INC37 38
-#define BOOST_PP_INC38 39
-#define BOOST_PP_INC39 40
-#define BOOST_PP_INC40 41
-#define BOOST_PP_INC41 42
-#define BOOST_PP_INC42 43
-#define BOOST_PP_INC43 44
-#define BOOST_PP_INC44 45
-#define BOOST_PP_INC45 46
-#define BOOST_PP_INC46 47
-#define BOOST_PP_INC47 48
-#define BOOST_PP_INC48 49
-#define BOOST_PP_INC49 50
-#define BOOST_PP_INC50 51
-#define BOOST_PP_INC51 52
-#define BOOST_PP_INC52 53
-#define BOOST_PP_INC53 54
-#define BOOST_PP_INC54 55
-#define BOOST_PP_INC55 56
-#define BOOST_PP_INC56 57
-#define BOOST_PP_INC57 58
-#define BOOST_PP_INC58 59
-#define BOOST_PP_INC59 60
-#define BOOST_PP_INC60 61
-#define BOOST_PP_INC61 62
-#define BOOST_PP_INC62 63
-#define BOOST_PP_INC63 64
-#define BOOST_PP_INC64 65
-#define BOOST_PP_INC65 66
-#define BOOST_PP_INC66 67
-#define BOOST_PP_INC67 68
-#define BOOST_PP_INC68 69
-#define BOOST_PP_INC69 70
-#define BOOST_PP_INC70 71
-#define BOOST_PP_INC71 72
-#define BOOST_PP_INC72 73
-#define BOOST_PP_INC73 74
-#define BOOST_PP_INC74 75
-#define BOOST_PP_INC75 76
-#define BOOST_PP_INC76 77
-#define BOOST_PP_INC77 78
-#define BOOST_PP_INC78 79
-#define BOOST_PP_INC79 80
-#define BOOST_PP_INC80 81
-#define BOOST_PP_INC81 82
-#define BOOST_PP_INC82 83
-#define BOOST_PP_INC83 84
-#define BOOST_PP_INC84 85
-#define BOOST_PP_INC85 86
-#define BOOST_PP_INC86 87
-#define BOOST_PP_INC87 88
-#define BOOST_PP_INC88 89
-#define BOOST_PP_INC89 90
-#define BOOST_PP_INC90 91
-#define BOOST_PP_INC91 92
-#define BOOST_PP_INC92 93
-#define BOOST_PP_INC93 94
-#define BOOST_PP_INC94 95
-#define BOOST_PP_INC95 96
-#define BOOST_PP_INC96 97
-#define BOOST_PP_INC97 98
-#define BOOST_PP_INC98 99
-#define BOOST_PP_INC99 100
-#define BOOST_PP_INC100 101
-#define BOOST_PP_INC101 102
-#define BOOST_PP_INC102 103
-#define BOOST_PP_INC103 104
-#define BOOST_PP_INC104 105
-#define BOOST_PP_INC105 106
-#define BOOST_PP_INC106 107
-#define BOOST_PP_INC107 108
-#define BOOST_PP_INC108 109
-#define BOOST_PP_INC109 110
-#define BOOST_PP_INC110 111
-#define BOOST_PP_INC111 112
-#define BOOST_PP_INC112 113
-#define BOOST_PP_INC113 114
-#define BOOST_PP_INC114 115
-#define BOOST_PP_INC115 116
-#define BOOST_PP_INC116 117
-#define BOOST_PP_INC117 118
-#define BOOST_PP_INC118 119
-#define BOOST_PP_INC119 120
-#define BOOST_PP_INC120 121
-#define BOOST_PP_INC121 122
-#define BOOST_PP_INC122 123
-#define BOOST_PP_INC123 124
-#define BOOST_PP_INC124 125
-#define BOOST_PP_INC125 126
-#define BOOST_PP_INC126 127
-#define BOOST_PP_INC127 128
-#define BOOST_PP_INC128 128
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_INC_HPP
+# define BOOST_PREPROCESSOR_INC_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+#
+# endif
index 7eaab0a39f1826bf993a54d842b185c91a9c2378..09291522eb714a87fb830d981d9b00ab0082386b 100644 (file)
@@ -1,6 +1,3 @@
-# ifndef BOOST_PREPROCESSOR_ITERATE_HPP
-# define BOOST_PREPROCESSOR_ITERATE_HPP
-#
 # /* **************************************************************************
 #  *                                                                          *
 #  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
 #  *                                                                          *
 #  ************************************************************************** */
 #
-# include <boost/preprocessor/array.hpp>
-# include <boost/preprocessor/dec.hpp>
-# include <boost/preprocessor/inc.hpp>
-# include <boost/preprocessor/stringize.hpp>
-#
-# include <boost/preprocessor/tuple/elem.hpp>
-#
-# include <boost/preprocessor/detail/cat.hpp>
-# include <boost/preprocessor/detail/line.hpp>
-#
-# define BOOST_PP_ITERATION_DEPTH_LIMIT 5
-# define BOOST_PP_ITERATION_LIMIT 256
-#
-# define BOOST_PP_ITERATION_DEPTH() 0
-#
-# define BOOST_PP_ITERATION() BOOST_PP_DETAIL_CAT2(BOOST_PP_ITERATION_, BOOST_PP_ITERATION_DEPTH())
-#
-# define BOOST_PP_ITERATION_START() BOOST_PP_DETAIL_CAT2(BOOST_PP_ITERATION_START_, BOOST_PP_ITERATION_DEPTH())
-# define BOOST_PP_ITERATION_FINISH() BOOST_PP_DETAIL_CAT2(BOOST_PP_ITERATION_FINISH_, BOOST_PP_ITERATION_DEPTH())
-#
-# define BOOST_PP_FRAME_ITERATION(i) BOOST_PP_DETAIL_CAT2(BOOST_PP_ITERATION_, i)
-# define BOOST_PP_RELATIVE_ITERATION(i) BOOST_PP_DETAIL_CAT2(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_)
+# /* See http://www.boost.org for most recent version. */
 #
-# define BOOST_PP_FRAME_START(i) BOOST_PP_DETAIL_CAT2(BOOST_PP_ITERATION_START_, i)
-# define BOOST_PP_RELATIVE_START(i) BOOST_PP_DETAIL_CAT2(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_START_)
-#
-# define BOOST_PP_FRAME_FINISH(i) BOOST_PP_DETAIL_CAT2(BOOST_PP_ITERATION_FINISH_, i)
-# define BOOST_PP_RELATIVE_FINISH(i) BOOST_PP_DETAIL_CAT2(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FINISH_)
-#
-# define BOOST_PP_ITERATION_FLAGS() BOOST_PP_DETAIL_CAT2(BOOST_PP_ITERATION_FLAGS_, BOOST_PP_ITERATION_DEPTH())
-# define BOOST_PP_FRAME_FLAGS(i) BOOST_PP_DETAIL_CAT2(BOOST_PP_ITERATION_FLAGS_, i)
-# define BOOST_PP_RELATIVE_FLAGS(i) BOOST_PP_DETAIL_CAT2(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FLAGS_)
-#
-# define BOOST_PP_RELATIVE_0(m) BOOST_PP_DETAIL_CAT2(m, BOOST_PP_ITERATION_DEPTH())
-# define BOOST_PP_RELATIVE_1(m) BOOST_PP_DETAIL_CAT2(m, BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))
-# define BOOST_PP_RELATIVE_2(m) BOOST_PP_DETAIL_CAT2(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))
-# define BOOST_PP_RELATIVE_3(m) BOOST_PP_DETAIL_CAT2(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))))
-# define BOOST_PP_RELATIVE_4(m) BOOST_PP_DETAIL_CAT2(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))))
-#
-# if defined BOOST_PP_EXTENDED_LINE_INFO && (!defined(__MWERKS__) || defined(BOOST_NO_COMPILER_CONFIG) || __MWERKS__ > 0x3002)
-#   define BOOST_PP_LINE(line, file) line BOOST_PP_STRINGIZE(file BOOST_PP_DETAIL_CAT2(BOOST_PP_LINE_, BOOST_PP_ITERATION_DEPTH()))
-# else
-#   define BOOST_PP_LINE(line, file) __LINE__
-# endif
-#
-# define BOOST_PP_LINE_0() (!BOOST_PP_ERROR_NO_ACTIVE_ITERATION)
-# define BOOST_PP_LINE_1() BOOST_PP_DETAIL_CAT3([, BOOST_PP_ITERATION(), ])
-# define BOOST_PP_LINE_2() BOOST_PP_DETAIL_CAT2(BOOST_PP_DETAIL_CAT3([, BOOST_PP_FRAME_ITERATION(1), ]), BOOST_PP_LINE_1())
-# define BOOST_PP_LINE_3() BOOST_PP_DETAIL_CAT2(BOOST_PP_DETAIL_CAT3([, BOOST_PP_FRAME_ITERATION(2), ]), BOOST_PP_LINE_2())
-# define BOOST_PP_LINE_4() BOOST_PP_DETAIL_CAT2(BOOST_PP_DETAIL_CAT3([, BOOST_PP_FRAME_ITERATION(3), ]), BOOST_PP_LINE_3())
-# define BOOST_PP_LINE_5() BOOST_PP_DETAIL_CAT2(BOOST_PP_DETAIL_CAT3([, BOOST_PP_FRAME_ITERATION(4), ]), BOOST_PP_LINE_4())
-#
-# define BOOST_PP_ITERATE() BOOST_PP_DETAIL_CAT2(BOOST_PP_ITERATE_, BOOST_PP_INC(BOOST_PP_ITERATION_DEPTH()))
-# define BOOST_PP_ITERATE_1 <boost/preprocessor/detail/iterate/exp1.hpp>
-# define BOOST_PP_ITERATE_2 <boost/preprocessor/detail/iterate/exp2.hpp>
-# define BOOST_PP_ITERATE_3 <boost/preprocessor/detail/iterate/exp3.hpp>
-# define BOOST_PP_ITERATE_4 <boost/preprocessor/detail/iterate/exp4.hpp>
-# define BOOST_PP_ITERATE_5 <boost/preprocessor/detail/iterate/exp5.hpp>
-#
-# define BOOST_PP_LOCAL_ITERATE() <boost/preprocessor/detail/iterate/local_iterate.hpp>
+# ifndef BOOST_PREPROCESSOR_ITERATE_HPP
+# define BOOST_PREPROCESSOR_ITERATE_HPP
 #
-# define BOOST_PP_INCLUDE_SELF() <boost/preprocessor/detail/iterate/self.hpp>
+# include <boost/preprocessor/iteration/iterate.hpp>
 #
 # endif
index ee880e953359f1db38ac45fc1c78ab94b61e2144..2075f66948617bd383c82d43ad1bd39624427b2a 100644 (file)
@@ -1,44 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_LIMITS_HPP
-#define BOOST_PREPROCESSOR_LIMITS_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>Expands to the number of dimensions of repeat supported by the
-library.</p>
-
-<p>This concerns the repetition primitives (BOOST_PP_ENUM(),
-BOOST_PP_REPEAT() and BOOST_PP_REPEAT_FROM_TO()).</p>
-*/
-#define BOOST_PP_LIMIT_DIM 3
-
-/** <p>Expands to the maximum straight numeric literal supported by the
-library.</p>
-
-<p>This is also the limit of the repetition primitives (BOOST_PP_ENUM(),
-BOOST_PP_REPEAT() and BOOST_PP_REPEAT_FROM_TO()).</p>
-
-<h3>Note</h3>
-<ul>
-  <li>Only decimal integer literals in the range [0, BOOST_PP_LIMIT_MAG]
-      are supported.</li>
-  <li>All arithmetic operations (BOOST_PP_ADD(), BOOST_PP_SUB(),
-      BOOST_PP_MUL(), BOOST_PP_DIV()) use saturation arithmetic.</li>
-  <li>The maximum repetition count supported by the library may not be reached
-      due to compiler limitations.</li>
-</ul>
-*/
-#define BOOST_PP_LIMIT_MAG 128
-
-/** <p>Expands to the maximum tuple size supported by the library.</p> */
-#define BOOST_PP_LIMIT_TUPLE 32
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIMITS_HPP
+# define BOOST_PREPROCESSOR_LIMITS_HPP
+#
+# include <boost/preprocessor/config/limits.hpp>
+#
+# endif
index 343a97a061c93e7b5395763b77829b0ce4ea9f63..3a8ef19c7cdc0b30affebc63e6af7a50220cfc50 100644 (file)
@@ -1,40 +1,36 @@
-#ifndef BOOST_PREPROCESSOR_LIST_HPP
-#define BOOST_PREPROCESSOR_LIST_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>Includes all list headers.</p>
-
-<p>A list is an arbitrary size collection of elements.</p>
-
-<p>In the preprocessor library, the internal representation of lists
-uses parts that are like macro parameter lists. Thus an element of a list
-can be any sequence of tokens that constitutes a single macro parameter.</p>
-
-<p>Lists are manipulated using both list ADT macros and higher-order macros. For an introduction to manipulation of lists in functional programming, see
-<a href="../bibliography.htm#[Thompson]">[Thompson]</a>,
-<a href="../bibliography.htm#[Abelson]">[Abelson]</a> or
-<a href="../bibliography.htm#[Cousineau]">[Cousineau]</a>.</p>
-*/
-
-#include <boost/preprocessor/list/append.hpp>
-#include <boost/preprocessor/list/at.hpp>
-#include <boost/preprocessor/list/cat.hpp>
-#include <boost/preprocessor/list/filter.hpp>
-#include <boost/preprocessor/list/first_n.hpp>
-#include <boost/preprocessor/list/for_each.hpp>
-#include <boost/preprocessor/list/for_each_product.hpp>
-#include <boost/preprocessor/list/size.hpp>
-#include <boost/preprocessor/list/to_tuple.hpp>
-#include <boost/preprocessor/list/transform.hpp>
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_HPP
+# define BOOST_PREPROCESSOR_LIST_HPP
+#
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/list/append.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/list/cat.hpp>
+# include <boost/preprocessor/list/enum.hpp>
+# include <boost/preprocessor/list/filter.hpp>
+# include <boost/preprocessor/list/first_n.hpp>
+# include <boost/preprocessor/list/fold_left.hpp>
+# include <boost/preprocessor/list/fold_right.hpp>
+# include <boost/preprocessor/list/for_each.hpp>
+# include <boost/preprocessor/list/for_each_i.hpp>
+# include <boost/preprocessor/list/for_each_product.hpp>
+# include <boost/preprocessor/list/rest_n.hpp>
+# include <boost/preprocessor/list/reverse.hpp>
+# include <boost/preprocessor/list/size.hpp>
+# include <boost/preprocessor/list/to_tuple.hpp>
+# include <boost/preprocessor/list/transform.hpp>
+#
+# endif
index 38004377d1574d1ac96988ac24ca6a377bc7b33b..1caec1c82cdb4cd8ba05a104e06908cdcddbfae9 100644 (file)
-#ifndef BOOST_PREPROCESSOR_LIST_ADT_HPP
-#define BOOST_PREPROCESSOR_LIST_ADT_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>This header defines the fundamental list operations.</p>
-
-<h3>Note</h3>
-<ul>
-  <li>The internal representation of lists is hidden. Although there aren't
-      compelling reasons to change the representation, you should avoid
-      writing code that depends on the internal representation details.</li>
-</ul>
-*/
-
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/logical/not.hpp>
-
-/** <p>List constructor.</p>
-
-<p>Lists are build using list constructors BOOST_PP_LIST_NIL and
-BOOST_PP_LIST_CONS(). For example,</p>
-
-<pre>
-BOOST_PP_LIST_CONS(1,
-BOOST_PP_LIST_CONS(2,
-BOOST_PP_LIST_CONS(3,
-BOOST_PP_LIST_CONS(4,
-BOOST_PP_LIST_CONS(5,
-BOOST_PP_LIST_NIL)))))
-</pre>
-
-<p>Short lists can also be build from tuples:</p>
-
-<pre>
-BOOST_PP_TUPLE_TO_LIST(5,(1,2,3,4,5))
-</pre>
-
-<p>Both of the above lists contain 5 elements: 1, 2, 3, 4 and 5.</p>
-
-<p>Longer lists can be built from short lists with BOOST_PP_LIST_APPEND_D()
-and BOOST_PP_LIST_FOLD_RIGHT():</p>
-
-<pre>
-BOOST_PP_LIST_FOLD_RIGHT
-( BOOST_PP_LIST_APPEND_D
-, BOOST_PP_TUPLE_TO_LIST
-  ( N
-  , BOOST_PP_TUPLE_TO_LIST(M, (E11, E12, ..., E1M) )
-  , BOOST_PP_TUPLE_TO_LIST(M, (E21, E22, ..., E2M) )
-  , ...
-  , BOOST_PP_TUPLE_TO_LIST(M, (EN1, EN2, ..., ENM) )
-  )
-, BOOST_PP_LIST_NIL
-)
-</pre>
-*/
-#define BOOST_PP_LIST_CONS(FIRST,REST) (FIRST,REST,1)
-
-/** <p>List nil constructor.</p> */
-#define BOOST_PP_LIST_NIL (_,_,0)
-
-/** <p>Expands to 1 if the list is not nil and 0 otherwise.</p> */
-#define BOOST_PP_LIST_IS_CONS(LIST) BOOST_PP_TUPLE_ELEM(3,2,LIST)
-
-/** <p>Expands to 1 if the list is nil and 0 otherwise.</p> */
-#define BOOST_PP_LIST_IS_NIL(LIST) BOOST_PP_NOT(BOOST_PP_TUPLE_ELEM(3,2,LIST))
-
-/** <p>Expands to the first element of the list. The list must not be nil.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_LIST_FIRST(BOOST_PP_TUPLE_TO_LIST(5,(1,2,3,4,5)))
-</pre>
-
-<p>expands to 1.</p>
-*/
-#define BOOST_PP_LIST_FIRST(LIST) BOOST_PP_TUPLE_ELEM(3,0,LIST)
-
-/** <p>Expands to a list of all but the first element of the list.</p>
-
-<p>The list must not be nil.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_LIST_REST(BOOST_PP_TUPLE_TO_LIST(5,(1,2,3,4,5)))
-</pre>
-
-<p>expands to the same as:</p>
-
-<pre>
-BOOST_PP_TUPLE_TO_LIST(4,(2,3,4,5))
-</pre>
-*/
-#define BOOST_PP_LIST_REST(LIST) BOOST_PP_TUPLE_ELEM(3,1,LIST)
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  *
+#  * See http://www.boost.org for most recent version.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_ADT_HPP
+# define BOOST_PREPROCESSOR_LIST_ADT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/detail/is_binary.hpp>
+# include <boost/preprocessor/logical/compl.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* BOOST_PP_LIST_CONS */
+#
+# define BOOST_PP_LIST_CONS(head, tail) (head, tail)
+#
+# /* BOOST_PP_LIST_NIL */
+#
+# define BOOST_PP_LIST_NIL BOOST_PP_NIL
+#
+# /* BOOST_PP_LIST_FIRST */
+#
+# define BOOST_PP_LIST_FIRST(list) BOOST_PP_LIST_FIRST_D(list)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_LIST_FIRST_D(list) BOOST_PP_LIST_FIRST_I list
+# else
+#    define BOOST_PP_LIST_FIRST_D(list) BOOST_PP_LIST_FIRST_I ## list
+# endif
+#
+# define BOOST_PP_LIST_FIRST_I(head, tail) head
+#
+# /* BOOST_PP_LIST_REST */
+#
+# define BOOST_PP_LIST_REST(list) BOOST_PP_LIST_REST_D(list)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_LIST_REST_D(list) BOOST_PP_LIST_REST_I list
+# else
+#    define BOOST_PP_LIST_REST_D(list) BOOST_PP_LIST_REST_I ## list
+# endif
+#
+# define BOOST_PP_LIST_REST_I(head, tail) tail
+#
+# /* BOOST_PP_LIST_IS_CONS */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC()
+#    define BOOST_PP_LIST_IS_CONS(list) BOOST_PP_LIST_IS_CONS_D(list)
+#    define BOOST_PP_LIST_IS_CONS_D(list) BOOST_PP_LIST_IS_CONS_ ## list
+#    define BOOST_PP_LIST_IS_CONS_(head, tail) 1
+#    define BOOST_PP_LIST_IS_CONS_BOOST_PP_NIL 0
+# else
+#    define BOOST_PP_LIST_IS_CONS(list) BOOST_PP_IS_BINARY(list)
+# endif
+#
+# /* BOOST_PP_LIST_IS_NIL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC()
+#    define BOOST_PP_LIST_IS_NIL(list) BOOST_PP_COMPL(BOOST_PP_IS_BINARY(list))
+# else
+#    define BOOST_PP_LIST_IS_NIL(list) BOOST_PP_COMPL(BOOST_PP_LIST_IS_CONS(list))
+# endif
+#
+# endif
index c01c2b5bc36c1c863b7bbf38b500257f4a5c2e56..5e9f0944bd9ef6b86544751c27800196cb275e54 100644 (file)
@@ -1,45 +1,41 @@
-#ifndef BOOST_PREPROCESSOR_LIST_APPEND_HPP
-#define BOOST_PREPROCESSOR_LIST_APPEND_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/list/fold_right.hpp>
-
-/** <p>Catenates two lists together.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_LIST_APPEND
-( BOOST_PP_TUPLE_TO_LIST(2,(1,2))
-, BOOST_PP_TUPLE_TO_LIST(2,(3,4))
-)
-</pre>
-
-<p>expands to the same as:</p>
-
-<pre>
-BOOST_PP_TUPLE_TO_LIST(4,(1,2,3,4))
-</pre>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_APPEND(LIST_1ST,LIST_2ND) BOOST_PP_LIST_APPEND_D(0,LIST_1ST,LIST_2ND)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_LIST_APPEND_D(D,LIST_1ST,LIST_2ND) BOOST_PP_LIST_FOLD_RIGHT_D(D,BOOST_PP_LIST_APPEND_F,LIST_1ST,LIST_2ND)
-#define BOOST_PP_LIST_APPEND_F(D,X,S) (X,S,1)
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_APPEND_HPP
+# define BOOST_PREPROCESSOR_LIST_APPEND_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/fold_right.hpp>
+#
+# /* BOOST_PP_LIST_APPEND */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_APPEND(a, b) BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_APPEND_O, b, a)
+# else
+#    define BOOST_PP_LIST_APPEND(a, b) BOOST_PP_LIST_APPEND_I(a, b)
+#    define BOOST_PP_LIST_APPEND_I(a, b) BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_APPEND_O, b, a)
+# endif
+#
+# define BOOST_PP_LIST_APPEND_O(d, s, x) (x, s)
+#
+# /* BOOST_PP_LIST_APPEND_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_APPEND_D(d, a, b) BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_APPEND_O, b, a)
+# else
+#    define BOOST_PP_LIST_APPEND_D(d, a, b) BOOST_PP_LIST_APPEND_D_I(d, a, b)
+#    define BOOST_PP_LIST_APPEND_D_I(d, a, b) BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_APPEND_O, b, a)
+# endif
+#
+# endif
index f92b61fa4fd92393a569fb63ea0d47d0f3a3301d..f1e0b8712aa9f6e5fe86b88358d8197bf869eac4 100644 (file)
@@ -1,38 +1,40 @@
-#ifndef BOOST_PFIRST_NPROCESSOR_LIST_AT_HPP
-#define BOOST_PFIRST_NPROCESSOR_LIST_AT_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this softwaFIRST_N is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/list/rest_n.hpp>
-
-/** <p>Expands to the <code>INDEX</code>:th element of the list <code>LIST</code>. The
-first element is at index <code>0</code>.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(3,(A,B,C)),1)
-</pre>
-
-<p>expands to <code>B</code>.</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_AT(LIST,INDEX) BOOST_PP_LIST_AT_D(0,LIST,INDEX)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_LIST_AT_D(D,LIST,INDEX) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N_D(D,INDEX,LIST))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_AT_HPP
+# define BOOST_PREPROCESSOR_LIST_AT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/list/rest_n.hpp>
+#
+# /* BOOST_PP_LIST_AT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_AT(list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N(index, list))
+# else
+#    define BOOST_PP_LIST_AT(list, index) BOOST_PP_LIST_AT_I(list, index)
+#    define BOOST_PP_LIST_AT_I(list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N(index, list))
+# endif
+#
+# /* BOOST_PP_LIST_AT_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_AT_D(d, list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N_D(d, index, list))
+# else
+#    define BOOST_PP_LIST_AT_D(d, list, index) BOOST_PP_LIST_AT_D_I(d, list, index)
+#    define BOOST_PP_LIST_AT_D_I(d, list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N_D(d, index, list))
+# endif
+#
+# endif
index 332ff9b36b9ebc160c7275d50920d8d616d8e8f6..39306d65b933e9935faf6d1a402e8dc18c6ebb78 100644 (file)
@@ -1,43 +1,43 @@
-#ifndef BOOST_PREPROCESSOR_LIST_CAT_HPP
-#define BOOST_PREPROCESSOR_LIST_CAT_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/list/fold_left.hpp>
-
-/** <p>Catenates all elements of the list.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_LIST_CAT(BOOST_PP_TUPLE_TO_LIST(3,(1,2,3)))
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-123
-</pre>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_CAT(LIST) BOOST_PP_LIST_CAT_D(0,LIST)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_LIST_CAT_D(D,LIST) BOOST_PP_LIST_FOLD_LEFT_D(D,BOOST_PP_LIST_CAT_F,BOOST_PP_TUPLE_ELEM(3,0,LIST),BOOST_PP_TUPLE_ELEM(3,1,LIST))
-#define BOOST_PP_LIST_CAT_F(D,S,X) BOOST_PP_CAT(S,X)
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_CAT_HPP
+# define BOOST_PREPROCESSOR_LIST_CAT_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/list/fold_left.hpp>
+#
+# /* BOOST_PP_LIST_CAT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    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))
+# else
+#    define BOOST_PP_LIST_CAT(list) BOOST_PP_LIST_CAT_I(list)
+#    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))
+# endif
+#
+# define BOOST_PP_LIST_CAT_O(d, s, x) BOOST_PP_CAT(s, x)
+#
+# /* BOOST_PP_LIST_CAT_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    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))
+# else
+#    define BOOST_PP_LIST_CAT_D(d, list) BOOST_PP_LIST_CAT_D_I(d, list)
+#    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))
+# endif
+#
+# endif
index 18a9a19bc9d5e5399fafb1a65ecc6169247d92f2..2a310e146f7af8316c4a37b9b17da795d79b0e3d 100644 (file)
@@ -1,43 +1,42 @@
-#ifndef BOOST_PREPROCESSOR_LIST_ENUM_HPP
-#define BOOST_PREPROCESSOR_LIST_ENUM_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/comma_if.hpp>
-#include <boost/preprocessor/list/for_each_i.hpp>
-
-/** <p>Converts the list to a comma separated list.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_LIST_ENUM(BOOST_PP_TUPLE_TO_LIST(3,(A,B,C)))
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-A,B,C
-</pre>
-
-<h3>Uses</h3>
-<ul>
-  <li>BOOST_PP_LIST_FOR_EACH_I()</li>
-</ul>
-*/
-#define BOOST_PP_LIST_ENUM(LIST) BOOST_PP_LIST_ENUM_R(0,LIST)
-
-/** <p>Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).</p> */
-#define BOOST_PP_LIST_ENUM_R(R,LIST) BOOST_PP_LIST_FOR_EACH_I_R(R,BOOST_PP_LIST_ENUM_F,_,LIST)
-#define BOOST_PP_LIST_ENUM_F(R,_,I,X) BOOST_PP_COMMA_IF(I) X
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_ENUM_HPP
+# define BOOST_PREPROCESSOR_LIST_ENUM_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/for_each_i.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+#
+# /* BOOST_PP_LIST_ENUM */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_ENUM(list) BOOST_PP_LIST_FOR_EACH_I(BOOST_PP_LIST_ENUM_O, BOOST_PP_NIL, list)
+# else
+#    define BOOST_PP_LIST_ENUM(list) BOOST_PP_LIST_ENUM_I(list)
+#    define BOOST_PP_LIST_ENUM_I(list) BOOST_PP_LIST_FOR_EACH_I(BOOST_PP_LIST_ENUM_O, BOOST_PP_NIL, list)
+# endif
+#
+# define BOOST_PP_LIST_ENUM_O(r, _, i, elem) BOOST_PP_COMMA_IF(i) elem
+#
+# /* BOOST_PP_LIST_ENUM_R */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    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)
+# else
+#    define BOOST_PP_LIST_ENUM_R(r, list) BOOST_PP_LIST_ENUM_R_I(r, list)
+#    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)
+# endif
+#
+# endif
index 6426a080e36a6135f07ba254ce5dc002c88a328f..d9495cafab94c5d32347a7181a4aac5967f65b93 100644 (file)
@@ -1,44 +1,51 @@
-#ifndef BOOST_PREPROCESSOR_LIST_FILTER_HPP
-#define BOOST_PREPROCESSOR_LIST_FILTER_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/list/fold_right.hpp>
-
-/** <p>Expands to a list containing all the elements <code>X</code> of the list
-for which <code>PRED(D,DATA,X)</code> is true.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_LIST_FILTER(BOOST_PP_NOT_EQUAL_D,2,BOOST_PP_TUPLE_TO_LIST(3,(1,2,3)))
-</pre>
-
-<p>expands to the same as:</p>
-
-<pre>
-BOOST_PP_TUPLE_TO_LIST(2,(1,3))
-</pre>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_FILTER(PRED,DATA,LIST) BOOST_PP_LIST_FILTER_D(0,PRED,DATA,LIST)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_LIST_FILTER_D(D,PRED,DATA,LIST) BOOST_PP_TUPLE_ELEM(3,2,BOOST_PP_LIST_FOLD_RIGHT_D(D,BOOST_PP_LIST_FILTER_F,LIST,(PRED,DATA,(_,_,0))))
-
-#define BOOST_PP_LIST_FILTER_F(D,X,PDR) (BOOST_PP_TUPLE_ELEM(3,0,PDR),BOOST_PP_TUPLE_ELEM(3,1,PDR),BOOST_PP_IF(BOOST_PP_TUPLE_ELEM(3,0,PDR)(D,BOOST_PP_TUPLE_ELEM(3,1,PDR),X),BOOST_PP_LIST_CONS,BOOST_PP_IF1)(X,BOOST_PP_TUPLE_ELEM(3,2,PDR)))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FILTER_HPP
+# define BOOST_PREPROCESSOR_LIST_FILTER_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/list/fold_right.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_FILTER */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FILTER(pred, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_FILTER_O, (pred, data, BOOST_PP_NIL), list))
+# else
+#    define BOOST_PP_LIST_FILTER(pred, data, list) BOOST_PP_LIST_FILTER_I(pred, data, list)
+#    define BOOST_PP_LIST_FILTER_I(pred, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_FILTER_O, (pred, data, BOOST_PP_NIL), list))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FILTER_O(d, pdr, elem) BOOST_PP_LIST_FILTER_O_D(d, BOOST_PP_TUPLE_ELEM(3, 0, pdr), BOOST_PP_TUPLE_ELEM(3, 1, pdr), BOOST_PP_TUPLE_ELEM(3, 2, pdr), elem)
+# else
+#    define BOOST_PP_LIST_FILTER_O(d, pdr, elem) BOOST_PP_LIST_FILTER_O_I(d, BOOST_PP_TUPLE_REM_3 pdr, elem)
+#    define BOOST_PP_LIST_FILTER_O_I(d, im, elem) BOOST_PP_LIST_FILTER_O_D(d, im, elem)
+# endif
+#
+# define BOOST_PP_LIST_FILTER_O_D(d, pred, data, res, elem) (pred, data, BOOST_PP_IF(pred(d, data, elem), (elem, res), res))
+#
+# /* BOOST_PP_LIST_FILTER_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FILTER_D(d, pred, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_FILTER_O, (pred, data, BOOST_PP_NIL), list))
+# else
+#    define BOOST_PP_LIST_FILTER_D(d, pred, data, list) BOOST_PP_LIST_FILTER_D_I(d, pred, data, list)
+#    define BOOST_PP_LIST_FILTER_D_I(d, pred, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_FILTER_O, (pred, data, BOOST_PP_NIL), list))
+# endif
+#
+# endif
index 6d781d24e8cfdd6c7e50b11ca025b53ce1899893..4ed6abb5748b8d5a30f044bf3bfa625b8329ca83 100644 (file)
@@ -1,53 +1,59 @@
-#ifndef BOOST_PREPROCESSOR_LIST_FIRST_N_HPP
-#define BOOST_PREPROCESSOR_LIST_FIRST_N_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/dec.hpp>
-#include <boost/preprocessor/list/adt.hpp>
-#include <boost/preprocessor/while.hpp>
-
-/** <p>Expands to a list of the first <code>COUNT</code> elements of the list
-<code>LIST</code>.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_LIST_FIRST_N(2,BOOST_PP_TUPLE_TO_LIST(4,(+,-,*,/)))
-</pre>
-
-<p>expands to the same as:</p>
-
-<pre>
-BOOST_PP_TUPLE_TO_LIST(2,(+,-))
-</pre>
-
-<h3>See</h3>
-<ul>
-  <li>BOOST_PP_LIST_REST_N()</li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_FIRST_N(COUNT,LIST) BOOST_PP_LIST_FIRST_N_D(0,COUNT,LIST)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation the D parameter).</p> */
-#define BOOST_PP_LIST_FIRST_N_D(D,COUNT,LIST) BOOST_PP_LIST_REVERSE_D(D,BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_WHILE##D(BOOST_PP_LIST_FIRST_N_C,BOOST_PP_LIST_FIRST_N_F,((_,_,0),LIST,COUNT))))
-
-#define BOOST_PP_LIST_FIRST_N_C(D,RLC) BOOST_PP_TUPLE_ELEM(3,2,RLC)
-#define BOOST_PP_LIST_FIRST_N_F(D,RLC) ((BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(3,1,RLC)),BOOST_PP_TUPLE_ELEM(3,0,RLC),1),BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(3,1,RLC)),BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(3,2,RLC)))
-
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FIRST_N_HPP
+# define BOOST_PREPROCESSOR_LIST_FIRST_N_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/list/reverse.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_FIRST_N */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FIRST_N(count, list) BOOST_PP_LIST_REVERSE(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_WHILE(BOOST_PP_LIST_FIRST_N_P, BOOST_PP_LIST_FIRST_N_O, (count, list, BOOST_PP_NIL))))
+# else
+#    define BOOST_PP_LIST_FIRST_N(count, list) BOOST_PP_LIST_FIRST_N_I(count, list)
+#    define BOOST_PP_LIST_FIRST_N_I(count, list) BOOST_PP_LIST_REVERSE(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_WHILE(BOOST_PP_LIST_FIRST_N_P, BOOST_PP_LIST_FIRST_N_O, (count, list, BOOST_PP_NIL))))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FIRST_N_P(d, data) BOOST_PP_TUPLE_ELEM(3, 0, data)
+# else
+#    define BOOST_PP_LIST_FIRST_N_P(d, data) BOOST_PP_LIST_FIRST_N_P_I data
+#    define BOOST_PP_LIST_FIRST_N_P_I(c, l, nl) c
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_LIST_FIRST_N_O(d, data) BOOST_PP_LIST_FIRST_N_O_D data
+# else
+#    define BOOST_PP_LIST_FIRST_N_O(d, data) BOOST_PP_LIST_FIRST_N_O_D(BOOST_PP_TUPLE_ELEM(3, 0, data), BOOST_PP_TUPLE_ELEM(3, 1, data), BOOST_PP_TUPLE_ELEM(3, 2, data))
+# endif
+#
+# define BOOST_PP_LIST_FIRST_N_O_D(c, l, nl) (BOOST_PP_DEC(c), BOOST_PP_LIST_REST(l), (BOOST_PP_LIST_FIRST(l), nl))
+#
+# /* BOOST_PP_LIST_FIRST_N_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FIRST_N_D(d, count, list) BOOST_PP_LIST_REVERSE_D(d, BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_LIST_FIRST_N_P, BOOST_PP_LIST_FIRST_N_O, (count, list, BOOST_PP_NIL))))
+# else
+#    define BOOST_PP_LIST_FIRST_N_D(d, count, list) BOOST_PP_LIST_FIRST_N_D_I(d, count, list)
+#    define BOOST_PP_LIST_FIRST_N_D_I(d, count, list) BOOST_PP_LIST_REVERSE_D(d, BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_LIST_FIRST_N_P, BOOST_PP_LIST_FIRST_N_O, (count, list, BOOST_PP_NIL))))
+# endif
+#
+# endif
index 51677ade36cfdac428fe1a13d3ba5fc3b88a4ad6..bd91473def7f46e3e677b20ff070b53111331869 100644 (file)
-#ifndef BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP
-#define BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/detail/auto_rec.hpp>
-#include <boost/preprocessor/expand.hpp>
-#include <boost/preprocessor/list/adt.hpp>
-#include <boost/preprocessor/while.hpp>
-
-/** <p>Iterates <code>OP(D,STATE,X)</code> for each element <code>X</code> of the
-list <code>LIST</code> (from the left or the start of the list).</p>
-
-<p>In other words, expands to:</p>
-
-<pre>
-OP
-( D
-, ... OP(D, OP(D,STATE,BOOST_PP_LIST_AT(LIST,0)), BOOST_PP_LIST_AT(LIST,1)) ...
-, BOOST_PP_LIST_AT(LIST,BOOST_PP_DEC(BOOST_PP_LIST_SIZE(LIST))
-)
-</pre>
-
-<p>For example,</p>
-
-<pre>
-#define TEST(D,STATE,X) BOOST_PP_CAT(STATE,X)
-BOOST_PP_LIST_FOLD_LEFT(TEST,_,BOOST_PP_TUPLE_TO_LIST(3,(A,B,C)))
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-_ABC
-</pre>
-
-<h3>Note</h3>
-<ul>
-  <li>Folding, or accumulation, is a very general pattern of computation.
-      Most list operations can be implemented in terms of folding.</li>
-</ul>
-
-<h3>See</h3>
-<ul>
-  <li>BOOST_PP_LIST_FOLD_RIGHT()</li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_FOLD_LEFT(OP,STATE,LIST) BOOST_PP_LIST_FOLD_LEFT_D(0,OP,STATE,LIST)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p>
-
-<h3>Note</h3>
-<ul>
-  <li>BOOST_PP_LIST_FOLD_LEFT_D() implements automatic recursion. You
-      can use a fold in the OP macro.</li>
-</ul>
-*/
-#if 0
-#  define BOOST_PP_LIST_FOLD_LEFT_D(D,OP,STATE,LIST)
-#endif
-
-#define BOOST_PP_LIST_FOLD_LEFT_D\
-  BOOST_PP_AUTO_REC_CAT1(BOOST_PP_LIST_FOLD_LEFT_D,BOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC1(BOOST_PP_AUTO_REC_ID,(1)))
-#define BOOST_PP_LIST_FOLD_LEFT_DBOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC1(M,P)\
-  BOOST_PP_AUTO_REC_CAT2(BOOST_PP_LIST_FOLD_LEFT_D,BOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC2(BOOST_PP_AUTO_REC_ID,(2)))
-#define BOOST_PP_LIST_FOLD_LEFT_DBOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC2(M,P)\
-  BOOST_PP_AUTO_REC_CAT3(BOOST_PP_LIST_FOLD_LEFT_D,BOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC3(BOOST_PP_AUTO_REC_ID,(3)))
-#define BOOST_PP_LIST_FOLD_LEFT_DBOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC3(M,P)\
-  (TOO MANY NESTED FOLDS!)
-
-#define BOOST_PP_LIST_FOLD_LEFT_D1(D,O,S,L) BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC1(BOOST_PP_WHILE##D,(BOOST_PP_LIST_FOLD_LEFT_P,BOOST_PP_LIST_FOLD_LEFT_O1,(O,S,L))))
-#define BOOST_PP_LIST_FOLD_LEFT_D2(D,O,S,L) BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC2(BOOST_PP_WHILE##D,(BOOST_PP_LIST_FOLD_LEFT_P,BOOST_PP_LIST_FOLD_LEFT_O2,(O,S,L))))
-#define BOOST_PP_LIST_FOLD_LEFT_D3(D,O,S,L) BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC3(BOOST_PP_WHILE##D,(BOOST_PP_LIST_FOLD_LEFT_P,BOOST_PP_LIST_FOLD_LEFT_O3,(O,S,L))))
-
-#define BOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC1(M,P) BOOST_PP_EXPAND(M P)
-#define BOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC2(M,P) BOOST_PP_EXPAND(M P)
-#define BOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC3(M,P) BOOST_PP_EXPAND(M P)
-
-#define BOOST_PP_LIST_FOLD_LEFT_P(D,OSL) BOOST_PP_TUPLE_ELEM(3,2,BOOST_PP_TUPLE_ELEM(3,2,OSL))
-
-#define BOOST_PP_LIST_FOLD_LEFT_O1(D,OSL) (BOOST_PP_TUPLE_ELEM(3,0,OSL),BOOST_PP_TUPLE_ELEM(3,0,OSL)(D,BOOST_PP_TUPLE_ELEM(3,1,OSL),BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(3,2,OSL))),BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(3,2,OSL)))
-#define BOOST_PP_LIST_FOLD_LEFT_O2(D,OSL) (BOOST_PP_TUPLE_ELEM(3,0,OSL),BOOST_PP_TUPLE_ELEM(3,0,OSL)(D,BOOST_PP_TUPLE_ELEM(3,1,OSL),BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(3,2,OSL))),BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(3,2,OSL)))
-#define BOOST_PP_LIST_FOLD_LEFT_O3(D,OSL) (BOOST_PP_TUPLE_ELEM(3,0,OSL),BOOST_PP_TUPLE_ELEM(3,0,OSL)(D,BOOST_PP_TUPLE_ELEM(3,1,OSL),BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(3,2,OSL))),BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(3,2,OSL)))
-
-/** <p>Obsolete, just use BOOST_PP_LIST_FOLD_LEFT().</p> */
-#define BOOST_PP_LIST_FOLD_LEFT_2ND BOOST_PP_LIST_FOLD_LEFT
-/** <p>Obsolete, just use BOOST_PP_LIST_FOLD_LEFT_D().</p> */
-#define BOOST_PP_LIST_FOLD_LEFT_2ND_D BOOST_PP_LIST_FOLD_LEFT_D
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP
+# define BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+#
+# /* BOOST_PP_LIST_FOLD_LEFT */
+#
+# if 0
+#    define BOOST_PP_LIST_FOLD_LEFT(op, state, list)
+# endif
+#
+# define BOOST_PP_LIST_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
+#
+# define BOOST_PP_LIST_FOLD_LEFT_257(o, s, l) BOOST_PP_ERROR(0x0004)
+#
+# define BOOST_PP_LIST_FOLD_LEFT_D(d, o, s, l) BOOST_PP_LIST_FOLD_LEFT_ ## d(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_2ND BOOST_PP_LIST_FOLD_LEFT
+# define BOOST_PP_LIST_FOLD_LEFT_2ND_D BOOST_PP_LIST_FOLD_LEFT_D
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    include <boost/preprocessor/list/detail/edg/fold_left.hpp>
+# else
+#    include <boost/preprocessor/list/detail/fold_left.hpp>
+# endif
+#
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) 0
+#
+# endif
index cc28f42add1f628c5a851c404197cf9c4814e9a0..e6cd24a7db868d58bd6ebd5e2f52bd98af8a3b1a 100644 (file)
@@ -1,98 +1,41 @@
-#ifndef BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP
-#define BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/list/reverse.hpp>
-
-/** <p>Iterates <code>OP(D,X,STATE)</code> for each element <code>X</code> of the
-list <code>LIST</code> (from the right or the end of the list).</p>
-
-<p>In other words, expands to:</p>
-
-<pre>
-OP
-( D
-, BOOST_PP_LIST_AT(LIST,0)
-, ... OP
-      ( D
-      , BOOST_PP_LIST_AT(LIST,BOOST_PP_SUB(BOOST_PP_LIST_SIZE(LIST),2))
-      , OP
-        ( D
-        , BOOST_PP_LIST_AT(LIST,BOOST_PP_SUB(BOOST_PP_LIST_SIZE(LIST),1))
-        , STATE
-        )
-      ) ...
-)
-</pre>
-
-<p>For example,</p>
-
-<pre>
-#define TEST(D,X,STATE) BOOST_PP_CAT(STATE,X)
-BOOST_PP_LIST_FOLD_RIGHT(TEST,_,BOOST_PP_TUPLE_TO_LIST(3,(A,B,C)))
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-_CBA
-</pre>
-
-<h3>Note</h3>
-<ul>
-  <li>Folding, or accumulation, is a very general pattern of computation.
-      Most list operations can be implemented in terms of folding.</li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_FOLD_RIGHT(OP,LIST,STATE) BOOST_PP_LIST_FOLD_RIGHT_D(0,OP,LIST,STATE)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p>
-
-<h3>Note</h3>
-<ul>
-  <li>BOOST_PP_LIST_FOLD_RIGHT_D() implements automatic recursion. You
-      can use a fold in the OP macro.</li>
-</ul>
-*/
-#if 0
-#  define BOOST_PP_LIST_FOLD_RIGHT_D(D,OP,LIST,STATE)
-#endif
-
-#define BOOST_PP_LIST_FOLD_RIGHT_D\
-  BOOST_PP_AUTO_REC_CAT1(BOOST_PP_LIST_FOLD_RIGHT_D,BOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC1(BOOST_PP_AUTO_REC_ID,(1)))
-#define BOOST_PP_LIST_FOLD_RIGHT_DBOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC1(M,P)\
-  BOOST_PP_AUTO_REC_CAT2(BOOST_PP_LIST_FOLD_RIGHT_D,BOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC2(BOOST_PP_AUTO_REC_ID,(2)))
-#define BOOST_PP_LIST_FOLD_RIGHT_DBOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC2(M,P)\
-  BOOST_PP_AUTO_REC_CAT3(BOOST_PP_LIST_FOLD_RIGHT_D,BOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC3(BOOST_PP_AUTO_REC_ID,(3)))
-#define BOOST_PP_LIST_FOLD_RIGHT_DBOOST_PP_LIST_FOLD_LEFT_D_AUTO_REC3(M,P)\
-  (TOO MANY NESTED FOLDS!)
-
-#define BOOST_PP_LIST_FOLD_RIGHT_D1(D,O,L,S) BOOST_PP_TUPLE_ELEM(2,1,BOOST_PP_LIST_FOLD_LEFT_D(D,BOOST_PP_LIST_FOLD_RIGHT_O1,(O,S),BOOST_PP_LIST_REVERSE_D(D,L)))
-#define BOOST_PP_LIST_FOLD_RIGHT_D2(D,O,L,S) BOOST_PP_TUPLE_ELEM(2,1,BOOST_PP_LIST_FOLD_LEFT_D(D,BOOST_PP_LIST_FOLD_RIGHT_O2,(O,S),BOOST_PP_LIST_REVERSE_D(D,L)))
-#define BOOST_PP_LIST_FOLD_RIGHT_D3(D,O,L,S) BOOST_PP_TUPLE_ELEM(2,1,BOOST_PP_LIST_FOLD_LEFT_D(D,BOOST_PP_LIST_FOLD_RIGHT_O3,(O,S),BOOST_PP_LIST_REVERSE_D(D,L)))
-
-#define BOOST_PP_LIST_FOLD_RIGHT_O1(D,OS,X) (BOOST_PP_TUPLE_ELEM(2,0,OS),BOOST_PP_TUPLE_ELEM(2,0,OS)(D,X,BOOST_PP_TUPLE_ELEM(2,1,OS)))
-#define BOOST_PP_LIST_FOLD_RIGHT_O2(D,OS,X) (BOOST_PP_TUPLE_ELEM(2,0,OS),BOOST_PP_TUPLE_ELEM(2,0,OS)(D,X,BOOST_PP_TUPLE_ELEM(2,1,OS)))
-#define BOOST_PP_LIST_FOLD_RIGHT_O3(D,OS,X) (BOOST_PP_TUPLE_ELEM(2,0,OS),BOOST_PP_TUPLE_ELEM(2,0,OS)(D,X,BOOST_PP_TUPLE_ELEM(2,1,OS)))
-
-/** <p>Obsolete, just use BOOST_PP_LIST_FOLD_RIGHT().</p> */
-#define BOOST_PP_LIST_FOLD_RIGHT_2ND BOOST_PP_LIST_FOLD_RIGHT
-/** <p>Obsolete, just use BOOST_PP_LIST_FOLD_RIGHT_D().</p> */
-#define BOOST_PP_LIST_FOLD_RIGHT_2ND_D BOOST_PP_LIST_FOLD_RIGHT_D 
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP
+# define BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+#
+# if 0
+#    define BOOST_PP_LIST_FOLD_RIGHT(op, state, list)
+# endif
+#
+# define BOOST_PP_LIST_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_257(o, s, l) BOOST_PP_ERROR(0x0004)
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_D(d, o, s, l) BOOST_PP_LIST_FOLD_RIGHT_ ## d(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_2ND BOOST_PP_LIST_FOLD_RIGHT
+# define BOOST_PP_LIST_FOLD_RIGHT_2ND_D BOOST_PP_LIST_FOLD_RIGHT_D
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    include <boost/preprocessor/list/detail/edg/fold_right.hpp>
+# else
+#    include <boost/preprocessor/list/detail/fold_right.hpp>
+# endif
+#
+# endif
index 151971f6af3910f42bd04171d4c6c2f363288e87..6f73674b919fa75ccd58a79937e66faacff78b68 100644 (file)
@@ -1,58 +1,50 @@
-#ifndef BOOST_PREPROCESSOR_LIST_FOR_EACH_HPP
-#define BOOST_PREPROCESSOR_LIST_FOR_EACH_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/list/for_each_i.hpp>
-
-/** <p>Repeats <code>MACRO(R,DATA,BOOST_PP_LIST_AT(LIST,INDEX))</code> for each INDEX = [0,
-BOOST_PP_LIST_SIZE(LIST)).</p>
-
-<p>In other words, expands to the sequence:</p>
-
-<pre>
-MACRO(R,DATA,BOOST_PP_LIST_AT(LIST,0))
-MACRO(R,DATA,BOOST_PP_LIST_AT(LIST,1))
-...
-MACRO(R,DATA,BOOST_PP_LIST_AT(LIST,BOOST_PP_DEC(BOOST_PP_LIST_SIZE(LIST))))
-</pre>
-
-<p>For example,</p>
-
-<pre>
-#define TEST(R,DATA,X) BOOST_PP_CAT(DATA,X)();
-BOOST_PP_LIST_FOR_EACH(TEST,prefix_,BOOST_PP_TUPLE_TO_LIST(3,(A,B,C)))
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-prefix_A(); prefix_B(); prefix_C();
-</pre>
-
-<h3>Example</h3>
-<ul>
-  <li><a href="../../example/catch_builtin.cpp">catch_builtin.cpp</a></li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_FOR_EACH(MACRO,DATA,LIST) BOOST_PP_LIST_FOR_EACH_R(0,MACRO,DATA,LIST)
-
-/** <p>Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).</p> */
-#define BOOST_PP_LIST_FOR_EACH_R(R,MACRO,DATA,LIST) BOOST_PP_LIST_FOR_EACH_I_R(R,BOOST_PP_LIST_FOR_EACH_F,(MACRO,DATA),LIST)
-#define BOOST_PP_LIST_FOR_EACH_F(R,MD,I,X) BOOST_PP_TUPLE_ELEM(2,0,MD)(R,BOOST_PP_TUPLE_ELEM(2,1,MD),X)
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FOR_EACH_HPP
+# define BOOST_PREPROCESSOR_LIST_FOR_EACH_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/for_each_i.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_FOR_EACH */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FOR_EACH(macro, data, list) BOOST_PP_LIST_FOR_EACH_I(BOOST_PP_LIST_FOR_EACH_O, (macro, data), list)
+# else
+#    define BOOST_PP_LIST_FOR_EACH(macro, data, list) BOOST_PP_LIST_FOR_EACH_X(macro, data, list)
+#    define BOOST_PP_LIST_FOR_EACH_X(macro, data, list) BOOST_PP_LIST_FOR_EACH_I(BOOST_PP_LIST_FOR_EACH_O, (macro, data), list)
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FOR_EACH_O(r, md, i, elem) BOOST_PP_LIST_FOR_EACH_O_D(r, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md), elem)
+# else
+#    define BOOST_PP_LIST_FOR_EACH_O(r, md, i, elem) BOOST_PP_LIST_FOR_EACH_O_I(r, BOOST_PP_TUPLE_REM_2 md, elem)
+#    define BOOST_PP_LIST_FOR_EACH_O_I(r, im, elem) BOOST_PP_LIST_FOR_EACH_O_D(r, im, elem)
+# endif
+#
+# define BOOST_PP_LIST_FOR_EACH_O_D(r, m, d, elem) m(r, d, elem)
+#
+# /* BOOST_PP_LIST_FOR_EACH_R */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FOR_EACH_R(r, macro, data, list) BOOST_PP_LIST_FOR_EACH_I_R(r, BOOST_PP_LIST_FOR_EACH_O, (macro, data), list)
+# else
+#    define BOOST_PP_LIST_FOR_EACH_R(r, macro, data, list) BOOST_PP_LIST_FOR_EACH_R_X(r, macro, data, list)
+#    define BOOST_PP_LIST_FOR_EACH_R_X(r, macro, data, list) BOOST_PP_LIST_FOR_EACH_I_R(r, BOOST_PP_LIST_FOR_EACH_O, (macro, data), list)
+# endif
+#
+# endif
index e547852e19a00c34b1529d9793598314f594b253..b2e420ba05a43d2e5e0e99068f6ba1427ef65799 100644 (file)
@@ -1,52 +1,66 @@
-#ifndef BOOST_PREPROCESSOR_LIST_FOR_EACH_I_HPP
-#define BOOST_PREPROCESSOR_LIST_FOR_EACH_I_HPP
-
-/* Copyright (C) 2002
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/list/adt.hpp>
-#include <boost/preprocessor/inc.hpp>
-#include <boost/preprocessor/for.hpp>
-
-/** <p>Repeats <code>MACRO(R,DATA,INDEX,BOOST_PP_LIST_AT(LIST,INDEX))</code> for each INDEX = [0,
-BOOST_PP_LIST_SIZE(LIST)).</p>
-
-<p>In other words, expands to the sequence:</p>
-
-<pre>
-MACRO(R,DATA,0,BOOST_PP_LIST_AT(LIST,0))
-MACRO(R,DATA,1,BOOST_PP_LIST_AT(LIST,1))
-...
-MACRO(R,DATA,BOOST_PP_DEC(BOOST_PP_LIST_SIZE(LIST)),BOOST_PP_LIST_AT(LIST,BOOST_PP_DEC(BOOST_PP_LIST_SIZE(LIST))))
-</pre>
-
-<p>For example,</p>
-
-<pre>
-#define TEST(R,DATA,INDEX,X) BOOST_PP_CAT(DATA,X)(INDEX);
-BOOST_PP_LIST_FOR_EACH_I(TEST,prefix_,BOOST_PP_TUPLE_TO_LIST(3,(A,B,C)))
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-prefix_A(0); prefix_B(1); prefix_C(2);
-</pre>
-*/
-#define BOOST_PP_LIST_FOR_EACH_I(MACRO,DATA,LIST) BOOST_PP_LIST_FOR_EACH_I_R(0,MACRO,DATA,LIST)
-
-/** <p>Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).</p> */
-#define BOOST_PP_LIST_FOR_EACH_I_R(R,MACRO,DATA,LIST) BOOST_PP_FOR##R((MACRO,DATA,LIST,0),BOOST_PP_LIST_FOR_EACH_I_P,BOOST_PP_LIST_FOR_EACH_I_O,BOOST_PP_LIST_FOR_EACH_I_M)
-#define BOOST_PP_LIST_FOR_EACH_I_P(R,MDLI) BOOST_PP_TUPLE_ELEM(3,2,BOOST_PP_TUPLE_ELEM(4,2,MDLI))
-#define BOOST_PP_LIST_FOR_EACH_I_O(R,MDLI) (BOOST_PP_TUPLE_ELEM(4,0,MDLI),BOOST_PP_TUPLE_ELEM(4,1,MDLI),BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(4,2,MDLI)),BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(4,3,MDLI)))
-#define BOOST_PP_LIST_FOR_EACH_I_M(R,MDLI) BOOST_PP_TUPLE_ELEM(4,0,MDLI)(R,BOOST_PP_TUPLE_ELEM(4,1,MDLI),BOOST_PP_TUPLE_ELEM(4,3,MDLI),BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(4,2,MDLI)))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_LIST_FOR_EACH_I_HPP
+# define BOOST_PREPROCESSOR_LIST_LIST_FOR_EACH_I_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/repetition/for.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_FOR_EACH_I */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+#    define BOOST_PP_LIST_FOR_EACH_I(macro, data, list) BOOST_PP_FOR((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
+# else
+#    define BOOST_PP_LIST_FOR_EACH_I(macro, data, list) BOOST_PP_LIST_FOR_EACH_I_I(macro, data, list)
+#    define BOOST_PP_LIST_FOR_EACH_I_I(macro, data, list) BOOST_PP_FOR((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+#    define BOOST_PP_LIST_FOR_EACH_I_P(r, x) BOOST_PP_LIST_FOR_EACH_I_P_D x
+#    define BOOST_PP_LIST_FOR_EACH_I_P_D(m, d, l, i) BOOST_PP_LIST_IS_CONS(l)
+# else
+#    define BOOST_PP_LIST_FOR_EACH_I_P(r, x) BOOST_PP_LIST_IS_CONS(BOOST_PP_TUPLE_ELEM(4, 2, x))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_LIST_FOR_EACH_I_O(r, x) BOOST_PP_LIST_FOR_EACH_I_O_D x
+#    define BOOST_PP_LIST_FOR_EACH_I_O_D(m, d, l, i) (m, d, BOOST_PP_LIST_REST(l), BOOST_PP_INC(i))
+# else
+#    define BOOST_PP_LIST_FOR_EACH_I_O(r, x) (BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_LIST_REST(BOOST_PP_TUPLE_ELEM(4, 2, x)), BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(4, 3, x)))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FOR_EACH_I_M(r, x) BOOST_PP_LIST_FOR_EACH_I_M_D(r, BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_TUPLE_ELEM(4, 2, x), BOOST_PP_TUPLE_ELEM(4, 3, x))
+# else
+#    define BOOST_PP_LIST_FOR_EACH_I_M(r, x) BOOST_PP_LIST_FOR_EACH_I_M_I(r, BOOST_PP_TUPLE_REM_4 x)
+#    define BOOST_PP_LIST_FOR_EACH_I_M_I(r, x_e) BOOST_PP_LIST_FOR_EACH_I_M_D(r, x_e)
+# endif
+#
+# define BOOST_PP_LIST_FOR_EACH_I_M_D(r, m, d, l, i) m(r, d, i, BOOST_PP_LIST_FIRST(l))
+#
+# /* BOOST_PP_LIST_FOR_EACH_I_R */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FOR_EACH_I_R(r, macro, data, list) BOOST_PP_FOR_ ## r((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
+# else
+#    define BOOST_PP_LIST_FOR_EACH_I_R(r, macro, data, list) BOOST_PP_LIST_FOR_EACH_I_R_I(r, macro, data, list)
+#    define BOOST_PP_LIST_FOR_EACH_I_R_I(r, macro, data, list) BOOST_PP_FOR_ ## r((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
+# endif
+#
+# endif
index 592581d0ccc85a1f25e0c611d0c01e6baa841e60..103facfa0750cee9b87bc025433cccefd52d57ab 100644 (file)
-#ifndef BOOST_PREPROCESSOR_LIST_FOR_EACH_PRODUCT_HPP
-#define BOOST_PREPROCESSOR_LIST_FOR_EACH_PRODUCT_HPP
-
-/* Copyright (C) 2002
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/list/adt.hpp>
-#include <boost/preprocessor/list/to_tuple.hpp>
-#include <boost/preprocessor/tuple/to_list.hpp>
-#include <boost/preprocessor/tuple/reverse.hpp>
-#include <boost/preprocessor/for.hpp>
-
-/** <p>Repeats <code>MACRO(R,X)</code> for each element <code>X</code> of the
-cartesian product of the lists of the <code>SIZE_OF_TUPLE</code>-tuple <code>TUPLE_OF_LISTS</code>.</p>
-
-<p>This macro is useful for generating code to avoid combinatorial
-explosion.</p>
-
-<p>For example,</p>
-
-<pre>
-#define TEST(R,X) X
-BOOST_PP_LIST_FOR_EACH_PRODUCT
-( TEST
-, 2
-, ( BOOST_PP_TUPLE_TO_LIST(3,(A,B,C))
-  , BOOST_PP_TUPLE_TO_LIST(2,(1,2))
-  )
-)
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-(A,1) (A,2) (B,1) (B,2) (C,1) (C,2) 
-</pre>
-
-<h3>Example</h3>
-<ul>
-  <li><a href="../../example/is_integral.cpp">is_integral.cpp</a></li>
-  <li><a href="../../example/array_arithmetic.c">array_arithmetic.c</a></li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT(MACRO,SIZE_OF_TUPLE,TUPLE_OF_LISTS) BOOST_PP_LIST_FOR_EACH_PRODUCT_R(0,MACRO,SIZE_OF_TUPLE,TUPLE_OF_LISTS)
-
-/** <p>Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).</p> */
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_R(R,MACRO,SIZE_OF_TUPLE,TUPLE_OF_LISTS) BOOST_PP_LIST_FOR_EACH_PRODUCT_R2(0,MACRO,BOOST_PP_TUPLE_TO_LIST(SIZE_OF_TUPLE,BOOST_PP_TUPLE_REVERSE(SIZE_OF_TUPLE,TUPLE_OF_LISTS)))
-
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_R2(R,F,LL) BOOST_PP_FOR##R((BOOST_PP_TUPLE_ELEM(3,0,LL),BOOST_PP_TUPLE_ELEM(3,1,LL),(_,_,0),F),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I0)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_C(R,P) BOOST_PP_TUPLE_ELEM(3,2,BOOST_PP_TUPLE_ELEM(4,0,P))
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_F(R,P) (BOOST_PP_LIST_REST(BOOST_PP_TUPLE_ELEM(4,0,P)),BOOST_PP_TUPLE_ELEM(4,1,P),BOOST_PP_TUPLE_ELEM(4,2,P),BOOST_PP_TUPLE_ELEM(4,3,P))
-
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I(R,P) BOOST_PP_TUPLE_ELEM(4,3,P)(R,BOOST_PP_LIST_TO_TUPLE_R(R,(BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(4,0,P)),BOOST_PP_TUPLE_ELEM(4,2,P),1)))
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,I) BOOST_PP_IF(BOOST_PP_TUPLE_ELEM(3,2,BOOST_PP_TUPLE_ELEM(4,1,P)),BOOST_PP_LIST_FOR_EACH_PRODUCT_I##I##_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_I)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P) (BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(4,1,P)),BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(4,1,P)),(BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(4,0,P)),BOOST_PP_TUPLE_ELEM(4,2,P),1),BOOST_PP_TUPLE_ELEM(4,3,P))
-
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I0_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I1)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I0(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,0)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I1_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I2)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I1(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,1)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I2_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I3)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I2(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,2)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I3_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I4)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I3(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,3)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I4_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I5)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I4(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,4)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I5_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I6)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I5(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,5)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I6_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I7)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I6(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,6)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I7_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I8)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I7(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,7)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I8_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I9)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I8(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,8)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I9_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I10)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I9(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,9)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I10_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I11)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I10(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,10)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I11_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I12)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I11(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,11)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I12_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I13)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I12(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,12)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I13_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I14)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I13(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,13)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I14_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I15)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I14(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,14)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I15_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I16)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I15(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,15)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I16_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I17)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I16(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,16)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I17_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I18)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I17(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,17)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I18_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I19)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I18(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,18)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I19_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I20)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I19(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,19)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I20_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I21)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I20(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,20)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I21_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I22)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I21(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,21)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I22_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I23)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I22(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,22)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I23_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I24)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I23(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,23)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I24_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I25)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I24(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,24)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I25_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I26)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I25(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,25)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I26_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I27)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I26(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,26)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I27_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I28)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I27(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,27)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I28_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I29)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I28(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,28)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I29_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I30)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I29(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,29)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I30_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I31)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I30(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,30)(R,P)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I31_C(R,P) BOOST_PP_FOR##R(BOOST_PP_LIST_FOR_EACH_PRODUCT_I_H(P),BOOST_PP_LIST_FOR_EACH_PRODUCT_C,BOOST_PP_LIST_FOR_EACH_PRODUCT_F,BOOST_PP_LIST_FOR_EACH_PRODUCT_I32)
-#define BOOST_PP_LIST_FOR_EACH_PRODUCT_I31(R,P) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_C(P,31)(R,P)
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FOR_EACH_PRODUCT_HPP
+# define BOOST_PREPROCESSOR_LIST_FOR_EACH_PRODUCT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/list/to_tuple.hpp>
+# include <boost/preprocessor/repetition/for.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/to_list.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+# include <boost/preprocessor/tuple/reverse.hpp>
+#
+# /* BOOST_PP_LIST_FOR_EACH_PRODUCT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT(macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_E(BOOST_PP_FOR, macro, size, BOOST_PP_TUPLE_TO_LIST(size, tuple))
+# else
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT(macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_Q(macro, size, tuple)
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_Q(macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_E(BOOST_PP_FOR, macro, size, BOOST_PP_TUPLE_TO_LIST(size, tuple))
+# endif
+#
+# /* BOOST_PP_LIST_FOR_EACH_PRODUCT_R */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_R(r, macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_E(BOOST_PP_FOR_ ## r, macro, size, BOOST_PP_TUPLE_TO_LIST(size, tuple))
+# else
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_R(r, macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_R_Q(r, macro, size, tuple)
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_R_Q(r, macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_E(BOOST_PP_FOR_ ## r, macro, size, BOOST_PP_TUPLE_TO_LIST(size, tuple))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_E(impl, macro, size, lists) impl((BOOST_PP_LIST_FIRST(lists), BOOST_PP_LIST_REST(lists), BOOST_PP_NIL, macro, size), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_0)
+# else
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_E(impl, macro, size, lists) BOOST_PP_LIST_FOR_EACH_PRODUCT_E_D(impl, macro, size, lists)
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_E_D(impl, macro, size, lists) impl((BOOST_PP_LIST_FIRST(lists), BOOST_PP_LIST_REST(lists), BOOST_PP_NIL, macro, size), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_0)
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_P(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_P_I data
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_P_I(a, b, res, macro, size) BOOST_PP_LIST_IS_CONS(a)
+# else
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_P(r, data) BOOST_PP_LIST_IS_CONS(BOOST_PP_TUPLE_ELEM(5, 0, data))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_O(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_O_I data
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_O_I(a, b, res, macro, size) (BOOST_PP_LIST_REST(a), b, res, macro, size)
+# else
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_O(r, data) (BOOST_PP_LIST_REST(BOOST_PP_TUPLE_ELEM(5, 0, data)), BOOST_PP_TUPLE_ELEM(5, 1, data), BOOST_PP_TUPLE_ELEM(5, 2, data), BOOST_PP_TUPLE_ELEM(5, 3, data), BOOST_PP_TUPLE_ELEM(5, 4, data))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_I(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_I(r, BOOST_PP_TUPLE_ELEM(5, 0, data), BOOST_PP_TUPLE_ELEM(5, 1, data), BOOST_PP_TUPLE_ELEM(5, 2, data), BOOST_PP_TUPLE_ELEM(5, 3, data), BOOST_PP_TUPLE_ELEM(5, 4, data))
+# else
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_I(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_D(r, BOOST_PP_TUPLE_REM_5 data)
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_D(r, data_e) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_I(r, data_e)
+# endif
+#
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_I(r, a, b, res, macro, size) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_II(r, macro, BOOST_PP_LIST_TO_TUPLE_R(r, (BOOST_PP_LIST_FIRST(a), res)), size)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_II(r, macro, args, size) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_III(r, macro, args, size)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_III(r, macro, args, size) macro(r, BOOST_PP_TUPLE_REVERSE(size, args))
+#
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, i) BOOST_PP_IF(BOOST_PP_LIST_IS_CONS(BOOST_PP_TUPLE_ELEM(5, 1, data)), BOOST_PP_LIST_FOR_EACH_PRODUCT_N_ ## i, BOOST_PP_LIST_FOR_EACH_PRODUCT_I)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data) BOOST_PP_LIST_FOR_EACH_PRODUCT_H_I data
+# else
+#    define BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data) BOOST_PP_LIST_FOR_EACH_PRODUCT_H_I(BOOST_PP_TUPLE_ELEM(5, 0, data), BOOST_PP_TUPLE_ELEM(5, 1, data), BOOST_PP_TUPLE_ELEM(5, 2, data), BOOST_PP_TUPLE_ELEM(5, 3, data), BOOST_PP_TUPLE_ELEM(5, 4, data))
+# endif
+#
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_H_I(a, b, res, macro, size) (BOOST_PP_LIST_FIRST(b), BOOST_PP_LIST_REST(b), (BOOST_PP_LIST_FIRST(a), res), macro, size)
+#
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_0(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 0)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_1(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 1)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_2(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 2)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_3(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 3)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_4(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 4)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_5(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 5)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_6(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 6)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_7(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 7)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_8(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 8)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_9(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 9)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_10(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 10)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_11(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 11)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_12(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 12)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_13(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 13)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_14(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 14)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_15(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 15)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_16(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 16)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_17(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 17)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_18(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 18)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_19(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 19)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_20(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 20)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_21(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 21)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_22(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 22)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_23(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 23)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_24(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 24)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_25(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 25)(r, data)
+#
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_0(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_1)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_1(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_2)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_2(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_3)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_3(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_4)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_4(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_5)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_5(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_6)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_6(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_7)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_7(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_8)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_8(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_9)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_9(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_10)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_10(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_11)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_11(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_12)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_12(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_13)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_13(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_14)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_14(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_15)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_15(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_16)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_16(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_17)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_17(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_18)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_18(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_19)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_19(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_20)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_20(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_21)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_21(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_22)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_22(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_23)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_23(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_24)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_24(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_25)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_25(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_26)
+#
+# endif
index 0ee4787b9bf74faa628800f74c5cd9c81ea1957b..6d3c6598f26620b1db19a0f0570e2e0b83b523d6 100644 (file)
@@ -1,52 +1,56 @@
-#ifndef BOOST_PREPROCESSOR_LIST_REST_N_HPP
-#define BOOST_PREPROCESSOR_LIST_REST_N_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/dec.hpp>
-#include <boost/preprocessor/list/adt.hpp>
-#include <boost/preprocessor/while.hpp>
-
-/** <p>Expands to a list of all but the first <code>COUNT</code> elements of the
-list <code>LIST</code>.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_LIST_REST_N(2,BOOST_PP_TUPLE_TO_LIST(4,(+,-,*,/)))
-</pre>
-
-<p>expands to the same as:</p>
-
-<pre>
-BOOST_PP_TUPLE_TO_LIST(2,(*,/))
-</pre>
-
-<h3>See</h3>
-<ul>
-  <li>BOOST_PP_LIST_FIRST_N()</li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_REST_N(COUNT,LIST) BOOST_PP_LIST_REST_N_D(0,COUNT,LIST)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_LIST_REST_N_D(D,COUNT,LIST) BOOST_PP_TUPLE_ELEM(2,0,BOOST_PP_WHILE##D(BOOST_PP_LIST_REST_N_C,BOOST_PP_LIST_REST_N_F,(LIST,COUNT)))
-
-#define BOOST_PP_LIST_REST_N_C(D,LC) BOOST_PP_TUPLE_ELEM(2,1,LC)
-#define BOOST_PP_LIST_REST_N_F(D,LC) (BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(2,0,LC)),BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(2,1,LC)))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_REST_N_HPP
+# define BOOST_PREPROCESSOR_LIST_REST_N_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_LIST_REST_N */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_REST_N(count, list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_LIST_REST_N_P, BOOST_PP_LIST_REST_N_O, (list, count)))
+# else
+#    define BOOST_PP_LIST_REST_N(count, list) BOOST_PP_LIST_REST_N_I(count, list)
+#    define BOOST_PP_LIST_REST_N_I(count, list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_LIST_REST_N_P, BOOST_PP_LIST_REST_N_O, (list, count)))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_REST_N_P(d, lc) BOOST_PP_TUPLE_ELEM(2, 1, lc)
+# else
+#    define BOOST_PP_LIST_REST_N_P(d, lc) BOOST_PP_LIST_REST_N_P_I lc
+#    define BOOST_PP_LIST_REST_N_P_I(list, count) count
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_REST_N_O(d, lc) (BOOST_PP_LIST_REST(BOOST_PP_TUPLE_ELEM(2, 0, lc)), BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(2, 1, lc)))
+# else
+#    define BOOST_PP_LIST_REST_N_O(d, lc) BOOST_PP_LIST_REST_N_O_I lc
+#    define BOOST_PP_LIST_REST_N_O_I(list, count) (BOOST_PP_LIST_REST(list), BOOST_PP_DEC(count))
+# endif
+#
+# /* BOOST_PP_LIST_REST_N_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_REST_N_D(d, count, list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_LIST_REST_N_P, BOOST_PP_LIST_REST_N_O, (list, count)))
+# else
+#    define BOOST_PP_LIST_REST_N_D(d, count, list) BOOST_PP_LIST_REST_N_D_I(d, count, list)
+#    define BOOST_PP_LIST_REST_N_D_I(d, count, list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_LIST_REST_N_P, BOOST_PP_LIST_REST_N_O, (list, count)))
+# endif
+#
+# endif
index 5c546f0715e8cbf380cf80dffde79c1257564a0d..ce47e40f8599e5d77ed70e693ee24c59f0b3ba9d 100644 (file)
@@ -1,42 +1,41 @@
-#ifndef BOOST_PREPROCESSOR_LIST_REVERSE_HPP
-#define BOOST_PREPROCESSOR_LIST_REVERSE_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/list/fold_left.hpp>
-
-/** <p>List reversal.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_LIST_REVERSE(BOOST_PP_TUPLE_TO_LIST(3,(A,B,C)))
-</pre>
-
-<p>expands to the same as:</p>
-
-<pre>
-BOOST_PP_TUPLE_TO_LIST(3,(C,B,A))
-</pre>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_REVERSE(LIST) BOOST_PP_LIST_REVERSE_D(0,LIST)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_LIST_REVERSE_D(D,LIST) BOOST_PP_LIST_FOLD_LEFT_D(D,BOOST_PP_LIST_REVERSE_F,(_,_,0),LIST)
-#define BOOST_PP_LIST_REVERSE_F(D,S,X) (X,S,1)
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_REVERSE_HPP
+# define BOOST_PREPROCESSOR_LIST_REVERSE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/fold_left.hpp>
+#
+# /* BOOST_PP_LIST_REVERSE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
+# else
+#    define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_REVERSE_I(list)
+#    define BOOST_PP_LIST_REVERSE_I(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
+# endif
+#
+# define BOOST_PP_LIST_REVERSE_O(d, s, x) (x, s)
+#
+# /* BOOST_PP_LIST_REVERSE_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
+# else
+#    define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_LIST_REVERSE_D_I(d, list)
+#    define BOOST_PP_LIST_REVERSE_D_I(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
+# endif
+#
+# endif
index 837fcc37e043427b861b4d4e9d1d2b475a2d7b24..5316d5ea757b021ab5ff72b67273303b1d1a90bf 100644 (file)
@@ -1,39 +1,59 @@
-#ifndef BOOST_PREPROCESSOR_LIST_SIZE_HPP
-#define BOOST_PREPROCESSOR_LIST_SIZE_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/list/fold_left.hpp>
-#include <boost/preprocessor/inc.hpp>
-
-/** <p>Expands to the number of elements in the list.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_LIST_SIZE(BOOST_PP_TUPLE_TO_LIST(3,(A,B,C)))
-</pre>
-
-<p>expands to <code>3</code>.</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_SIZE(LIST) BOOST_PP_LIST_SIZE_D(0,LIST)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_LIST_SIZE_D(D,LIST) BOOST_PP_LIST_FOLD_LEFT_D(D,BOOST_PP_LIST_SIZE_F,0,LIST)
-#define BOOST_PP_LIST_SIZE_F(D,S,X) BOOST_PP_INC(S)
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_SIZE_HPP
+# define BOOST_PREPROCESSOR_LIST_SIZE_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_SIZE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_SIZE(list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_LIST_SIZE_P, BOOST_PP_LIST_SIZE_O, (0, list)))
+# else
+#    define BOOST_PP_LIST_SIZE(list) BOOST_PP_LIST_SIZE_I(list)
+#    define BOOST_PP_LIST_SIZE_I(list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_LIST_SIZE_P, BOOST_PP_LIST_SIZE_O, (0, list)))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_SIZE_P(d, rl) BOOST_PP_LIST_IS_CONS(BOOST_PP_TUPLE_ELEM(2, 1, rl))
+# else
+#    define BOOST_PP_LIST_SIZE_P(d, rl) BOOST_PP_LIST_SIZE_P_I(BOOST_PP_TUPLE_REM_2 rl)
+#    define BOOST_PP_LIST_SIZE_P_I(im) BOOST_PP_LIST_SIZE_P_II(im)
+#    define BOOST_PP_LIST_SIZE_P_II(r, l) BOOST_PP_LIST_IS_CONS(l)
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_SIZE_O(d, rl) (BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(2, 0, rl)), BOOST_PP_LIST_REST(BOOST_PP_TUPLE_ELEM(2, 1, rl)))
+# else
+#    define BOOST_PP_LIST_SIZE_O(d, rl) BOOST_PP_LIST_SIZE_O_I(BOOST_PP_TUPLE_REM_2 rl)
+#    define BOOST_PP_LIST_SIZE_O_I(im) BOOST_PP_LIST_SIZE_O_II(im)
+#    define BOOST_PP_LIST_SIZE_O_II(r, l) (BOOST_PP_INC(r), BOOST_PP_LIST_REST(l))
+# endif
+#
+# /* BOOST_PP_LIST_SIZE_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_SIZE_D(d, list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_LIST_SIZE_P, BOOST_PP_LIST_SIZE_O, (0, list)))
+# else
+#    define BOOST_PP_LIST_SIZE_D(d, list) BOOST_PP_LIST_SIZE_D_I(d, list)
+#    define BOOST_PP_LIST_SIZE_D_I(d, list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_LIST_SIZE_P, BOOST_PP_LIST_SIZE_O, (0, list)))
+# endif
+#
+# endif
index 83714b36581b9007dafa9bcc28e8c115771b2d0d..fe3fffb7eba18cb37305fec6411993dbb5d8829e 100644 (file)
@@ -1,43 +1,39 @@
-#ifndef BOOST_PREPROCESSOR_LIST_TO_TUPLE_HPP
-#define BOOST_PREPROCESSOR_LIST_TO_TUPLE_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/list/enum.hpp>
-
-/** <p>Converts the list to a tuple.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_LIST_TO_TUPLE(BOOST_PP_TUPLE_TO_LIST(3,(A,B,C)))
-</pre>
-
-<p>expands to <code>(A,B,C)</code>.</p>
-
-<h3>Note</h3>
-<ul>
-  <li>The supported size of the list being converted to a tuple is limited by
-      BOOST_PP_LIMIT_MAG rather than BOOST_PP_LIMIT_TUPLE.</li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_TO_TUPLE(LIST) BOOST_PP_LIST_TO_TUPLE_R(0,LIST)
-
-/** <p>Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).</p> */
-#define BOOST_PP_LIST_TO_TUPLE_R(R,LIST) (BOOST_PP_LIST_ENUM_R(R,LIST))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_TO_TUPLE_HPP
+# define BOOST_PREPROCESSOR_LIST_TO_TUPLE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/enum.hpp>
+#
+# /* BOOST_PP_LIST_TO_TUPLE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_TO_TUPLE(list) (BOOST_PP_LIST_ENUM(list))
+# else
+#    define BOOST_PP_LIST_TO_TUPLE(list) BOOST_PP_LIST_TO_TUPLE_I(list)
+#    define BOOST_PP_LIST_TO_TUPLE_I(list) (BOOST_PP_LIST_ENUM(list))
+# endif
+#
+# /* BOOST_PP_LIST_TO_TUPLE_R */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_TO_TUPLE_R(r, list) (BOOST_PP_LIST_ENUM_R(r, list))
+# else
+#    define BOOST_PP_LIST_TO_TUPLE_R(r, list) BOOST_PP_LIST_TO_TUPLE_R_I(r, list)
+#    define BOOST_PP_LIST_TO_TUPLE_R_I(r, list) (BOOST_PP_LIST_ENUM_R(r, list))
+# endif
+#
+# endif
index 76c9e81a43eeb5223dd64df41615824af3734c6e..8afcf40dfc0b39efefcb5ac3f699c4329a7be0d3 100644 (file)
@@ -1,54 +1,50 @@
-#ifndef BOOST_PREPROCESSOR_LIST_TRANSFORM_HPP
-#define BOOST_PREPROCESSOR_LIST_TRANSFORM_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/list/fold_right.hpp>
-
-/** <p>Applies the macro <code>OP(D,DATA,X)</code> to each element <code>X</code>
-of the list producing a new list.</p>
-
-<p>In other words, expands to:</p>
-
-<pre>
-BOOST_PP_LIST_CONS(OP(D,DATA,BOOST_PP_LIST_AT(LIST,0)),
-BOOST_PP_LIST_CONS(OP(D,DATA,BOOST_PP_LIST_AT(LIST,1)),
-...
-BOOST_PP_LIST_CONS(OP(D,DATA,BOOST_PP_LIST_AT(LIST,BOOST_PP_DEC(BOOST_PP_LIST_SIZE(LIST)))),
-BOOST_PP_LIST_NIL) ... ))
-</pre>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_LIST_TRANSFORM(BOOST_PP_ADD_D,2,BOOST_PP_TUPLE_TO_LIST(2,(1,2)))
-</pre>
-
-<p>expands to the same as:</p>
-
-<pre>
-BOOST_PP_TUPLE_TO_LIST(2,(3,4))
-</pre>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/list_test.cpp">list_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_LIST_TRANSFORM(OP,DATA,LIST) BOOST_PP_LIST_TRANSFORM_D(0,OP,DATA,LIST)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_LIST_TRANSFORM_D(D,OP,DATA,LIST) BOOST_PP_TUPLE_ELEM(3,2,BOOST_PP_LIST_FOLD_RIGHT_D(D,BOOST_PP_LIST_TRANSFORM_F,LIST,(OP,DATA,(_,_,0))))
-
-#define BOOST_PP_LIST_TRANSFORM_F(D,X,ODR) (BOOST_PP_TUPLE_ELEM(3,0,ODR),BOOST_PP_TUPLE_ELEM(3,1,ODR),(BOOST_PP_TUPLE_ELEM(3,0,ODR)(D,BOOST_PP_TUPLE_ELEM(3,1,ODR),X),BOOST_PP_TUPLE_ELEM(3,2,ODR),1))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_TRANSFORM_HPP
+# define BOOST_PREPROCESSOR_LIST_TRANSFORM_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/fold_right.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_TRANSFORM */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_TRANSFORM(op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
+# else
+#    define BOOST_PP_LIST_TRANSFORM(op, data, list) BOOST_PP_LIST_TRANSFORM_I(op, data, list)
+#    define BOOST_PP_LIST_TRANSFORM_I(op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_TRANSFORM_O(d, odr, elem) BOOST_PP_LIST_TRANSFORM_O_D(d, BOOST_PP_TUPLE_ELEM(3, 0, odr), BOOST_PP_TUPLE_ELEM(3, 1, odr), BOOST_PP_TUPLE_ELEM(3, 2, odr), elem)
+# else
+#    define BOOST_PP_LIST_TRANSFORM_O(d, odr, elem) BOOST_PP_LIST_TRANSFORM_O_I(d, BOOST_PP_TUPLE_REM_3 odr, elem)
+#    define BOOST_PP_LIST_TRANSFORM_O_I(d, im, elem) BOOST_PP_LIST_TRANSFORM_O_D(d, im, elem)
+# endif
+#
+# define BOOST_PP_LIST_TRANSFORM_O_D(d, op, data, res, elem) (op, data, (op(d, data, elem), res))
+#
+# /* BOOST_PP_LIST_TRANSFORM_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_LIST_TRANSFORM_D(d, op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
+# else
+#    define BOOST_PP_LIST_TRANSFORM_D(d, op, data, list) BOOST_PP_LIST_TRANSFORM_D_I(d, op, data, list)
+#    define BOOST_PP_LIST_TRANSFORM_D_I(d, op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
+# endif
+#
+# endif
index e6b08a76cb3a7862b9bc8c0e7d0dea741e02bfe4..5b59b8204bf85e98b5fa84c9d10e299068888b48 100644 (file)
@@ -1,20 +1,30 @@
-#ifndef BOOST_PREPROCESSOR_LOGICAL_HPP
-#define BOOST_PREPROCESSOR_LOGICAL_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>Includes all logical headers.</p> */
-
-#include <boost/preprocessor/logical/or.hpp>
-#include <boost/preprocessor/logical/xor.hpp>
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_HPP
+#
+# include <boost/preprocessor/logical/and.hpp>
+# include <boost/preprocessor/logical/bitand.hpp>
+# include <boost/preprocessor/logical/bitnor.hpp>
+# include <boost/preprocessor/logical/bitor.hpp>
+# include <boost/preprocessor/logical/bitxor.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/compl.hpp>
+# include <boost/preprocessor/logical/nor.hpp>
+# include <boost/preprocessor/logical/not.hpp>
+# include <boost/preprocessor/logical/or.hpp>
+# include <boost/preprocessor/logical/xor.hpp>
+#
+# endif
index c34a0fc942cb90c7cacb2a27a852ed235cd8cea3..61bf3813470905254624490bed9b15d52dcc5dab 100644 (file)
@@ -1,31 +1,31 @@
-#ifndef BOOST_PREPROCESSOR_LOGICAL_AND_HPP
-#define BOOST_PREPROCESSOR_LOGICAL_AND_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/logical/not.hpp>
-
-/** <p>Expands to the logical AND of the operands.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_AND(0,5)</code> expands to <code>0</code> (a single token).</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/logical_test.cpp">logical_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_AND(X,Y) BOOST_PP_NOR(BOOST_PP_NOT(X),BOOST_PP_NOT(Y))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_AND_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_AND_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/bitand.hpp>
+#
+# /* BOOST_PP_AND */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_AND(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# else
+#    define BOOST_PP_AND(p, q) BOOST_PP_AND_I(p, q)
+#    define BOOST_PP_AND_I(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# endif
+#
+# endif
index ddde33a05c22d24c33d9115e3218dee597ade1f9..a20736c25a00f5a975aaf08f8cb4df56917ec2f9 100644 (file)
-#ifndef BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
-#define BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-// pm:  not necessary if using manual delay
-// #include <boost/preprocessor/detail/cat.hpp>
-
-/** <p>Expands to <code>0</code> if <code>X == 0</code> and <code>1</code> if <code>X != 0</code>.</p>
-
-<p><code>X</code> must be an integer literal in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_BOOL(3)</code> expands to <code>1</code>.</p>
-*/
-#define BOOST_PP_BOOL(X) BOOST_PP_BOOL_DELAY(X) /* original:  BOOST_PP_DETAIL_CAT2(BOOST_PP_BOOL,X) */
-#define BOOST_PP_BOOL_DELAY(X) BOOST_PP_BOOL##X
-
-/* BOOL can be implemented in O(1) tokens using saturated ADD & SUB.
- * Unfortunately, it would result in significantly slower preprocessing.
- */
-#define BOOST_PP_BOOL0 0
-#define BOOST_PP_BOOL1 1
-#define BOOST_PP_BOOL2 1
-#define BOOST_PP_BOOL3 1
-#define BOOST_PP_BOOL4 1
-#define BOOST_PP_BOOL5 1
-#define BOOST_PP_BOOL6 1
-#define BOOST_PP_BOOL7 1
-#define BOOST_PP_BOOL8 1
-#define BOOST_PP_BOOL9 1
-#define BOOST_PP_BOOL10 1
-#define BOOST_PP_BOOL11 1
-#define BOOST_PP_BOOL12 1
-#define BOOST_PP_BOOL13 1
-#define BOOST_PP_BOOL14 1
-#define BOOST_PP_BOOL15 1
-#define BOOST_PP_BOOL16 1
-#define BOOST_PP_BOOL17 1
-#define BOOST_PP_BOOL18 1
-#define BOOST_PP_BOOL19 1
-#define BOOST_PP_BOOL20 1
-#define BOOST_PP_BOOL21 1
-#define BOOST_PP_BOOL22 1
-#define BOOST_PP_BOOL23 1
-#define BOOST_PP_BOOL24 1
-#define BOOST_PP_BOOL25 1
-#define BOOST_PP_BOOL26 1
-#define BOOST_PP_BOOL27 1
-#define BOOST_PP_BOOL28 1
-#define BOOST_PP_BOOL29 1
-#define BOOST_PP_BOOL30 1
-#define BOOST_PP_BOOL31 1
-#define BOOST_PP_BOOL32 1
-#define BOOST_PP_BOOL33 1
-#define BOOST_PP_BOOL34 1
-#define BOOST_PP_BOOL35 1
-#define BOOST_PP_BOOL36 1
-#define BOOST_PP_BOOL37 1
-#define BOOST_PP_BOOL38 1
-#define BOOST_PP_BOOL39 1
-#define BOOST_PP_BOOL40 1
-#define BOOST_PP_BOOL41 1
-#define BOOST_PP_BOOL42 1
-#define BOOST_PP_BOOL43 1
-#define BOOST_PP_BOOL44 1
-#define BOOST_PP_BOOL45 1
-#define BOOST_PP_BOOL46 1
-#define BOOST_PP_BOOL47 1
-#define BOOST_PP_BOOL48 1
-#define BOOST_PP_BOOL49 1
-#define BOOST_PP_BOOL50 1
-#define BOOST_PP_BOOL51 1
-#define BOOST_PP_BOOL52 1
-#define BOOST_PP_BOOL53 1
-#define BOOST_PP_BOOL54 1
-#define BOOST_PP_BOOL55 1
-#define BOOST_PP_BOOL56 1
-#define BOOST_PP_BOOL57 1
-#define BOOST_PP_BOOL58 1
-#define BOOST_PP_BOOL59 1
-#define BOOST_PP_BOOL60 1
-#define BOOST_PP_BOOL61 1
-#define BOOST_PP_BOOL62 1
-#define BOOST_PP_BOOL63 1
-#define BOOST_PP_BOOL64 1
-#define BOOST_PP_BOOL65 1
-#define BOOST_PP_BOOL66 1
-#define BOOST_PP_BOOL67 1
-#define BOOST_PP_BOOL68 1
-#define BOOST_PP_BOOL69 1
-#define BOOST_PP_BOOL70 1
-#define BOOST_PP_BOOL71 1
-#define BOOST_PP_BOOL72 1
-#define BOOST_PP_BOOL73 1
-#define BOOST_PP_BOOL74 1
-#define BOOST_PP_BOOL75 1
-#define BOOST_PP_BOOL76 1
-#define BOOST_PP_BOOL77 1
-#define BOOST_PP_BOOL78 1
-#define BOOST_PP_BOOL79 1
-#define BOOST_PP_BOOL80 1
-#define BOOST_PP_BOOL81 1
-#define BOOST_PP_BOOL82 1
-#define BOOST_PP_BOOL83 1
-#define BOOST_PP_BOOL84 1
-#define BOOST_PP_BOOL85 1
-#define BOOST_PP_BOOL86 1
-#define BOOST_PP_BOOL87 1
-#define BOOST_PP_BOOL88 1
-#define BOOST_PP_BOOL89 1
-#define BOOST_PP_BOOL90 1
-#define BOOST_PP_BOOL91 1
-#define BOOST_PP_BOOL92 1
-#define BOOST_PP_BOOL93 1
-#define BOOST_PP_BOOL94 1
-#define BOOST_PP_BOOL95 1
-#define BOOST_PP_BOOL96 1
-#define BOOST_PP_BOOL97 1
-#define BOOST_PP_BOOL98 1
-#define BOOST_PP_BOOL99 1
-#define BOOST_PP_BOOL100 1
-#define BOOST_PP_BOOL101 1
-#define BOOST_PP_BOOL102 1
-#define BOOST_PP_BOOL103 1
-#define BOOST_PP_BOOL104 1
-#define BOOST_PP_BOOL105 1
-#define BOOST_PP_BOOL106 1
-#define BOOST_PP_BOOL107 1
-#define BOOST_PP_BOOL108 1
-#define BOOST_PP_BOOL109 1
-#define BOOST_PP_BOOL110 1
-#define BOOST_PP_BOOL111 1
-#define BOOST_PP_BOOL112 1
-#define BOOST_PP_BOOL113 1
-#define BOOST_PP_BOOL114 1
-#define BOOST_PP_BOOL115 1
-#define BOOST_PP_BOOL116 1
-#define BOOST_PP_BOOL117 1
-#define BOOST_PP_BOOL118 1
-#define BOOST_PP_BOOL119 1
-#define BOOST_PP_BOOL120 1
-#define BOOST_PP_BOOL121 1
-#define BOOST_PP_BOOL122 1
-#define BOOST_PP_BOOL123 1
-#define BOOST_PP_BOOL124 1
-#define BOOST_PP_BOOL125 1
-#define BOOST_PP_BOOL126 1
-#define BOOST_PP_BOOL127 1
-#define BOOST_PP_BOOL128 1
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_BOOL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_BOOL(x) BOOST_PP_BOOL_I(x)
+# else
+#    define BOOST_PP_BOOL(x) BOOST_PP_BOOL_OO((x))
+#    define BOOST_PP_BOOL_OO(par) BOOST_PP_BOOL_I ## par
+# endif
+#
+# define BOOST_PP_BOOL_I(x) BOOST_PP_BOOL_ ## x
+#
+# define BOOST_PP_BOOL_0 0
+# define BOOST_PP_BOOL_1 1
+# define BOOST_PP_BOOL_2 1
+# define BOOST_PP_BOOL_3 1
+# define BOOST_PP_BOOL_4 1
+# define BOOST_PP_BOOL_5 1
+# define BOOST_PP_BOOL_6 1
+# define BOOST_PP_BOOL_7 1
+# define BOOST_PP_BOOL_8 1
+# define BOOST_PP_BOOL_9 1
+# define BOOST_PP_BOOL_10 1
+# define BOOST_PP_BOOL_11 1
+# define BOOST_PP_BOOL_12 1
+# define BOOST_PP_BOOL_13 1
+# define BOOST_PP_BOOL_14 1
+# define BOOST_PP_BOOL_15 1
+# define BOOST_PP_BOOL_16 1
+# define BOOST_PP_BOOL_17 1
+# define BOOST_PP_BOOL_18 1
+# define BOOST_PP_BOOL_19 1
+# define BOOST_PP_BOOL_20 1
+# define BOOST_PP_BOOL_21 1
+# define BOOST_PP_BOOL_22 1
+# define BOOST_PP_BOOL_23 1
+# define BOOST_PP_BOOL_24 1
+# define BOOST_PP_BOOL_25 1
+# define BOOST_PP_BOOL_26 1
+# define BOOST_PP_BOOL_27 1
+# define BOOST_PP_BOOL_28 1
+# define BOOST_PP_BOOL_29 1
+# define BOOST_PP_BOOL_30 1
+# define BOOST_PP_BOOL_31 1
+# define BOOST_PP_BOOL_32 1
+# define BOOST_PP_BOOL_33 1
+# define BOOST_PP_BOOL_34 1
+# define BOOST_PP_BOOL_35 1
+# define BOOST_PP_BOOL_36 1
+# define BOOST_PP_BOOL_37 1
+# define BOOST_PP_BOOL_38 1
+# define BOOST_PP_BOOL_39 1
+# define BOOST_PP_BOOL_40 1
+# define BOOST_PP_BOOL_41 1
+# define BOOST_PP_BOOL_42 1
+# define BOOST_PP_BOOL_43 1
+# define BOOST_PP_BOOL_44 1
+# define BOOST_PP_BOOL_45 1
+# define BOOST_PP_BOOL_46 1
+# define BOOST_PP_BOOL_47 1
+# define BOOST_PP_BOOL_48 1
+# define BOOST_PP_BOOL_49 1
+# define BOOST_PP_BOOL_50 1
+# define BOOST_PP_BOOL_51 1
+# define BOOST_PP_BOOL_52 1
+# define BOOST_PP_BOOL_53 1
+# define BOOST_PP_BOOL_54 1
+# define BOOST_PP_BOOL_55 1
+# define BOOST_PP_BOOL_56 1
+# define BOOST_PP_BOOL_57 1
+# define BOOST_PP_BOOL_58 1
+# define BOOST_PP_BOOL_59 1
+# define BOOST_PP_BOOL_60 1
+# define BOOST_PP_BOOL_61 1
+# define BOOST_PP_BOOL_62 1
+# define BOOST_PP_BOOL_63 1
+# define BOOST_PP_BOOL_64 1
+# define BOOST_PP_BOOL_65 1
+# define BOOST_PP_BOOL_66 1
+# define BOOST_PP_BOOL_67 1
+# define BOOST_PP_BOOL_68 1
+# define BOOST_PP_BOOL_69 1
+# define BOOST_PP_BOOL_70 1
+# define BOOST_PP_BOOL_71 1
+# define BOOST_PP_BOOL_72 1
+# define BOOST_PP_BOOL_73 1
+# define BOOST_PP_BOOL_74 1
+# define BOOST_PP_BOOL_75 1
+# define BOOST_PP_BOOL_76 1
+# define BOOST_PP_BOOL_77 1
+# define BOOST_PP_BOOL_78 1
+# define BOOST_PP_BOOL_79 1
+# define BOOST_PP_BOOL_80 1
+# define BOOST_PP_BOOL_81 1
+# define BOOST_PP_BOOL_82 1
+# define BOOST_PP_BOOL_83 1
+# define BOOST_PP_BOOL_84 1
+# define BOOST_PP_BOOL_85 1
+# define BOOST_PP_BOOL_86 1
+# define BOOST_PP_BOOL_87 1
+# define BOOST_PP_BOOL_88 1
+# define BOOST_PP_BOOL_89 1
+# define BOOST_PP_BOOL_90 1
+# define BOOST_PP_BOOL_91 1
+# define BOOST_PP_BOOL_92 1
+# define BOOST_PP_BOOL_93 1
+# define BOOST_PP_BOOL_94 1
+# define BOOST_PP_BOOL_95 1
+# define BOOST_PP_BOOL_96 1
+# define BOOST_PP_BOOL_97 1
+# define BOOST_PP_BOOL_98 1
+# define BOOST_PP_BOOL_99 1
+# define BOOST_PP_BOOL_100 1
+# define BOOST_PP_BOOL_101 1
+# define BOOST_PP_BOOL_102 1
+# define BOOST_PP_BOOL_103 1
+# define BOOST_PP_BOOL_104 1
+# define BOOST_PP_BOOL_105 1
+# define BOOST_PP_BOOL_106 1
+# define BOOST_PP_BOOL_107 1
+# define BOOST_PP_BOOL_108 1
+# define BOOST_PP_BOOL_109 1
+# define BOOST_PP_BOOL_110 1
+# define BOOST_PP_BOOL_111 1
+# define BOOST_PP_BOOL_112 1
+# define BOOST_PP_BOOL_113 1
+# define BOOST_PP_BOOL_114 1
+# define BOOST_PP_BOOL_115 1
+# define BOOST_PP_BOOL_116 1
+# define BOOST_PP_BOOL_117 1
+# define BOOST_PP_BOOL_118 1
+# define BOOST_PP_BOOL_119 1
+# define BOOST_PP_BOOL_120 1
+# define BOOST_PP_BOOL_121 1
+# define BOOST_PP_BOOL_122 1
+# define BOOST_PP_BOOL_123 1
+# define BOOST_PP_BOOL_124 1
+# define BOOST_PP_BOOL_125 1
+# define BOOST_PP_BOOL_126 1
+# define BOOST_PP_BOOL_127 1
+# define BOOST_PP_BOOL_128 1
+# define BOOST_PP_BOOL_129 1
+# define BOOST_PP_BOOL_130 1
+# define BOOST_PP_BOOL_131 1
+# define BOOST_PP_BOOL_132 1
+# define BOOST_PP_BOOL_133 1
+# define BOOST_PP_BOOL_134 1
+# define BOOST_PP_BOOL_135 1
+# define BOOST_PP_BOOL_136 1
+# define BOOST_PP_BOOL_137 1
+# define BOOST_PP_BOOL_138 1
+# define BOOST_PP_BOOL_139 1
+# define BOOST_PP_BOOL_140 1
+# define BOOST_PP_BOOL_141 1
+# define BOOST_PP_BOOL_142 1
+# define BOOST_PP_BOOL_143 1
+# define BOOST_PP_BOOL_144 1
+# define BOOST_PP_BOOL_145 1
+# define BOOST_PP_BOOL_146 1
+# define BOOST_PP_BOOL_147 1
+# define BOOST_PP_BOOL_148 1
+# define BOOST_PP_BOOL_149 1
+# define BOOST_PP_BOOL_150 1
+# define BOOST_PP_BOOL_151 1
+# define BOOST_PP_BOOL_152 1
+# define BOOST_PP_BOOL_153 1
+# define BOOST_PP_BOOL_154 1
+# define BOOST_PP_BOOL_155 1
+# define BOOST_PP_BOOL_156 1
+# define BOOST_PP_BOOL_157 1
+# define BOOST_PP_BOOL_158 1
+# define BOOST_PP_BOOL_159 1
+# define BOOST_PP_BOOL_160 1
+# define BOOST_PP_BOOL_161 1
+# define BOOST_PP_BOOL_162 1
+# define BOOST_PP_BOOL_163 1
+# define BOOST_PP_BOOL_164 1
+# define BOOST_PP_BOOL_165 1
+# define BOOST_PP_BOOL_166 1
+# define BOOST_PP_BOOL_167 1
+# define BOOST_PP_BOOL_168 1
+# define BOOST_PP_BOOL_169 1
+# define BOOST_PP_BOOL_170 1
+# define BOOST_PP_BOOL_171 1
+# define BOOST_PP_BOOL_172 1
+# define BOOST_PP_BOOL_173 1
+# define BOOST_PP_BOOL_174 1
+# define BOOST_PP_BOOL_175 1
+# define BOOST_PP_BOOL_176 1
+# define BOOST_PP_BOOL_177 1
+# define BOOST_PP_BOOL_178 1
+# define BOOST_PP_BOOL_179 1
+# define BOOST_PP_BOOL_180 1
+# define BOOST_PP_BOOL_181 1
+# define BOOST_PP_BOOL_182 1
+# define BOOST_PP_BOOL_183 1
+# define BOOST_PP_BOOL_184 1
+# define BOOST_PP_BOOL_185 1
+# define BOOST_PP_BOOL_186 1
+# define BOOST_PP_BOOL_187 1
+# define BOOST_PP_BOOL_188 1
+# define BOOST_PP_BOOL_189 1
+# define BOOST_PP_BOOL_190 1
+# define BOOST_PP_BOOL_191 1
+# define BOOST_PP_BOOL_192 1
+# define BOOST_PP_BOOL_193 1
+# define BOOST_PP_BOOL_194 1
+# define BOOST_PP_BOOL_195 1
+# define BOOST_PP_BOOL_196 1
+# define BOOST_PP_BOOL_197 1
+# define BOOST_PP_BOOL_198 1
+# define BOOST_PP_BOOL_199 1
+# define BOOST_PP_BOOL_200 1
+# define BOOST_PP_BOOL_201 1
+# define BOOST_PP_BOOL_202 1
+# define BOOST_PP_BOOL_203 1
+# define BOOST_PP_BOOL_204 1
+# define BOOST_PP_BOOL_205 1
+# define BOOST_PP_BOOL_206 1
+# define BOOST_PP_BOOL_207 1
+# define BOOST_PP_BOOL_208 1
+# define BOOST_PP_BOOL_209 1
+# define BOOST_PP_BOOL_210 1
+# define BOOST_PP_BOOL_211 1
+# define BOOST_PP_BOOL_212 1
+# define BOOST_PP_BOOL_213 1
+# define BOOST_PP_BOOL_214 1
+# define BOOST_PP_BOOL_215 1
+# define BOOST_PP_BOOL_216 1
+# define BOOST_PP_BOOL_217 1
+# define BOOST_PP_BOOL_218 1
+# define BOOST_PP_BOOL_219 1
+# define BOOST_PP_BOOL_220 1
+# define BOOST_PP_BOOL_221 1
+# define BOOST_PP_BOOL_222 1
+# define BOOST_PP_BOOL_223 1
+# define BOOST_PP_BOOL_224 1
+# define BOOST_PP_BOOL_225 1
+# define BOOST_PP_BOOL_226 1
+# define BOOST_PP_BOOL_227 1
+# define BOOST_PP_BOOL_228 1
+# define BOOST_PP_BOOL_229 1
+# define BOOST_PP_BOOL_230 1
+# define BOOST_PP_BOOL_231 1
+# define BOOST_PP_BOOL_232 1
+# define BOOST_PP_BOOL_233 1
+# define BOOST_PP_BOOL_234 1
+# define BOOST_PP_BOOL_235 1
+# define BOOST_PP_BOOL_236 1
+# define BOOST_PP_BOOL_237 1
+# define BOOST_PP_BOOL_238 1
+# define BOOST_PP_BOOL_239 1
+# define BOOST_PP_BOOL_240 1
+# define BOOST_PP_BOOL_241 1
+# define BOOST_PP_BOOL_242 1
+# define BOOST_PP_BOOL_243 1
+# define BOOST_PP_BOOL_244 1
+# define BOOST_PP_BOOL_245 1
+# define BOOST_PP_BOOL_246 1
+# define BOOST_PP_BOOL_247 1
+# define BOOST_PP_BOOL_248 1
+# define BOOST_PP_BOOL_249 1
+# define BOOST_PP_BOOL_250 1
+# define BOOST_PP_BOOL_251 1
+# define BOOST_PP_BOOL_252 1
+# define BOOST_PP_BOOL_253 1
+# define BOOST_PP_BOOL_254 1
+# define BOOST_PP_BOOL_255 1
+# define BOOST_PP_BOOL_256 1
+#
+# endif
diff --git a/boost/boost/preprocessor/logical/compl.hpp b/boost/boost/preprocessor/logical/compl.hpp
new file mode 100644 (file)
index 0000000..2a8440c
--- /dev/null
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_COMPL_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_COMPL_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_COMPL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_COMPL(x) BOOST_PP_COMPL_I(x)
+# else
+#    define BOOST_PP_COMPL(x) BOOST_PP_COMPL_OO((x))
+#    define BOOST_PP_COMPL_OO(par) BOOST_PP_COMPL_I ## par
+# endif
+#
+# define BOOST_PP_COMPL_I(x) BOOST_PP_COMPL_ ## x
+#
+# define BOOST_PP_COMPL_0 1
+# define BOOST_PP_COMPL_1 0
+#
+# endif
index d6c851c22af55d427a54474ee72dfba0447b2d82..6c431f7f132471bff462d28a46af1d14d84d30f3 100644 (file)
@@ -1,37 +1,31 @@
-#ifndef BOOST_PREPROCESSOR_LOGICAL_NOR_HPP
-#define BOOST_PREPROCESSOR_LOGICAL_NOR_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/detail/cat.hpp>
-#include <boost/preprocessor/logical/bool.hpp>
-
-/** <p>Expands to the logical NEITHER OR of the operands.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_NOR(0,5)</code> expands to <code>0</code> (a single token).</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/logical_test.cpp">logical_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_NOR(X,Y) BOOST_PP_DETAIL_CAT3(BOOST_PP_NOR,BOOST_PP_BOOL(X),BOOST_PP_BOOL(Y))
-
-#define BOOST_PP_NOR00 1
-#define BOOST_PP_NOR01 0
-#define BOOST_PP_NOR10 0
-#define BOOST_PP_NOR11 0
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_NOR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_NOR_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/bitnor.hpp>
+#
+# /* BOOST_PP_NOR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_NOR(p, q) BOOST_PP_BITNOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# else
+#    define BOOST_PP_NOR(p, q) BOOST_PP_NOR_I(p, q)
+#    define BOOST_PP_NOR_I(p, q) BOOST_PP_BITNOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# endif
+#
+# endif
index 158998b9096219d4e6b94f90c25bdcaed4ff09da..c739145b2e63aae97bb41efbc482cbb0d5653e26 100644 (file)
@@ -1,30 +1,31 @@
-#ifndef BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
-#define BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/logical/nor.hpp>
-
-/** <p>Expands to the logical NOT of the operand.</p>
-
-<p><code>X</code> must be an integer literal in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_NOT(0)</code> expands to <code>1</code> (a single token).</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/logical_test.cpp">logical_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_NOT(X) BOOST_PP_NOR(X,X)
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/compl.hpp>
+#
+# /* BOOST_PP_NOT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_NOT(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
+# else
+#    define BOOST_PP_NOT(x) BOOST_PP_NOT_I(x)
+#    define BOOST_PP_NOT_I(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
+# endif
+#
+# endif
index 0dde9f92d336c689524adc79b05821f00eb446ae..1d60d2b819fc68d5cdc0cf9326c6437b90efb5df 100644 (file)
@@ -1,31 +1,31 @@
-#ifndef BOOST_PREPROCESSOR_LOGICAL_OR_HPP
-#define BOOST_PREPROCESSOR_LOGICAL_OR_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/logical/not.hpp>
-
-/** <p>Expands to the logical OR of the operands.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_OR(0,2)</code> expands to <code>1</code> (a single token).</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/logical_test.cpp">logical_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_OR(X,Y) BOOST_PP_NOT(BOOST_PP_NOR(X,Y))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_OR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_OR_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/bitor.hpp>
+#
+# /* BOOST_PP_OR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_OR(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# else
+#    define BOOST_PP_OR(p, q) BOOST_PP_OR_I(p, q)
+#    define BOOST_PP_OR_I(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# endif
+#
+# endif
index 80dea6fc8a14f68175d11a35d8d2dfaa713d9797..99f524fa9792f2433822687acb889f84786920c2 100644 (file)
@@ -1,31 +1,31 @@
-#ifndef BOOST_PREPROCESSOR_LOGICAL_XOR_HPP
-#define BOOST_PREPROCESSOR_LOGICAL_XOR_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/logical/and.hpp>
-
-/** <p>Expands to the logical EXCLUSIVE OR of the operands.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_XOR(1,2)</code> expands to <code>0</code> (a single token).</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/logical_test.cpp">logical_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_XOR(X,Y) BOOST_PP_NOR(BOOST_PP_NOR(X,Y),BOOST_PP_AND(X,Y))
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_XOR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_XOR_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/bitxor.hpp>
+#
+# /* BOOST_PP_XOR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_XOR(p, q) BOOST_PP_BITXOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# else
+#    define BOOST_PP_XOR(p, q) BOOST_PP_XOR_I(p, q)
+#    define BOOST_PP_XOR_I(p, q) BOOST_PP_BITXOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# endif
+#
+# endif
index da80b658898bc25197c3a89808a21088775cc70d..aca86c1797523ce0f5f76def2f6537df6a4e59e7 100644 (file)
@@ -1,36 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_MAX_HPP
-#define BOOST_PREPROCESSOR_MAX_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/comparison/less_equal.hpp>
-#include <boost/preprocessor/if.hpp>
-
-/** <p>Expands to the maximum of <code>X</code> and <code>Y</code>.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_MAX(5,7)</code> expands to <code>7</code> (a
-single token).</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/arithmetic_test.cpp">arithmetic_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_MAX(X,Y) BOOST_PP_MAX_D(0,X,Y)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_MAX_D(D,X,Y) BOOST_PP_IF(BOOST_PP_LESS_EQUAL_D(D,X,Y),Y,X)
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_MAX_HPP
+# define BOOST_PREPROCESSOR_MAX_HPP
+#
+# include <boost/preprocessor/selection/max.hpp>
+#
+# endif
index 62516860cefbd2d18c8eb390b654353e85eb37dd..fb92fb3f07e89538be151e2a1704ca1f33d4877c 100644 (file)
@@ -1,36 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_MIN_HPP
-#define BOOST_PREPROCESSOR_MIN_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/comparison/less_equal.hpp>
-#include <boost/preprocessor/if.hpp>
-
-/** <p>Expands to the minimum of <code>X</code> and <code>Y</code>.</p>
-
-<p>Both <code>X</code> and <code>Y</code> must expand to integer literals
-in the range [0, BOOST_PP_LIMIT_MAG].</p>
-
-<p>For example, <code>BOOST_PP_MIN(5,7)</code> expands to <code>5</code> (a
-single token).</p>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/arithmetic_test.cpp">arithmetic_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_MIN(X,Y) BOOST_PP_MIN_D(0,X,Y)
-
-/** <p>Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).</p> */
-#define BOOST_PP_MIN_D(D,X,Y) BOOST_PP_IF(BOOST_PP_LESS_EQUAL_D(D,Y,X),Y,X)
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_MIN_HPP
+# define BOOST_PREPROCESSOR_MIN_HPP
+#
+# include <boost/preprocessor/selection/min.hpp>
+#
+# endif
index dd286e045ee85afe227ed091bdc07a339bdaf6c3..8d3c42c3fd338091e95e25dada8490ac33111efc 100644 (file)
-#ifndef BOOST_PREPROCESSOR_REPEAT_HPP
-#define BOOST_PREPROCESSOR_REPEAT_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/detail/cat.hpp>
-#include <boost/preprocessor/detail/auto_rec.hpp>
-#include <boost/preprocessor/expand.hpp>
-
-/** <p>Repeats the macro <code>MACRO(INDEX,DATA)</code> for <code>INDEX = [0,COUNT)</code>.</p>
-
-<p>In other words, expands to the sequence:</p>
-
-<pre>
-MACRO(0,DATA) MACRO(1,DATA) ... MACRO(BOOST_PP_DEC(COUNT),DATA)
-</pre>
-
-<p>For example,</p>
-
-<pre>
-#define TEST(INDEX,DATA) DATA(INDEX);
-BOOST_PP_REPEAT(3,TEST,X)
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-X(0); X(1); X(2);
-</pre>
-
-<h3>2D and 3D repetition</h3>
-
-<p>BOOST_PP_REPEAT() implements automatic recursion. 2D and 3D repetition
-are directly supported.</p>
-
-<h3>Example</h3>
-<ul>
-  <li><a href="../../example/duffs_device.c">duffs_device.c</a></li>
-  <li><a href="../../example/repeat_2d.c">repeat_2d.c</a></li>
-</ul>
-
-<h3>See</h3>
-<ul>
-  <li>BOOST_PP_FOR()</li>
-  <li>BOOST_PP_LIMIT_DIM</li>
-  <li>BOOST_PP_LIMIT_MAG</li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/repeat_test.cpp">repeat_test.cpp</a></li>
-  <li><a href="../../test/repeat_2nd_test.cpp">repeat_2nd_test.cpp</a></li>
-</ul>
-*/
-#if 0
-#  define BOOST_PP_REPEAT(COUNT,MACRO,DATA)
-#endif
-
-#if !defined(BOOST_NO_COMPILER_CONFIG) && defined(_MSC_VER)
-/* This is a workaround for a MSVC++ PP bug. You'll need to add further
- * BOOST_PP_REPEAT_AUTO_REC3/4/etc. wrapping as the maximum level of 
- * nesting REPEATS increases
- */
-#  define BOOST_PP_REPEAT\
-     BOOST_PP_AUTO_REC_CAT1(BOOST_PP_REPEAT_,BOOST_PP_REPEAT_AUTO_REC2(\
-       BOOST_PP_REPEAT_AUTO_REC1,(BOOST_PP_AUTO_REC_ID,(1))\
-       ))
-#else
-#  define BOOST_PP_REPEAT\
-    BOOST_PP_AUTO_REC_CAT1(BOOST_PP_REPEAT_,BOOST_PP_REPEAT_AUTO_REC1(BOOST_PP_AUTO_REC_ID,(1)))
-#endif
-
-#define BOOST_PP_REPEAT_BOOST_PP_REPEAT_AUTO_REC1(M,P)\
-  BOOST_PP_AUTO_REC_CAT2(BOOST_PP_REPEAT_,BOOST_PP_REPEAT_AUTO_REC2(BOOST_PP_AUTO_REC_ID,(2)))
-#define BOOST_PP_REPEAT_BOOST_PP_REPEAT_AUTO_REC2(M,P)\
-  BOOST_PP_AUTO_REC_CAT3(BOOST_PP_REPEAT_,BOOST_PP_REPEAT_AUTO_REC3(BOOST_PP_AUTO_REC_ID,(3)))
-#define BOOST_PP_REPEAT_BOOST_PP_REPEAT_AUTO_REC3(M,P)\
-  (TOO MANY NESTED REPEATS!)
-
-#define BOOST_PP_REPEAT_AUTO_REC1(M,P) BOOST_PP_EXPAND(M P)
-#define BOOST_PP_REPEAT_AUTO_REC2(M,P) BOOST_PP_EXPAND(M P)
-#define BOOST_PP_REPEAT_AUTO_REC3(M,P) BOOST_PP_EXPAND(M P)
-
-#define BOOST_PP_REPEAT_1(C,M,D) BOOST_PP_REPEAT_AUTO_REC1(BOOST_PP_DETAIL_CAT2(BOOST_PP_R1_,C),(M,D))
-#define BOOST_PP_REPEAT_2(C,M,D) BOOST_PP_REPEAT_AUTO_REC2(BOOST_PP_DETAIL_CAT2(BOOST_PP_R2_,C),(M,D))
-#define BOOST_PP_REPEAT_3(C,M,D) BOOST_PP_REPEAT_AUTO_REC3(BOOST_PP_DETAIL_CAT2(BOOST_PP_R3_,C),(M,D))
-
-#if defined(__EDG_VERSION__) && (__EDG_VERSION__ <= 245) /* unrolled repeats for EDG front end */
-#include <boost/preprocessor/detail/repeat_edg.hpp>
-#else
-
-#define BOOST_PP_R1_0(M,D)
-#define BOOST_PP_R1_1(M,D) M(0,D)
-#define BOOST_PP_R1_2(M,D) M(0,D) M(1,D)
-#define BOOST_PP_R1_3(M,D) M(0,D) M(1,D) M(2,D)
-#define BOOST_PP_R1_4(M,D) M(0,D) M(1,D) M(2,D) M(3,D)
-#define BOOST_PP_R1_5(M,D) BOOST_PP_R1_4(M,D) M(4,D)
-#define BOOST_PP_R1_6(M,D) BOOST_PP_R1_5(M,D) M(5,D)
-#define BOOST_PP_R1_7(M,D) BOOST_PP_R1_6(M,D) M(6,D)
-#define BOOST_PP_R1_8(M,D) BOOST_PP_R1_7(M,D) M(7,D)
-#define BOOST_PP_R1_9(M,D) BOOST_PP_R1_8(M,D) M(8,D)
-#define BOOST_PP_R1_10(M,D) BOOST_PP_R1_9(M,D) M(9,D)
-#define BOOST_PP_R1_11(M,D) BOOST_PP_R1_10(M,D) M(10,D)
-#define BOOST_PP_R1_12(M,D) BOOST_PP_R1_11(M,D) M(11,D)
-#define BOOST_PP_R1_13(M,D) BOOST_PP_R1_12(M,D) M(12,D)
-#define BOOST_PP_R1_14(M,D) BOOST_PP_R1_13(M,D) M(13,D)
-#define BOOST_PP_R1_15(M,D) BOOST_PP_R1_14(M,D) M(14,D)
-#define BOOST_PP_R1_16(M,D) BOOST_PP_R1_15(M,D) M(15,D)
-#define BOOST_PP_R1_17(M,D) BOOST_PP_R1_16(M,D) M(16,D)
-#define BOOST_PP_R1_18(M,D) BOOST_PP_R1_17(M,D) M(17,D)
-#define BOOST_PP_R1_19(M,D) BOOST_PP_R1_18(M,D) M(18,D)
-#define BOOST_PP_R1_20(M,D) BOOST_PP_R1_19(M,D) M(19,D)
-#define BOOST_PP_R1_21(M,D) BOOST_PP_R1_20(M,D) M(20,D)
-#define BOOST_PP_R1_22(M,D) BOOST_PP_R1_21(M,D) M(21,D)
-#define BOOST_PP_R1_23(M,D) BOOST_PP_R1_22(M,D) M(22,D)
-#define BOOST_PP_R1_24(M,D) BOOST_PP_R1_23(M,D) M(23,D)
-#define BOOST_PP_R1_25(M,D) BOOST_PP_R1_24(M,D) M(24,D)
-#define BOOST_PP_R1_26(M,D) BOOST_PP_R1_25(M,D) M(25,D)
-#define BOOST_PP_R1_27(M,D) BOOST_PP_R1_26(M,D) M(26,D)
-#define BOOST_PP_R1_28(M,D) BOOST_PP_R1_27(M,D) M(27,D)
-#define BOOST_PP_R1_29(M,D) BOOST_PP_R1_28(M,D) M(28,D)
-#define BOOST_PP_R1_30(M,D) BOOST_PP_R1_29(M,D) M(29,D)
-#define BOOST_PP_R1_31(M,D) BOOST_PP_R1_30(M,D) M(30,D)
-#define BOOST_PP_R1_32(M,D) BOOST_PP_R1_31(M,D) M(31,D)
-#define BOOST_PP_R1_33(M,D) BOOST_PP_R1_32(M,D) M(32,D)
-#define BOOST_PP_R1_34(M,D) BOOST_PP_R1_33(M,D) M(33,D)
-#define BOOST_PP_R1_35(M,D) BOOST_PP_R1_34(M,D) M(34,D)
-#define BOOST_PP_R1_36(M,D) BOOST_PP_R1_35(M,D) M(35,D)
-#define BOOST_PP_R1_37(M,D) BOOST_PP_R1_36(M,D) M(36,D)
-#define BOOST_PP_R1_38(M,D) BOOST_PP_R1_37(M,D) M(37,D)
-#define BOOST_PP_R1_39(M,D) BOOST_PP_R1_38(M,D) M(38,D)
-#define BOOST_PP_R1_40(M,D) BOOST_PP_R1_39(M,D) M(39,D)
-#define BOOST_PP_R1_41(M,D) BOOST_PP_R1_40(M,D) M(40,D)
-#define BOOST_PP_R1_42(M,D) BOOST_PP_R1_41(M,D) M(41,D)
-#define BOOST_PP_R1_43(M,D) BOOST_PP_R1_42(M,D) M(42,D)
-#define BOOST_PP_R1_44(M,D) BOOST_PP_R1_43(M,D) M(43,D)
-#define BOOST_PP_R1_45(M,D) BOOST_PP_R1_44(M,D) M(44,D)
-#define BOOST_PP_R1_46(M,D) BOOST_PP_R1_45(M,D) M(45,D)
-#define BOOST_PP_R1_47(M,D) BOOST_PP_R1_46(M,D) M(46,D)
-#define BOOST_PP_R1_48(M,D) BOOST_PP_R1_47(M,D) M(47,D)
-#define BOOST_PP_R1_49(M,D) BOOST_PP_R1_48(M,D) M(48,D)
-#define BOOST_PP_R1_50(M,D) BOOST_PP_R1_49(M,D) M(49,D)
-#define BOOST_PP_R1_51(M,D) BOOST_PP_R1_50(M,D) M(50,D)
-#define BOOST_PP_R1_52(M,D) BOOST_PP_R1_51(M,D) M(51,D)
-#define BOOST_PP_R1_53(M,D) BOOST_PP_R1_52(M,D) M(52,D)
-#define BOOST_PP_R1_54(M,D) BOOST_PP_R1_53(M,D) M(53,D)
-#define BOOST_PP_R1_55(M,D) BOOST_PP_R1_54(M,D) M(54,D)
-#define BOOST_PP_R1_56(M,D) BOOST_PP_R1_55(M,D) M(55,D)
-#define BOOST_PP_R1_57(M,D) BOOST_PP_R1_56(M,D) M(56,D)
-#define BOOST_PP_R1_58(M,D) BOOST_PP_R1_57(M,D) M(57,D)
-#define BOOST_PP_R1_59(M,D) BOOST_PP_R1_58(M,D) M(58,D)
-#define BOOST_PP_R1_60(M,D) BOOST_PP_R1_59(M,D) M(59,D)
-#define BOOST_PP_R1_61(M,D) BOOST_PP_R1_60(M,D) M(60,D)
-#define BOOST_PP_R1_62(M,D) BOOST_PP_R1_61(M,D) M(61,D)
-#define BOOST_PP_R1_63(M,D) BOOST_PP_R1_62(M,D) M(62,D)
-#define BOOST_PP_R1_64(M,D) BOOST_PP_R1_63(M,D) M(63,D)
-#define BOOST_PP_R1_65(M,D) BOOST_PP_R1_64(M,D) M(64,D)
-#define BOOST_PP_R1_66(M,D) BOOST_PP_R1_65(M,D) M(65,D)
-#define BOOST_PP_R1_67(M,D) BOOST_PP_R1_66(M,D) M(66,D)
-#define BOOST_PP_R1_68(M,D) BOOST_PP_R1_67(M,D) M(67,D)
-#define BOOST_PP_R1_69(M,D) BOOST_PP_R1_68(M,D) M(68,D)
-#define BOOST_PP_R1_70(M,D) BOOST_PP_R1_69(M,D) M(69,D)
-#define BOOST_PP_R1_71(M,D) BOOST_PP_R1_70(M,D) M(70,D)
-#define BOOST_PP_R1_72(M,D) BOOST_PP_R1_71(M,D) M(71,D)
-#define BOOST_PP_R1_73(M,D) BOOST_PP_R1_72(M,D) M(72,D)
-#define BOOST_PP_R1_74(M,D) BOOST_PP_R1_73(M,D) M(73,D)
-#define BOOST_PP_R1_75(M,D) BOOST_PP_R1_74(M,D) M(74,D)
-#define BOOST_PP_R1_76(M,D) BOOST_PP_R1_75(M,D) M(75,D)
-#define BOOST_PP_R1_77(M,D) BOOST_PP_R1_76(M,D) M(76,D)
-#define BOOST_PP_R1_78(M,D) BOOST_PP_R1_77(M,D) M(77,D)
-#define BOOST_PP_R1_79(M,D) BOOST_PP_R1_78(M,D) M(78,D)
-#define BOOST_PP_R1_80(M,D) BOOST_PP_R1_79(M,D) M(79,D)
-#define BOOST_PP_R1_81(M,D) BOOST_PP_R1_80(M,D) M(80,D)
-#define BOOST_PP_R1_82(M,D) BOOST_PP_R1_81(M,D) M(81,D)
-#define BOOST_PP_R1_83(M,D) BOOST_PP_R1_82(M,D) M(82,D)
-#define BOOST_PP_R1_84(M,D) BOOST_PP_R1_83(M,D) M(83,D)
-#define BOOST_PP_R1_85(M,D) BOOST_PP_R1_84(M,D) M(84,D)
-#define BOOST_PP_R1_86(M,D) BOOST_PP_R1_85(M,D) M(85,D)
-#define BOOST_PP_R1_87(M,D) BOOST_PP_R1_86(M,D) M(86,D)
-#define BOOST_PP_R1_88(M,D) BOOST_PP_R1_87(M,D) M(87,D)
-#define BOOST_PP_R1_89(M,D) BOOST_PP_R1_88(M,D) M(88,D)
-#define BOOST_PP_R1_90(M,D) BOOST_PP_R1_89(M,D) M(89,D)
-#define BOOST_PP_R1_91(M,D) BOOST_PP_R1_90(M,D) M(90,D)
-#define BOOST_PP_R1_92(M,D) BOOST_PP_R1_91(M,D) M(91,D)
-#define BOOST_PP_R1_93(M,D) BOOST_PP_R1_92(M,D) M(92,D)
-#define BOOST_PP_R1_94(M,D) BOOST_PP_R1_93(M,D) M(93,D)
-#define BOOST_PP_R1_95(M,D) BOOST_PP_R1_94(M,D) M(94,D)
-#define BOOST_PP_R1_96(M,D) BOOST_PP_R1_95(M,D) M(95,D)
-#define BOOST_PP_R1_97(M,D) BOOST_PP_R1_96(M,D) M(96,D)
-#define BOOST_PP_R1_98(M,D) BOOST_PP_R1_97(M,D) M(97,D)
-#define BOOST_PP_R1_99(M,D) BOOST_PP_R1_98(M,D) M(98,D)
-#define BOOST_PP_R1_100(M,D) BOOST_PP_R1_99(M,D) M(99,D)
-#define BOOST_PP_R1_101(M,D) BOOST_PP_R1_100(M,D) M(100,D)
-#define BOOST_PP_R1_102(M,D) BOOST_PP_R1_101(M,D) M(101,D)
-#define BOOST_PP_R1_103(M,D) BOOST_PP_R1_102(M,D) M(102,D)
-#define BOOST_PP_R1_104(M,D) BOOST_PP_R1_103(M,D) M(103,D)
-#define BOOST_PP_R1_105(M,D) BOOST_PP_R1_104(M,D) M(104,D)
-#define BOOST_PP_R1_106(M,D) BOOST_PP_R1_105(M,D) M(105,D)
-#define BOOST_PP_R1_107(M,D) BOOST_PP_R1_106(M,D) M(106,D)
-#define BOOST_PP_R1_108(M,D) BOOST_PP_R1_107(M,D) M(107,D)
-#define BOOST_PP_R1_109(M,D) BOOST_PP_R1_108(M,D) M(108,D)
-#define BOOST_PP_R1_110(M,D) BOOST_PP_R1_109(M,D) M(109,D)
-#define BOOST_PP_R1_111(M,D) BOOST_PP_R1_110(M,D) M(110,D)
-#define BOOST_PP_R1_112(M,D) BOOST_PP_R1_111(M,D) M(111,D)
-#define BOOST_PP_R1_113(M,D) BOOST_PP_R1_112(M,D) M(112,D)
-#define BOOST_PP_R1_114(M,D) BOOST_PP_R1_113(M,D) M(113,D)
-#define BOOST_PP_R1_115(M,D) BOOST_PP_R1_114(M,D) M(114,D)
-#define BOOST_PP_R1_116(M,D) BOOST_PP_R1_115(M,D) M(115,D)
-#define BOOST_PP_R1_117(M,D) BOOST_PP_R1_116(M,D) M(116,D)
-#define BOOST_PP_R1_118(M,D) BOOST_PP_R1_117(M,D) M(117,D)
-#define BOOST_PP_R1_119(M,D) BOOST_PP_R1_118(M,D) M(118,D)
-#define BOOST_PP_R1_120(M,D) BOOST_PP_R1_119(M,D) M(119,D)
-#define BOOST_PP_R1_121(M,D) BOOST_PP_R1_120(M,D) M(120,D)
-#define BOOST_PP_R1_122(M,D) BOOST_PP_R1_121(M,D) M(121,D)
-#define BOOST_PP_R1_123(M,D) BOOST_PP_R1_122(M,D) M(122,D)
-#define BOOST_PP_R1_124(M,D) BOOST_PP_R1_123(M,D) M(123,D)
-#define BOOST_PP_R1_125(M,D) BOOST_PP_R1_124(M,D) M(124,D)
-#define BOOST_PP_R1_126(M,D) BOOST_PP_R1_125(M,D) M(125,D)
-#define BOOST_PP_R1_127(M,D) BOOST_PP_R1_126(M,D) M(126,D)
-#define BOOST_PP_R1_128(M,D) BOOST_PP_R1_127(M,D) M(127,D)
-
-#define BOOST_PP_R2_0(M,D)
-#define BOOST_PP_R2_1(M,D) M(0,D)
-#define BOOST_PP_R2_2(M,D) M(0,D) M(1,D)
-#define BOOST_PP_R2_3(M,D) M(0,D) M(1,D) M(2,D)
-#define BOOST_PP_R2_4(M,D) M(0,D) M(1,D) M(2,D) M(3,D)
-#define BOOST_PP_R2_5(M,D) BOOST_PP_R2_4(M,D) M(4,D)
-#define BOOST_PP_R2_6(M,D) BOOST_PP_R2_5(M,D) M(5,D)
-#define BOOST_PP_R2_7(M,D) BOOST_PP_R2_6(M,D) M(6,D)
-#define BOOST_PP_R2_8(M,D) BOOST_PP_R2_7(M,D) M(7,D)
-#define BOOST_PP_R2_9(M,D) BOOST_PP_R2_8(M,D) M(8,D)
-#define BOOST_PP_R2_10(M,D) BOOST_PP_R2_9(M,D) M(9,D)
-#define BOOST_PP_R2_11(M,D) BOOST_PP_R2_10(M,D) M(10,D)
-#define BOOST_PP_R2_12(M,D) BOOST_PP_R2_11(M,D) M(11,D)
-#define BOOST_PP_R2_13(M,D) BOOST_PP_R2_12(M,D) M(12,D)
-#define BOOST_PP_R2_14(M,D) BOOST_PP_R2_13(M,D) M(13,D)
-#define BOOST_PP_R2_15(M,D) BOOST_PP_R2_14(M,D) M(14,D)
-#define BOOST_PP_R2_16(M,D) BOOST_PP_R2_15(M,D) M(15,D)
-#define BOOST_PP_R2_17(M,D) BOOST_PP_R2_16(M,D) M(16,D)
-#define BOOST_PP_R2_18(M,D) BOOST_PP_R2_17(M,D) M(17,D)
-#define BOOST_PP_R2_19(M,D) BOOST_PP_R2_18(M,D) M(18,D)
-#define BOOST_PP_R2_20(M,D) BOOST_PP_R2_19(M,D) M(19,D)
-#define BOOST_PP_R2_21(M,D) BOOST_PP_R2_20(M,D) M(20,D)
-#define BOOST_PP_R2_22(M,D) BOOST_PP_R2_21(M,D) M(21,D)
-#define BOOST_PP_R2_23(M,D) BOOST_PP_R2_22(M,D) M(22,D)
-#define BOOST_PP_R2_24(M,D) BOOST_PP_R2_23(M,D) M(23,D)
-#define BOOST_PP_R2_25(M,D) BOOST_PP_R2_24(M,D) M(24,D)
-#define BOOST_PP_R2_26(M,D) BOOST_PP_R2_25(M,D) M(25,D)
-#define BOOST_PP_R2_27(M,D) BOOST_PP_R2_26(M,D) M(26,D)
-#define BOOST_PP_R2_28(M,D) BOOST_PP_R2_27(M,D) M(27,D)
-#define BOOST_PP_R2_29(M,D) BOOST_PP_R2_28(M,D) M(28,D)
-#define BOOST_PP_R2_30(M,D) BOOST_PP_R2_29(M,D) M(29,D)
-#define BOOST_PP_R2_31(M,D) BOOST_PP_R2_30(M,D) M(30,D)
-#define BOOST_PP_R2_32(M,D) BOOST_PP_R2_31(M,D) M(31,D)
-#define BOOST_PP_R2_33(M,D) BOOST_PP_R2_32(M,D) M(32,D)
-#define BOOST_PP_R2_34(M,D) BOOST_PP_R2_33(M,D) M(33,D)
-#define BOOST_PP_R2_35(M,D) BOOST_PP_R2_34(M,D) M(34,D)
-#define BOOST_PP_R2_36(M,D) BOOST_PP_R2_35(M,D) M(35,D)
-#define BOOST_PP_R2_37(M,D) BOOST_PP_R2_36(M,D) M(36,D)
-#define BOOST_PP_R2_38(M,D) BOOST_PP_R2_37(M,D) M(37,D)
-#define BOOST_PP_R2_39(M,D) BOOST_PP_R2_38(M,D) M(38,D)
-#define BOOST_PP_R2_40(M,D) BOOST_PP_R2_39(M,D) M(39,D)
-#define BOOST_PP_R2_41(M,D) BOOST_PP_R2_40(M,D) M(40,D)
-#define BOOST_PP_R2_42(M,D) BOOST_PP_R2_41(M,D) M(41,D)
-#define BOOST_PP_R2_43(M,D) BOOST_PP_R2_42(M,D) M(42,D)
-#define BOOST_PP_R2_44(M,D) BOOST_PP_R2_43(M,D) M(43,D)
-#define BOOST_PP_R2_45(M,D) BOOST_PP_R2_44(M,D) M(44,D)
-#define BOOST_PP_R2_46(M,D) BOOST_PP_R2_45(M,D) M(45,D)
-#define BOOST_PP_R2_47(M,D) BOOST_PP_R2_46(M,D) M(46,D)
-#define BOOST_PP_R2_48(M,D) BOOST_PP_R2_47(M,D) M(47,D)
-#define BOOST_PP_R2_49(M,D) BOOST_PP_R2_48(M,D) M(48,D)
-#define BOOST_PP_R2_50(M,D) BOOST_PP_R2_49(M,D) M(49,D)
-#define BOOST_PP_R2_51(M,D) BOOST_PP_R2_50(M,D) M(50,D)
-#define BOOST_PP_R2_52(M,D) BOOST_PP_R2_51(M,D) M(51,D)
-#define BOOST_PP_R2_53(M,D) BOOST_PP_R2_52(M,D) M(52,D)
-#define BOOST_PP_R2_54(M,D) BOOST_PP_R2_53(M,D) M(53,D)
-#define BOOST_PP_R2_55(M,D) BOOST_PP_R2_54(M,D) M(54,D)
-#define BOOST_PP_R2_56(M,D) BOOST_PP_R2_55(M,D) M(55,D)
-#define BOOST_PP_R2_57(M,D) BOOST_PP_R2_56(M,D) M(56,D)
-#define BOOST_PP_R2_58(M,D) BOOST_PP_R2_57(M,D) M(57,D)
-#define BOOST_PP_R2_59(M,D) BOOST_PP_R2_58(M,D) M(58,D)
-#define BOOST_PP_R2_60(M,D) BOOST_PP_R2_59(M,D) M(59,D)
-#define BOOST_PP_R2_61(M,D) BOOST_PP_R2_60(M,D) M(60,D)
-#define BOOST_PP_R2_62(M,D) BOOST_PP_R2_61(M,D) M(61,D)
-#define BOOST_PP_R2_63(M,D) BOOST_PP_R2_62(M,D) M(62,D)
-#define BOOST_PP_R2_64(M,D) BOOST_PP_R2_63(M,D) M(63,D)
-#define BOOST_PP_R2_65(M,D) BOOST_PP_R2_64(M,D) M(64,D)
-#define BOOST_PP_R2_66(M,D) BOOST_PP_R2_65(M,D) M(65,D)
-#define BOOST_PP_R2_67(M,D) BOOST_PP_R2_66(M,D) M(66,D)
-#define BOOST_PP_R2_68(M,D) BOOST_PP_R2_67(M,D) M(67,D)
-#define BOOST_PP_R2_69(M,D) BOOST_PP_R2_68(M,D) M(68,D)
-#define BOOST_PP_R2_70(M,D) BOOST_PP_R2_69(M,D) M(69,D)
-#define BOOST_PP_R2_71(M,D) BOOST_PP_R2_70(M,D) M(70,D)
-#define BOOST_PP_R2_72(M,D) BOOST_PP_R2_71(M,D) M(71,D)
-#define BOOST_PP_R2_73(M,D) BOOST_PP_R2_72(M,D) M(72,D)
-#define BOOST_PP_R2_74(M,D) BOOST_PP_R2_73(M,D) M(73,D)
-#define BOOST_PP_R2_75(M,D) BOOST_PP_R2_74(M,D) M(74,D)
-#define BOOST_PP_R2_76(M,D) BOOST_PP_R2_75(M,D) M(75,D)
-#define BOOST_PP_R2_77(M,D) BOOST_PP_R2_76(M,D) M(76,D)
-#define BOOST_PP_R2_78(M,D) BOOST_PP_R2_77(M,D) M(77,D)
-#define BOOST_PP_R2_79(M,D) BOOST_PP_R2_78(M,D) M(78,D)
-#define BOOST_PP_R2_80(M,D) BOOST_PP_R2_79(M,D) M(79,D)
-#define BOOST_PP_R2_81(M,D) BOOST_PP_R2_80(M,D) M(80,D)
-#define BOOST_PP_R2_82(M,D) BOOST_PP_R2_81(M,D) M(81,D)
-#define BOOST_PP_R2_83(M,D) BOOST_PP_R2_82(M,D) M(82,D)
-#define BOOST_PP_R2_84(M,D) BOOST_PP_R2_83(M,D) M(83,D)
-#define BOOST_PP_R2_85(M,D) BOOST_PP_R2_84(M,D) M(84,D)
-#define BOOST_PP_R2_86(M,D) BOOST_PP_R2_85(M,D) M(85,D)
-#define BOOST_PP_R2_87(M,D) BOOST_PP_R2_86(M,D) M(86,D)
-#define BOOST_PP_R2_88(M,D) BOOST_PP_R2_87(M,D) M(87,D)
-#define BOOST_PP_R2_89(M,D) BOOST_PP_R2_88(M,D) M(88,D)
-#define BOOST_PP_R2_90(M,D) BOOST_PP_R2_89(M,D) M(89,D)
-#define BOOST_PP_R2_91(M,D) BOOST_PP_R2_90(M,D) M(90,D)
-#define BOOST_PP_R2_92(M,D) BOOST_PP_R2_91(M,D) M(91,D)
-#define BOOST_PP_R2_93(M,D) BOOST_PP_R2_92(M,D) M(92,D)
-#define BOOST_PP_R2_94(M,D) BOOST_PP_R2_93(M,D) M(93,D)
-#define BOOST_PP_R2_95(M,D) BOOST_PP_R2_94(M,D) M(94,D)
-#define BOOST_PP_R2_96(M,D) BOOST_PP_R2_95(M,D) M(95,D)
-#define BOOST_PP_R2_97(M,D) BOOST_PP_R2_96(M,D) M(96,D)
-#define BOOST_PP_R2_98(M,D) BOOST_PP_R2_97(M,D) M(97,D)
-#define BOOST_PP_R2_99(M,D) BOOST_PP_R2_98(M,D) M(98,D)
-#define BOOST_PP_R2_100(M,D) BOOST_PP_R2_99(M,D) M(99,D)
-#define BOOST_PP_R2_101(M,D) BOOST_PP_R2_100(M,D) M(100,D)
-#define BOOST_PP_R2_102(M,D) BOOST_PP_R2_101(M,D) M(101,D)
-#define BOOST_PP_R2_103(M,D) BOOST_PP_R2_102(M,D) M(102,D)
-#define BOOST_PP_R2_104(M,D) BOOST_PP_R2_103(M,D) M(103,D)
-#define BOOST_PP_R2_105(M,D) BOOST_PP_R2_104(M,D) M(104,D)
-#define BOOST_PP_R2_106(M,D) BOOST_PP_R2_105(M,D) M(105,D)
-#define BOOST_PP_R2_107(M,D) BOOST_PP_R2_106(M,D) M(106,D)
-#define BOOST_PP_R2_108(M,D) BOOST_PP_R2_107(M,D) M(107,D)
-#define BOOST_PP_R2_109(M,D) BOOST_PP_R2_108(M,D) M(108,D)
-#define BOOST_PP_R2_110(M,D) BOOST_PP_R2_109(M,D) M(109,D)
-#define BOOST_PP_R2_111(M,D) BOOST_PP_R2_110(M,D) M(110,D)
-#define BOOST_PP_R2_112(M,D) BOOST_PP_R2_111(M,D) M(111,D)
-#define BOOST_PP_R2_113(M,D) BOOST_PP_R2_112(M,D) M(112,D)
-#define BOOST_PP_R2_114(M,D) BOOST_PP_R2_113(M,D) M(113,D)
-#define BOOST_PP_R2_115(M,D) BOOST_PP_R2_114(M,D) M(114,D)
-#define BOOST_PP_R2_116(M,D) BOOST_PP_R2_115(M,D) M(115,D)
-#define BOOST_PP_R2_117(M,D) BOOST_PP_R2_116(M,D) M(116,D)
-#define BOOST_PP_R2_118(M,D) BOOST_PP_R2_117(M,D) M(117,D)
-#define BOOST_PP_R2_119(M,D) BOOST_PP_R2_118(M,D) M(118,D)
-#define BOOST_PP_R2_120(M,D) BOOST_PP_R2_119(M,D) M(119,D)
-#define BOOST_PP_R2_121(M,D) BOOST_PP_R2_120(M,D) M(120,D)
-#define BOOST_PP_R2_122(M,D) BOOST_PP_R2_121(M,D) M(121,D)
-#define BOOST_PP_R2_123(M,D) BOOST_PP_R2_122(M,D) M(122,D)
-#define BOOST_PP_R2_124(M,D) BOOST_PP_R2_123(M,D) M(123,D)
-#define BOOST_PP_R2_125(M,D) BOOST_PP_R2_124(M,D) M(124,D)
-#define BOOST_PP_R2_126(M,D) BOOST_PP_R2_125(M,D) M(125,D)
-#define BOOST_PP_R2_127(M,D) BOOST_PP_R2_126(M,D) M(126,D)
-#define BOOST_PP_R2_128(M,D) BOOST_PP_R2_127(M,D) M(127,D)
-
-#define BOOST_PP_R3_0(M,D)
-#define BOOST_PP_R3_1(M,D) M(0,D)
-#define BOOST_PP_R3_2(M,D) M(0,D) M(1,D)
-#define BOOST_PP_R3_3(M,D) M(0,D) M(1,D) M(2,D)
-#define BOOST_PP_R3_4(M,D) M(0,D) M(1,D) M(2,D) M(3,D)
-#define BOOST_PP_R3_5(M,D) BOOST_PP_R3_4(M,D) M(4,D)
-#define BOOST_PP_R3_6(M,D) BOOST_PP_R3_5(M,D) M(5,D)
-#define BOOST_PP_R3_7(M,D) BOOST_PP_R3_6(M,D) M(6,D)
-#define BOOST_PP_R3_8(M,D) BOOST_PP_R3_7(M,D) M(7,D)
-#define BOOST_PP_R3_9(M,D) BOOST_PP_R3_8(M,D) M(8,D)
-#define BOOST_PP_R3_10(M,D) BOOST_PP_R3_9(M,D) M(9,D)
-#define BOOST_PP_R3_11(M,D) BOOST_PP_R3_10(M,D) M(10,D)
-#define BOOST_PP_R3_12(M,D) BOOST_PP_R3_11(M,D) M(11,D)
-#define BOOST_PP_R3_13(M,D) BOOST_PP_R3_12(M,D) M(12,D)
-#define BOOST_PP_R3_14(M,D) BOOST_PP_R3_13(M,D) M(13,D)
-#define BOOST_PP_R3_15(M,D) BOOST_PP_R3_14(M,D) M(14,D)
-#define BOOST_PP_R3_16(M,D) BOOST_PP_R3_15(M,D) M(15,D)
-#define BOOST_PP_R3_17(M,D) BOOST_PP_R3_16(M,D) M(16,D)
-#define BOOST_PP_R3_18(M,D) BOOST_PP_R3_17(M,D) M(17,D)
-#define BOOST_PP_R3_19(M,D) BOOST_PP_R3_18(M,D) M(18,D)
-#define BOOST_PP_R3_20(M,D) BOOST_PP_R3_19(M,D) M(19,D)
-#define BOOST_PP_R3_21(M,D) BOOST_PP_R3_20(M,D) M(20,D)
-#define BOOST_PP_R3_22(M,D) BOOST_PP_R3_21(M,D) M(21,D)
-#define BOOST_PP_R3_23(M,D) BOOST_PP_R3_22(M,D) M(22,D)
-#define BOOST_PP_R3_24(M,D) BOOST_PP_R3_23(M,D) M(23,D)
-#define BOOST_PP_R3_25(M,D) BOOST_PP_R3_24(M,D) M(24,D)
-#define BOOST_PP_R3_26(M,D) BOOST_PP_R3_25(M,D) M(25,D)
-#define BOOST_PP_R3_27(M,D) BOOST_PP_R3_26(M,D) M(26,D)
-#define BOOST_PP_R3_28(M,D) BOOST_PP_R3_27(M,D) M(27,D)
-#define BOOST_PP_R3_29(M,D) BOOST_PP_R3_28(M,D) M(28,D)
-#define BOOST_PP_R3_30(M,D) BOOST_PP_R3_29(M,D) M(29,D)
-#define BOOST_PP_R3_31(M,D) BOOST_PP_R3_30(M,D) M(30,D)
-#define BOOST_PP_R3_32(M,D) BOOST_PP_R3_31(M,D) M(31,D)
-#define BOOST_PP_R3_33(M,D) BOOST_PP_R3_32(M,D) M(32,D)
-#define BOOST_PP_R3_34(M,D) BOOST_PP_R3_33(M,D) M(33,D)
-#define BOOST_PP_R3_35(M,D) BOOST_PP_R3_34(M,D) M(34,D)
-#define BOOST_PP_R3_36(M,D) BOOST_PP_R3_35(M,D) M(35,D)
-#define BOOST_PP_R3_37(M,D) BOOST_PP_R3_36(M,D) M(36,D)
-#define BOOST_PP_R3_38(M,D) BOOST_PP_R3_37(M,D) M(37,D)
-#define BOOST_PP_R3_39(M,D) BOOST_PP_R3_38(M,D) M(38,D)
-#define BOOST_PP_R3_40(M,D) BOOST_PP_R3_39(M,D) M(39,D)
-#define BOOST_PP_R3_41(M,D) BOOST_PP_R3_40(M,D) M(40,D)
-#define BOOST_PP_R3_42(M,D) BOOST_PP_R3_41(M,D) M(41,D)
-#define BOOST_PP_R3_43(M,D) BOOST_PP_R3_42(M,D) M(42,D)
-#define BOOST_PP_R3_44(M,D) BOOST_PP_R3_43(M,D) M(43,D)
-#define BOOST_PP_R3_45(M,D) BOOST_PP_R3_44(M,D) M(44,D)
-#define BOOST_PP_R3_46(M,D) BOOST_PP_R3_45(M,D) M(45,D)
-#define BOOST_PP_R3_47(M,D) BOOST_PP_R3_46(M,D) M(46,D)
-#define BOOST_PP_R3_48(M,D) BOOST_PP_R3_47(M,D) M(47,D)
-#define BOOST_PP_R3_49(M,D) BOOST_PP_R3_48(M,D) M(48,D)
-#define BOOST_PP_R3_50(M,D) BOOST_PP_R3_49(M,D) M(49,D)
-#define BOOST_PP_R3_51(M,D) BOOST_PP_R3_50(M,D) M(50,D)
-#define BOOST_PP_R3_52(M,D) BOOST_PP_R3_51(M,D) M(51,D)
-#define BOOST_PP_R3_53(M,D) BOOST_PP_R3_52(M,D) M(52,D)
-#define BOOST_PP_R3_54(M,D) BOOST_PP_R3_53(M,D) M(53,D)
-#define BOOST_PP_R3_55(M,D) BOOST_PP_R3_54(M,D) M(54,D)
-#define BOOST_PP_R3_56(M,D) BOOST_PP_R3_55(M,D) M(55,D)
-#define BOOST_PP_R3_57(M,D) BOOST_PP_R3_56(M,D) M(56,D)
-#define BOOST_PP_R3_58(M,D) BOOST_PP_R3_57(M,D) M(57,D)
-#define BOOST_PP_R3_59(M,D) BOOST_PP_R3_58(M,D) M(58,D)
-#define BOOST_PP_R3_60(M,D) BOOST_PP_R3_59(M,D) M(59,D)
-#define BOOST_PP_R3_61(M,D) BOOST_PP_R3_60(M,D) M(60,D)
-#define BOOST_PP_R3_62(M,D) BOOST_PP_R3_61(M,D) M(61,D)
-#define BOOST_PP_R3_63(M,D) BOOST_PP_R3_62(M,D) M(62,D)
-#define BOOST_PP_R3_64(M,D) BOOST_PP_R3_63(M,D) M(63,D)
-#define BOOST_PP_R3_65(M,D) BOOST_PP_R3_64(M,D) M(64,D)
-#define BOOST_PP_R3_66(M,D) BOOST_PP_R3_65(M,D) M(65,D)
-#define BOOST_PP_R3_67(M,D) BOOST_PP_R3_66(M,D) M(66,D)
-#define BOOST_PP_R3_68(M,D) BOOST_PP_R3_67(M,D) M(67,D)
-#define BOOST_PP_R3_69(M,D) BOOST_PP_R3_68(M,D) M(68,D)
-#define BOOST_PP_R3_70(M,D) BOOST_PP_R3_69(M,D) M(69,D)
-#define BOOST_PP_R3_71(M,D) BOOST_PP_R3_70(M,D) M(70,D)
-#define BOOST_PP_R3_72(M,D) BOOST_PP_R3_71(M,D) M(71,D)
-#define BOOST_PP_R3_73(M,D) BOOST_PP_R3_72(M,D) M(72,D)
-#define BOOST_PP_R3_74(M,D) BOOST_PP_R3_73(M,D) M(73,D)
-#define BOOST_PP_R3_75(M,D) BOOST_PP_R3_74(M,D) M(74,D)
-#define BOOST_PP_R3_76(M,D) BOOST_PP_R3_75(M,D) M(75,D)
-#define BOOST_PP_R3_77(M,D) BOOST_PP_R3_76(M,D) M(76,D)
-#define BOOST_PP_R3_78(M,D) BOOST_PP_R3_77(M,D) M(77,D)
-#define BOOST_PP_R3_79(M,D) BOOST_PP_R3_78(M,D) M(78,D)
-#define BOOST_PP_R3_80(M,D) BOOST_PP_R3_79(M,D) M(79,D)
-#define BOOST_PP_R3_81(M,D) BOOST_PP_R3_80(M,D) M(80,D)
-#define BOOST_PP_R3_82(M,D) BOOST_PP_R3_81(M,D) M(81,D)
-#define BOOST_PP_R3_83(M,D) BOOST_PP_R3_82(M,D) M(82,D)
-#define BOOST_PP_R3_84(M,D) BOOST_PP_R3_83(M,D) M(83,D)
-#define BOOST_PP_R3_85(M,D) BOOST_PP_R3_84(M,D) M(84,D)
-#define BOOST_PP_R3_86(M,D) BOOST_PP_R3_85(M,D) M(85,D)
-#define BOOST_PP_R3_87(M,D) BOOST_PP_R3_86(M,D) M(86,D)
-#define BOOST_PP_R3_88(M,D) BOOST_PP_R3_87(M,D) M(87,D)
-#define BOOST_PP_R3_89(M,D) BOOST_PP_R3_88(M,D) M(88,D)
-#define BOOST_PP_R3_90(M,D) BOOST_PP_R3_89(M,D) M(89,D)
-#define BOOST_PP_R3_91(M,D) BOOST_PP_R3_90(M,D) M(90,D)
-#define BOOST_PP_R3_92(M,D) BOOST_PP_R3_91(M,D) M(91,D)
-#define BOOST_PP_R3_93(M,D) BOOST_PP_R3_92(M,D) M(92,D)
-#define BOOST_PP_R3_94(M,D) BOOST_PP_R3_93(M,D) M(93,D)
-#define BOOST_PP_R3_95(M,D) BOOST_PP_R3_94(M,D) M(94,D)
-#define BOOST_PP_R3_96(M,D) BOOST_PP_R3_95(M,D) M(95,D)
-#define BOOST_PP_R3_97(M,D) BOOST_PP_R3_96(M,D) M(96,D)
-#define BOOST_PP_R3_98(M,D) BOOST_PP_R3_97(M,D) M(97,D)
-#define BOOST_PP_R3_99(M,D) BOOST_PP_R3_98(M,D) M(98,D)
-#define BOOST_PP_R3_100(M,D) BOOST_PP_R3_99(M,D) M(99,D)
-#define BOOST_PP_R3_101(M,D) BOOST_PP_R3_100(M,D) M(100,D)
-#define BOOST_PP_R3_102(M,D) BOOST_PP_R3_101(M,D) M(101,D)
-#define BOOST_PP_R3_103(M,D) BOOST_PP_R3_102(M,D) M(102,D)
-#define BOOST_PP_R3_104(M,D) BOOST_PP_R3_103(M,D) M(103,D)
-#define BOOST_PP_R3_105(M,D) BOOST_PP_R3_104(M,D) M(104,D)
-#define BOOST_PP_R3_106(M,D) BOOST_PP_R3_105(M,D) M(105,D)
-#define BOOST_PP_R3_107(M,D) BOOST_PP_R3_106(M,D) M(106,D)
-#define BOOST_PP_R3_108(M,D) BOOST_PP_R3_107(M,D) M(107,D)
-#define BOOST_PP_R3_109(M,D) BOOST_PP_R3_108(M,D) M(108,D)
-#define BOOST_PP_R3_110(M,D) BOOST_PP_R3_109(M,D) M(109,D)
-#define BOOST_PP_R3_111(M,D) BOOST_PP_R3_110(M,D) M(110,D)
-#define BOOST_PP_R3_112(M,D) BOOST_PP_R3_111(M,D) M(111,D)
-#define BOOST_PP_R3_113(M,D) BOOST_PP_R3_112(M,D) M(112,D)
-#define BOOST_PP_R3_114(M,D) BOOST_PP_R3_113(M,D) M(113,D)
-#define BOOST_PP_R3_115(M,D) BOOST_PP_R3_114(M,D) M(114,D)
-#define BOOST_PP_R3_116(M,D) BOOST_PP_R3_115(M,D) M(115,D)
-#define BOOST_PP_R3_117(M,D) BOOST_PP_R3_116(M,D) M(116,D)
-#define BOOST_PP_R3_118(M,D) BOOST_PP_R3_117(M,D) M(117,D)
-#define BOOST_PP_R3_119(M,D) BOOST_PP_R3_118(M,D) M(118,D)
-#define BOOST_PP_R3_120(M,D) BOOST_PP_R3_119(M,D) M(119,D)
-#define BOOST_PP_R3_121(M,D) BOOST_PP_R3_120(M,D) M(120,D)
-#define BOOST_PP_R3_122(M,D) BOOST_PP_R3_121(M,D) M(121,D)
-#define BOOST_PP_R3_123(M,D) BOOST_PP_R3_122(M,D) M(122,D)
-#define BOOST_PP_R3_124(M,D) BOOST_PP_R3_123(M,D) M(123,D)
-#define BOOST_PP_R3_125(M,D) BOOST_PP_R3_124(M,D) M(124,D)
-#define BOOST_PP_R3_126(M,D) BOOST_PP_R3_125(M,D) M(125,D)
-#define BOOST_PP_R3_127(M,D) BOOST_PP_R3_126(M,D) M(126,D)
-#define BOOST_PP_R3_128(M,D) BOOST_PP_R3_127(M,D) M(127,D)
-
-#endif // !(defined(__EDG_VERSION__) && (__EDG_VERSION__ <= 245))
-
-/** <p>Obsolete, just use BOOST_PP_REPEAT().</p> */
-#define BOOST_PP_REPEAT_2ND BOOST_PP_REPEAT
-/** <p>Obsolete, just use BOOST_PP_REPEAT().</p> */
-#define BOOST_PP_REPEAT_3RD BOOST_PP_REPEAT
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPEAT_HPP
+# define BOOST_PREPROCESSOR_REPEAT_HPP
+#
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# endif
index 2edbe3d238a2dfe8335ca2707a28a1a278398ea3..7b60f438a5e83462ebc6d0a1f893c1b04f1e786d 100644 (file)
@@ -1,24 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_REPEAT_2ND_HPP
-#define BOOST_PREPROCESSOR_REPEAT_2ND_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>This header is obsolete. Use the following code instead.</p>
-
-<pre>
-#include &lt;boost/preprocessor/repeat.hpp&gt;
-</pre>
-*/
-
-#include <boost/preprocessor/repeat.hpp>
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPEAT_2ND_HPP
+# define BOOST_PREPROCESSOR_REPEAT_2ND_HPP
+#
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# endif
index 5418ecad7433c932dad1e88ffd1b816d2a7cda43..6e87c8c076f7fab224168c785504bea72a558139 100644 (file)
@@ -1,24 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_REPEAT_3RD_HPP
-#define BOOST_PREPROCESSOR_REPEAT_3RD_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>This header is obsolete. Use the following code instead.</p>
-
-<pre>
-#include &lt;boost/preprocessor/repeat.hpp&gt;
-</pre>
-*/
-
-#include <boost/preprocessor/repeat.hpp>
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPEAT_3RD_HPP
+# define BOOST_PREPROCESSOR_REPEAT_3RD_HPP
+#
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# endif
index 7a4271d29eb97432bc48e234c2406d8242770cad..9ddf0950a91501d3b816924a838b4fc50d91c9ab 100644 (file)
-#ifndef BOOST_PREPROCESSOR_REPEAT_FROM_TO_HPP
-#define BOOST_PREPROCESSOR_REPEAT_FROM_TO_HPP
-
-/* Copyright (C) 2002
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/arithmetic/sub.hpp>
-#include <boost/preprocessor/arithmetic/add.hpp>
-#include <boost/preprocessor/repeat.hpp>
-
-/** <p>Repeats the macro <code>MACRO(INDEX,DATA)</code> for <code>INDEX = [FIRST,LAST)</code>.</p>
-
-<p>In other words, expands to the sequence:</p>
-
-<pre>
-MACRO(FIRST,DATA) MACRO(BOOST_PP_INC(FIRST),DATA) ... MACRO(BOOST_PP_DEC(LAST),DATA)
-</pre>
-
-<p>For example,</p>
-
-<pre>
-#define TEST(INDEX,DATA) DATA(INDEX);
-BOOST_PP_REPEAT_FROM_TO(4,7,TEST,X)
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-X(4); X(5); X(6);
-</pre>
-
-<h3>2D and 3D repetition</h3>
-
-<p>BOOST_PP_REPEAT_FROM_TO() implements automatic recursion. 2D and 3D repetition
-are directly supported.</p>
-
-<h3>See</h3>
-<ul>
-  <li>BOOST_PP_FOR()</li>
-  <li>BOOST_PP_LIMIT_DIM</li>
-  <li>BOOST_PP_LIMIT_MAG</li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/repeat_test.cpp">repeat_test.cpp</a></li>
-  <li><a href="../../test/repeat_2nd_test.cpp">repeat_2nd_test.cpp</a></li>
-</ul>
-*/
-#if 0
-#  define BOOST_PP_REPEAT_FROM_TO(FIRST,LAST,MACRO,DATA)
-#endif
-
-#if !defined(BOOST_NO_COMPILER_CONFIG) && defined(_MSC_VER)
-
-/* This is a workaround for a MSVC++ PP bug. You'll need to add further
- * BOOST_PP_REPEAT_FT_AUTO_REC3/4/etc. wrapping as the maximum level of 
- * nesting REPEATS increases
- */
-#  define BOOST_PP_REPEAT_FROM_TO\
-    BOOST_PP_AUTO_REC_CAT1(BOOST_PP_REPEAT_FROM_TO_,BOOST_PP_REPEAT_FT_AUTO_REC2(\
-      BOOST_PP_REPEAT_FT_AUTO_REC1,(BOOST_PP_AUTO_REC_ID,(1))\
-      ))
-
-#  define BOOST_PP_REPEAT_FROM_TO_BOOST_PP_REPEAT_FT_AUTO_REC1(M,P)\
-    BOOST_PP_AUTO_REC_CAT2(BOOST_PP_REPEAT_FROM_TO_,BOOST_PP_REPEAT_FT_AUTO_REC2(BOOST_PP_AUTO_REC_ID,(2)))
-#  define BOOST_PP_REPEAT_FROM_TO_BOOST_PP_REPEAT_FT_AUTO_REC2(M,P)\
-    BOOST_PP_AUTO_REC_CAT3(BOOST_PP_REPEAT_FROM_TO_,BOOST_PP_REPEAT_FT_AUTO_REC3(BOOST_PP_AUTO_REC_ID,(3)))
-#  define BOOST_PP_REPEAT_FROM_TO_BOOST_PP_REPEAT_FT_AUTO_REC3(M,P)\
-    (TOO MANY NESTED REPEATS!)
-
-#  define BOOST_PP_REPEAT_FT_AUTO_REC1(M,P) BOOST_PP_EXPAND(M P)
-#  define BOOST_PP_REPEAT_FT_AUTO_REC2(M,P) BOOST_PP_EXPAND(M P)
-#  define BOOST_PP_REPEAT_FT_AUTO_REC3(M,P) BOOST_PP_EXPAND(M P)
-
-#  define BOOST_PP_REPEAT_FROM_TO_1(F,L,M,D) BOOST_PP_REPEAT_FT_AUTO_REC1(BOOST_PP_REPEAT,(BOOST_PP_SUB(L,F),BOOST_PP_REPEAT_FROM_TO_M1,(F,M,D)))
-#  define BOOST_PP_REPEAT_FROM_TO_2(F,L,M,D) BOOST_PP_REPEAT_FT_AUTO_REC2(BOOST_PP_REPEAT,(BOOST_PP_SUB(L,F),BOOST_PP_REPEAT_FROM_TO_M2,(F,M,D)))
-#  define BOOST_PP_REPEAT_FROM_TO_3(F,L,M,D) BOOST_PP_REPEAT_FT_AUTO_REC3(BOOST_PP_REPEAT,(BOOST_PP_SUB(L,F),BOOST_PP_REPEAT_FROM_TO_M3,(F,M,D)))
-
-#else
-
-#  define BOOST_PP_REPEAT_FROM_TO\
-    BOOST_PP_AUTO_REC_CAT1(BOOST_PP_REPEAT_FROM_TO_,BOOST_PP_REPEAT_AUTO_REC1(BOOST_PP_AUTO_REC_ID,(1)))
-#  define BOOST_PP_REPEAT_FROM_TO_BOOST_PP_REPEAT_AUTO_REC1(M,P)\
-    BOOST_PP_AUTO_REC_CAT2(BOOST_PP_REPEAT_FROM_TO_,BOOST_PP_REPEAT_AUTO_REC2(BOOST_PP_AUTO_REC_ID,(2)))
-#  define BOOST_PP_REPEAT_FROM_TO_BOOST_PP_REPEAT_AUTO_REC2(M,P)\
-    BOOST_PP_AUTO_REC_CAT3(BOOST_PP_REPEAT_FROM_TO_,BOOST_PP_REPEAT_AUTO_REC3(BOOST_PP_AUTO_REC_ID,(3)))
-#  define BOOST_PP_REPEAT_FROM_TO_BOOST_PP_REPEAT_AUTO_REC3(M,P)\
-    (TOO MANY NESTED REPEATS!)
-
-#  define BOOST_PP_REPEAT_FROM_TO_1(F,L,M,D) BOOST_PP_REPEAT(BOOST_PP_SUB(L,F),BOOST_PP_REPEAT_FROM_TO_M1,(F,M,D))
-#  define BOOST_PP_REPEAT_FROM_TO_2(F,L,M,D) BOOST_PP_REPEAT(BOOST_PP_SUB(L,F),BOOST_PP_REPEAT_FROM_TO_M2,(F,M,D))
-#  define BOOST_PP_REPEAT_FROM_TO_3(F,L,M,D) BOOST_PP_REPEAT(BOOST_PP_SUB(L,F),BOOST_PP_REPEAT_FROM_TO_M3,(F,M,D))
-
-#endif
-
-#define BOOST_PP_REPEAT_FROM_TO_M1(I,FMD) BOOST_PP_TUPLE_ELEM(3,1,FMD)(BOOST_PP_ADD(I,BOOST_PP_TUPLE_ELEM(3,0,FMD)),BOOST_PP_TUPLE_ELEM(3,2,FMD))
-#define BOOST_PP_REPEAT_FROM_TO_M2(I,FMD) BOOST_PP_TUPLE_ELEM(3,1,FMD)(BOOST_PP_ADD(I,BOOST_PP_TUPLE_ELEM(3,0,FMD)),BOOST_PP_TUPLE_ELEM(3,2,FMD))
-#define BOOST_PP_REPEAT_FROM_TO_M3(I,FMD) BOOST_PP_TUPLE_ELEM(3,1,FMD)(BOOST_PP_ADD(I,BOOST_PP_TUPLE_ELEM(3,0,FMD)),BOOST_PP_TUPLE_ELEM(3,2,FMD))
-
-/** <p>Obsolete, just use BOOST_PP_REPEAT_FROM_TO().</p> */
-#define BOOST_PP_REPEAT_FROM_TO_2ND BOOST_PP_REPEAT_FROM_TO
-/** <p>Obsolete, just use BOOST_PP_REPEAT_FROM_TO().</p> */
-#define BOOST_PP_REPEAT_FROM_TO_3RD BOOST_PP_REPEAT_FROM_TO
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPEAT_FROM_TO_HPP
+# define BOOST_PREPROCESSOR_REPEAT_FROM_TO_HPP
+#
+# include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#
+# endif
index e554d4cb676031fd3b52032e7c0092fd9591b81d..a6e42ac4b273486029da7a8cd01d16c42b030417 100644 (file)
@@ -1,24 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_REPEAT_FROM_TO_2ND_HPP
-#define BOOST_PREPROCESSOR_REPEAT_FROM_TO_2ND_HPP
-
-/* Copyright (C) 2002
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>This header is obsolete. Use the following code instead.</p>
-
-<pre>
-#include &lt;boost/preprocessor/repeat_from_to.hpp&gt;
-</pre>
-*/
-
-#include <boost/preprocessor/repeat_from_to.hpp>
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPEAT_FROM_TO_2ND_HPP
+# define BOOST_PREPROCESSOR_REPEAT_FROM_TO_2ND_HPP
+#
+# include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#
+# endif
index 6898b8b15aeac1978f5a19af9d49586e5c81297a..29fb71d9306111b5b4a6eaf5e47b557832f58703 100644 (file)
@@ -1,24 +1,18 @@
-#ifndef BOOST_PREPROCESSOR_REPEAT_FROM_TO_3RD_HPP
-#define BOOST_PREPROCESSOR_REPEAT_FROM_TO_3RD_HPP
-
-/* Copyright (C) 2002
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>This header is obsolete. Use the following code instead.</p>
-
-<pre>
-#include &lt;boost/preprocessor/repeat_from_to.hpp&gt;
-</pre>
-*/
-
-#include <boost/preprocessor/repeat_from_to.hpp>
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPEAT_FROM_TO_3RD_HPP
+# define BOOST_PREPROCESSOR_REPEAT_FROM_TO_3RD_HPP
+#
+# include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#
+# endif
diff --git a/boost/boost/preprocessor/repetition/detail/for.hpp b/boost/boost/preprocessor/repetition/detail/for.hpp
new file mode 100644 (file)
index 0000000..f517ab0
--- /dev/null
@@ -0,0 +1,537 @@
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+# define BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+#
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_FOR_1_C(BOOST_PP_BOOL(p(2, s)), s, p, o, m)
+# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_FOR_2_C(BOOST_PP_BOOL(p(3, s)), s, p, o, m)
+# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_FOR_3_C(BOOST_PP_BOOL(p(4, s)), s, p, o, m)
+# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_FOR_4_C(BOOST_PP_BOOL(p(5, s)), s, p, o, m)
+# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_FOR_5_C(BOOST_PP_BOOL(p(6, s)), s, p, o, m)
+# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_FOR_6_C(BOOST_PP_BOOL(p(7, s)), s, p, o, m)
+# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_FOR_7_C(BOOST_PP_BOOL(p(8, s)), s, p, o, m)
+# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_FOR_8_C(BOOST_PP_BOOL(p(9, s)), s, p, o, m)
+# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_FOR_9_C(BOOST_PP_BOOL(p(10, s)), s, p, o, m)
+# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_FOR_10_C(BOOST_PP_BOOL(p(11, s)), s, p, o, m)
+# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_FOR_11_C(BOOST_PP_BOOL(p(12, s)), s, p, o, m)
+# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_FOR_12_C(BOOST_PP_BOOL(p(13, s)), s, p, o, m)
+# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_FOR_13_C(BOOST_PP_BOOL(p(14, s)), s, p, o, m)
+# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_FOR_14_C(BOOST_PP_BOOL(p(15, s)), s, p, o, m)
+# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_FOR_15_C(BOOST_PP_BOOL(p(16, s)), s, p, o, m)
+# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_FOR_16_C(BOOST_PP_BOOL(p(17, s)), s, p, o, m)
+# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_FOR_17_C(BOOST_PP_BOOL(p(18, s)), s, p, o, m)
+# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_FOR_18_C(BOOST_PP_BOOL(p(19, s)), s, p, o, m)
+# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_FOR_19_C(BOOST_PP_BOOL(p(20, s)), s, p, o, m)
+# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_FOR_20_C(BOOST_PP_BOOL(p(21, s)), s, p, o, m)
+# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_FOR_21_C(BOOST_PP_BOOL(p(22, s)), s, p, o, m)
+# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_FOR_22_C(BOOST_PP_BOOL(p(23, s)), s, p, o, m)
+# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_FOR_23_C(BOOST_PP_BOOL(p(24, s)), s, p, o, m)
+# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_FOR_24_C(BOOST_PP_BOOL(p(25, s)), s, p, o, m)
+# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_FOR_25_C(BOOST_PP_BOOL(p(26, s)), s, p, o, m)
+# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_FOR_26_C(BOOST_PP_BOOL(p(27, s)), s, p, o, m)
+# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_FOR_27_C(BOOST_PP_BOOL(p(28, s)), s, p, o, m)
+# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_FOR_28_C(BOOST_PP_BOOL(p(29, s)), s, p, o, m)
+# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_FOR_29_C(BOOST_PP_BOOL(p(30, s)), s, p, o, m)
+# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_FOR_30_C(BOOST_PP_BOOL(p(31, s)), s, p, o, m)
+# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_FOR_31_C(BOOST_PP_BOOL(p(32, s)), s, p, o, m)
+# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_FOR_32_C(BOOST_PP_BOOL(p(33, s)), s, p, o, m)
+# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_FOR_33_C(BOOST_PP_BOOL(p(34, s)), s, p, o, m)
+# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_FOR_34_C(BOOST_PP_BOOL(p(35, s)), s, p, o, m)
+# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_FOR_35_C(BOOST_PP_BOOL(p(36, s)), s, p, o, m)
+# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_FOR_36_C(BOOST_PP_BOOL(p(37, s)), s, p, o, m)
+# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_FOR_37_C(BOOST_PP_BOOL(p(38, s)), s, p, o, m)
+# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_FOR_38_C(BOOST_PP_BOOL(p(39, s)), s, p, o, m)
+# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_FOR_39_C(BOOST_PP_BOOL(p(40, s)), s, p, o, m)
+# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_FOR_40_C(BOOST_PP_BOOL(p(41, s)), s, p, o, m)
+# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_FOR_41_C(BOOST_PP_BOOL(p(42, s)), s, p, o, m)
+# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_FOR_42_C(BOOST_PP_BOOL(p(43, s)), s, p, o, m)
+# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_FOR_43_C(BOOST_PP_BOOL(p(44, s)), s, p, o, m)
+# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_FOR_44_C(BOOST_PP_BOOL(p(45, s)), s, p, o, m)
+# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_FOR_45_C(BOOST_PP_BOOL(p(46, s)), s, p, o, m)
+# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_FOR_46_C(BOOST_PP_BOOL(p(47, s)), s, p, o, m)
+# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_FOR_47_C(BOOST_PP_BOOL(p(48, s)), s, p, o, m)
+# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_FOR_48_C(BOOST_PP_BOOL(p(49, s)), s, p, o, m)
+# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_FOR_49_C(BOOST_PP_BOOL(p(50, s)), s, p, o, m)
+# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_FOR_50_C(BOOST_PP_BOOL(p(51, s)), s, p, o, m)
+# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_FOR_51_C(BOOST_PP_BOOL(p(52, s)), s, p, o, m)
+# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_FOR_52_C(BOOST_PP_BOOL(p(53, s)), s, p, o, m)
+# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_FOR_53_C(BOOST_PP_BOOL(p(54, s)), s, p, o, m)
+# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_FOR_54_C(BOOST_PP_BOOL(p(55, s)), s, p, o, m)
+# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_FOR_55_C(BOOST_PP_BOOL(p(56, s)), s, p, o, m)
+# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_FOR_56_C(BOOST_PP_BOOL(p(57, s)), s, p, o, m)
+# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_FOR_57_C(BOOST_PP_BOOL(p(58, s)), s, p, o, m)
+# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_FOR_58_C(BOOST_PP_BOOL(p(59, s)), s, p, o, m)
+# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_FOR_59_C(BOOST_PP_BOOL(p(60, s)), s, p, o, m)
+# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_FOR_60_C(BOOST_PP_BOOL(p(61, s)), s, p, o, m)
+# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_FOR_61_C(BOOST_PP_BOOL(p(62, s)), s, p, o, m)
+# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_FOR_62_C(BOOST_PP_BOOL(p(63, s)), s, p, o, m)
+# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_FOR_63_C(BOOST_PP_BOOL(p(64, s)), s, p, o, m)
+# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_FOR_64_C(BOOST_PP_BOOL(p(65, s)), s, p, o, m)
+# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_FOR_65_C(BOOST_PP_BOOL(p(66, s)), s, p, o, m)
+# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_FOR_66_C(BOOST_PP_BOOL(p(67, s)), s, p, o, m)
+# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_FOR_67_C(BOOST_PP_BOOL(p(68, s)), s, p, o, m)
+# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_FOR_68_C(BOOST_PP_BOOL(p(69, s)), s, p, o, m)
+# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_FOR_69_C(BOOST_PP_BOOL(p(70, s)), s, p, o, m)
+# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_FOR_70_C(BOOST_PP_BOOL(p(71, s)), s, p, o, m)
+# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_FOR_71_C(BOOST_PP_BOOL(p(72, s)), s, p, o, m)
+# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_FOR_72_C(BOOST_PP_BOOL(p(73, s)), s, p, o, m)
+# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_FOR_73_C(BOOST_PP_BOOL(p(74, s)), s, p, o, m)
+# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_FOR_74_C(BOOST_PP_BOOL(p(75, s)), s, p, o, m)
+# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_FOR_75_C(BOOST_PP_BOOL(p(76, s)), s, p, o, m)
+# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_FOR_76_C(BOOST_PP_BOOL(p(77, s)), s, p, o, m)
+# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_FOR_77_C(BOOST_PP_BOOL(p(78, s)), s, p, o, m)
+# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_FOR_78_C(BOOST_PP_BOOL(p(79, s)), s, p, o, m)
+# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_FOR_79_C(BOOST_PP_BOOL(p(80, s)), s, p, o, m)
+# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_FOR_80_C(BOOST_PP_BOOL(p(81, s)), s, p, o, m)
+# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_FOR_81_C(BOOST_PP_BOOL(p(82, s)), s, p, o, m)
+# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_FOR_82_C(BOOST_PP_BOOL(p(83, s)), s, p, o, m)
+# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_FOR_83_C(BOOST_PP_BOOL(p(84, s)), s, p, o, m)
+# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_FOR_84_C(BOOST_PP_BOOL(p(85, s)), s, p, o, m)
+# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_FOR_85_C(BOOST_PP_BOOL(p(86, s)), s, p, o, m)
+# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_FOR_86_C(BOOST_PP_BOOL(p(87, s)), s, p, o, m)
+# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_FOR_87_C(BOOST_PP_BOOL(p(88, s)), s, p, o, m)
+# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_FOR_88_C(BOOST_PP_BOOL(p(89, s)), s, p, o, m)
+# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_FOR_89_C(BOOST_PP_BOOL(p(90, s)), s, p, o, m)
+# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_FOR_90_C(BOOST_PP_BOOL(p(91, s)), s, p, o, m)
+# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_FOR_91_C(BOOST_PP_BOOL(p(92, s)), s, p, o, m)
+# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_FOR_92_C(BOOST_PP_BOOL(p(93, s)), s, p, o, m)
+# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_FOR_93_C(BOOST_PP_BOOL(p(94, s)), s, p, o, m)
+# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_FOR_94_C(BOOST_PP_BOOL(p(95, s)), s, p, o, m)
+# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_FOR_95_C(BOOST_PP_BOOL(p(96, s)), s, p, o, m)
+# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_FOR_96_C(BOOST_PP_BOOL(p(97, s)), s, p, o, m)
+# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_FOR_97_C(BOOST_PP_BOOL(p(98, s)), s, p, o, m)
+# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_FOR_98_C(BOOST_PP_BOOL(p(99, s)), s, p, o, m)
+# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_FOR_99_C(BOOST_PP_BOOL(p(100, s)), s, p, o, m)
+# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_FOR_100_C(BOOST_PP_BOOL(p(101, s)), s, p, o, m)
+# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_FOR_101_C(BOOST_PP_BOOL(p(102, s)), s, p, o, m)
+# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_FOR_102_C(BOOST_PP_BOOL(p(103, s)), s, p, o, m)
+# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_FOR_103_C(BOOST_PP_BOOL(p(104, s)), s, p, o, m)
+# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_FOR_104_C(BOOST_PP_BOOL(p(105, s)), s, p, o, m)
+# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_FOR_105_C(BOOST_PP_BOOL(p(106, s)), s, p, o, m)
+# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_FOR_106_C(BOOST_PP_BOOL(p(107, s)), s, p, o, m)
+# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_FOR_107_C(BOOST_PP_BOOL(p(108, s)), s, p, o, m)
+# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_FOR_108_C(BOOST_PP_BOOL(p(109, s)), s, p, o, m)
+# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_FOR_109_C(BOOST_PP_BOOL(p(110, s)), s, p, o, m)
+# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_FOR_110_C(BOOST_PP_BOOL(p(111, s)), s, p, o, m)
+# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_FOR_111_C(BOOST_PP_BOOL(p(112, s)), s, p, o, m)
+# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_FOR_112_C(BOOST_PP_BOOL(p(113, s)), s, p, o, m)
+# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_FOR_113_C(BOOST_PP_BOOL(p(114, s)), s, p, o, m)
+# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_FOR_114_C(BOOST_PP_BOOL(p(115, s)), s, p, o, m)
+# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_FOR_115_C(BOOST_PP_BOOL(p(116, s)), s, p, o, m)
+# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_FOR_116_C(BOOST_PP_BOOL(p(117, s)), s, p, o, m)
+# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_FOR_117_C(BOOST_PP_BOOL(p(118, s)), s, p, o, m)
+# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_FOR_118_C(BOOST_PP_BOOL(p(119, s)), s, p, o, m)
+# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_FOR_119_C(BOOST_PP_BOOL(p(120, s)), s, p, o, m)
+# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_FOR_120_C(BOOST_PP_BOOL(p(121, s)), s, p, o, m)
+# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_FOR_121_C(BOOST_PP_BOOL(p(122, s)), s, p, o, m)
+# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_FOR_122_C(BOOST_PP_BOOL(p(123, s)), s, p, o, m)
+# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_FOR_123_C(BOOST_PP_BOOL(p(124, s)), s, p, o, m)
+# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_FOR_124_C(BOOST_PP_BOOL(p(125, s)), s, p, o, m)
+# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_FOR_125_C(BOOST_PP_BOOL(p(126, s)), s, p, o, m)
+# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_FOR_126_C(BOOST_PP_BOOL(p(127, s)), s, p, o, m)
+# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_FOR_127_C(BOOST_PP_BOOL(p(128, s)), s, p, o, m)
+# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_FOR_128_C(BOOST_PP_BOOL(p(129, s)), s, p, o, m)
+# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_FOR_129_C(BOOST_PP_BOOL(p(130, s)), s, p, o, m)
+# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_FOR_130_C(BOOST_PP_BOOL(p(131, s)), s, p, o, m)
+# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_FOR_131_C(BOOST_PP_BOOL(p(132, s)), s, p, o, m)
+# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_FOR_132_C(BOOST_PP_BOOL(p(133, s)), s, p, o, m)
+# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_FOR_133_C(BOOST_PP_BOOL(p(134, s)), s, p, o, m)
+# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_FOR_134_C(BOOST_PP_BOOL(p(135, s)), s, p, o, m)
+# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_FOR_135_C(BOOST_PP_BOOL(p(136, s)), s, p, o, m)
+# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_FOR_136_C(BOOST_PP_BOOL(p(137, s)), s, p, o, m)
+# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_FOR_137_C(BOOST_PP_BOOL(p(138, s)), s, p, o, m)
+# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_FOR_138_C(BOOST_PP_BOOL(p(139, s)), s, p, o, m)
+# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_FOR_139_C(BOOST_PP_BOOL(p(140, s)), s, p, o, m)
+# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_FOR_140_C(BOOST_PP_BOOL(p(141, s)), s, p, o, m)
+# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_FOR_141_C(BOOST_PP_BOOL(p(142, s)), s, p, o, m)
+# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_FOR_142_C(BOOST_PP_BOOL(p(143, s)), s, p, o, m)
+# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_FOR_143_C(BOOST_PP_BOOL(p(144, s)), s, p, o, m)
+# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_FOR_144_C(BOOST_PP_BOOL(p(145, s)), s, p, o, m)
+# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_FOR_145_C(BOOST_PP_BOOL(p(146, s)), s, p, o, m)
+# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_FOR_146_C(BOOST_PP_BOOL(p(147, s)), s, p, o, m)
+# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_FOR_147_C(BOOST_PP_BOOL(p(148, s)), s, p, o, m)
+# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_FOR_148_C(BOOST_PP_BOOL(p(149, s)), s, p, o, m)
+# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_FOR_149_C(BOOST_PP_BOOL(p(150, s)), s, p, o, m)
+# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_FOR_150_C(BOOST_PP_BOOL(p(151, s)), s, p, o, m)
+# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_FOR_151_C(BOOST_PP_BOOL(p(152, s)), s, p, o, m)
+# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_FOR_152_C(BOOST_PP_BOOL(p(153, s)), s, p, o, m)
+# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_FOR_153_C(BOOST_PP_BOOL(p(154, s)), s, p, o, m)
+# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_FOR_154_C(BOOST_PP_BOOL(p(155, s)), s, p, o, m)
+# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_FOR_155_C(BOOST_PP_BOOL(p(156, s)), s, p, o, m)
+# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_FOR_156_C(BOOST_PP_BOOL(p(157, s)), s, p, o, m)
+# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_FOR_157_C(BOOST_PP_BOOL(p(158, s)), s, p, o, m)
+# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_FOR_158_C(BOOST_PP_BOOL(p(159, s)), s, p, o, m)
+# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_FOR_159_C(BOOST_PP_BOOL(p(160, s)), s, p, o, m)
+# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_FOR_160_C(BOOST_PP_BOOL(p(161, s)), s, p, o, m)
+# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_FOR_161_C(BOOST_PP_BOOL(p(162, s)), s, p, o, m)
+# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_FOR_162_C(BOOST_PP_BOOL(p(163, s)), s, p, o, m)
+# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_FOR_163_C(BOOST_PP_BOOL(p(164, s)), s, p, o, m)
+# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_FOR_164_C(BOOST_PP_BOOL(p(165, s)), s, p, o, m)
+# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_FOR_165_C(BOOST_PP_BOOL(p(166, s)), s, p, o, m)
+# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_FOR_166_C(BOOST_PP_BOOL(p(167, s)), s, p, o, m)
+# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_FOR_167_C(BOOST_PP_BOOL(p(168, s)), s, p, o, m)
+# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_FOR_168_C(BOOST_PP_BOOL(p(169, s)), s, p, o, m)
+# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_FOR_169_C(BOOST_PP_BOOL(p(170, s)), s, p, o, m)
+# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_FOR_170_C(BOOST_PP_BOOL(p(171, s)), s, p, o, m)
+# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_FOR_171_C(BOOST_PP_BOOL(p(172, s)), s, p, o, m)
+# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_FOR_172_C(BOOST_PP_BOOL(p(173, s)), s, p, o, m)
+# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_FOR_173_C(BOOST_PP_BOOL(p(174, s)), s, p, o, m)
+# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_FOR_174_C(BOOST_PP_BOOL(p(175, s)), s, p, o, m)
+# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_FOR_175_C(BOOST_PP_BOOL(p(176, s)), s, p, o, m)
+# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_FOR_176_C(BOOST_PP_BOOL(p(177, s)), s, p, o, m)
+# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_FOR_177_C(BOOST_PP_BOOL(p(178, s)), s, p, o, m)
+# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_FOR_178_C(BOOST_PP_BOOL(p(179, s)), s, p, o, m)
+# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_FOR_179_C(BOOST_PP_BOOL(p(180, s)), s, p, o, m)
+# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_FOR_180_C(BOOST_PP_BOOL(p(181, s)), s, p, o, m)
+# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_FOR_181_C(BOOST_PP_BOOL(p(182, s)), s, p, o, m)
+# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_FOR_182_C(BOOST_PP_BOOL(p(183, s)), s, p, o, m)
+# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_FOR_183_C(BOOST_PP_BOOL(p(184, s)), s, p, o, m)
+# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_FOR_184_C(BOOST_PP_BOOL(p(185, s)), s, p, o, m)
+# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_FOR_185_C(BOOST_PP_BOOL(p(186, s)), s, p, o, m)
+# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_FOR_186_C(BOOST_PP_BOOL(p(187, s)), s, p, o, m)
+# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_FOR_187_C(BOOST_PP_BOOL(p(188, s)), s, p, o, m)
+# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_FOR_188_C(BOOST_PP_BOOL(p(189, s)), s, p, o, m)
+# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_FOR_189_C(BOOST_PP_BOOL(p(190, s)), s, p, o, m)
+# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_FOR_190_C(BOOST_PP_BOOL(p(191, s)), s, p, o, m)
+# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_FOR_191_C(BOOST_PP_BOOL(p(192, s)), s, p, o, m)
+# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_FOR_192_C(BOOST_PP_BOOL(p(193, s)), s, p, o, m)
+# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_FOR_193_C(BOOST_PP_BOOL(p(194, s)), s, p, o, m)
+# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_FOR_194_C(BOOST_PP_BOOL(p(195, s)), s, p, o, m)
+# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_FOR_195_C(BOOST_PP_BOOL(p(196, s)), s, p, o, m)
+# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_FOR_196_C(BOOST_PP_BOOL(p(197, s)), s, p, o, m)
+# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_FOR_197_C(BOOST_PP_BOOL(p(198, s)), s, p, o, m)
+# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_FOR_198_C(BOOST_PP_BOOL(p(199, s)), s, p, o, m)
+# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_FOR_199_C(BOOST_PP_BOOL(p(200, s)), s, p, o, m)
+# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_FOR_200_C(BOOST_PP_BOOL(p(201, s)), s, p, o, m)
+# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_FOR_201_C(BOOST_PP_BOOL(p(202, s)), s, p, o, m)
+# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_FOR_202_C(BOOST_PP_BOOL(p(203, s)), s, p, o, m)
+# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_FOR_203_C(BOOST_PP_BOOL(p(204, s)), s, p, o, m)
+# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_FOR_204_C(BOOST_PP_BOOL(p(205, s)), s, p, o, m)
+# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_FOR_205_C(BOOST_PP_BOOL(p(206, s)), s, p, o, m)
+# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_FOR_206_C(BOOST_PP_BOOL(p(207, s)), s, p, o, m)
+# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_FOR_207_C(BOOST_PP_BOOL(p(208, s)), s, p, o, m)
+# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_FOR_208_C(BOOST_PP_BOOL(p(209, s)), s, p, o, m)
+# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_FOR_209_C(BOOST_PP_BOOL(p(210, s)), s, p, o, m)
+# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_FOR_210_C(BOOST_PP_BOOL(p(211, s)), s, p, o, m)
+# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_FOR_211_C(BOOST_PP_BOOL(p(212, s)), s, p, o, m)
+# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_FOR_212_C(BOOST_PP_BOOL(p(213, s)), s, p, o, m)
+# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_FOR_213_C(BOOST_PP_BOOL(p(214, s)), s, p, o, m)
+# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_FOR_214_C(BOOST_PP_BOOL(p(215, s)), s, p, o, m)
+# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_FOR_215_C(BOOST_PP_BOOL(p(216, s)), s, p, o, m)
+# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_FOR_216_C(BOOST_PP_BOOL(p(217, s)), s, p, o, m)
+# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_FOR_217_C(BOOST_PP_BOOL(p(218, s)), s, p, o, m)
+# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_FOR_218_C(BOOST_PP_BOOL(p(219, s)), s, p, o, m)
+# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_FOR_219_C(BOOST_PP_BOOL(p(220, s)), s, p, o, m)
+# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_FOR_220_C(BOOST_PP_BOOL(p(221, s)), s, p, o, m)
+# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_FOR_221_C(BOOST_PP_BOOL(p(222, s)), s, p, o, m)
+# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_FOR_222_C(BOOST_PP_BOOL(p(223, s)), s, p, o, m)
+# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_FOR_223_C(BOOST_PP_BOOL(p(224, s)), s, p, o, m)
+# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_FOR_224_C(BOOST_PP_BOOL(p(225, s)), s, p, o, m)
+# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_FOR_225_C(BOOST_PP_BOOL(p(226, s)), s, p, o, m)
+# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_FOR_226_C(BOOST_PP_BOOL(p(227, s)), s, p, o, m)
+# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_FOR_227_C(BOOST_PP_BOOL(p(228, s)), s, p, o, m)
+# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_FOR_228_C(BOOST_PP_BOOL(p(229, s)), s, p, o, m)
+# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_FOR_229_C(BOOST_PP_BOOL(p(230, s)), s, p, o, m)
+# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_FOR_230_C(BOOST_PP_BOOL(p(231, s)), s, p, o, m)
+# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_FOR_231_C(BOOST_PP_BOOL(p(232, s)), s, p, o, m)
+# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_FOR_232_C(BOOST_PP_BOOL(p(233, s)), s, p, o, m)
+# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_FOR_233_C(BOOST_PP_BOOL(p(234, s)), s, p, o, m)
+# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_FOR_234_C(BOOST_PP_BOOL(p(235, s)), s, p, o, m)
+# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_FOR_235_C(BOOST_PP_BOOL(p(236, s)), s, p, o, m)
+# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_FOR_236_C(BOOST_PP_BOOL(p(237, s)), s, p, o, m)
+# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_FOR_237_C(BOOST_PP_BOOL(p(238, s)), s, p, o, m)
+# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_FOR_238_C(BOOST_PP_BOOL(p(239, s)), s, p, o, m)
+# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_FOR_239_C(BOOST_PP_BOOL(p(240, s)), s, p, o, m)
+# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_FOR_240_C(BOOST_PP_BOOL(p(241, s)), s, p, o, m)
+# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_FOR_241_C(BOOST_PP_BOOL(p(242, s)), s, p, o, m)
+# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_FOR_242_C(BOOST_PP_BOOL(p(243, s)), s, p, o, m)
+# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_FOR_243_C(BOOST_PP_BOOL(p(244, s)), s, p, o, m)
+# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_FOR_244_C(BOOST_PP_BOOL(p(245, s)), s, p, o, m)
+# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_FOR_245_C(BOOST_PP_BOOL(p(246, s)), s, p, o, m)
+# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_FOR_246_C(BOOST_PP_BOOL(p(247, s)), s, p, o, m)
+# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_FOR_247_C(BOOST_PP_BOOL(p(248, s)), s, p, o, m)
+# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_FOR_248_C(BOOST_PP_BOOL(p(249, s)), s, p, o, m)
+# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_FOR_249_C(BOOST_PP_BOOL(p(250, s)), s, p, o, m)
+# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_FOR_250_C(BOOST_PP_BOOL(p(251, s)), s, p, o, m)
+# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_FOR_251_C(BOOST_PP_BOOL(p(252, s)), s, p, o, m)
+# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_FOR_252_C(BOOST_PP_BOOL(p(253, s)), s, p, o, m)
+# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_FOR_253_C(BOOST_PP_BOOL(p(254, s)), s, p, o, m)
+# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_FOR_254_C(BOOST_PP_BOOL(p(255, s)), s, p, o, m)
+# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_FOR_255_C(BOOST_PP_BOOL(p(256, s)), s, p, o, m)
+# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_FOR_256_C(BOOST_PP_BOOL(p(257, s)), s, p, o, m)
+#
+# define BOOST_PP_FOR_1_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IIF(c, BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(2, s), p, o, m)
+# define BOOST_PP_FOR_2_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IIF(c, BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(3, s), p, o, m)
+# define BOOST_PP_FOR_3_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IIF(c, BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(4, s), p, o, m)
+# define BOOST_PP_FOR_4_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IIF(c, BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(5, s), p, o, m)
+# define BOOST_PP_FOR_5_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IIF(c, BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(6, s), p, o, m)
+# define BOOST_PP_FOR_6_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IIF(c, BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(7, s), p, o, m)
+# define BOOST_PP_FOR_7_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IIF(c, BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(8, s), p, o, m)
+# define BOOST_PP_FOR_8_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IIF(c, BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(9, s), p, o, m)
+# define BOOST_PP_FOR_9_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IIF(c, BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(10, s), p, o, m)
+# define BOOST_PP_FOR_10_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IIF(c, BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(11, s), p, o, m)
+# define BOOST_PP_FOR_11_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IIF(c, BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(12, s), p, o, m)
+# define BOOST_PP_FOR_12_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IIF(c, BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(13, s), p, o, m)
+# define BOOST_PP_FOR_13_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IIF(c, BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(14, s), p, o, m)
+# define BOOST_PP_FOR_14_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IIF(c, BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(15, s), p, o, m)
+# define BOOST_PP_FOR_15_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IIF(c, BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(16, s), p, o, m)
+# define BOOST_PP_FOR_16_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IIF(c, BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(17, s), p, o, m)
+# define BOOST_PP_FOR_17_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IIF(c, BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(18, s), p, o, m)
+# define BOOST_PP_FOR_18_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IIF(c, BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(19, s), p, o, m)
+# define BOOST_PP_FOR_19_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IIF(c, BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(20, s), p, o, m)
+# define BOOST_PP_FOR_20_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IIF(c, BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(21, s), p, o, m)
+# define BOOST_PP_FOR_21_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IIF(c, BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(22, s), p, o, m)
+# define BOOST_PP_FOR_22_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IIF(c, BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(23, s), p, o, m)
+# define BOOST_PP_FOR_23_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IIF(c, BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(24, s), p, o, m)
+# define BOOST_PP_FOR_24_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IIF(c, BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(25, s), p, o, m)
+# define BOOST_PP_FOR_25_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IIF(c, BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(26, s), p, o, m)
+# define BOOST_PP_FOR_26_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IIF(c, BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(27, s), p, o, m)
+# define BOOST_PP_FOR_27_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IIF(c, BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(28, s), p, o, m)
+# define BOOST_PP_FOR_28_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IIF(c, BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(29, s), p, o, m)
+# define BOOST_PP_FOR_29_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IIF(c, BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(30, s), p, o, m)
+# define BOOST_PP_FOR_30_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IIF(c, BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(31, s), p, o, m)
+# define BOOST_PP_FOR_31_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IIF(c, BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(32, s), p, o, m)
+# define BOOST_PP_FOR_32_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IIF(c, BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(33, s), p, o, m)
+# define BOOST_PP_FOR_33_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IIF(c, BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(34, s), p, o, m)
+# define BOOST_PP_FOR_34_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IIF(c, BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(35, s), p, o, m)
+# define BOOST_PP_FOR_35_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IIF(c, BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(36, s), p, o, m)
+# define BOOST_PP_FOR_36_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IIF(c, BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(37, s), p, o, m)
+# define BOOST_PP_FOR_37_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IIF(c, BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(38, s), p, o, m)
+# define BOOST_PP_FOR_38_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IIF(c, BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(39, s), p, o, m)
+# define BOOST_PP_FOR_39_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IIF(c, BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(40, s), p, o, m)
+# define BOOST_PP_FOR_40_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IIF(c, BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(41, s), p, o, m)
+# define BOOST_PP_FOR_41_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IIF(c, BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(42, s), p, o, m)
+# define BOOST_PP_FOR_42_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IIF(c, BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(43, s), p, o, m)
+# define BOOST_PP_FOR_43_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IIF(c, BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(44, s), p, o, m)
+# define BOOST_PP_FOR_44_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IIF(c, BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(45, s), p, o, m)
+# define BOOST_PP_FOR_45_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IIF(c, BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(46, s), p, o, m)
+# define BOOST_PP_FOR_46_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IIF(c, BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(47, s), p, o, m)
+# define BOOST_PP_FOR_47_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IIF(c, BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(48, s), p, o, m)
+# define BOOST_PP_FOR_48_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IIF(c, BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(49, s), p, o, m)
+# define BOOST_PP_FOR_49_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IIF(c, BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(50, s), p, o, m)
+# define BOOST_PP_FOR_50_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IIF(c, BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(51, s), p, o, m)
+# define BOOST_PP_FOR_51_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IIF(c, BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(52, s), p, o, m)
+# define BOOST_PP_FOR_52_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IIF(c, BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(53, s), p, o, m)
+# define BOOST_PP_FOR_53_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IIF(c, BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(54, s), p, o, m)
+# define BOOST_PP_FOR_54_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IIF(c, BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(55, s), p, o, m)
+# define BOOST_PP_FOR_55_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IIF(c, BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(56, s), p, o, m)
+# define BOOST_PP_FOR_56_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IIF(c, BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(57, s), p, o, m)
+# define BOOST_PP_FOR_57_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IIF(c, BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(58, s), p, o, m)
+# define BOOST_PP_FOR_58_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IIF(c, BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(59, s), p, o, m)
+# define BOOST_PP_FOR_59_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IIF(c, BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(60, s), p, o, m)
+# define BOOST_PP_FOR_60_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IIF(c, BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(61, s), p, o, m)
+# define BOOST_PP_FOR_61_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IIF(c, BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(62, s), p, o, m)
+# define BOOST_PP_FOR_62_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IIF(c, BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(63, s), p, o, m)
+# define BOOST_PP_FOR_63_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IIF(c, BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(64, s), p, o, m)
+# define BOOST_PP_FOR_64_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IIF(c, BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(65, s), p, o, m)
+# define BOOST_PP_FOR_65_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IIF(c, BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(66, s), p, o, m)
+# define BOOST_PP_FOR_66_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IIF(c, BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(67, s), p, o, m)
+# define BOOST_PP_FOR_67_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IIF(c, BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(68, s), p, o, m)
+# define BOOST_PP_FOR_68_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IIF(c, BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(69, s), p, o, m)
+# define BOOST_PP_FOR_69_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IIF(c, BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(70, s), p, o, m)
+# define BOOST_PP_FOR_70_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IIF(c, BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(71, s), p, o, m)
+# define BOOST_PP_FOR_71_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IIF(c, BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(72, s), p, o, m)
+# define BOOST_PP_FOR_72_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IIF(c, BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(73, s), p, o, m)
+# define BOOST_PP_FOR_73_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IIF(c, BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(74, s), p, o, m)
+# define BOOST_PP_FOR_74_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IIF(c, BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(75, s), p, o, m)
+# define BOOST_PP_FOR_75_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IIF(c, BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(76, s), p, o, m)
+# define BOOST_PP_FOR_76_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IIF(c, BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(77, s), p, o, m)
+# define BOOST_PP_FOR_77_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IIF(c, BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(78, s), p, o, m)
+# define BOOST_PP_FOR_78_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IIF(c, BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(79, s), p, o, m)
+# define BOOST_PP_FOR_79_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IIF(c, BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(80, s), p, o, m)
+# define BOOST_PP_FOR_80_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IIF(c, BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(81, s), p, o, m)
+# define BOOST_PP_FOR_81_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IIF(c, BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(82, s), p, o, m)
+# define BOOST_PP_FOR_82_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IIF(c, BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(83, s), p, o, m)
+# define BOOST_PP_FOR_83_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IIF(c, BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(84, s), p, o, m)
+# define BOOST_PP_FOR_84_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IIF(c, BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(85, s), p, o, m)
+# define BOOST_PP_FOR_85_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IIF(c, BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(86, s), p, o, m)
+# define BOOST_PP_FOR_86_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IIF(c, BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(87, s), p, o, m)
+# define BOOST_PP_FOR_87_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IIF(c, BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(88, s), p, o, m)
+# define BOOST_PP_FOR_88_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IIF(c, BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(89, s), p, o, m)
+# define BOOST_PP_FOR_89_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IIF(c, BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(90, s), p, o, m)
+# define BOOST_PP_FOR_90_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IIF(c, BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(91, s), p, o, m)
+# define BOOST_PP_FOR_91_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IIF(c, BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(92, s), p, o, m)
+# define BOOST_PP_FOR_92_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IIF(c, BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(93, s), p, o, m)
+# define BOOST_PP_FOR_93_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IIF(c, BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(94, s), p, o, m)
+# define BOOST_PP_FOR_94_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IIF(c, BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(95, s), p, o, m)
+# define BOOST_PP_FOR_95_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IIF(c, BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(96, s), p, o, m)
+# define BOOST_PP_FOR_96_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IIF(c, BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(97, s), p, o, m)
+# define BOOST_PP_FOR_97_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IIF(c, BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(98, s), p, o, m)
+# define BOOST_PP_FOR_98_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IIF(c, BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(99, s), p, o, m)
+# define BOOST_PP_FOR_99_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IIF(c, BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(100, s), p, o, m)
+# define BOOST_PP_FOR_100_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IIF(c, BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(101, s), p, o, m)
+# define BOOST_PP_FOR_101_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IIF(c, BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(102, s), p, o, m)
+# define BOOST_PP_FOR_102_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IIF(c, BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(103, s), p, o, m)
+# define BOOST_PP_FOR_103_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IIF(c, BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(104, s), p, o, m)
+# define BOOST_PP_FOR_104_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IIF(c, BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(105, s), p, o, m)
+# define BOOST_PP_FOR_105_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IIF(c, BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(106, s), p, o, m)
+# define BOOST_PP_FOR_106_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IIF(c, BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(107, s), p, o, m)
+# define BOOST_PP_FOR_107_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IIF(c, BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(108, s), p, o, m)
+# define BOOST_PP_FOR_108_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IIF(c, BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(109, s), p, o, m)
+# define BOOST_PP_FOR_109_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IIF(c, BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(110, s), p, o, m)
+# define BOOST_PP_FOR_110_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IIF(c, BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(111, s), p, o, m)
+# define BOOST_PP_FOR_111_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IIF(c, BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(112, s), p, o, m)
+# define BOOST_PP_FOR_112_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IIF(c, BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(113, s), p, o, m)
+# define BOOST_PP_FOR_113_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IIF(c, BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(114, s), p, o, m)
+# define BOOST_PP_FOR_114_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IIF(c, BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(115, s), p, o, m)
+# define BOOST_PP_FOR_115_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IIF(c, BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(116, s), p, o, m)
+# define BOOST_PP_FOR_116_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IIF(c, BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(117, s), p, o, m)
+# define BOOST_PP_FOR_117_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IIF(c, BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(118, s), p, o, m)
+# define BOOST_PP_FOR_118_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IIF(c, BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(119, s), p, o, m)
+# define BOOST_PP_FOR_119_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IIF(c, BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(120, s), p, o, m)
+# define BOOST_PP_FOR_120_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IIF(c, BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(121, s), p, o, m)
+# define BOOST_PP_FOR_121_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IIF(c, BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(122, s), p, o, m)
+# define BOOST_PP_FOR_122_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IIF(c, BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(123, s), p, o, m)
+# define BOOST_PP_FOR_123_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IIF(c, BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(124, s), p, o, m)
+# define BOOST_PP_FOR_124_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IIF(c, BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(125, s), p, o, m)
+# define BOOST_PP_FOR_125_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IIF(c, BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(126, s), p, o, m)
+# define BOOST_PP_FOR_126_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IIF(c, BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(127, s), p, o, m)
+# define BOOST_PP_FOR_127_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IIF(c, BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(128, s), p, o, m)
+# define BOOST_PP_FOR_128_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IIF(c, BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(129, s), p, o, m)
+# define BOOST_PP_FOR_129_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IIF(c, BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(130, s), p, o, m)
+# define BOOST_PP_FOR_130_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IIF(c, BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(131, s), p, o, m)
+# define BOOST_PP_FOR_131_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IIF(c, BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(132, s), p, o, m)
+# define BOOST_PP_FOR_132_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IIF(c, BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(133, s), p, o, m)
+# define BOOST_PP_FOR_133_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IIF(c, BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(134, s), p, o, m)
+# define BOOST_PP_FOR_134_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IIF(c, BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(135, s), p, o, m)
+# define BOOST_PP_FOR_135_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IIF(c, BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(136, s), p, o, m)
+# define BOOST_PP_FOR_136_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IIF(c, BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(137, s), p, o, m)
+# define BOOST_PP_FOR_137_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IIF(c, BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(138, s), p, o, m)
+# define BOOST_PP_FOR_138_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IIF(c, BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(139, s), p, o, m)
+# define BOOST_PP_FOR_139_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IIF(c, BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(140, s), p, o, m)
+# define BOOST_PP_FOR_140_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IIF(c, BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(141, s), p, o, m)
+# define BOOST_PP_FOR_141_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IIF(c, BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(142, s), p, o, m)
+# define BOOST_PP_FOR_142_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IIF(c, BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(143, s), p, o, m)
+# define BOOST_PP_FOR_143_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IIF(c, BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(144, s), p, o, m)
+# define BOOST_PP_FOR_144_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IIF(c, BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(145, s), p, o, m)
+# define BOOST_PP_FOR_145_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IIF(c, BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(146, s), p, o, m)
+# define BOOST_PP_FOR_146_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IIF(c, BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(147, s), p, o, m)
+# define BOOST_PP_FOR_147_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IIF(c, BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(148, s), p, o, m)
+# define BOOST_PP_FOR_148_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IIF(c, BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(149, s), p, o, m)
+# define BOOST_PP_FOR_149_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IIF(c, BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(150, s), p, o, m)
+# define BOOST_PP_FOR_150_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IIF(c, BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(151, s), p, o, m)
+# define BOOST_PP_FOR_151_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IIF(c, BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(152, s), p, o, m)
+# define BOOST_PP_FOR_152_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IIF(c, BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(153, s), p, o, m)
+# define BOOST_PP_FOR_153_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IIF(c, BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(154, s), p, o, m)
+# define BOOST_PP_FOR_154_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IIF(c, BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(155, s), p, o, m)
+# define BOOST_PP_FOR_155_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IIF(c, BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(156, s), p, o, m)
+# define BOOST_PP_FOR_156_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IIF(c, BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(157, s), p, o, m)
+# define BOOST_PP_FOR_157_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IIF(c, BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(158, s), p, o, m)
+# define BOOST_PP_FOR_158_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IIF(c, BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(159, s), p, o, m)
+# define BOOST_PP_FOR_159_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IIF(c, BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(160, s), p, o, m)
+# define BOOST_PP_FOR_160_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IIF(c, BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(161, s), p, o, m)
+# define BOOST_PP_FOR_161_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IIF(c, BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(162, s), p, o, m)
+# define BOOST_PP_FOR_162_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IIF(c, BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(163, s), p, o, m)
+# define BOOST_PP_FOR_163_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IIF(c, BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(164, s), p, o, m)
+# define BOOST_PP_FOR_164_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IIF(c, BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(165, s), p, o, m)
+# define BOOST_PP_FOR_165_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IIF(c, BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(166, s), p, o, m)
+# define BOOST_PP_FOR_166_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IIF(c, BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(167, s), p, o, m)
+# define BOOST_PP_FOR_167_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IIF(c, BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(168, s), p, o, m)
+# define BOOST_PP_FOR_168_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IIF(c, BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(169, s), p, o, m)
+# define BOOST_PP_FOR_169_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IIF(c, BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(170, s), p, o, m)
+# define BOOST_PP_FOR_170_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IIF(c, BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(171, s), p, o, m)
+# define BOOST_PP_FOR_171_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IIF(c, BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(172, s), p, o, m)
+# define BOOST_PP_FOR_172_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IIF(c, BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(173, s), p, o, m)
+# define BOOST_PP_FOR_173_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IIF(c, BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(174, s), p, o, m)
+# define BOOST_PP_FOR_174_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IIF(c, BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(175, s), p, o, m)
+# define BOOST_PP_FOR_175_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IIF(c, BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(176, s), p, o, m)
+# define BOOST_PP_FOR_176_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IIF(c, BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(177, s), p, o, m)
+# define BOOST_PP_FOR_177_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IIF(c, BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(178, s), p, o, m)
+# define BOOST_PP_FOR_178_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IIF(c, BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(179, s), p, o, m)
+# define BOOST_PP_FOR_179_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IIF(c, BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(180, s), p, o, m)
+# define BOOST_PP_FOR_180_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IIF(c, BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(181, s), p, o, m)
+# define BOOST_PP_FOR_181_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IIF(c, BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(182, s), p, o, m)
+# define BOOST_PP_FOR_182_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IIF(c, BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(183, s), p, o, m)
+# define BOOST_PP_FOR_183_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IIF(c, BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(184, s), p, o, m)
+# define BOOST_PP_FOR_184_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IIF(c, BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(185, s), p, o, m)
+# define BOOST_PP_FOR_185_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IIF(c, BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(186, s), p, o, m)
+# define BOOST_PP_FOR_186_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IIF(c, BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(187, s), p, o, m)
+# define BOOST_PP_FOR_187_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IIF(c, BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(188, s), p, o, m)
+# define BOOST_PP_FOR_188_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IIF(c, BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(189, s), p, o, m)
+# define BOOST_PP_FOR_189_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IIF(c, BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(190, s), p, o, m)
+# define BOOST_PP_FOR_190_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IIF(c, BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(191, s), p, o, m)
+# define BOOST_PP_FOR_191_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IIF(c, BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(192, s), p, o, m)
+# define BOOST_PP_FOR_192_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IIF(c, BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(193, s), p, o, m)
+# define BOOST_PP_FOR_193_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IIF(c, BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(194, s), p, o, m)
+# define BOOST_PP_FOR_194_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IIF(c, BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(195, s), p, o, m)
+# define BOOST_PP_FOR_195_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IIF(c, BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(196, s), p, o, m)
+# define BOOST_PP_FOR_196_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IIF(c, BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(197, s), p, o, m)
+# define BOOST_PP_FOR_197_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IIF(c, BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(198, s), p, o, m)
+# define BOOST_PP_FOR_198_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IIF(c, BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(199, s), p, o, m)
+# define BOOST_PP_FOR_199_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IIF(c, BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(200, s), p, o, m)
+# define BOOST_PP_FOR_200_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IIF(c, BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(201, s), p, o, m)
+# define BOOST_PP_FOR_201_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IIF(c, BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(202, s), p, o, m)
+# define BOOST_PP_FOR_202_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IIF(c, BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(203, s), p, o, m)
+# define BOOST_PP_FOR_203_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IIF(c, BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(204, s), p, o, m)
+# define BOOST_PP_FOR_204_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IIF(c, BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(205, s), p, o, m)
+# define BOOST_PP_FOR_205_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IIF(c, BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(206, s), p, o, m)
+# define BOOST_PP_FOR_206_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IIF(c, BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(207, s), p, o, m)
+# define BOOST_PP_FOR_207_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IIF(c, BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(208, s), p, o, m)
+# define BOOST_PP_FOR_208_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IIF(c, BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(209, s), p, o, m)
+# define BOOST_PP_FOR_209_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IIF(c, BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(210, s), p, o, m)
+# define BOOST_PP_FOR_210_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IIF(c, BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(211, s), p, o, m)
+# define BOOST_PP_FOR_211_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IIF(c, BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(212, s), p, o, m)
+# define BOOST_PP_FOR_212_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IIF(c, BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(213, s), p, o, m)
+# define BOOST_PP_FOR_213_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IIF(c, BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(214, s), p, o, m)
+# define BOOST_PP_FOR_214_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IIF(c, BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(215, s), p, o, m)
+# define BOOST_PP_FOR_215_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IIF(c, BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(216, s), p, o, m)
+# define BOOST_PP_FOR_216_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IIF(c, BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(217, s), p, o, m)
+# define BOOST_PP_FOR_217_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IIF(c, BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(218, s), p, o, m)
+# define BOOST_PP_FOR_218_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IIF(c, BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(219, s), p, o, m)
+# define BOOST_PP_FOR_219_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IIF(c, BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(220, s), p, o, m)
+# define BOOST_PP_FOR_220_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IIF(c, BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(221, s), p, o, m)
+# define BOOST_PP_FOR_221_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IIF(c, BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(222, s), p, o, m)
+# define BOOST_PP_FOR_222_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IIF(c, BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(223, s), p, o, m)
+# define BOOST_PP_FOR_223_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IIF(c, BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(224, s), p, o, m)
+# define BOOST_PP_FOR_224_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IIF(c, BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(225, s), p, o, m)
+# define BOOST_PP_FOR_225_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IIF(c, BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(226, s), p, o, m)
+# define BOOST_PP_FOR_226_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IIF(c, BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(227, s), p, o, m)
+# define BOOST_PP_FOR_227_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IIF(c, BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(228, s), p, o, m)
+# define BOOST_PP_FOR_228_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IIF(c, BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(229, s), p, o, m)
+# define BOOST_PP_FOR_229_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IIF(c, BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(230, s), p, o, m)
+# define BOOST_PP_FOR_230_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IIF(c, BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(231, s), p, o, m)
+# define BOOST_PP_FOR_231_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IIF(c, BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(232, s), p, o, m)
+# define BOOST_PP_FOR_232_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IIF(c, BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(233, s), p, o, m)
+# define BOOST_PP_FOR_233_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IIF(c, BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(234, s), p, o, m)
+# define BOOST_PP_FOR_234_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IIF(c, BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(235, s), p, o, m)
+# define BOOST_PP_FOR_235_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IIF(c, BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(236, s), p, o, m)
+# define BOOST_PP_FOR_236_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IIF(c, BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(237, s), p, o, m)
+# define BOOST_PP_FOR_237_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IIF(c, BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(238, s), p, o, m)
+# define BOOST_PP_FOR_238_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IIF(c, BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(239, s), p, o, m)
+# define BOOST_PP_FOR_239_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IIF(c, BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(240, s), p, o, m)
+# define BOOST_PP_FOR_240_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IIF(c, BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(241, s), p, o, m)
+# define BOOST_PP_FOR_241_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IIF(c, BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(242, s), p, o, m)
+# define BOOST_PP_FOR_242_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IIF(c, BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(243, s), p, o, m)
+# define BOOST_PP_FOR_243_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IIF(c, BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(244, s), p, o, m)
+# define BOOST_PP_FOR_244_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IIF(c, BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(245, s), p, o, m)
+# define BOOST_PP_FOR_245_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IIF(c, BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(246, s), p, o, m)
+# define BOOST_PP_FOR_246_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IIF(c, BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(247, s), p, o, m)
+# define BOOST_PP_FOR_247_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IIF(c, BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(248, s), p, o, m)
+# define BOOST_PP_FOR_248_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IIF(c, BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(249, s), p, o, m)
+# define BOOST_PP_FOR_249_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IIF(c, BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(250, s), p, o, m)
+# define BOOST_PP_FOR_250_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IIF(c, BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(251, s), p, o, m)
+# define BOOST_PP_FOR_251_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IIF(c, BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(252, s), p, o, m)
+# define BOOST_PP_FOR_252_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IIF(c, BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(253, s), p, o, m)
+# define BOOST_PP_FOR_253_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IIF(c, BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(254, s), p, o, m)
+# define BOOST_PP_FOR_254_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IIF(c, BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(255, s), p, o, m)
+# define BOOST_PP_FOR_255_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IIF(c, BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(256, s), p, o, m)
+# define BOOST_PP_FOR_256_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IIF(c, BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(257, s), p, o, m)
+#
+# endif
diff --git a/boost/boost/preprocessor/repetition/for.hpp b/boost/boost/preprocessor/repetition/for.hpp
new file mode 100644 (file)
index 0000000..9624f4b
--- /dev/null
@@ -0,0 +1,305 @@
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_FOR_HPP
+# define BOOST_PREPROCESSOR_REPETITION_FOR_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+#
+# /* BOOST_PP_FOR */
+#
+# if 0
+#    define BOOST_PP_FOR(state, pred, op, macro)
+# endif
+#
+# define BOOST_PP_FOR BOOST_PP_CAT(BOOST_PP_FOR_, BOOST_PP_AUTO_REC(BOOST_PP_FOR_P, 256))
+#
+# define BOOST_PP_FOR_P(n) BOOST_PP_CAT(BOOST_PP_FOR_CHECK_, BOOST_PP_FOR_ ## n(1, BOOST_PP_FOR_SR_P, BOOST_PP_FOR_SR_O, BOOST_PP_FOR_SR_M))
+#
+# define BOOST_PP_FOR_SR_P(r, s) s
+# define BOOST_PP_FOR_SR_O(r, s) 0
+# define BOOST_PP_FOR_SR_M(r, s) BOOST_PP_NIL
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    include <boost/preprocessor/repetition/detail/edg/for.hpp>
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+#    include <boost/preprocessor/repetition/detail/msvc/for.hpp>
+# else
+#    include <boost/preprocessor/repetition/detail/for.hpp>
+# endif
+#
+# define BOOST_PP_FOR_257(s, p, o, m) BOOST_PP_ERROR(0x0002)
+#
+# define BOOST_PP_FOR_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_2(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_3(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_4(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_5(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_6(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_7(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_8(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_9(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_10(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_11(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_12(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_13(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_14(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_15(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_16(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_17(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_18(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_19(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_20(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_21(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_22(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_23(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_24(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_25(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_26(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_27(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_28(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_29(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_30(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_31(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_32(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_33(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_34(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_35(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_36(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_37(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_38(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_39(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_40(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_41(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_42(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_43(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_44(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_45(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_46(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_47(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_48(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_49(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_50(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_51(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_52(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_53(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_54(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_55(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_56(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_57(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_58(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_59(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_60(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_61(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_62(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_63(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_64(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_65(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_66(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_67(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_68(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_69(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_70(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_71(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_72(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_73(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_74(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_75(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_76(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_77(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_78(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_79(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_80(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_81(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_82(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_83(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_84(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_85(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_86(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_87(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_88(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_89(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_90(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_91(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_92(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_93(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_94(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_95(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_96(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_97(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_98(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_99(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_100(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_101(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_102(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_103(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_104(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_105(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_106(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_107(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_108(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_109(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_110(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_111(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_112(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_113(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_114(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_115(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_116(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_117(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_118(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_119(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_120(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_121(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_122(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_123(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_124(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_125(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_126(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_127(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_128(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_129(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_130(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_131(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_132(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_133(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_134(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_135(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_136(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_137(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_138(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_139(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_140(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_141(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_142(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_143(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_144(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_145(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_146(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_147(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_148(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_149(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_150(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_151(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_152(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_153(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_154(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_155(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_156(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_157(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_158(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_159(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_160(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_161(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_162(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_163(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_164(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_165(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_166(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_167(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_168(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_169(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_170(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_171(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_172(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_173(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_174(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_175(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_176(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_177(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_178(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_179(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_180(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_181(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_182(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_183(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_184(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_185(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_186(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_187(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_188(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_189(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_190(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_191(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_192(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_193(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_194(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_195(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_196(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_197(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_198(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_199(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_200(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_201(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_202(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_203(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_204(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_205(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_206(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_207(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_208(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_209(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_210(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_211(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_212(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_213(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_214(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_215(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_216(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_217(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_218(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_219(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_220(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_221(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_222(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_223(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_224(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_225(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_226(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_227(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_228(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_229(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_230(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_231(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_232(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_233(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_234(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_235(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_236(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_237(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_238(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_239(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_240(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_241(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_242(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_243(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_244(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_245(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_246(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_247(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_248(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_249(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_250(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_251(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_252(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_253(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_254(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_255(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_256(s, p, o, m) 0
+#
+# endif
index 90baccb58483badd7b2b25720a45b7d9dbe91d2c..38272fa74de3a22d8be37873281a3ee590cb22a1 100644 (file)
@@ -8,90 +8,11 @@
 #  *                                                                          *
 #  ************************************************************************** */
 #
+# /* See http://www.boost.org for most recent version. */
+#
 # ifndef BOOST_PREPROCESSOR_SLOT_HPP
 # define BOOST_PREPROCESSOR_SLOT_HPP
 #
-# include <boost/preprocessor/detail/cat.hpp>
-# include <boost/preprocessor/detail/line.hpp>
-#
-# define BOOST_PP_SLOT_LIMIT 5
-# define BOOST_PP_SLOT_MAX 4294967295 /* 2^32 - 1 */
-#
-# define BOOST_PP_ASSIGN_SLOT(i) BOOST_PP_DETAIL_CAT2(BOOST_PP_ASSIGN_SLOT_, i)
-# define BOOST_PP_ASSIGN_SLOT_1 <boost/preprocessor/detail/slot/slot1.hpp>
-# define BOOST_PP_ASSIGN_SLOT_2 <boost/preprocessor/detail/slot/slot2.hpp>
-# define BOOST_PP_ASSIGN_SLOT_3 <boost/preprocessor/detail/slot/slot3.hpp>
-# define BOOST_PP_ASSIGN_SLOT_4 <boost/preprocessor/detail/slot/slot4.hpp>
-# define BOOST_PP_ASSIGN_SLOT_5 <boost/preprocessor/detail/slot/slot5.hpp>
-#
-# define BOOST_PP_SLOT(i) BOOST_PP_DETAIL_CAT2(BOOST_PP_SLOT_, i)()
-#
-# ifndef BOOST_PP_SLOT_SIG
-#   define BOOST_PP_SLOT_SIG 10
-# endif
-#
-# if BOOST_PP_SLOT_SIG >= 10
-#    define BOOST_PP_SLOT_10TH(x) (x) % 1000000000UL
-# else
-#    define BOOST_PP_SLOT_10TH(x) (x)
-# endif
-#
-# if BOOST_PP_SLOT_SIG >= 9
-#    define BOOST_PP_SLOT_9TH(x) BOOST_PP_SLOT_10TH(x) % 100000000UL
-# else
-#    define BOOST_PP_SLOT_9TH(x) (x)
-# endif
-#
-# if BOOST_PP_SLOT_SIG >= 8
-#    define BOOST_PP_SLOT_8TH(x) BOOST_PP_SLOT_9TH(x) % 10000000UL
-# else
-#    define BOOST_PP_SLOT_8TH(x) (x)
-# endif
-#
-# if BOOST_PP_SLOT_SIG >= 7
-#    define BOOST_PP_SLOT_7TH(x) BOOST_PP_SLOT_8TH(x) % 1000000UL
-# else
-#    define BOOST_PP_SLOT_7TH(x) (x)
-# endif
-#
-# if BOOST_PP_SLOT_SIG >= 6
-#    define BOOST_PP_SLOT_6TH(x) BOOST_PP_SLOT_7TH(x) % 100000UL
-# else
-#    define BOOST_PP_SLOT_6TH(x) (x)
-# endif
-#
-# if BOOST_PP_SLOT_SIG >= 5
-#    define BOOST_PP_SLOT_5TH(x) BOOST_PP_SLOT_6TH(x) % 10000UL
-# else
-#    define BOOST_PP_SLOT_5TH(x) (x)
-# endif
-#
-# if BOOST_PP_SLOT_SIG >= 4
-#    define BOOST_PP_SLOT_4TH(x) BOOST_PP_SLOT_5TH(x) % 1000UL
-# else
-#    define BOOST_PP_SLOT_4TH(x) (x)
-# endif
-#
-# if BOOST_PP_SLOT_SIG >= 3
-#    define BOOST_PP_SLOT_3RD(x) BOOST_PP_SLOT_4TH(x) % 100UL
-# else
-#    define BOOST_PP_SLOT_3RD(x) (x)
-# endif
-#
-# if BOOST_PP_SLOT_SIG >= 2
-#    define BOOST_PP_SLOT_2ND(x) BOOST_PP_SLOT_3RD(x) % 10UL
-# else
-#    define BOOST_PP_SLOT_2ND(x) (x)
-# endif
-#
-# define BOOST_PP_SLOT_CC_2(a, b) BOOST_PP_DETAIL_CAT2(a, b)
-# define BOOST_PP_SLOT_CC_3(a, b, c) BOOST_PP_DETAIL_CAT2(BOOST_PP_SLOT_CC_2(a, b), c)
-# define BOOST_PP_SLOT_CC_4(a, b, c, d) BOOST_PP_DETAIL_CAT2(BOOST_PP_SLOT_CC_3(a, b, c), d)
-# define BOOST_PP_SLOT_CC_5(a, b, c, d, e) BOOST_PP_DETAIL_CAT2(BOOST_PP_SLOT_CC_4(a, b, c, d), e)
-# define BOOST_PP_SLOT_CC_6(a, b, c, d, e, f) BOOST_PP_DETAIL_CAT2(BOOST_PP_SLOT_CC_5(a, b, c, d, e), f)
-# define BOOST_PP_SLOT_CC_7(a, b, c, d, e, f, g) BOOST_PP_DETAIL_CAT2(BOOST_PP_SLOT_CC_6(a, b, c, d, e, f), g)
-# define BOOST_PP_SLOT_CC_8(a, b, c, d, e, f, g, h) BOOST_PP_DETAIL_CAT2(BOOST_PP_SLOT_CC_7(a, b, c, d, e, f, g), h)
-# define BOOST_PP_SLOT_CC_9(a, b, c, d, e, f, g, h, i) BOOST_PP_DETAIL_CAT2(BOOST_PP_SLOT_CC_8(a, b, c, d, e, f, g, h), i)
-# define BOOST_PP_SLOT_CC_10(a, b, c, d, e, f, g, h, i, j) BOOST_PP_DETAIL_CAT2(BOOST_PP_SLOT_CC_9(a, b, c, d, e, f, g, h, i), j)
+# include <boost/preprocessor/slot/slot.hpp>
 #
 # endif
index 2cb528f52144b9531e23f4df39576ea1d4109d2d..64c1b0bebf7f8b6bf93db17f95354f667bb4713c 100644 (file)
@@ -1,34 +1,31 @@
-#ifndef BOOST_PREPROCESSOR_STRINGIZE_HPP
-#define BOOST_PREPROCESSOR_STRINGIZE_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>Stringizes <code>X</code> after it is macro expanded.</p>
-
-<p>For example, <code>BOOST_PP_STRINGIZE(BOOST_PP_CAT(a,b))</code> expands to <code>"ab"</code>.</p>
-
-<h3>Example</h3>
-<ul>
-  <li><a href="../../example/note.c">note.c</a></li>
-</ul>
-
-<h3>Test</h3>
-<ul>
-  <li><a href="../../test/preprocessor_test.cpp">preprocessor_test.cpp</a></li>
-</ul>
-*/
-#define BOOST_PP_STRINGIZE(X) BOOST_PP_STRINGIZE_DELAY(X)
-
-#define BOOST_PP_STRINGIZE_DELAY(X) BOOST_PP_DO_STRINGIZE(X)
-#define BOOST_PP_DO_STRINGIZE(X) #X
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_STRINGIZE_HPP
+# define BOOST_PREPROCESSOR_STRINGIZE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_STRINGIZE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_I(text)
+# else
+#    define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_OO((text))
+#    define BOOST_PP_STRINGIZE_OO(par) BOOST_PP_STRINGIZE_I ## par
+# endif
+#
+# define BOOST_PP_STRINGIZE_I(text) #text
+#
+# endif
index 54f6f54c1e1fc42d8268af81f639624327f58767..8ae6db32286d9b17a8cfab71fac7c0bb4505cc42 100644 (file)
@@ -1,39 +1,24 @@
-#ifndef BOOST_PREPROCESSOR_TUPLE_HPP
-#define BOOST_PREPROCESSOR_TUPLE_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>Includes all tuple headers.</p>
-
-<p>A tuple is a fixed size collection of elements.</p>
-
-<p>In the preprocessor library, tuples are represented like macro parameter
-lists. Thus an element of a tuple can be any sequence of tokens that
-constitutes a single macro parameter.</p>
-
-<p>Examples of tuples:</p>
-
-<pre>
-(const, volatile)       a 2-tuple
-(*, /, %)               a 3-tuple
-(1, "2", '3', (4,5))    a 4-tuple
-</pre>
-
-<p>Tuples can be used for representing structured data.</p>
-*/
-
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/tuple/reverse.hpp>
-#include <boost/preprocessor/tuple/to_list.hpp>
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_HPP
+# define BOOST_PREPROCESSOR_TUPLE_HPP
+#
+# include <boost/preprocessor/tuple/eat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+# include <boost/preprocessor/tuple/reverse.hpp>
+# include <boost/preprocessor/tuple/to_list.hpp>
+#
+# endif
index 1b00a1ad4836a96a24ed87ab2015965c8bcb385e..6fd20a7e60ef2a11f33f6174b8c6ea0f705e7a2c 100644 (file)
@@ -1,66 +1,58 @@
-#ifndef BOOST_PREPROCESSOR_TUPLE_EAT_HPP
-#define BOOST_PREPROCESSOR_TUPLE_EAT_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/detail/cat.hpp>
-
-/** <p>Expands to a macro that eats a tuple of the specified size.</p>
-
-<p>BOOST_PP_TUPLE_EAT() is designed to be used with BOOST_PP_IF() like
-BOOST_PP_EMPTY().</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_IF(0,BOOST_PP_ENUM_PARAMS,BOOST_PP_TUPLE_EAT(2))(10,P)
-</pre>
-
-<p>expands to nothing.</p>
-*/
-#define BOOST_PP_TUPLE_EAT(SIZE_OF_TUPLE) BOOST_PP_DETAIL_CAT3(BOOST_PP_TUPLE,SIZE_OF_TUPLE,_EAT)
-
-#define BOOST_PP_TUPLE0_EAT()
-#define BOOST_PP_TUPLE1_EAT(A)
-#define BOOST_PP_TUPLE2_EAT(A,B)
-#define BOOST_PP_TUPLE3_EAT(A,B,C)
-#define BOOST_PP_TUPLE4_EAT(A,B,C,D)
-#define BOOST_PP_TUPLE5_EAT(A,B,C,D,E)
-#define BOOST_PP_TUPLE6_EAT(A,B,C,D,E,F)
-#define BOOST_PP_TUPLE7_EAT(A,B,C,D,E,F,G)
-#define BOOST_PP_TUPLE8_EAT(A,B,C,D,E,F,G,H)
-#define BOOST_PP_TUPLE9_EAT(A,B,C,D,E,F,G,H,I)
-#define BOOST_PP_TUPLE10_EAT(A,B,C,D,E,F,G,H,I,J)
-#define BOOST_PP_TUPLE11_EAT(A,B,C,D,E,F,G,H,I,J,K)
-#define BOOST_PP_TUPLE12_EAT(A,B,C,D,E,F,G,H,I,J,K,L)
-#define BOOST_PP_TUPLE13_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M)
-#define BOOST_PP_TUPLE14_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N)
-#define BOOST_PP_TUPLE15_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)
-#define BOOST_PP_TUPLE16_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE17_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)
-#define BOOST_PP_TUPLE18_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)
-#define BOOST_PP_TUPLE19_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S)
-#define BOOST_PP_TUPLE20_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T)
-#define BOOST_PP_TUPLE21_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U)
-#define BOOST_PP_TUPLE22_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V)
-#define BOOST_PP_TUPLE23_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W)
-#define BOOST_PP_TUPLE24_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)
-#define BOOST_PP_TUPLE25_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y)
-#define BOOST_PP_TUPLE26_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z)
-#define BOOST_PP_TUPLE27_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a)
-#define BOOST_PP_TUPLE28_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b)
-#define BOOST_PP_TUPLE29_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c)
-#define BOOST_PP_TUPLE30_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d)
-#define BOOST_PP_TUPLE31_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e)
-#define BOOST_PP_TUPLE32_EAT(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f)
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_EAT_HPP
+# define BOOST_PREPROCESSOR_TUPLE_EAT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_TUPLE_EAT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_I(size)
+# else
+#    define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_OO((size))
+#    define BOOST_PP_TUPLE_EAT_OO(par) BOOST_PP_TUPLE_EAT_I ## par
+# endif
+#
+# define BOOST_PP_TUPLE_EAT_I(size) BOOST_PP_TUPLE_EAT_ ## size
+#
+# define BOOST_PP_TUPLE_EAT_0()
+# define BOOST_PP_TUPLE_EAT_1(a)
+# define BOOST_PP_TUPLE_EAT_2(a, b)
+# define BOOST_PP_TUPLE_EAT_3(a, b, c)
+# define BOOST_PP_TUPLE_EAT_4(a, b, c, d)
+# define BOOST_PP_TUPLE_EAT_5(a, b, c, d, e)
+# define BOOST_PP_TUPLE_EAT_6(a, b, c, d, e, f)
+# define BOOST_PP_TUPLE_EAT_7(a, b, c, d, e, f, g)
+# define BOOST_PP_TUPLE_EAT_8(a, b, c, d, e, f, g, h)
+# define BOOST_PP_TUPLE_EAT_9(a, b, c, d, e, f, g, h, i)
+# define BOOST_PP_TUPLE_EAT_10(a, b, c, d, e, f, g, h, i, j)
+# define BOOST_PP_TUPLE_EAT_11(a, b, c, d, e, f, g, h, i, j, k)
+# define BOOST_PP_TUPLE_EAT_12(a, b, c, d, e, f, g, h, i, j, k, l)
+# define BOOST_PP_TUPLE_EAT_13(a, b, c, d, e, f, g, h, i, j, k, l, m)
+# define BOOST_PP_TUPLE_EAT_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n)
+# define BOOST_PP_TUPLE_EAT_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
+# define BOOST_PP_TUPLE_EAT_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)
+# define BOOST_PP_TUPLE_EAT_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)
+# define BOOST_PP_TUPLE_EAT_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)
+# define BOOST_PP_TUPLE_EAT_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)
+# define BOOST_PP_TUPLE_EAT_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)
+# define BOOST_PP_TUPLE_EAT_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u)
+# define BOOST_PP_TUPLE_EAT_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v)
+# define BOOST_PP_TUPLE_EAT_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w)
+# define BOOST_PP_TUPLE_EAT_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x)
+# define BOOST_PP_TUPLE_EAT_25(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y)
+#
+# endif
index 4ffefee7cb6900cb7b00abdc6d513aa4dafb0003..4fefe6990d9340fd46c4c93822aad11fd895567c 100644 (file)
-#ifndef BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
-#define BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/detail/cat.hpp>
-#include <boost/preprocessor/detail/expand.hpp>
-
-/** <p>Expands to the <code>INDEX</code>:th element of an <code>SIZE_OF_TUPLE</code>-tuple.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_TUPLE_ELEM(2,1,(A,B))
-</pre>
-
-<p>expands to <code>B</code>.</p>
-
-<h3>See</h3>
-<ul>
-  <li>BOOST_PP_LIMIT_TUPLE</li>
-</ul>
-*/
-
-#if !defined(__MWERKS__) || defined(BOOST_NO_COMPILER_CONFIG) || __MWERKS__ > 0x3002
-#  define BOOST_PP_TUPLE_ELEM(SIZE_OF_TUPLE,INDEX,TUPLE)\
-  BOOST_PP_DETAIL_EXPAND2(\
-     BOOST_PP_DETAIL_CAT2(BOOST_PP_TUPLE16_ELEM,INDEX)\
-    ,BOOST_PP_DETAIL_CAT2(BOOST_PP_TUPLE_ELEM_EX,SIZE_OF_TUPLE) TUPLE\
-  )\
-/**/
-#else
-#  define BOOST_PP_TUPLE_ELEM(SIZE_OF_TUPLE,INDEX,TUPLE)\
-  BOOST_PP_TUPLE_ELEM_DELAY(SIZE_OF_TUPLE,INDEX,TUPLE)\
-/**/
-#  define BOOST_PP_TUPLE_ELEM_DELAY(SIZE_OF_TUPLE,INDEX,TUPLE)\
-  BOOST_PP_DETAIL_CAT2(\
-     BOOST_PP_TUPLE16_ELEM##INDEX\
-    ,BOOST_PP_DETAIL_CAT2(BOOST_PP_TUPLE_ELEM_EX##SIZE_OF_TUPLE,TUPLE)\
-  )\
-/**/
-#endif
-
-#define BOOST_PP_TUPLE_ELEM_EX1(A) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX2(A,B) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX3(A,B,C) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX4(A,B,C,D) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX5(A,B,C,D,E) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX6(A,B,C,D,E,F) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX7(A,B,C,D,E,F,G) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX8(A,B,C,D,E,F,G,H) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX9(A,B,C,D,E,F,G,H,I) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX10(A,B,C,D,E,F,G,H,I,J) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX11(A,B,C,D,E,F,G,H,I,J,K) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX12(A,B,C,D,E,F,G,H,I,J,K,L) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX13(A,B,C,D,E,F,G,H,I,J,K,L,M) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX14(A,B,C,D,E,F,G,H,I,J,K,L,M,N) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX15(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-#define BOOST_PP_TUPLE_ELEM_EX16(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)
-
-#define BOOST_PP_TUPLE16_ELEM0(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) A
-#define BOOST_PP_TUPLE16_ELEM1(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) B
-#define BOOST_PP_TUPLE16_ELEM2(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) C
-#define BOOST_PP_TUPLE16_ELEM3(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) D
-#define BOOST_PP_TUPLE16_ELEM4(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) E
-#define BOOST_PP_TUPLE16_ELEM5(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) F
-#define BOOST_PP_TUPLE16_ELEM6(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) G
-#define BOOST_PP_TUPLE16_ELEM7(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) H
-#define BOOST_PP_TUPLE16_ELEM8(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) I
-#define BOOST_PP_TUPLE16_ELEM9(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) J
-#define BOOST_PP_TUPLE16_ELEM10(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) K
-#define BOOST_PP_TUPLE16_ELEM11(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) L
-#define BOOST_PP_TUPLE16_ELEM12(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) M
-#define BOOST_PP_TUPLE16_ELEM13(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) N
-#define BOOST_PP_TUPLE16_ELEM14(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) O
-#define BOOST_PP_TUPLE16_ELEM15(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) P
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
+# define BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_TUPLE_ELEM(size, index, tuple) BOOST_PP_TUPLE_ELEM_I(size, index, tuple)
+# else
+#    define BOOST_PP_TUPLE_ELEM(size, index, tuple) BOOST_PP_TUPLE_ELEM_OO((size, index, tuple))
+#    define BOOST_PP_TUPLE_ELEM_OO(par) BOOST_PP_TUPLE_ELEM_I ## par
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i ## t
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+#    define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_II(BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i t)
+#    define BOOST_PP_TUPLE_ELEM_II(res) res
+# else
+#    define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i t
+# endif
+#
+# define BOOST_PP_TUPLE_ELEM_1_0(a) a
+#
+# define BOOST_PP_TUPLE_ELEM_2_0(a, b) a
+# define BOOST_PP_TUPLE_ELEM_2_1(a, b) b
+#
+# define BOOST_PP_TUPLE_ELEM_3_0(a, b, c) a
+# define BOOST_PP_TUPLE_ELEM_3_1(a, b, c) b
+# define BOOST_PP_TUPLE_ELEM_3_2(a, b, c) c
+#
+# define BOOST_PP_TUPLE_ELEM_4_0(a, b, c, d) a
+# define BOOST_PP_TUPLE_ELEM_4_1(a, b, c, d) b
+# define BOOST_PP_TUPLE_ELEM_4_2(a, b, c, d) c
+# define BOOST_PP_TUPLE_ELEM_4_3(a, b, c, d) d
+#
+# define BOOST_PP_TUPLE_ELEM_5_0(a, b, c, d, e) a
+# define BOOST_PP_TUPLE_ELEM_5_1(a, b, c, d, e) b
+# define BOOST_PP_TUPLE_ELEM_5_2(a, b, c, d, e) c
+# define BOOST_PP_TUPLE_ELEM_5_3(a, b, c, d, e) d
+# define BOOST_PP_TUPLE_ELEM_5_4(a, b, c, d, e) e
+#
+# define BOOST_PP_TUPLE_ELEM_6_0(a, b, c, d, e, f) a
+# define BOOST_PP_TUPLE_ELEM_6_1(a, b, c, d, e, f) b
+# define BOOST_PP_TUPLE_ELEM_6_2(a, b, c, d, e, f) c
+# define BOOST_PP_TUPLE_ELEM_6_3(a, b, c, d, e, f) d
+# define BOOST_PP_TUPLE_ELEM_6_4(a, b, c, d, e, f) e
+# define BOOST_PP_TUPLE_ELEM_6_5(a, b, c, d, e, f) f
+#
+# define BOOST_PP_TUPLE_ELEM_7_0(a, b, c, d, e, f, g) a
+# define BOOST_PP_TUPLE_ELEM_7_1(a, b, c, d, e, f, g) b
+# define BOOST_PP_TUPLE_ELEM_7_2(a, b, c, d, e, f, g) c
+# define BOOST_PP_TUPLE_ELEM_7_3(a, b, c, d, e, f, g) d
+# define BOOST_PP_TUPLE_ELEM_7_4(a, b, c, d, e, f, g) e
+# define BOOST_PP_TUPLE_ELEM_7_5(a, b, c, d, e, f, g) f
+# define BOOST_PP_TUPLE_ELEM_7_6(a, b, c, d, e, f, g) g
+#
+# define BOOST_PP_TUPLE_ELEM_8_0(a, b, c, d, e, f, g, h) a
+# define BOOST_PP_TUPLE_ELEM_8_1(a, b, c, d, e, f, g, h) b
+# define BOOST_PP_TUPLE_ELEM_8_2(a, b, c, d, e, f, g, h) c
+# define BOOST_PP_TUPLE_ELEM_8_3(a, b, c, d, e, f, g, h) d
+# define BOOST_PP_TUPLE_ELEM_8_4(a, b, c, d, e, f, g, h) e
+# define BOOST_PP_TUPLE_ELEM_8_5(a, b, c, d, e, f, g, h) f
+# define BOOST_PP_TUPLE_ELEM_8_6(a, b, c, d, e, f, g, h) g
+# define BOOST_PP_TUPLE_ELEM_8_7(a, b, c, d, e, f, g, h) h
+#
+# define BOOST_PP_TUPLE_ELEM_9_0(a, b, c, d, e, f, g, h, i) a
+# define BOOST_PP_TUPLE_ELEM_9_1(a, b, c, d, e, f, g, h, i) b
+# define BOOST_PP_TUPLE_ELEM_9_2(a, b, c, d, e, f, g, h, i) c
+# define BOOST_PP_TUPLE_ELEM_9_3(a, b, c, d, e, f, g, h, i) d
+# define BOOST_PP_TUPLE_ELEM_9_4(a, b, c, d, e, f, g, h, i) e
+# define BOOST_PP_TUPLE_ELEM_9_5(a, b, c, d, e, f, g, h, i) f
+# define BOOST_PP_TUPLE_ELEM_9_6(a, b, c, d, e, f, g, h, i) g
+# define BOOST_PP_TUPLE_ELEM_9_7(a, b, c, d, e, f, g, h, i) h
+# define BOOST_PP_TUPLE_ELEM_9_8(a, b, c, d, e, f, g, h, i) i
+#
+# define BOOST_PP_TUPLE_ELEM_10_0(a, b, c, d, e, f, g, h, i, j) a
+# define BOOST_PP_TUPLE_ELEM_10_1(a, b, c, d, e, f, g, h, i, j) b
+# define BOOST_PP_TUPLE_ELEM_10_2(a, b, c, d, e, f, g, h, i, j) c
+# define BOOST_PP_TUPLE_ELEM_10_3(a, b, c, d, e, f, g, h, i, j) d
+# define BOOST_PP_TUPLE_ELEM_10_4(a, b, c, d, e, f, g, h, i, j) e
+# define BOOST_PP_TUPLE_ELEM_10_5(a, b, c, d, e, f, g, h, i, j) f
+# define BOOST_PP_TUPLE_ELEM_10_6(a, b, c, d, e, f, g, h, i, j) g
+# define BOOST_PP_TUPLE_ELEM_10_7(a, b, c, d, e, f, g, h, i, j) h
+# define BOOST_PP_TUPLE_ELEM_10_8(a, b, c, d, e, f, g, h, i, j) i
+# define BOOST_PP_TUPLE_ELEM_10_9(a, b, c, d, e, f, g, h, i, j) j
+#
+# define BOOST_PP_TUPLE_ELEM_11_0(a, b, c, d, e, f, g, h, i, j, k) a
+# define BOOST_PP_TUPLE_ELEM_11_1(a, b, c, d, e, f, g, h, i, j, k) b
+# define BOOST_PP_TUPLE_ELEM_11_2(a, b, c, d, e, f, g, h, i, j, k) c
+# define BOOST_PP_TUPLE_ELEM_11_3(a, b, c, d, e, f, g, h, i, j, k) d
+# define BOOST_PP_TUPLE_ELEM_11_4(a, b, c, d, e, f, g, h, i, j, k) e
+# define BOOST_PP_TUPLE_ELEM_11_5(a, b, c, d, e, f, g, h, i, j, k) f
+# define BOOST_PP_TUPLE_ELEM_11_6(a, b, c, d, e, f, g, h, i, j, k) g
+# define BOOST_PP_TUPLE_ELEM_11_7(a, b, c, d, e, f, g, h, i, j, k) h
+# define BOOST_PP_TUPLE_ELEM_11_8(a, b, c, d, e, f, g, h, i, j, k) i
+# define BOOST_PP_TUPLE_ELEM_11_9(a, b, c, d, e, f, g, h, i, j, k) j
+# define BOOST_PP_TUPLE_ELEM_11_10(a, b, c, d, e, f, g, h, i, j, k) k
+#
+# define BOOST_PP_TUPLE_ELEM_12_0(a, b, c, d, e, f, g, h, i, j, k, l) a
+# define BOOST_PP_TUPLE_ELEM_12_1(a, b, c, d, e, f, g, h, i, j, k, l) b
+# define BOOST_PP_TUPLE_ELEM_12_2(a, b, c, d, e, f, g, h, i, j, k, l) c
+# define BOOST_PP_TUPLE_ELEM_12_3(a, b, c, d, e, f, g, h, i, j, k, l) d
+# define BOOST_PP_TUPLE_ELEM_12_4(a, b, c, d, e, f, g, h, i, j, k, l) e
+# define BOOST_PP_TUPLE_ELEM_12_5(a, b, c, d, e, f, g, h, i, j, k, l) f
+# define BOOST_PP_TUPLE_ELEM_12_6(a, b, c, d, e, f, g, h, i, j, k, l) g
+# define BOOST_PP_TUPLE_ELEM_12_7(a, b, c, d, e, f, g, h, i, j, k, l) h
+# define BOOST_PP_TUPLE_ELEM_12_8(a, b, c, d, e, f, g, h, i, j, k, l) i
+# define BOOST_PP_TUPLE_ELEM_12_9(a, b, c, d, e, f, g, h, i, j, k, l) j
+# define BOOST_PP_TUPLE_ELEM_12_10(a, b, c, d, e, f, g, h, i, j, k, l) k
+# define BOOST_PP_TUPLE_ELEM_12_11(a, b, c, d, e, f, g, h, i, j, k, l) l
+#
+# define BOOST_PP_TUPLE_ELEM_13_0(a, b, c, d, e, f, g, h, i, j, k, l, m) a
+# define BOOST_PP_TUPLE_ELEM_13_1(a, b, c, d, e, f, g, h, i, j, k, l, m) b
+# define BOOST_PP_TUPLE_ELEM_13_2(a, b, c, d, e, f, g, h, i, j, k, l, m) c
+# define BOOST_PP_TUPLE_ELEM_13_3(a, b, c, d, e, f, g, h, i, j, k, l, m) d
+# define BOOST_PP_TUPLE_ELEM_13_4(a, b, c, d, e, f, g, h, i, j, k, l, m) e
+# define BOOST_PP_TUPLE_ELEM_13_5(a, b, c, d, e, f, g, h, i, j, k, l, m) f
+# define BOOST_PP_TUPLE_ELEM_13_6(a, b, c, d, e, f, g, h, i, j, k, l, m) g
+# define BOOST_PP_TUPLE_ELEM_13_7(a, b, c, d, e, f, g, h, i, j, k, l, m) h
+# define BOOST_PP_TUPLE_ELEM_13_8(a, b, c, d, e, f, g, h, i, j, k, l, m) i
+# define BOOST_PP_TUPLE_ELEM_13_9(a, b, c, d, e, f, g, h, i, j, k, l, m) j
+# define BOOST_PP_TUPLE_ELEM_13_10(a, b, c, d, e, f, g, h, i, j, k, l, m) k
+# define BOOST_PP_TUPLE_ELEM_13_11(a, b, c, d, e, f, g, h, i, j, k, l, m) l
+# define BOOST_PP_TUPLE_ELEM_13_12(a, b, c, d, e, f, g, h, i, j, k, l, m) m
+#
+# define BOOST_PP_TUPLE_ELEM_14_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n) a
+# define BOOST_PP_TUPLE_ELEM_14_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n) b
+# define BOOST_PP_TUPLE_ELEM_14_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n) c
+# define BOOST_PP_TUPLE_ELEM_14_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n) d
+# define BOOST_PP_TUPLE_ELEM_14_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n) e
+# define BOOST_PP_TUPLE_ELEM_14_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n) f
+# define BOOST_PP_TUPLE_ELEM_14_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n) g
+# define BOOST_PP_TUPLE_ELEM_14_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n) h
+# define BOOST_PP_TUPLE_ELEM_14_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n) i
+# define BOOST_PP_TUPLE_ELEM_14_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n) j
+# define BOOST_PP_TUPLE_ELEM_14_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n) k
+# define BOOST_PP_TUPLE_ELEM_14_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n) l
+# define BOOST_PP_TUPLE_ELEM_14_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n) m
+# define BOOST_PP_TUPLE_ELEM_14_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n) n
+#
+# define BOOST_PP_TUPLE_ELEM_15_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) a
+# define BOOST_PP_TUPLE_ELEM_15_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) b
+# define BOOST_PP_TUPLE_ELEM_15_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) c
+# define BOOST_PP_TUPLE_ELEM_15_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) d
+# define BOOST_PP_TUPLE_ELEM_15_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) e
+# define BOOST_PP_TUPLE_ELEM_15_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) f
+# define BOOST_PP_TUPLE_ELEM_15_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) g
+# define BOOST_PP_TUPLE_ELEM_15_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) h
+# define BOOST_PP_TUPLE_ELEM_15_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) i
+# define BOOST_PP_TUPLE_ELEM_15_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) j
+# define BOOST_PP_TUPLE_ELEM_15_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) k
+# define BOOST_PP_TUPLE_ELEM_15_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) l
+# define BOOST_PP_TUPLE_ELEM_15_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) m
+# define BOOST_PP_TUPLE_ELEM_15_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) n
+# define BOOST_PP_TUPLE_ELEM_15_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) o
+#
+# define BOOST_PP_TUPLE_ELEM_16_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) a
+# define BOOST_PP_TUPLE_ELEM_16_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) b
+# define BOOST_PP_TUPLE_ELEM_16_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) c
+# define BOOST_PP_TUPLE_ELEM_16_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) d
+# define BOOST_PP_TUPLE_ELEM_16_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) e
+# define BOOST_PP_TUPLE_ELEM_16_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) f
+# define BOOST_PP_TUPLE_ELEM_16_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) g
+# define BOOST_PP_TUPLE_ELEM_16_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) h
+# define BOOST_PP_TUPLE_ELEM_16_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) i
+# define BOOST_PP_TUPLE_ELEM_16_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) j
+# define BOOST_PP_TUPLE_ELEM_16_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) k
+# define BOOST_PP_TUPLE_ELEM_16_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) l
+# define BOOST_PP_TUPLE_ELEM_16_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) m
+# define BOOST_PP_TUPLE_ELEM_16_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) n
+# define BOOST_PP_TUPLE_ELEM_16_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) o
+# define BOOST_PP_TUPLE_ELEM_16_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) p
+#
+# define BOOST_PP_TUPLE_ELEM_17_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) a
+# define BOOST_PP_TUPLE_ELEM_17_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) b
+# define BOOST_PP_TUPLE_ELEM_17_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) c
+# define BOOST_PP_TUPLE_ELEM_17_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) d
+# define BOOST_PP_TUPLE_ELEM_17_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) e
+# define BOOST_PP_TUPLE_ELEM_17_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) f
+# define BOOST_PP_TUPLE_ELEM_17_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) g
+# define BOOST_PP_TUPLE_ELEM_17_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) h
+# define BOOST_PP_TUPLE_ELEM_17_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) i
+# define BOOST_PP_TUPLE_ELEM_17_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) j
+# define BOOST_PP_TUPLE_ELEM_17_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) k
+# define BOOST_PP_TUPLE_ELEM_17_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) l
+# define BOOST_PP_TUPLE_ELEM_17_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) m
+# define BOOST_PP_TUPLE_ELEM_17_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) n
+# define BOOST_PP_TUPLE_ELEM_17_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) o
+# define BOOST_PP_TUPLE_ELEM_17_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) p
+# define BOOST_PP_TUPLE_ELEM_17_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) q
+#
+# define BOOST_PP_TUPLE_ELEM_18_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) a
+# define BOOST_PP_TUPLE_ELEM_18_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) b
+# define BOOST_PP_TUPLE_ELEM_18_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) c
+# define BOOST_PP_TUPLE_ELEM_18_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) d
+# define BOOST_PP_TUPLE_ELEM_18_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) e
+# define BOOST_PP_TUPLE_ELEM_18_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) f
+# define BOOST_PP_TUPLE_ELEM_18_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) g
+# define BOOST_PP_TUPLE_ELEM_18_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) h
+# define BOOST_PP_TUPLE_ELEM_18_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) i
+# define BOOST_PP_TUPLE_ELEM_18_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) j
+# define BOOST_PP_TUPLE_ELEM_18_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) k
+# define BOOST_PP_TUPLE_ELEM_18_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) l
+# define BOOST_PP_TUPLE_ELEM_18_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) m
+# define BOOST_PP_TUPLE_ELEM_18_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) n
+# define BOOST_PP_TUPLE_ELEM_18_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) o
+# define BOOST_PP_TUPLE_ELEM_18_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) p
+# define BOOST_PP_TUPLE_ELEM_18_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) q
+# define BOOST_PP_TUPLE_ELEM_18_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) r
+#
+# define BOOST_PP_TUPLE_ELEM_19_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) a
+# define BOOST_PP_TUPLE_ELEM_19_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) b
+# define BOOST_PP_TUPLE_ELEM_19_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) c
+# define BOOST_PP_TUPLE_ELEM_19_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) d
+# define BOOST_PP_TUPLE_ELEM_19_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) e
+# define BOOST_PP_TUPLE_ELEM_19_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) f
+# define BOOST_PP_TUPLE_ELEM_19_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) g
+# define BOOST_PP_TUPLE_ELEM_19_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) h
+# define BOOST_PP_TUPLE_ELEM_19_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) i
+# define BOOST_PP_TUPLE_ELEM_19_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) j
+# define BOOST_PP_TUPLE_ELEM_19_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) k
+# define BOOST_PP_TUPLE_ELEM_19_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) l
+# define BOOST_PP_TUPLE_ELEM_19_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) m
+# define BOOST_PP_TUPLE_ELEM_19_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) n
+# define BOOST_PP_TUPLE_ELEM_19_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) o
+# define BOOST_PP_TUPLE_ELEM_19_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) p
+# define BOOST_PP_TUPLE_ELEM_19_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) q
+# define BOOST_PP_TUPLE_ELEM_19_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) r
+# define BOOST_PP_TUPLE_ELEM_19_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) s
+#
+# define BOOST_PP_TUPLE_ELEM_20_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) a
+# define BOOST_PP_TUPLE_ELEM_20_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) b
+# define BOOST_PP_TUPLE_ELEM_20_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) c
+# define BOOST_PP_TUPLE_ELEM_20_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) d
+# define BOOST_PP_TUPLE_ELEM_20_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) e
+# define BOOST_PP_TUPLE_ELEM_20_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) f
+# define BOOST_PP_TUPLE_ELEM_20_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) g
+# define BOOST_PP_TUPLE_ELEM_20_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) h
+# define BOOST_PP_TUPLE_ELEM_20_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) i
+# define BOOST_PP_TUPLE_ELEM_20_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) j
+# define BOOST_PP_TUPLE_ELEM_20_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) k
+# define BOOST_PP_TUPLE_ELEM_20_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) l
+# define BOOST_PP_TUPLE_ELEM_20_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) m
+# define BOOST_PP_TUPLE_ELEM_20_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) n
+# define BOOST_PP_TUPLE_ELEM_20_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) o
+# define BOOST_PP_TUPLE_ELEM_20_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) p
+# define BOOST_PP_TUPLE_ELEM_20_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) q
+# define BOOST_PP_TUPLE_ELEM_20_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) r
+# define BOOST_PP_TUPLE_ELEM_20_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) s
+# define BOOST_PP_TUPLE_ELEM_20_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) t
+#
+# define BOOST_PP_TUPLE_ELEM_21_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) a
+# define BOOST_PP_TUPLE_ELEM_21_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) b
+# define BOOST_PP_TUPLE_ELEM_21_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) c
+# define BOOST_PP_TUPLE_ELEM_21_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) d
+# define BOOST_PP_TUPLE_ELEM_21_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) e
+# define BOOST_PP_TUPLE_ELEM_21_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) f
+# define BOOST_PP_TUPLE_ELEM_21_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) g
+# define BOOST_PP_TUPLE_ELEM_21_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) h
+# define BOOST_PP_TUPLE_ELEM_21_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) i
+# define BOOST_PP_TUPLE_ELEM_21_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) j
+# define BOOST_PP_TUPLE_ELEM_21_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) k
+# define BOOST_PP_TUPLE_ELEM_21_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) l
+# define BOOST_PP_TUPLE_ELEM_21_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) m
+# define BOOST_PP_TUPLE_ELEM_21_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) n
+# define BOOST_PP_TUPLE_ELEM_21_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) o
+# define BOOST_PP_TUPLE_ELEM_21_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) p
+# define BOOST_PP_TUPLE_ELEM_21_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) q
+# define BOOST_PP_TUPLE_ELEM_21_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) r
+# define BOOST_PP_TUPLE_ELEM_21_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) s
+# define BOOST_PP_TUPLE_ELEM_21_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) t
+# define BOOST_PP_TUPLE_ELEM_21_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) u
+#
+# define BOOST_PP_TUPLE_ELEM_22_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) a
+# define BOOST_PP_TUPLE_ELEM_22_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) b
+# define BOOST_PP_TUPLE_ELEM_22_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) c
+# define BOOST_PP_TUPLE_ELEM_22_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) d
+# define BOOST_PP_TUPLE_ELEM_22_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) e
+# define BOOST_PP_TUPLE_ELEM_22_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) f
+# define BOOST_PP_TUPLE_ELEM_22_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) g
+# define BOOST_PP_TUPLE_ELEM_22_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) h
+# define BOOST_PP_TUPLE_ELEM_22_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) i
+# define BOOST_PP_TUPLE_ELEM_22_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) j
+# define BOOST_PP_TUPLE_ELEM_22_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) k
+# define BOOST_PP_TUPLE_ELEM_22_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) l
+# define BOOST_PP_TUPLE_ELEM_22_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) m
+# define BOOST_PP_TUPLE_ELEM_22_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) n
+# define BOOST_PP_TUPLE_ELEM_22_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) o
+# define BOOST_PP_TUPLE_ELEM_22_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) p
+# define BOOST_PP_TUPLE_ELEM_22_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) q
+# define BOOST_PP_TUPLE_ELEM_22_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) r
+# define BOOST_PP_TUPLE_ELEM_22_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) s
+# define BOOST_PP_TUPLE_ELEM_22_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) t
+# define BOOST_PP_TUPLE_ELEM_22_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) u
+# define BOOST_PP_TUPLE_ELEM_22_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) v
+#
+# define BOOST_PP_TUPLE_ELEM_23_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) a
+# define BOOST_PP_TUPLE_ELEM_23_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) b
+# define BOOST_PP_TUPLE_ELEM_23_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) c
+# define BOOST_PP_TUPLE_ELEM_23_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) d
+# define BOOST_PP_TUPLE_ELEM_23_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) e
+# define BOOST_PP_TUPLE_ELEM_23_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) f
+# define BOOST_PP_TUPLE_ELEM_23_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) g
+# define BOOST_PP_TUPLE_ELEM_23_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) h
+# define BOOST_PP_TUPLE_ELEM_23_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) i
+# define BOOST_PP_TUPLE_ELEM_23_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) j
+# define BOOST_PP_TUPLE_ELEM_23_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) k
+# define BOOST_PP_TUPLE_ELEM_23_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) l
+# define BOOST_PP_TUPLE_ELEM_23_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) m
+# define BOOST_PP_TUPLE_ELEM_23_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) n
+# define BOOST_PP_TUPLE_ELEM_23_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) o
+# define BOOST_PP_TUPLE_ELEM_23_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) p
+# define BOOST_PP_TUPLE_ELEM_23_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) q
+# define BOOST_PP_TUPLE_ELEM_23_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) r
+# define BOOST_PP_TUPLE_ELEM_23_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) s
+# define BOOST_PP_TUPLE_ELEM_23_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) t
+# define BOOST_PP_TUPLE_ELEM_23_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) u
+# define BOOST_PP_TUPLE_ELEM_23_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) v
+# define BOOST_PP_TUPLE_ELEM_23_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) w
+#
+# define BOOST_PP_TUPLE_ELEM_24_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) a
+# define BOOST_PP_TUPLE_ELEM_24_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) b
+# define BOOST_PP_TUPLE_ELEM_24_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) c
+# define BOOST_PP_TUPLE_ELEM_24_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) d
+# define BOOST_PP_TUPLE_ELEM_24_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) e
+# define BOOST_PP_TUPLE_ELEM_24_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) f
+# define BOOST_PP_TUPLE_ELEM_24_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) g
+# define BOOST_PP_TUPLE_ELEM_24_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) h
+# define BOOST_PP_TUPLE_ELEM_24_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) i
+# define BOOST_PP_TUPLE_ELEM_24_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) j
+# define BOOST_PP_TUPLE_ELEM_24_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) k
+# define BOOST_PP_TUPLE_ELEM_24_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) l
+# define BOOST_PP_TUPLE_ELEM_24_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) m
+# define BOOST_PP_TUPLE_ELEM_24_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) n
+# define BOOST_PP_TUPLE_ELEM_24_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) o
+# define BOOST_PP_TUPLE_ELEM_24_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) p
+# define BOOST_PP_TUPLE_ELEM_24_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) q
+# define BOOST_PP_TUPLE_ELEM_24_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) r
+# define BOOST_PP_TUPLE_ELEM_24_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) s
+# define BOOST_PP_TUPLE_ELEM_24_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) t
+# define BOOST_PP_TUPLE_ELEM_24_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) u
+# define BOOST_PP_TUPLE_ELEM_24_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) v
+# define BOOST_PP_TUPLE_ELEM_24_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) w
+# define BOOST_PP_TUPLE_ELEM_24_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) x
+#
+# define BOOST_PP_TUPLE_ELEM_25_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) a
+# define BOOST_PP_TUPLE_ELEM_25_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) b
+# define BOOST_PP_TUPLE_ELEM_25_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) c
+# define BOOST_PP_TUPLE_ELEM_25_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) d
+# define BOOST_PP_TUPLE_ELEM_25_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) e
+# define BOOST_PP_TUPLE_ELEM_25_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) f
+# define BOOST_PP_TUPLE_ELEM_25_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) g
+# define BOOST_PP_TUPLE_ELEM_25_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) h
+# define BOOST_PP_TUPLE_ELEM_25_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) i
+# define BOOST_PP_TUPLE_ELEM_25_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) j
+# define BOOST_PP_TUPLE_ELEM_25_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) k
+# define BOOST_PP_TUPLE_ELEM_25_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) l
+# define BOOST_PP_TUPLE_ELEM_25_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) m
+# define BOOST_PP_TUPLE_ELEM_25_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) n
+# define BOOST_PP_TUPLE_ELEM_25_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) o
+# define BOOST_PP_TUPLE_ELEM_25_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) p
+# define BOOST_PP_TUPLE_ELEM_25_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) q
+# define BOOST_PP_TUPLE_ELEM_25_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) r
+# define BOOST_PP_TUPLE_ELEM_25_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) s
+# define BOOST_PP_TUPLE_ELEM_25_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) t
+# define BOOST_PP_TUPLE_ELEM_25_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) u
+# define BOOST_PP_TUPLE_ELEM_25_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) v
+# define BOOST_PP_TUPLE_ELEM_25_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) w
+# define BOOST_PP_TUPLE_ELEM_25_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) x
+# define BOOST_PP_TUPLE_ELEM_25_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) y
+#
+# endif
diff --git a/boost/boost/preprocessor/tuple/rem.hpp b/boost/boost/preprocessor/tuple/rem.hpp
new file mode 100644 (file)
index 0000000..3db707f
--- /dev/null
@@ -0,0 +1,54 @@
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_REM_HPP
+# define BOOST_PREPROCESSOR_TUPLE_REM_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_I(size)
+# else
+#    define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_OO((size))
+#    define BOOST_PP_TUPLE_REM_OO(par) BOOST_PP_TUPLE_REM_I ## par
+# endif
+#
+# define BOOST_PP_TUPLE_REM_I(size) BOOST_PP_TUPLE_REM_ ## size
+#
+# define BOOST_PP_TUPLE_REM_0()
+# define BOOST_PP_TUPLE_REM_1(a) a
+# define BOOST_PP_TUPLE_REM_2(a, b) a, b
+# define BOOST_PP_TUPLE_REM_3(a, b, c) a, b, c
+# define BOOST_PP_TUPLE_REM_4(a, b, c, d) a, b, c, d
+# define BOOST_PP_TUPLE_REM_5(a, b, c, d, e) a, b, c, d, e
+# define BOOST_PP_TUPLE_REM_6(a, b, c, d, e, f) a, b, c, d, e, f
+# define BOOST_PP_TUPLE_REM_7(a, b, c, d, e, f, g) a, b, c, d, e, f, g
+# define BOOST_PP_TUPLE_REM_8(a, b, c, d, e, f, g, h) a, b, c, d, e, f, g, h
+# define BOOST_PP_TUPLE_REM_9(a, b, c, d, e, f, g, h, i) a, b, c, d, e, f, g, h, i
+# define BOOST_PP_TUPLE_REM_10(a, b, c, d, e, f, g, h, i, j) a, b, c, d, e, f, g, h, i, j
+# define BOOST_PP_TUPLE_REM_11(a, b, c, d, e, f, g, h, i, j, k) a, b, c, d, e, f, g, h, i, j, k
+# define BOOST_PP_TUPLE_REM_12(a, b, c, d, e, f, g, h, i, j, k, l) a, b, c, d, e, f, g, h, i, j, k, l
+# define BOOST_PP_TUPLE_REM_13(a, b, c, d, e, f, g, h, i, j, k, l, m) a, b, c, d, e, f, g, h, i, j, k, l, m
+# define BOOST_PP_TUPLE_REM_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n) a, b, c, d, e, f, g, h, i, j, k, l, m, n
+# define BOOST_PP_TUPLE_REM_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o
+# define BOOST_PP_TUPLE_REM_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p
+# define BOOST_PP_TUPLE_REM_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q
+# define BOOST_PP_TUPLE_REM_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r
+# define BOOST_PP_TUPLE_REM_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s
+# define BOOST_PP_TUPLE_REM_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t
+# define BOOST_PP_TUPLE_REM_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u
+# define BOOST_PP_TUPLE_REM_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v
+# define BOOST_PP_TUPLE_REM_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w
+# define BOOST_PP_TUPLE_REM_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x
+# define BOOST_PP_TUPLE_REM_25(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y
+#
+# endif
index dd1c7e271dc8a822d57abc6fea95b1312181014e..57fa62c4d938c13198f5e2ff28e4cd2f47891c79 100644 (file)
@@ -1,69 +1,63 @@
-#ifndef BOOST_PREPROCESSOR_TUPLE_REVERSE_HPP
-#define BOOST_PREPROCESSOR_TUPLE_REVERSE_HPP
-
-/* Copyright (C) 2002
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-/** <p>Tuple reversal.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_TUPLE_REVERSE(3,(A,B,C))
-</pre>
-
-<p>expands to <code>(C,B,A)</code>.</p>
-*/
-#define BOOST_PP_TUPLE_REVERSE(SIZE_OF_TUPLE,TUPLE) BOOST_PP_TUPLE_REVERSE_DELAY(SIZE_OF_TUPLE,TUPLE)
-
-#if defined(BOOST_NO_COMPILER_CONFIG) || !defined(__MWERKS__) || __MWERKS__ > 0x3002
-#  define BOOST_PP_TUPLE_REVERSE_DELAY(N,T) BOOST_PP_TUPLE##N##_REVERSE T
-#else
-/* This is a workaround for a CodeWarrior PP bug. Strictly speaking
- * this workaround invokes undefined behavior, but it works as desired.
- */
-#  define BOOST_PP_TUPLE_REVERSE_DELAY(N,T) BOOST_PP_TUPLE##N##_REVERSE##T
-#endif
-#define BOOST_PP_TUPLE0_REVERSE() ()
-#define BOOST_PP_TUPLE1_REVERSE(A) (A)
-#define BOOST_PP_TUPLE2_REVERSE(A,B) (B,A)
-#define BOOST_PP_TUPLE3_REVERSE(A,B,C) (C,B,A)
-#define BOOST_PP_TUPLE4_REVERSE(A,B,C,D) (D,C,B,A)
-#define BOOST_PP_TUPLE5_REVERSE(A,B,C,D,E) (E,D,C,B,A)
-#define BOOST_PP_TUPLE6_REVERSE(A,B,C,D,E,F) (F,E,D,C,B,A)
-#define BOOST_PP_TUPLE7_REVERSE(A,B,C,D,E,F,G) (G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE8_REVERSE(A,B,C,D,E,F,G,H) (H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE9_REVERSE(A,B,C,D,E,F,G,H,I) (I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE10_REVERSE(A,B,C,D,E,F,G,H,I,J) (J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE11_REVERSE(A,B,C,D,E,F,G,H,I,J,K) (K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE12_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L) (L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE13_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M) (M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE14_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N) (N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE15_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) (O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE16_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) (P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE17_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q) (Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE18_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R) (R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE19_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S) (S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE20_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T) (T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE21_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U) (U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE22_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V) (V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE23_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W) (W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE24_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) (X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE25_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y) (Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE26_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) (Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE27_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a) (a,Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE28_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b) (b,a,Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE29_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c) (c,b,a,Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE30_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d) (d,c,b,a,Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE31_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e) (e,d,c,b,a,Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#define BOOST_PP_TUPLE32_REVERSE(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f) (f,e,d,c,b,a,Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A)
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_REVERSE_HPP
+# define BOOST_PREPROCESSOR_TUPLE_REVERSE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_TUPLE_REVERSE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_TUPLE_REVERSE(size, tuple) BOOST_PP_TUPLE_REVERSE_I(size, tuple)
+#    if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+#        define BOOST_PP_TUPLE_REVERSE_I(s, t) BOOST_PP_TUPLE_REVERSE_ ## s t
+#    else
+#        define BOOST_PP_TUPLE_REVERSE_I(s, t) BOOST_PP_TUPLE_REVERSE_II(BOOST_PP_TUPLE_REVERSE_ ## s t)
+#        define BOOST_PP_TUPLE_REVERSE_II(res) res
+#    endif
+# else
+#    define BOOST_PP_TUPLE_REVERSE(size, tuple) BOOST_PP_TUPLE_REVERSE_OO((size, tuple))
+#    define BOOST_PP_TUPLE_REVERSE_OO(par) BOOST_PP_TUPLE_REVERSE_I ## par
+#    define BOOST_PP_TUPLE_REVERSE_I(s, t) BOOST_PP_TUPLE_REVERSE_ ## s ## t
+# endif
+#
+# define BOOST_PP_TUPLE_REVERSE_0() ()
+# define BOOST_PP_TUPLE_REVERSE_1(a) (a)
+# define BOOST_PP_TUPLE_REVERSE_2(a, b) (b, a)
+# define BOOST_PP_TUPLE_REVERSE_3(a, b, c) (c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_4(a, b, c, d) (d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_5(a, b, c, d, e) (e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_6(a, b, c, d, e, f) (f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_7(a, b, c, d, e, f, g) (g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_8(a, b, c, d, e, f, g, h) (h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_9(a, b, c, d, e, f, g, h, i) (i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_10(a, b, c, d, e, f, g, h, i, j) (j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_11(a, b, c, d, e, f, g, h, i, j, k) (k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_12(a, b, c, d, e, f, g, h, i, j, k, l) (l, k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_13(a, b, c, d, e, f, g, h, i, j, k, l, m) (m, l, k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n) (n, m, l, k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) (o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) (p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) (q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) (r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) (s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) (t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) (u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) (v, u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) (w, v, u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) (x, w, v, u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
+# define BOOST_PP_TUPLE_REVERSE_25(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) (y, x, w, v, u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
+#
+# endif
index fcb5546f6d77486cc1e0c018aa30fb06ecefab8a..58b52e44d78764d0af142cc74ee3eb3027b3af9e 100644 (file)
@@ -1,83 +1,63 @@
-#ifndef BOOST_PREPROCESSOR_TUPLE_TO_LIST_HPP
-#define BOOST_PREPROCESSOR_TUPLE_TO_LIST_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/list/adt.hpp>
-
-/** <p>Converts a tuple to a list.</p>
-
-<p>For example,</p>
-
-<pre>
-BOOST_PP_TUPLE_TO_LIST(3,(A,B,C))
-</pre>
-
-<p>expands to the same as</p>
-
-<pre>
-BOOST_PP_LIST_CONS(A,
-BOOST_PP_LIST_CONS(B,
-BOOST_PP_LIST_CONS(C,
-BOOST_PP_LIST_NIL)))
-</pre>
-
-<h3>See</h3>
-<ul>
-  <li>BOOST_PP_LIMIT_TUPLE</li>
-</ul>
-*/
-#define BOOST_PP_TUPLE_TO_LIST(SIZE_OF_TUPLE,TUPLE) BOOST_PP_TUPLE_TO_LIST_DELAY(SIZE_OF_TUPLE,TUPLE)
-
-#if defined(BOOST_NO_COMPILER_CONFIG) || !defined(__MWERKS__) || __MWERKS__ > 0x3002
-#  define BOOST_PP_TUPLE_TO_LIST_DELAY(N,T) BOOST_PP_TUPLE##N##_TO_LIST T
-#else
-/* This is a workaround for a CodeWarrior PP bug. Strictly speaking
- * this workaround invokes undefined behavior, but it works as desired.
- */
-#  define BOOST_PP_TUPLE_TO_LIST_DELAY(N,T) BOOST_PP_TUPLE##N##_TO_LIST##T
-#endif
-#define BOOST_PP_TUPLE0_TO_LIST() (_,_,0)
-#define BOOST_PP_TUPLE1_TO_LIST(A) (A,(_,_,0),1)
-#define BOOST_PP_TUPLE2_TO_LIST(A,B) (A,(B,(_,_,0),1),1)
-#define BOOST_PP_TUPLE3_TO_LIST(A,B,C) (A,(B,(C,(_,_,0),1),1),1)
-#define BOOST_PP_TUPLE4_TO_LIST(A,B,C,D) (A,(B,(C,(D,(_,_,0),1),1),1),1)
-#define BOOST_PP_TUPLE5_TO_LIST(A,B,C,D,E) (A,(B,(C,(D,(E,(_,_,0),1),1),1),1),1)
-#define BOOST_PP_TUPLE6_TO_LIST(A,B,C,D,E,F) (A,(B,(C,(D,(E,(F,(_,_,0),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE7_TO_LIST(A,B,C,D,E,F,G) (A,(B,(C,(D,(E,(F,(G,(_,_,0),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE8_TO_LIST(A,B,C,D,E,F,G,H) (A,(B,(C,(D,(E,(F,(G,(H,(_,_,0),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE9_TO_LIST(A,B,C,D,E,F,G,H,I) (A,(B,(C,(D,(E,(F,(G,(H,(I,(_,_,0),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE10_TO_LIST(A,B,C,D,E,F,G,H,I,J) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(_,_,0),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE11_TO_LIST(A,B,C,D,E,F,G,H,I,J,K) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(_,_,0),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE12_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE13_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE14_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE15_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE16_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE17_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE18_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE19_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE20_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(T,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE21_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(T,(U,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE22_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(T,(U,(V,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE23_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(T,(U,(V,(W,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE24_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(T,(U,(V,(W,(X,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE25_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(T,(U,(V,(W,(X,(Y,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE26_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(T,(U,(V,(W,(X,(Y,(Z,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE27_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(T,(U,(V,(W,(X,(Y,(Z,(a,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE28_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(T,(U,(V,(W,(X,(Y,(Z,(a,(b,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE29_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(T,(U,(V,(W,(X,(Y,(Z,(a,(b,(c,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE30_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(T,(U,(V,(W,(X,(Y,(Z,(a,(b,(c,(d,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE31_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(T,(U,(V,(W,(X,(Y,(Z,(a,(b,(c,(d,(e,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#define BOOST_PP_TUPLE32_TO_LIST(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f) (A,(B,(C,(D,(E,(F,(G,(H,(I,(J,(K,(L,(M,(N,(O,(P,(Q,(R,(S,(T,(U,(V,(W,(X,(Y,(Z,(a,(b,(c,(d,(e,(f,(_,_,0),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1),1)
-#endif
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Permission to copy, use, modify, sell and distribute this software is
+#  * granted provided this copyright notice appears in all copies. This
+#  * software is provided "as is" without express or implied warranty, and
+#  * with no claim as to its suitability for any purpose.
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_TO_LIST_HPP
+# define BOOST_PREPROCESSOR_TUPLE_TO_LIST_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_TUPLE_REVERSE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_I(size, tuple)
+#    if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+#        define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s t
+#    else
+#        define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_II(BOOST_PP_TUPLE_TO_LIST_ ## s t)
+#        define BOOST_PP_TUPLE_TO_LIST_II(res) res
+#    endif
+# else
+#    define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_OO((size, tuple))
+#    define BOOST_PP_TUPLE_TO_LIST_OO(par) BOOST_PP_TUPLE_TO_LIST_I ## par
+#    define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s ## t
+# endif
+#
+# define BOOST_PP_TUPLE_TO_LIST_0() BOOST_PP_NIL
+# define BOOST_PP_TUPLE_TO_LIST_1(a) (a, BOOST_PP_NIL)
+# define BOOST_PP_TUPLE_TO_LIST_2(a, b) (a, (b, BOOST_PP_NIL))
+# define BOOST_PP_TUPLE_TO_LIST_3(a, b, c) (a, (b, (c, BOOST_PP_NIL)))
+# define BOOST_PP_TUPLE_TO_LIST_4(a, b, c, d) (a, (b, (c, (d, BOOST_PP_NIL))))
+# define BOOST_PP_TUPLE_TO_LIST_5(a, b, c, d, e) (a, (b, (c, (d, (e, BOOST_PP_NIL)))))
+# define BOOST_PP_TUPLE_TO_LIST_6(a, b, c, d, e, f) (a, (b, (c, (d, (e, (f, BOOST_PP_NIL))))))
+# define BOOST_PP_TUPLE_TO_LIST_7(a, b, c, d, e, f, g) (a, (b, (c, (d, (e, (f, (g, BOOST_PP_NIL)))))))
+# define BOOST_PP_TUPLE_TO_LIST_8(a, b, c, d, e, f, g, h) (a, (b, (c, (d, (e, (f, (g, (h, BOOST_PP_NIL))))))))
+# define BOOST_PP_TUPLE_TO_LIST_9(a, b, c, d, e, f, g, h, i) (a, (b, (c, (d, (e, (f, (g, (h, (i, BOOST_PP_NIL)))))))))
+# define BOOST_PP_TUPLE_TO_LIST_10(a, b, c, d, e, f, g, h, i, j) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, BOOST_PP_NIL))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_11(a, b, c, d, e, f, g, h, i, j, k) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, BOOST_PP_NIL)))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_12(a, b, c, d, e, f, g, h, i, j, k, l) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, BOOST_PP_NIL))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_13(a, b, c, d, e, f, g, h, i, j, k, l, m) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, BOOST_PP_NIL)))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, BOOST_PP_NIL))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, BOOST_PP_NIL)))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, BOOST_PP_NIL))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, BOOST_PP_NIL)))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, BOOST_PP_NIL))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, BOOST_PP_NIL)))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, BOOST_PP_NIL))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, BOOST_PP_NIL)))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, (v, BOOST_PP_NIL))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, (v, (w, BOOST_PP_NIL)))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, (v, (w, (x, BOOST_PP_NIL))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_25(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, (v, (w, (x, (y, BOOST_PP_NIL)))))))))))))))))))))))))
+#
+# endif
index e574c1980c570ac48c6482d86f0c777550f8791d..aa99366f6c68382415201bd701e7daa9db2efb88 100644 (file)
-#ifndef BOOST_PREPROCESSOR_WHILE_HPP
-#define BOOST_PREPROCESSOR_WHILE_HPP
-
-/* Copyright (C) 2001
- * Housemarque Oy
- * http://www.housemarque.com
- *
- * Permission to copy, use, modify, sell and distribute this software is
- * granted provided this copyright notice appears in all copies. This
- * software is provided "as is" without express or implied warranty, and
- * with no claim as to its suitability for any purpose.
- *
- * See http://www.boost.org for most recent version.
- */
-
-#include <boost/preprocessor/if.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-
-/** <p>Iterates <code>OP(D,STATE)</code> while <code>PRED(D,STATE)</code> is true.</p>
-
-<p>In other words, expands to:</p>
-
-<pre>
-OP(D, ... OP(D, OP(D,STATE) ) ... )
-</pre>
-
-<p>The depth of iteration is determined by <code>PRED(D,STATE)</code>.</p>
-
-<p>For example,</p>
-
-<pre>
-#define PRED(D,STATE) BOOST_PP_LESS_D(D,BOOST_PP_TUPLE_ELEM(2,0,STATE),BOOST_PP_TUPLE_ELEM(2,1,STATE))
-#define OP(D,STATE) (BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(2,0,STATE)),BOOST_PP_TUPLE_ELEM(2,1,STATE))
-BOOST_PP_WHILE(PRED,OP,(0,3))
-</pre>
-
-<p>expands to:</p>
-
-<pre>
-(3,3)
-</pre>
-
-<h3>Legend</h3>
-<ul>
-  <li><b>STATE</b> is the current state of iteration. The state is usually a tuple.</li>
-  <li><b>PRED</b> is the condition for iteration. It must expand to a decimal
-      integer literal.</li>
-  <li><b>OP</b> is the iterated macro. Note that if the state is a tuple, then
-      OP(D,STATE) usually expands to a tuple of the same number of elements.</li>
-  <li><b>D</b> is the recursion depth and should only be used as a parameter
-      to other macros using BOOST_PP_WHILE(). Such macros include
-      BOOST_PP_ADD() and other arithmetic operations. For each macro using
-      BOOST_PP_WHILE(), there is a version of the macro, distinguished by the
-      D suffix (e.g. BOOST_PP_ADD_D()), that accepts an additional recursion
-      depth as the first parameter. This technique is necessary to avoid
-      recursively expanding the same macro again, which is not permitted by the
-      C++ preprocessor.</li>
-</ul>
-
-<h3>Automatic recursion?</h3>
-
-<p>BOOST_PP_WHILE() currently does not implement automatic recursion. The reason
-for this is that it would lead to very poor performance. The automatic recursion
-technique takes O(N) steps just to find out that the Nth recursion should be used.
-This would dramatically effect the time complexity of macros using automatic
-recursion.</p>
-
-<h3>Note</h3>
-<ul>
-  <li>The value of the D parameter may exceed BOOST_PP_LIMIT_MAG.</li>
-  <li>Using BOOST_PP_WHILE() is a bit tricky. This is due to the C++
-      preprocessor limitations. It is recommended to take a look at the
-      implementations of the various PREPROCESSOR library primitives
-      such as BOOST_PP_ADD() for additional examples.</li>
-</ul>
-
-<h3>Example</h3>
-<ul>
-  <li><a href="../../example/count_down.c">count_down.c</a></li>
-  <li><a href="../../example/linear_fib.c">linear_fib.c</a></li>
-  <li><a href="../../example/delay.c">delay.c</a></li>
-</ul>
-*/
-#define BOOST_PP_WHILE(PRED,OP,STATE) BOOST_PP_WHILE_C(PRED(1,STATE),0,STATE)(PRED,OP,OP(1,STATE))
-
-#define BOOST_PP_WHILE_C(C,D,S) BOOST_PP_IF(C,BOOST_PP_WHILE##D,S BOOST_PP_TUPLE3_EAT)
-#define BOOST_PP_WHILE0(P,O,S) BOOST_PP_WHILE_C(P(2,S),1,S)(P,O,O(2,S))
-#define BOOST_PP_WHILE1(P,O,S) BOOST_PP_WHILE_C(P(3,S),2,S)(P,O,O(3,S))
-#define BOOST_PP_WHILE2(P,O,S) BOOST_PP_WHILE_C(P(4,S),3,S)(P,O,O(4,S))
-#define BOOST_PP_WHILE3(P,O,S) BOOST_PP_WHILE_C(P(5,S),4,S)(P,O,O(5,S))
-#define BOOST_PP_WHILE4(P,O,S) BOOST_PP_WHILE_C(P(6,S),5,S)(P,O,O(6,S))
-#define BOOST_PP_WHILE5(P,O,S) BOOST_PP_WHILE_C(P(7,S),6,S)(P,O,O(7,S))
-#define BOOST_PP_WHILE6(P,O,S) BOOST_PP_WHILE_C(P(8,S),7,S)(P,O,O(8,S))
-#define BOOST_PP_WHILE7(P,O,S) BOOST_PP_WHILE_C(P(9,S),8,S)(P,O,O(9,S))
-#define BOOST_PP_WHILE8(P,O,S) BOOST_PP_WHILE_C(P(10,S),9,S)(P,O,O(10,S))
-#define BOOST_PP_WHILE9(P,O,S) BOOST_PP_WHILE_C(P(11,S),10,S)(P,O,O(11,S))
-#define BOOST_PP_WHILE10(P,O,S) BOOST_PP_WHILE_C(P(12,S),11,S)(P,O,O(12,S))
-#define BOOST_PP_WHILE11(P,O,S) BOOST_PP_WHILE_C(P(13,S),12,S)(P,O,O(13,S))
-#define BOOST_PP_WHILE12(P,O,S) BOOST_PP_WHILE_C(P(14,S),13,S)(P,O,O(14,S))
-#define BOOST_PP_WHILE13(P,O,S) BOOST_PP_WHILE_C(P(15,S),14,S)(P,O,O(15,S))
-#define BOOST_PP_WHILE14(P,O,S) BOOST_PP_WHILE_C(P(16,S),15,S)(P,O,O(16,S))
-#define BOOST_PP_WHILE15(P,O,S) BOOST_PP_WHILE_C(P(17,S),16,S)(P,O,O(17,S))
-#define BOOST_PP_WHILE16(P,O,S) BOOST_PP_WHILE_C(P(18,S),17,S)(P,O,O(18,S))
-#define BOOST_PP_WHILE17(P,O,S) BOOST_PP_WHILE_C(P(19,S),18,S)(P,O,O(19,S))
-#define BOOST_PP_WHILE18(P,O,S) BOOST_PP_WHILE_C(P(20,S),19,S)(P,O,O(20,S))
-#define BOOST_PP_WHILE19(P,O,S) BOOST_PP_WHILE_C(P(21,S),20,S)(P,O,O(21,S))
-#define BOOST_PP_WHILE20(P,O,S) BOOST_PP_WHILE_C(P(22,S),21,S)(P,O,O(22,S))
-#define BOOST_PP_WHILE21(P,O,S) BOOST_PP_WHILE_C(P(23,S),22,S)(P,O,O(23,S))
-#define BOOST_PP_WHILE22(P,O,S) BOOST_PP_WHILE_C(P(24,S),23,S)(P,O,O(24,S))
-#define BOOST_PP_WHILE23(P,O,S) BOOST_PP_WHILE_C(P(25,S),24,S)(P,O,O(25,S))
-#define BOOST_PP_WHILE24(P,O,S) BOOST_PP_WHILE_C(P(26,S),25,S)(P,O,O(26,S))
-#define BOOST_PP_WHILE25(P,O,S) BOOST_PP_WHILE_C(P(27,S),26,S)(P,O,O(27,S))
-#define BOOST_PP_WHILE26(P,O,S) BOOST_PP_WHILE_C(P(28,S),27,S)(P,O,O(28,S))
-#define BOOST_PP_WHILE27(P,O,S) BOOST_PP_WHILE_C(P(29,S),28,S)(P,O,O(29,S))
-#define BOOST_PP_WHILE28(P,O,S) BOOST_PP_WHILE_C(P(30,S),29,S)(P,O,O(30,S))
-#define BOOST_PP_WHILE29(P,O,S) BOOST_PP_WHILE_C(P(31,S),30,S)(P,O,O(31,S))
-#define BOOST_PP_WHILE30(P,O,S) BOOST_PP_WHILE_C(P(32,S),31,S)(P,O,O(32,S))
-#define BOOST_PP_WHILE31(P,O,S) BOOST_PP_WHILE_C(P(33,S),32,S)(P,O,O(33,S))
-#define BOOST_PP_WHILE32(P,O,S) BOOST_PP_WHILE_C(P(34,S),33,S)(P,O,O(34,S))
-#define BOOST_PP_WHILE33(P,O,S) BOOST_PP_WHILE_C(P(35,S),34,S)(P,O,O(35,S))
-#define BOOST_PP_WHILE34(P,O,S) BOOST_PP_WHILE_C(P(36,S),35,S)(P,O,O(36,S))
-#define BOOST_PP_WHILE35(P,O,S) BOOST_PP_WHILE_C(P(37,S),36,S)(P,O,O(37,S))
-#define BOOST_PP_WHILE36(P,O,S) BOOST_PP_WHILE_C(P(38,S),37,S)(P,O,O(38,S))
-#define BOOST_PP_WHILE37(P,O,S) BOOST_PP_WHILE_C(P(39,S),38,S)(P,O,O(39,S))
-#define BOOST_PP_WHILE38(P,O,S) BOOST_PP_WHILE_C(P(40,S),39,S)(P,O,O(40,S))
-#define BOOST_PP_WHILE39(P,O,S) BOOST_PP_WHILE_C(P(41,S),40,S)(P,O,O(41,S))
-#define BOOST_PP_WHILE40(P,O,S) BOOST_PP_WHILE_C(P(42,S),41,S)(P,O,O(42,S))
-#define BOOST_PP_WHILE41(P,O,S) BOOST_PP_WHILE_C(P(43,S),42,S)(P,O,O(43,S))
-#define BOOST_PP_WHILE42(P,O,S) BOOST_PP_WHILE_C(P(44,S),43,S)(P,O,O(44,S))
-#define BOOST_PP_WHILE43(P,O,S) BOOST_PP_WHILE_C(P(45,S),44,S)(P,O,O(45,S))
-#define BOOST_PP_WHILE44(P,O,S) BOOST_PP_WHILE_C(P(46,S),45,S)(P,O,O(46,S))
-#define BOOST_PP_WHILE45(P,O,S) BOOST_PP_WHILE_C(P(47,S),46,S)(P,O,O(47,S))
-#define BOOST_PP_WHILE46(P,O,S) BOOST_PP_WHILE_C(P(48,S),47,S)(P,O,O(48,S))
-#define BOOST_PP_WHILE47(P,O,S) BOOST_PP_WHILE_C(P(49,S),48,S)(P,O,O(49,S))
-#define BOOST_PP_WHILE48(P,O,S) BOOST_PP_WHILE_C(P(50,S),49,S)(P,O,O(50,S))
-#define BOOST_PP_WHILE49(P,O,S) BOOST_PP_WHILE_C(P(51,S),50,S)(P,O,O(51,S))
-#define BOOST_PP_WHILE50(P,O,S) BOOST_PP_WHILE_C(P(52,S),51,S)(P,O,O(52,S))
-#define BOOST_PP_WHILE51(P,O,S) BOOST_PP_WHILE_C(P(53,S),52,S)(P,O,O(53,S))
-#define BOOST_PP_WHILE52(P,O,S) BOOST_PP_WHILE_C(P(54,S),53,S)(P,O,O(54,S))
-#define BOOST_PP_WHILE53(P,O,S) BOOST_PP_WHILE_C(P(55,S),54,S)(P,O,O(55,S))
-#define BOOST_PP_WHILE54(P,O,S) BOOST_PP_WHILE_C(P(56,S),55,S)(P,O,O(56,S))
-#define BOOST_PP_WHILE55(P,O,S) BOOST_PP_WHILE_C(P(57,S),56,S)(P,O,O(57,S))
-#define BOOST_PP_WHILE56(P,O,S) BOOST_PP_WHILE_C(P(58,S),57,S)(P,O,O(58,S))
-#define BOOST_PP_WHILE57(P,O,S) BOOST_PP_WHILE_C(P(59,S),58,S)(P,O,O(59,S))
-#define BOOST_PP_WHILE58(P,O,S) BOOST_PP_WHILE_C(P(60,S),59,S)(P,O,O(60,S))
-#define BOOST_PP_WHILE59(P,O,S) BOOST_PP_WHILE_C(P(61,S),60,S)(P,O,O(61,S))
-#define BOOST_PP_WHILE60(P,O,S) BOOST_PP_WHILE_C(P(62,S),61,S)(P,O,O(62,S))
-#define BOOST_PP_WHILE61(P,O,S) BOOST_PP_WHILE_C(P(63,S),62,S)(P,O,O(63,S))
-#define BOOST_PP_WHILE62(P,O,S) BOOST_PP_WHILE_C(P(64,S),63,S)(P,O,O(64,S))
-#define BOOST_PP_WHILE63(P,O,S) BOOST_PP_WHILE_C(P(65,S),64,S)(P,O,O(65,S))
-#define BOOST_PP_WHILE64(P,O,S) BOOST_PP_WHILE_C(P(66,S),65,S)(P,O,O(66,S))
-#define BOOST_PP_WHILE65(P,O,S) BOOST_PP_WHILE_C(P(67,S),66,S)(P,O,O(67,S))
-#define BOOST_PP_WHILE66(P,O,S) BOOST_PP_WHILE_C(P(68,S),67,S)(P,O,O(68,S))
-#define BOOST_PP_WHILE67(P,O,S) BOOST_PP_WHILE_C(P(69,S),68,S)(P,O,O(69,S))
-#define BOOST_PP_WHILE68(P,O,S) BOOST_PP_WHILE_C(P(70,S),69,S)(P,O,O(70,S))
-#define BOOST_PP_WHILE69(P,O,S) BOOST_PP_WHILE_C(P(71,S),70,S)(P,O,O(71,S))
-#define BOOST_PP_WHILE70(P,O,S) BOOST_PP_WHILE_C(P(72,S),71,S)(P,O,O(72,S))
-#define BOOST_PP_WHILE71(P,O,S) BOOST_PP_WHILE_C(P(73,S),72,S)(P,O,O(73,S))
-#define BOOST_PP_WHILE72(P,O,S) BOOST_PP_WHILE_C(P(74,S),73,S)(P,O,O(74,S))
-#define BOOST_PP_WHILE73(P,O,S) BOOST_PP_WHILE_C(P(75,S),74,S)(P,O,O(75,S))
-#define BOOST_PP_WHILE74(P,O,S) BOOST_PP_WHILE_C(P(76,S),75,S)(P,O,O(76,S))
-#define BOOST_PP_WHILE75(P,O,S) BOOST_PP_WHILE_C(P(77,S),76,S)(P,O,O(77,S))
-#define BOOST_PP_WHILE76(P,O,S) BOOST_PP_WHILE_C(P(78,S),77,S)(P,O,O(78,S))
-#define BOOST_PP_WHILE77(P,O,S) BOOST_PP_WHILE_C(P(79,S),78,S)(P,O,O(79,S))
-#define BOOST_PP_WHILE78(P,O,S) BOOST_PP_WHILE_C(P(80,S),79,S)(P,O,O(80,S))
-#define BOOST_PP_WHILE79(P,O,S) BOOST_PP_WHILE_C(P(81,S),80,S)(P,O,O(81,S))
-#define BOOST_PP_WHILE80(P,O,S) BOOST_PP_WHILE_C(P(82,S),81,S)(P,O,O(82,S))
-#define BOOST_PP_WHILE81(P,O,S) BOOST_PP_WHILE_C(P(83,S),82,S)(P,O,O(83,S))
-#define BOOST_PP_WHILE82(P,O,S) BOOST_PP_WHILE_C(P(84,S),83,S)(P,O,O(84,S))
-#define BOOST_PP_WHILE83(P,O,S) BOOST_PP_WHILE_C(P(85,S),84,S)(P,O,O(85,S))
-#define BOOST_PP_WHILE84(P,O,S) BOOST_PP_WHILE_C(P(86,S),85,S)(P,O,O(86,S))
-#define BOOST_PP_WHILE85(P,O,S) BOOST_PP_WHILE_C(P(87,S),86,S)(P,O,O(87,S))
-#define BOOST_PP_WHILE86(P,O,S) BOOST_PP_WHILE_C(P(88,S),87,S)(P,O,O(88,S))
-#define BOOST_PP_WHILE87(P,O,S) BOOST_PP_WHILE_C(P(89,S),88,S)(P,O,O(89,S))
-#define BOOST_PP_WHILE88(P,O,S) BOOST_PP_WHILE_C(P(90,S),89,S)(P,O,O(90,S))
-#define BOOST_PP_WHILE89(P,O,S) BOOST_PP_WHILE_C(P(91,S),90,S)(P,O,O(91,S))
-#define BOOST_PP_WHILE90(P,O,S) BOOST_PP_WHILE_C(P(92,S),91,S)(P,O,O(92,S))
-#define BOOST_PP_WHILE91(P,O,S) BOOST_PP_WHILE_C(P(93,S),92,S)(P,O,O(93,S))
-#define BOOST_PP_WHILE92(P,O,S) BOOST_PP_WHILE_C(P(94,S),93,S)(P,O,O(94,S))
-#define BOOST_PP_WHILE93(P,O,S) BOOST_PP_WHILE_C(P(95,S),94,S)(P,O,O(95,S))
-#define BOOST_PP_WHILE94(P,O,S) BOOST_PP_WHILE_C(P(96,S),95,S)(P,O,O(96,S))
-#define BOOST_PP_WHILE95(P,O,S) BOOST_PP_WHILE_C(P(97,S),96,S)(P,O,O(97,S))
-#define BOOST_PP_WHILE96(P,O,S) BOOST_PP_WHILE_C(P(98,S),97,S)(P,O,O(98,S))
-#define BOOST_PP_WHILE97(P,O,S) BOOST_PP_WHILE_C(P(99,S),98,S)(P,O,O(99,S))
-#define BOOST_PP_WHILE98(P,O,S) BOOST_PP_WHILE_C(P(100,S),99,S)(P,O,O(100,S))
-#define BOOST_PP_WHILE99(P,O,S) BOOST_PP_WHILE_C(P(101,S),100,S)(P,O,O(101,S))
-#define BOOST_PP_WHILE100(P,O,S) BOOST_PP_WHILE_C(P(102,S),101,S)(P,O,O(102,S))
-#define BOOST_PP_WHILE101(P,O,S) BOOST_PP_WHILE_C(P(103,S),102,S)(P,O,O(103,S))
-#define BOOST_PP_WHILE102(P,O,S) BOOST_PP_WHILE_C(P(104,S),103,S)(P,O,O(104,S))
-#define BOOST_PP_WHILE103(P,O,S) BOOST_PP_WHILE_C(P(105,S),104,S)(P,O,O(105,S))
-#define BOOST_PP_WHILE104(P,O,S) BOOST_PP_WHILE_C(P(106,S),105,S)(P,O,O(106,S))
-#define BOOST_PP_WHILE105(P,O,S) BOOST_PP_WHILE_C(P(107,S),106,S)(P,O,O(107,S))
-#define BOOST_PP_WHILE106(P,O,S) BOOST_PP_WHILE_C(P(108,S),107,S)(P,O,O(108,S))
-#define BOOST_PP_WHILE107(P,O,S) BOOST_PP_WHILE_C(P(109,S),108,S)(P,O,O(109,S))
-#define BOOST_PP_WHILE108(P,O,S) BOOST_PP_WHILE_C(P(110,S),109,S)(P,O,O(110,S))
-#define BOOST_PP_WHILE109(P,O,S) BOOST_PP_WHILE_C(P(111,S),110,S)(P,O,O(111,S))
-#define BOOST_PP_WHILE110(P,O,S) BOOST_PP_WHILE_C(P(112,S),111,S)(P,O,O(112,S))
-#define BOOST_PP_WHILE111(P,O,S) BOOST_PP_WHILE_C(P(113,S),112,S)(P,O,O(113,S))
-#define BOOST_PP_WHILE112(P,O,S) BOOST_PP_WHILE_C(P(114,S),113,S)(P,O,O(114,S))
-#define BOOST_PP_WHILE113(P,O,S) BOOST_PP_WHILE_C(P(115,S),114,S)(P,O,O(115,S))
-#define BOOST_PP_WHILE114(P,O,S) BOOST_PP_WHILE_C(P(116,S),115,S)(P,O,O(116,S))
-#define BOOST_PP_WHILE115(P,O,S) BOOST_PP_WHILE_C(P(117,S),116,S)(P,O,O(117,S))
-#define BOOST_PP_WHILE116(P,O,S) BOOST_PP_WHILE_C(P(118,S),117,S)(P,O,O(118,S))
-#define BOOST_PP_WHILE117(P,O,S) BOOST_PP_WHILE_C(P(119,S),118,S)(P,O,O(119,S))
-#define BOOST_PP_WHILE118(P,O,S) BOOST_PP_WHILE_C(P(120,S),119,S)(P,O,O(120,S))
-#define BOOST_PP_WHILE119(P,O,S) BOOST_PP_WHILE_C(P(121,S),120,S)(P,O,O(121,S))
-#define BOOST_PP_WHILE120(P,O,S) BOOST_PP_WHILE_C(P(122,S),121,S)(P,O,O(122,S))
-#define BOOST_PP_WHILE121(P,O,S) BOOST_PP_WHILE_C(P(123,S),122,S)(P,O,O(123,S))
-#define BOOST_PP_WHILE122(P,O,S) BOOST_PP_WHILE_C(P(124,S),123,S)(P,O,O(124,S))
-#define BOOST_PP_WHILE123(P,O,S) BOOST_PP_WHILE_C(P(125,S),124,S)(P,O,O(125,S))
-#define BOOST_PP_WHILE124(P,O,S) BOOST_PP_WHILE_C(P(126,S),125,S)(P,O,O(126,S))
-#define BOOST_PP_WHILE125(P,O,S) BOOST_PP_WHILE_C(P(127,S),126,S)(P,O,O(127,S))
-#define BOOST_PP_WHILE126(P,O,S) BOOST_PP_WHILE_C(P(128,S),127,S)(P,O,O(128,S))
-#define BOOST_PP_WHILE127(P,O,S) BOOST_PP_WHILE_C(P(129,S),128,S)(P,O,O(129,S))
-#define BOOST_PP_WHILE128(P,O,S) BOOST_PP_WHILE_C(P(130,S),129,S)(P,O,O(130,S))
-#define BOOST_PP_WHILE129(P,O,S) BOOST_PP_WHILE_C(P(131,S),130,S)(P,O,O(131,S))
-#define BOOST_PP_WHILE130(P,O,S) BOOST_PP_WHILE_C(P(132,S),131,S)(P,O,O(132,S))
-#define BOOST_PP_WHILE131(P,O,S) BOOST_PP_WHILE_C(P(133,S),132,S)(P,O,O(133,S))
-#define BOOST_PP_WHILE132(P,O,S) BOOST_PP_WHILE_C(P(134,S),133,S)(P,O,O(134,S))
-#define BOOST_PP_WHILE133(P,O,S) BOOST_PP_WHILE_C(P(135,S),134,S)(P,O,O(135,S))
-#define BOOST_PP_WHILE134(P,O,S) BOOST_PP_WHILE_C(P(136,S),135,S)(P,O,O(136,S))
-#define BOOST_PP_WHILE135(P,O,S) BOOST_PP_WHILE_C(P(137,S),136,S)(P,O,O(137,S))
-#define BOOST_PP_WHILE136(P,O,S) BOOST_PP_WHILE_C(P(138,S),137,S)(P,O,O(138,S))
-#define BOOST_PP_WHILE137(P,O,S) BOOST_PP_WHILE_C(P(139,S),138,S)(P,O,O(139,S))
-#define BOOST_PP_WHILE138(P,O,S) BOOST_PP_WHILE_C(P(140,S),139,S)(P,O,O(140,S))
-#define BOOST_PP_WHILE139(P,O,S) BOOST_PP_WHILE_C(P(141,S),140,S)(P,O,O(141,S))
-#define BOOST_PP_WHILE140(P,O,S) BOOST_PP_WHILE_C(P(142,S),141,S)(P,O,O(142,S))
-#define BOOST_PP_WHILE141(P,O,S) BOOST_PP_WHILE_C(P(143,S),142,S)(P,O,O(143,S))
-#define BOOST_PP_WHILE142(P,O,S) BOOST_PP_WHILE_C(P(144,S),143,S)(P,O,O(144,S))
-#define BOOST_PP_WHILE143(P,O,S) BOOST_PP_WHILE_C(P(145,S),144,S)(P,O,O(145,S))
-#define BOOST_PP_WHILE144(P,O,S) BOOST_PP_WHILE_C(P(146,S),145,S)(P,O,O(146,S))
-#define BOOST_PP_WHILE145(P,O,S) BOOST_PP_WHILE_C(P(147,S),146,S)(P,O,O(147,S))
-#define BOOST_PP_WHILE146(P,O,S) BOOST_PP_WHILE_C(P(148,S),147,S)(P,O,O(148,S))
-#define BOOST_PP_WHILE147(P,O,S) BOOST_PP_WHILE_C(P(149,S),148,S)(P,O,O(149,S))
-#define BOOST_PP_WHILE148(P,O,S) BOOST_PP_WHILE_C(P(150,S),149,S)(P,O,O(150,S))
-#define BOOST_PP_WHILE149(P,O,S) BOOST_PP_WHILE_C(P(151,S),150,S)(P,O,O(151,S))
-#define BOOST_PP_WHILE150(P,O,S) BOOST_PP_WHILE_C(P(152,S),151,S)(P,O,O(152,S))
-#define BOOST_PP_WHILE151(P,O,S) BOOST_PP_WHILE_C(P(153,S),152,S)(P,O,O(153,S))
-#define BOOST_PP_WHILE152(P,O,S) BOOST_PP_WHILE_C(P(154,S),153,S)(P,O,O(154,S))
-#define BOOST_PP_WHILE153(P,O,S) BOOST_PP_WHILE_C(P(155,S),154,S)(P,O,O(155,S))
-#define BOOST_PP_WHILE154(P,O,S) BOOST_PP_WHILE_C(P(156,S),155,S)(P,O,O(156,S))
-#define BOOST_PP_WHILE155(P,O,S) BOOST_PP_WHILE_C(P(157,S),156,S)(P,O,O(157,S))
-#define BOOST_PP_WHILE156(P,O,S) BOOST_PP_WHILE_C(P(158,S),157,S)(P,O,O(158,S))
-#define BOOST_PP_WHILE157(P,O,S) BOOST_PP_WHILE_C(P(159,S),158,S)(P,O,O(159,S))
-#define BOOST_PP_WHILE158(P,O,S) BOOST_PP_WHILE_C(P(160,S),159,S)(P,O,O(160,S))
-#define BOOST_PP_WHILE159(P,O,S) BOOST_PP_WHILE_C(P(161,S),160,S)(P,O,O(161,S))
-#define BOOST_PP_WHILE160(P,O,S) BOOST_PP_WHILE_C(P(162,S),161,S)(P,O,O(162,S))
-#define BOOST_PP_WHILE161(P,O,S) BOOST_PP_WHILE_C(P(163,S),162,S)(P,O,O(163,S))
-#define BOOST_PP_WHILE162(P,O,S) BOOST_PP_WHILE_C(P(164,S),163,S)(P,O,O(164,S))
-#define BOOST_PP_WHILE163(P,O,S) BOOST_PP_WHILE_C(P(165,S),164,S)(P,O,O(165,S))
-#define BOOST_PP_WHILE164(P,O,S) BOOST_PP_WHILE_C(P(166,S),165,S)(P,O,O(166,S))
-#define BOOST_PP_WHILE165(P,O,S) BOOST_PP_WHILE_C(P(167,S),166,S)(P,O,O(167,S))
-#define BOOST_PP_WHILE166(P,O,S) BOOST_PP_WHILE_C(P(168,S),167,S)(P,O,O(168,S))
-#define BOOST_PP_WHILE167(P,O,S) BOOST_PP_WHILE_C(P(169,S),168,S)(P,O,O(169,S))
-#define BOOST_PP_WHILE168(P,O,S) BOOST_PP_WHILE_C(P(170,S),169,S)(P,O,O(170,S))
-#define BOOST_PP_WHILE169(P,O,S) BOOST_PP_WHILE_C(P(171,S),170,S)(P,O,O(171,S))
-#define BOOST_PP_WHILE170(P,O,S) BOOST_PP_WHILE_C(P(172,S),171,S)(P,O,O(172,S))
-#define BOOST_PP_WHILE171(P,O,S) BOOST_PP_WHILE_C(P(173,S),172,S)(P,O,O(173,S))
-#define BOOST_PP_WHILE172(P,O,S) BOOST_PP_WHILE_C(P(174,S),173,S)(P,O,O(174,S))
-#define BOOST_PP_WHILE173(P,O,S) BOOST_PP_WHILE_C(P(175,S),174,S)(P,O,O(175,S))
-#define BOOST_PP_WHILE174(P,O,S) BOOST_PP_WHILE_C(P(176,S),175,S)(P,O,O(176,S))
-#define BOOST_PP_WHILE175(P,O,S) BOOST_PP_WHILE_C(P(177,S),176,S)(P,O,O(177,S))
-#define BOOST_PP_WHILE176(P,O,S) BOOST_PP_WHILE_C(P(178,S),177,S)(P,O,O(178,S))
-#define BOOST_PP_WHILE177(P,O,S) BOOST_PP_WHILE_C(P(179,S),178,S)(P,O,O(179,S))
-#define BOOST_PP_WHILE178(P,O,S) BOOST_PP_WHILE_C(P(180,S),179,S)(P,O,O(180,S))
-#define BOOST_PP_WHILE179(P,O,S) BOOST_PP_WHILE_C(P(181,S),180,S)(P,O,O(181,S))
-#define BOOST_PP_WHILE180(P,O,S) BOOST_PP_WHILE_C(P(182,S),181,S)(P,O,O(182,S))
-#define BOOST_PP_WHILE181(P,O,S) BOOST_PP_WHILE_C(P(183,S),182,S)(P,O,O(183,S))
-#define BOOST_PP_WHILE182(P,O,S) BOOST_PP_WHILE_C(P(184,S),183,S)(P,O,O(184,S))
-#define BOOST_PP_WHILE183(P,O,S) BOOST_PP_WHILE_C(P(185,S),184,S)(P,O,O(185,S))
-#define BOOST_PP_WHILE184(P,O,S) BOOST_PP_WHILE_C(P(186,S),185,S)(P,O,O(186,S))
-#define BOOST_PP_WHILE185(P,O,S) BOOST_PP_WHILE_C(P(187,S),186,S)(P,O,O(187,S))
-#define BOOST_PP_WHILE186(P,O,S) BOOST_PP_WHILE_C(P(188,S),187,S)(P,O,O(188,S))
-#define BOOST_PP_WHILE187(P,O,S) BOOST_PP_WHILE_C(P(189,S),188,S)(P,O,O(189,S))
-#define BOOST_PP_WHILE188(P,O,S) BOOST_PP_WHILE_C(P(190,S),189,S)(P,O,O(190,S))
-#define BOOST_PP_WHILE189(P,O,S) BOOST_PP_WHILE_C(P(191,S),190,S)(P,O,O(191,S))
-#define BOOST_PP_WHILE190(P,O,S) BOOST_PP_WHILE_C(P(192,S),191,S)(P,O,O(192,S))
-#define BOOST_PP_WHILE191(P,O,S) BOOST_PP_WHILE_C(P(193,S),192,S)(P,O,O(193,S))
-#define BOOST_PP_WHILE192(P,O,S) BOOST_PP_WHILE_C(P(194,S),193,S)(P,O,O(194,S))
-#define BOOST_PP_WHILE193(P,O,S) BOOST_PP_WHILE_C(P(195,S),194,S)(P,O,O(195,S))
-#define BOOST_PP_WHILE194(P,O,S) BOOST_PP_WHILE_C(P(196,S),195,S)(P,O,O(196,S))
-#define BOOST_PP_WHILE195(P,O,S) BOOST_PP_WHILE_C(P(197,S),196,S)(P,O,O(197,S))
-#define BOOST_PP_WHILE196(P,O,S) BOOST_PP_WHILE_C(P(198,S),197,S)(P,O,O(198,S))
-#define BOOST_PP_WHILE197(P,O,S) BOOST_PP_WHILE_C(P(199,S),198,S)(P,O,O(199,S))
-#define BOOST_PP_WHILE198(P,O,S) BOOST_PP_WHILE_C(P(200,S),199,S)(P,O,O(200,S))
-#define BOOST_PP_WHILE199(P,O,S) BOOST_PP_WHILE_C(P(201,S),200,S)(P,O,O(201,S))
-#define BOOST_PP_WHILE200(P,O,S) BOOST_PP_WHILE_C(P(202,S),201,S)(P,O,O(202,S))
-#define BOOST_PP_WHILE201(P,O,S) BOOST_PP_WHILE_C(P(203,S),202,S)(P,O,O(203,S))
-#define BOOST_PP_WHILE202(P,O,S) BOOST_PP_WHILE_C(P(204,S),203,S)(P,O,O(204,S))
-#define BOOST_PP_WHILE203(P,O,S) BOOST_PP_WHILE_C(P(205,S),204,S)(P,O,O(205,S))
-#define BOOST_PP_WHILE204(P,O,S) BOOST_PP_WHILE_C(P(206,S),205,S)(P,O,O(206,S))
-#define BOOST_PP_WHILE205(P,O,S) BOOST_PP_WHILE_C(P(207,S),206,S)(P,O,O(207,S))
-#define BOOST_PP_WHILE206(P,O,S) BOOST_PP_WHILE_C(P(208,S),207,S)(P,O,O(208,S))
-#define BOOST_PP_WHILE207(P,O,S) BOOST_PP_WHILE_C(P(209,S),208,S)(P,O,O(209,S))
-#define BOOST_PP_WHILE208(P,O,S) BOOST_PP_WHILE_C(P(210,S),209,S)(P,O,O(210,S))
-#define BOOST_PP_WHILE209(P,O,S) BOOST_PP_WHILE_C(P(211,S),210,S)(P,O,O(211,S))
-#define BOOST_PP_WHILE210(P,O,S) BOOST_PP_WHILE_C(P(212,S),211,S)(P,O,O(212,S))
-#define BOOST_PP_WHILE211(P,O,S) BOOST_PP_WHILE_C(P(213,S),212,S)(P,O,O(213,S))
-#define BOOST_PP_WHILE212(P,O,S) BOOST_PP_WHILE_C(P(214,S),213,S)(P,O,O(214,S))
-#define BOOST_PP_WHILE213(P,O,S) BOOST_PP_WHILE_C(P(215,S),214,S)(P,O,O(215,S))
-#define BOOST_PP_WHILE214(P,O,S) BOOST_PP_WHILE_C(P(216,S),215,S)(P,O,O(216,S))
-#define BOOST_PP_WHILE215(P,O,S) BOOST_PP_WHILE_C(P(217,S),216,S)(P,O,O(217,S))
-#define BOOST_PP_WHILE216(P,O,S) BOOST_PP_WHILE_C(P(218,S),217,S)(P,O,O(218,S))
-#define BOOST_PP_WHILE217(P,O,S) BOOST_PP_WHILE_C(P(219,S),218,S)(P,O,O(219,S))
-#define BOOST_PP_WHILE218(P,O,S) BOOST_PP_WHILE_C(P(220,S),219,S)(P,O,O(220,S))
-#define BOOST_PP_WHILE219(P,O,S) BOOST_PP_WHILE_C(P(221,S),220,S)(P,O,O(221,S))
-#define BOOST_PP_WHILE220(P,O,S) BOOST_PP_WHILE_C(P(222,S),221,S)(P,O,O(222,S))
-#define BOOST_PP_WHILE221(P,O,S) BOOST_PP_WHILE_C(P(223,S),222,S)(P,O,O(223,S))
-#define BOOST_PP_WHILE222(P,O,S) BOOST_PP_WHILE_C(P(224,S),223,S)(P,O,O(224,S))
-#define BOOST_PP_WHILE223(P,O,S) BOOST_PP_WHILE_C(P(225,S),224,S)(P,O,O(225,S))
-#define BOOST_PP_WHILE224(P,O,S) BOOST_PP_WHILE_C(P(226,S),225,S)(P,O,O(226,S))
-#define BOOST_PP_WHILE225(P,O,S) BOOST_PP_WHILE_C(P(227,S),226,S)(P,O,O(227,S))
-#define BOOST_PP_WHILE226(P,O,S) BOOST_PP_WHILE_C(P(228,S),227,S)(P,O,O(228,S))
-#define BOOST_PP_WHILE227(P,O,S) BOOST_PP_WHILE_C(P(229,S),228,S)(P,O,O(229,S))
-#define BOOST_PP_WHILE228(P,O,S) BOOST_PP_WHILE_C(P(230,S),229,S)(P,O,O(230,S))
-#define BOOST_PP_WHILE229(P,O,S) BOOST_PP_WHILE_C(P(231,S),230,S)(P,O,O(231,S))
-#define BOOST_PP_WHILE230(P,O,S) BOOST_PP_WHILE_C(P(232,S),231,S)(P,O,O(232,S))
-#define BOOST_PP_WHILE231(P,O,S) BOOST_PP_WHILE_C(P(233,S),232,S)(P,O,O(233,S))
-#define BOOST_PP_WHILE232(P,O,S) BOOST_PP_WHILE_C(P(234,S),233,S)(P,O,O(234,S))
-#define BOOST_PP_WHILE233(P,O,S) BOOST_PP_WHILE_C(P(235,S),234,S)(P,O,O(235,S))
-#define BOOST_PP_WHILE234(P,O,S) BOOST_PP_WHILE_C(P(236,S),235,S)(P,O,O(236,S))
-#define BOOST_PP_WHILE235(P,O,S) BOOST_PP_WHILE_C(P(237,S),236,S)(P,O,O(237,S))
-#define BOOST_PP_WHILE236(P,O,S) BOOST_PP_WHILE_C(P(238,S),237,S)(P,O,O(238,S))
-#define BOOST_PP_WHILE237(P,O,S) BOOST_PP_WHILE_C(P(239,S),238,S)(P,O,O(239,S))
-#define BOOST_PP_WHILE238(P,O,S) BOOST_PP_WHILE_C(P(240,S),239,S)(P,O,O(240,S))
-#define BOOST_PP_WHILE239(P,O,S) BOOST_PP_WHILE_C(P(241,S),240,S)(P,O,O(241,S))
-#define BOOST_PP_WHILE240(P,O,S) BOOST_PP_WHILE_C(P(242,S),241,S)(P,O,O(242,S))
-#define BOOST_PP_WHILE241(P,O,S) BOOST_PP_WHILE_C(P(243,S),242,S)(P,O,O(243,S))
-#define BOOST_PP_WHILE242(P,O,S) BOOST_PP_WHILE_C(P(244,S),243,S)(P,O,O(244,S))
-#define BOOST_PP_WHILE243(P,O,S) BOOST_PP_WHILE_C(P(245,S),244,S)(P,O,O(245,S))
-#define BOOST_PP_WHILE244(P,O,S) BOOST_PP_WHILE_C(P(246,S),245,S)(P,O,O(246,S))
-#define BOOST_PP_WHILE245(P,O,S) BOOST_PP_WHILE_C(P(247,S),246,S)(P,O,O(247,S))
-#define BOOST_PP_WHILE246(P,O,S) BOOST_PP_WHILE_C(P(248,S),247,S)(P,O,O(248,S))
-#define BOOST_PP_WHILE247(P,O,S) BOOST_PP_WHILE_C(P(249,S),248,S)(P,O,O(249,S))
-#define BOOST_PP_WHILE248(P,O,S) BOOST_PP_WHILE_C(P(250,S),249,S)(P,O,O(250,S))
-#define BOOST_PP_WHILE249(P,O,S) BOOST_PP_WHILE_C(P(251,S),250,S)(P,O,O(251,S))
-#define BOOST_PP_WHILE250(P,O,S) BOOST_PP_WHILE_C(P(252,S),251,S)(P,O,O(252,S))
-#define BOOST_PP_WHILE251(P,O,S) BOOST_PP_WHILE_C(P(253,S),252,S)(P,O,O(253,S))
-#define BOOST_PP_WHILE252(P,O,S) BOOST_PP_WHILE_C(P(254,S),253,S)(P,O,O(254,S))
-#define BOOST_PP_WHILE253(P,O,S) BOOST_PP_WHILE_C(P(255,S),254,S)(P,O,O(255,S))
-#define BOOST_PP_WHILE254(P,O,S) BOOST_PP_WHILE_C(P(256,S),255,S)(P,O,O(256,S))
-#define BOOST_PP_WHILE255(P,O,S) BOOST_PP_WHILE_C(P(257,S),256,S)(P,O,O(257,S))
-#define BOOST_PP_WHILE256(P,O,S) BOOST_PP_WHILE_C(P(258,S),257,S)(P,O,O(258,S))
-#define BOOST_PP_WHILE257(P,O,S) BOOST_PP_WHILE_C(P(259,S),258,S)(P,O,O(259,S))
-#define BOOST_PP_WHILE258(P,O,S) (RECURSION DEPTH EXCEEDED!)
-#define BOOST_PP_WHILE259(P,O,S) (RECURSION DEPTH EXCEEDED!)
-#endif
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.  Permission to copy, use,        *
+#  *     modify, sell, and distribute this software is granted provided       *
+#  *     this copyright notice appears in all copies.  This software is       *
+#  *     provided "as is" without express or implied warranty, and with       *
+#  *     no claim at to its suitability for any purpose.                      *
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_WHILE_HPP
+# define BOOST_PREPROCESSOR_WHILE_HPP
+#
+# include <boost/preprocessor/control/while.hpp>
+#
+# endif
index e8611e62e1356ade392dbbe59fa7c96be0219cfb..2f66c61bcbd0d39cfc7474b1e815a6194b5cbb10 100644 (file)
@@ -233,10 +233,10 @@ namespace boost {
     void constraints() {
       function_requires< ReadablePropertyMapConcept<PMap, Key> >();
       function_requires< ConvertibleConcept<Category, LvalueTag> >();
-      
+
+      typedef typename property_traits<PMap>::value_type value_type;
       typedef typename require_same<
-        const typename property_traits<PMap>::value_type&,
-        reference>::type req;
+        const value_type&, reference>::type req;
 
       reference ref = pmap[k];
       ignore_unused_variable_warning(ref);
@@ -266,8 +266,10 @@ namespace boost {
     void constraints() { 
       boost::function_requires< ReadWritePropertyMapConcept<PMap, Key> >();
       boost::function_requires<ConvertibleConcept<Category, LvalueTag> >();
+      
+      typedef typename property_traits<PMap>::value_type value_type;
       typedef typename require_same<
-        typename property_traits<PMap>::value_type&,
+        value_type&,
         reference>::type req;
 
       reference ref = pmap[k];
index 60a834b70de498d1f0b4f2e3cacd67423748ed25..a8d996c99619000caa3600b198a6f1a1d6ee07d3 100644 (file)
@@ -52,7 +52,7 @@ private:
     T* t_;
 };
 
-# if defined(__BORLANDC__) && (__BORLANDC__ <= 0x560)
+# if defined(__BORLANDC__) && (__BORLANDC__ <= 0x570)
 #  define BOOST_REF_CONST
 # else
 #  define BOOST_REF_CONST const
index b07ca322ac2b2784ae60688c36051fc3a6e44027..c1313958124565f029f47993b8368dfc5cbbbc7f 100644 (file)
@@ -451,6 +451,11 @@ class match_results;
 // regular expression:
 //
 
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable : 4251 4231 4660)
+#endif
+
 #ifdef BOOST_REGEX_NO_FWD
 template <class charT, class traits = regex_traits<charT>, class Allocator = BOOST_DEFAULT_ALLOCATOR(charT) >
 #else
@@ -519,7 +524,7 @@ public:
       set_expression(first, last, f | regbase::use_except);
       return *this;
    }
-#ifndef BOOST_NO_MEMBER_TEMPLATES
+#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !(defined(__IBMCPP__) && (__IBMCPP__ <= 502))
 
    template <class ST, class SA>
    unsigned int BOOST_REGEX_CALL set_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regbase::normal)
@@ -703,6 +708,10 @@ protected:
    static bool BOOST_REGEX_CALL can_start(charT c, const unsigned char* _map, unsigned char mask, const re_detail::_narrow_type&);
 };
 
+#ifdef BOOST_MSVC
+#pragma warning (pop)
+#endif
+
 template <class charT, class traits, class Allocator>
 inline void BOOST_REGEX_CALL reg_expression<charT, traits, Allocator>::swap(reg_expression& that)throw()
 {
index 84eb058d03a2787ff3563ed1def4493e74c785f4..2f46159ff3675a21369d42854af14238bd8f47d8 100644 (file)
 #  if !defined(__CONSOLE__) && !defined(_NO_VCL)
 #     define BOOST_REGEX_USE_VCL
 #  endif
+   //
+   // if this isn't Win32 then don't automatically select link
+   // libraries:
+   //
+#  ifndef _Windows
+#     ifndef BOOST_REGEX_NO_LIB
+#        define BOOST_REGEX_NO_LIB
+#     endif
+#     ifndef BOOST_REGEX_STATIC_LINK
+#        define BOOST_REGEX_STATIC_LINK
+#     endif
+#  endif
+
 #endif
 
 /*****************************************************************************
@@ -629,3 +642,4 @@ inline void pointer_construct(T* p, const T& t)
 
 
 
+
index b286a947f9ebebfe991d1022fc7275acde4e76c3..a99a29779a6b4c065214f66ea65a6d96662379f8 100644 (file)
@@ -68,14 +68,7 @@ template class BOOST_REGEX_DECL match_results<std::basic_string<BOOST_REGEX_CHAR
 #pragma warning(push)
 #pragma warning(disable : 4251 4231 4660)
 
-//
-// these next two lines are deliberate: raw_storage is used only internally
-// by reg_expression it is not exported from the dll:
-//
-template class re_detail::raw_storage< BOOST_DEFAULT_ALLOCATOR(BOOST_REGEX_CHAR_T) >;
-template class BOOST_REGEX_DECL re_detail::raw_storage< BOOST_DEFAULT_ALLOCATOR(BOOST_REGEX_CHAR_T) >;
-
-template class BOOST_REGEX_DECL regex_traits< BOOST_REGEX_CHAR_T >;
+//template class BOOST_REGEX_DECL regex_traits< BOOST_REGEX_CHAR_T >;
 template class BOOST_REGEX_DECL reg_expression< BOOST_REGEX_CHAR_T >;
 template class BOOST_REGEX_DECL re_detail::match_results_base<BOOST_REGEX_CHAR_T const*, BOOST_DEFAULT_ALLOCATOR(re_detail::def_alloc_param_traits<BOOST_REGEX_CHAR_T const*>::type)>;
 template class BOOST_REGEX_DECL re_detail::match_results_base<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, BOOST_DEFAULT_ALLOCATOR(re_detail::def_alloc_param_traits<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator>::type)>;
@@ -168,3 +161,4 @@ template void BOOST_REGEX_CALL match_results_base<iterator, Allocator>::cow();
 
 #endif // BOOST_REGEX_NO_EXTERNAL_TEMPLATES
  
+
index 6f2f25fa1d293bcb0f716f358aa2990fa23000d8..a0e6b48ce1e55c736b3e4b0b2cd54874ee556dd5 100644 (file)
 #ifndef BOOST_REGEX_MATCH_HPP
 #define BOOST_REGEX_MATCH_HPP
 
+#ifndef BOOST_REGEX_MAX_STATE_COUNT
+#  define BOOST_REGEX_MAX_STATE_COUNT 100000000
+#endif
+
+#include <boost/limits.hpp>
+
 
 namespace boost{
    namespace re_detail{
@@ -175,6 +181,7 @@ class _priv_match_data
 public:
    typedef typename boost::detail::rebind_allocator<int, Allocator>::type i_alloc;
    typedef typename boost::detail::rebind_allocator<iterator, Allocator>::type it_alloc;
+   typedef typename regex_iterator_traits<iterator>::difference_type difference_type;
 
    match_results_base<iterator, Allocator> temp_match;
    // failure stacks:
@@ -184,9 +191,11 @@ public:
    jstack<int, Allocator> prev_acc;
    int* accumulators;
    unsigned int caccumulators;
+   difference_type state_count;
+   difference_type max_state_count;
    iterator* loop_starts;
 
-   _priv_match_data(const match_results_base<iterator, Allocator>&);
+   _priv_match_data(const match_results_base<iterator, Allocator>&, iterator, iterator, std::size_t);
    
    ~_priv_match_data()
    {
@@ -202,15 +211,34 @@ public:
    {
       return loop_starts;
    }
+   void estimate_max_state_count(iterator a, iterator b, std::size_t states, std::random_access_iterator_tag*)
+   {
+      difference_type dist = std::distance(a,b);
+      states *= states;
+      difference_type lim = std::numeric_limits<difference_type>::max() - 1000 - states;
+      if(dist > (difference_type)(lim / states))
+         max_state_count = lim;
+      else
+         max_state_count = 1000 + states * dist;
+   }
+   void estimate_max_state_count(iterator a, iterator b, std::size_t states, void*)
+   {
+      // we don't know how long the sequence is:
+      max_state_count = BOOST_REGEX_MAX_STATE_COUNT;
+   }
 };
 
 template <class iterator, class Allocator>
-_priv_match_data<iterator, Allocator>::_priv_match_data(const match_results_base<iterator, Allocator>& m)
+_priv_match_data<iterator, Allocator>::_priv_match_data(const match_results_base<iterator, Allocator>& m, iterator a, iterator b, std::size_t states)
   : temp_match(m), matches(64, m.allocator()), prev_pos(64, m.allocator()), prev_record(64, m.allocator())
 {
+  typedef typename regex_iterator_traits<iterator>::iterator_category category;
+  
   accumulators = 0;
   caccumulators = 0;
   loop_starts = 0;
+  state_count = 0;
+  estimate_max_state_count(a, b, states, static_cast<category*>(0));
 }
 
 template <class iterator, class Allocator>
@@ -289,11 +317,6 @@ bool query_match_aux(iterator first,
                      _priv_match_data<iterator, Allocator>& pd,
                      iterator* restart)
 {
-# ifdef BOOST_MSVC
-#  pragma warning(push)
-#  pragma warning(disable: 4127)
-#endif
-
    typedef access_t<charT, traits, Allocator2> access;
 
    if(e.flags() & regbase::failbit)
@@ -302,6 +325,7 @@ bool query_match_aux(iterator first,
    typedef typename traits::size_type traits_size_type;
    typedef typename traits::uchar_type traits_uchar_type;
    typedef typename is_byte<charT>::width_type width_type;
+   typedef typename re_detail::regex_iterator_traits<iterator>::difference_type difference_type;
 
    // declare some local aliases to reduce pointer loads
    // good optimising compilers should make this unnecessary!!
@@ -311,6 +335,7 @@ bool query_match_aux(iterator first,
    jstack<int, Allocator>& prev_acc = pd.prev_acc;
    match_results_base<iterator, Allocator>& temp_match = pd.temp_match;
    temp_match.set_first(first);
+   difference_type& state_count = pd.state_count;
 
    const re_syntax_base* ptr = access::first(e);
    bool match_found = false;
@@ -342,6 +367,7 @@ bool query_match_aux(iterator first,
    while(first != last)
    {
       jm_assert(ptr);
+      ++state_count;
       switch(ptr->type)
       {
       case syntax_element_match:
@@ -821,6 +847,7 @@ bool query_match_aux(iterator first,
    while(true)
    {
       jm_assert(ptr);
+      ++state_count;
       switch(ptr->type)
       {
       case syntax_element_match:
@@ -934,6 +961,26 @@ bool query_match_aux(iterator first,
 
    failure:
 
+   //
+   // check to see if we've been searching too many states:
+   //
+   if(state_count >= pd.max_state_count)
+   {
+#ifndef BOOST_NO_EXCEPTIONS
+      throw std::runtime_error("Max regex search depth exceeded.");
+#else
+      while(matches.empty() == false)
+         matches.pop();
+      while(prev_pos.empty() == false)
+         prev_pos.pop();
+      while(prev_record.empty() == false)
+         prev_record.pop();
+      while(prev_acc.empty() == false)
+         prev_acc.pop();
+      return false;
+#endif
+   }
+
    //
    // check for possible partial match:
    //
@@ -1042,14 +1089,14 @@ bool query_match_aux(iterator first,
    }
 
    if(match_found || have_partial_match)
+   {
+      pd.state_count = 0;
       return true;
+   }
 
    // if we get to here then everything has failed
    // and no match was found:
    return false;
-# ifdef BOOST_MSVC
-#  pragma warning(pop)
-#endif
 }
 #if defined(BOOST_REGEX_NO_TEMPLATE_SWITCH_MERGE)
 } // namespace
@@ -1185,7 +1232,7 @@ unsigned int reg_grep2(Predicate foo, I first, I last, const reg_expression<char
 
    flags |= match_init;
 
-   _priv_match_data<I, A2> pd(m);
+   _priv_match_data<I, A2> pd(m, first, last, e.size());
 
    const unsigned char* _map = access::get_map(e);
    unsigned int type;
@@ -1656,7 +1703,7 @@ bool regex_match(iterator first, iterator last, match_results<iterator, Allocato
       m.set_line(1, first);
    }
    flags |= match_all; // must match all of input.
-   re_detail::_priv_match_data<iterator, Allocator> pd(m);
+   re_detail::_priv_match_data<iterator, Allocator> pd(m, first, last, e.size());
    iterator restart;
    bool result = re_detail::query_match_aux(first, last, m, e, flags, pd, &restart);
    return result;
@@ -1933,3 +1980,5 @@ inline unsigned int regex_grep(bool (*foo)(const match_results<std::basic_string
 
 
 
+
+
index 6c9b5d9a576777517e66d5a8fa74852d807f850b..dd16ddddb6cf4af9907e41ee33f5138a4c56edad 100644 (file)
@@ -31,12 +31,19 @@ namespace boost{
    #pragma option push -a8 -b -Vx -Ve -pc
 #endif
 
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable : 4275)
+#endif
 class BOOST_REGEX_DECL bad_pattern : public std::runtime_error
 {
 public:
    explicit bad_pattern(const std::string& s) : std::runtime_error(s){};
    ~bad_pattern() throw();
 };
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
 
 class BOOST_REGEX_DECL bad_expression : public bad_pattern
 {
index 07aea147ed6115fbd7045abc0fb4430d9037de3d..679ad94559392e7ae43d248b4b356e21d1cb8115 100644 (file)
@@ -53,9 +53,9 @@ class regex_traits;
 template <class charT, class traits = regex_traits<charT>, class Allocator = BOOST_DEFAULT_ALLOCATOR(charT) >
 class reg_expression;
 
-typedef reg_expression<char, regex_traits<char>, BOOST_DEFAULT_ALLOCATOR(char)> regex;
+typedef reg_expression<char, regex_traits<char>, BOOST_DEFAULT_ALLOCATOR(char) > regex;
 #ifndef BOOST_NO_WREGEX
-typedef reg_expression<wchar_t, regex_traits<wchar_t>, BOOST_DEFAULT_ALLOCATOR(wchar_t)> wregex;
+typedef reg_expression<wchar_t, regex_traits<wchar_t>, BOOST_DEFAULT_ALLOCATOR(wchar_t) > wregex;
 #endif
 
 } // namespace boost
index 738ad1be3ed967203b69d988b271495247c41f30..589bd36846be2567fa2ca75553e1777979adf388 100644 (file)
@@ -61,10 +61,9 @@ public:
 
     void reset(T * p = 0) // never throws
     {
-        if (ptr != p)
+        if(ptr != p)
         {
-            checked_delete(ptr);
-            ptr = p;
+            this_type(p).swap(*this);
         }
     }
 
index 4b7b0ea36e89562c2c9b3fbf3a4121483bc82f04..452337833336b28ae6972f932382b1fb9f376e26 100644 (file)
@@ -1,6 +1,6 @@
 // Boost.Signals library
 //
-// Copyright (C) 2001 Doug Gregor (gregod@cs.rpi.edu)
+// Copyright (C) 2001-2002 Doug Gregor (gregod@cs.rpi.edu)
 //
 // Permission to copy, use, sell and distribute this software is granted
 // provided this copyright notice appears in all copies.
index e0b9b5087734a1a4ce33884113435ff906a9c4e7..646acbb0bb17171765d22e5c4fa8181d04d611e6 100644 (file)
@@ -1,6 +1,6 @@
 // Boost.Signals library
 //
-// Copyright (C) 2001 Doug Gregor (gregod@cs.rpi.edu)
+// Copyright (C) 2001-2002 Doug Gregor (gregod@cs.rpi.edu)
 //
 // Permission to copy, use, sell and distribute this software is granted
 // provided this copyright notice appears in all copies.
index cabe0703ed817c2ddb1a300b1d323177f2adc637..b1e7528fb4a2cd42ee69cd6d50d68bc7724b8d54 100644 (file)
@@ -1,6 +1,6 @@
 // Boost.Signals library
 //
-// Copyright (C) 2001 Doug Gregor (gregod@cs.rpi.edu)
+// Copyright (C) 2001-2002 Doug Gregor (gregod@cs.rpi.edu)
 //
 // Permission to copy, use, sell and distribute this software is granted
 // provided this copyright notice appears in all copies.
index 4cb1f877a84ca14884c125241ccbdf63c2fb27cd..1892ffe12e4a2d217d57c9379bf38900ae30b6a9 100644 (file)
@@ -1,6 +1,6 @@
 // Boost.Signals library
 //
-// Copyright (C) 2001 Doug Gregor (gregod@cs.rpi.edu)
+// Copyright (C) 2001-2002 Doug Gregor (gregod@cs.rpi.edu)
 //
 // Permission to copy, use, sell and distribute this software is granted
 // provided this copyright notice appears in all copies.
@@ -17,6 +17,7 @@
 // to be included multiple times (one for each signalN class). The 
 // BOOST_SIGNALS_SIGNAL_TEMPLATE_HEADER_INCLUDED macro merely serves to
 // suppress reinclusion of the files that this header depends on.
+
 #ifndef BOOST_SIGNALS_SIGNAL_TEMPLATE_HEADER_INCLUDED
 #define BOOST_SIGNALS_SIGNAL_TEMPLATE_HEADER_INCLUDED
 #  include <boost/config.hpp>
index 6fc7216c8ce6884a46c0b9eac47d72574a0e7866..c70cde7fc99d515deb8adf038e4334fc53f17bbc 100644 (file)
@@ -1,6 +1,6 @@
 // Boost.Signals library
 //
-// Copyright (C) 2001 Doug Gregor (gregod@cs.rpi.edu)
+// Copyright (C) 2001-2002 Doug Gregor (gregod@cs.rpi.edu)
 //
 // Permission to copy, use, sell and distribute this software is granted
 // provided this copyright notice appears in all copies.
index 50dbe1ef3c0f374b33f3c6032a0626cc82ba0a70..46683ee15c43f3caa6e9c023a71b2451d8b5d1b7 100644 (file)
@@ -1,6 +1,6 @@
 // Boost.Signals library
 //
-// Copyright (C) 2001 Doug Gregor (gregod@cs.rpi.edu)
+// Copyright (C) 2001-2002 Doug Gregor (gregod@cs.rpi.edu)
 //
 // Permission to copy, use, sell and distribute this software is granted
 // provided this copyright notice appears in all copies.
 
 #include <boost/type_traits.hpp>
 #include <boost/signals/connection.hpp>
+#include <boost/pending/ct_if.hpp>
 #include <boost/ref.hpp>
+#include <boost/utility/addressof.hpp>
 #include <list>
 #include <vector>
 
 namespace boost {
-  namespace BOOST_SIGNALS_NAMESPACE {
-    // Base class for "trackable" objects that can be tracked when they are
-    // bound in slot target functions. When a trackable object is destroyed,
-    // the signal/slot connections are disconnected automatically.
-    class trackable {
-    private:
-      static void signal_disconnected(void* obj, void* data);
-
-      friend class detail::signal_base_impl;
-      friend class detail::slot_base;
-      void signal_connected(connection, BOOST_SIGNALS_NAMESPACE::detail::bound_object&) const;
-      
-    protected:
-      trackable() : connected_signals(), dying(false) {}
-      trackable(const trackable&) : connected_signals(), dying(false) {}
-      ~trackable();
-      
-      trackable& operator=(const trackable&)
-      {
-        connected_signals.clear();
-        return *this;
-      }
-      
+
+namespace BOOST_SIGNALS_NAMESPACE {
+  // Base class for "trackable" objects that can be tracked when they are
+  // bound in slot target functions. When a trackable object is destroyed,
+  // the signal/slot connections are disconnected automatically.
+  class trackable {
+  private:
+    static void signal_disconnected(void* obj, void* data);
+
+    friend class detail::signal_base_impl;
+    friend class detail::slot_base;
+    void signal_connected(connection, BOOST_SIGNALS_NAMESPACE::detail::bound_object&) const;
+    
+  protected:
+    trackable() : connected_signals(), dying(false) {}
+    trackable(const trackable&) : connected_signals(), dying(false) {}
+    ~trackable();
+    
+    trackable& operator=(const trackable&)
+    {
+      connected_signals.clear();
+      return *this;
+    }
+    
+  private:
+    typedef std::list<connection> connection_list;
+    typedef connection_list::iterator connection_iterator;
+    
+    // List of connections that this object is part of
+    mutable connection_list connected_signals;
+    
+    // True when the object is being destroyed
+    mutable bool dying;
+  };
+
+  namespace detail {
+    template<bool Cond> struct truth {};
+
+    // A visitor that adds each trackable object to a vector
+    class bound_objects_visitor {
+    public:
+      bound_objects_visitor(std::vector<const trackable*>& v) : 
+        bound_objects(v) 
+      {
+      }
+
+      template<typename T>
+      void operator()(const T& t) const
+      {
+        decode(t, 0);
+      }
+
     private:
-      typedef std::list<connection> connection_list;
-      typedef connection_list::iterator connection_iterator;
-      
-      // List of connections that this object is part of
-      mutable connection_list connected_signals;
-      
-      // True when the object is being destroyed
-      mutable bool dying;
-    };
+      // decode() decides between a reference wrapper and anything else
+      template<typename T>
+      void decode(const reference_wrapper<T>& t, int) const
+      {
+        add_if_trackable(t.get_pointer());
+      }
+
+      template<typename T>
+      void decode(const T& t, long) const
+      {
+        typedef truth<(is_pointer<T>::value)> is_a_pointer;
+        maybe_get_pointer(t, is_a_pointer());
+      }
 
-    namespace detail {
-      template<bool Cond> struct truth {};
+      // maybe_get_pointer() decides between a pointer and a non-pointer
+      template<typename T>
+      void maybe_get_pointer(const T& t, truth<true>) const
+      {
+        add_if_trackable(t);
+      }
 
-      // A visitor that adds each trackable object to a vector
-      class bound_objects_visitor {
-      public:
-        bound_objects_visitor(std::vector<const trackable*>& v) : 
-          bound_objects(v) 
-        {
-        }
-        
-        template<typename T>
-        inline void operator()(const T& t) const
-        {
-          visit(t, truth<is_convertible<T, trackable*>::value>());
-          visit(&t, truth<is_convertible<T*, trackable*>::value>());
-        }
+      template<typename T>
+      void maybe_get_pointer(const T& t, truth<false>) const
+      {
+        // Take the address of this object, because the object itself may be
+        // trackable
+        add_if_trackable(addressof(t));
+      }
 
-        template<typename T>
-        inline void operator()(const boost::reference_wrapper<T>& r) const
-        {
-          (*this)(r.get());
+      // add_if_trackable() adds trackable objects to the list of bound objects
+      inline void add_if_trackable(const trackable* b) const
+      {
+        if (b) {
+          bound_objects.push_back(b);
         }
+      }
 
-        inline void operator()(const trackable* b) const
-        {
-          if (b) {
-            bound_objects.push_back(b);
-          }
-        }
+      inline void add_if_trackable(const void*) const
+      {
+      }
 
-      private:
-        template<typename T>
-        inline void visit(const T&, truth<false>) const
-        {
-        }
+      template<typename R>
+      inline void add_if_trackable(R (*)()) const
+      {
+      }
 
-        template<typename T>
-        inline void visit(const T& t, truth<true>) const
-        {
-          (*this)(static_cast<const trackable*>(t));
-        }
+      template<typename R, typename T1>
+      inline void add_if_trackable(R (*)(T1)) const
+      {
+      }
+
+      template<typename R, typename T1, typename T2>
+      inline void add_if_trackable(R (*)(T1, T2)) const
+      {
+      }
+
+      template<typename R, typename T1, typename T2, typename T3>
+      inline void add_if_trackable(R (*)(T1, T2, T3)) const
+      {
+      }
+
+      template<typename R, typename T1, typename T2, typename T3, typename T4>
+      inline void add_if_trackable(R (*)(T1, T2, T3, T4)) const
+      {
+      }
+
+      template<typename R, typename T1, typename T2, typename T3, typename T4,
+              typename T5>
+      inline void add_if_trackable(R (*)(T1, T2, T3, T4, T5)) const
+      {
+      }
+
+      template<typename R, typename T1, typename T2, typename T3, typename T4,
+              typename T5, typename T6>
+      inline void add_if_trackable(R (*)(T1, T2, T3, T4, T5, T6)) const
+      {
+      }
+
+      template<typename R, typename T1, typename T2, typename T3, typename T4,
+              typename T5, typename T6, typename T7>
+      inline void add_if_trackable(R (*)(T1, T2, T3, T4, T5, T6, T7)) const
+      {
+      }
+
+      template<typename R, typename T1, typename T2, typename T3, typename T4,
+              typename T5, typename T6, typename T7, typename T8>
+      inline void add_if_trackable(R (*)(T1, T2, T3, T4, T5, T6, T7, T8)) const
+      {
+      }
+
+      template<typename R, typename T1, typename T2, typename T3, typename T4,
+              typename T5, typename T6, typename T7, typename T8, typename T9>
+      inline void 
+      add_if_trackable(R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9)) const
+      {
+      }
+
+      template<typename R, typename T1, typename T2, typename T3, typename T4,
+              typename T5, typename T6, typename T7, typename T8, typename T9,
+              typename T10>
+      inline void 
+      add_if_trackable(R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)) const
+      {
+      }
+
+      mutable std::vector<const trackable*>& bound_objects;
+    };
+  } // end namespace detail
+} // end namespace BOOST_SIGNALS_NAMESPACE
 
-        mutable std::vector<const trackable*>& bound_objects;
-      };
-    } // end namespace detail
-  } // end namespace BOOST_SIGNALS_NAMESPACE
-}
+} // end namespace boost
 
 #endif // BOOST_SIGNALS_TRACKABLE_HPP
index 4ba29d71eee68fdabbd65134c2838a8963abb20c..b28a55cd828122f4013092e32ded04e90e9eed5e 100644 (file)
@@ -28,7 +28,7 @@ namespace boost{
 // HP aCC cannot deal with missing names for template value parameters
 template <bool x> struct STATIC_ASSERTION_FAILURE;
 
-template <> struct STATIC_ASSERTION_FAILURE<true>{};
+template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
 
 // HP aCC cannot deal with missing names for template value parameters
 template<int x> struct static_assert_test{};
@@ -58,19 +58,28 @@ template<int x> struct static_assert_test{};
 // when used inside integral constant expressions.
 //
 #if !defined(BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS) && !defined(__MWERKS__)
-#ifndef BOOST_MSVC
-#define BOOST_STATIC_ASSERT( B ) \
-   typedef ::boost::static_assert_test<\
-      sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)>\
-         BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
-#else
+
+#if defined(BOOST_MSVC)
 // __LINE__ macro broken when -ZI is used see Q199057
 // fortunately MSVC ignores duplicate typedef's.
 #define BOOST_STATIC_ASSERT( B ) \
    typedef ::boost::static_assert_test<\
       sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)\
       > boost_static_assert_typedef_
+#elif defined(BOOST_INTEL_CXX_VERSION)
+// agurt 15/sep/02: a special care is needed to force Intel C++ issue an error 
+// instead of warning in case of failure
+# define BOOST_STATIC_ASSERT( B ) \
+    typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \
+        [ ::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >::value ]
+#else
+// generic version
+#define BOOST_STATIC_ASSERT( B ) \
+   typedef ::boost::static_assert_test<\
+      sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)>\
+         BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
 #endif
+
 #else
 // alternative enum based implementation:
 #define BOOST_STATIC_ASSERT( B ) \
@@ -80,7 +89,3 @@ template<int x> struct static_assert_test{};
 
 
 #endif // BOOST_STATIC_ASSERT_HPP
-
-
-
-
index 0263f969259280827da2b4ef533dd1f70059a49e..acc25b9f529c8959405b47fbea615a607829ce06 100644 (file)
@@ -19,7 +19,7 @@
 // ( and other bugs ) per suggestion of Jens Maurer
 // simplified element type accessors + bug fix  (Jeremy Siek)
 // Several changes/additions according to suggestions by Doug Gregor, 
-// William Kempf, Vesa Karvonen, John Max Skaller, Ed Brey, Beman Davis,
+// William Kempf, Vesa Karvonen, John Max Skaller, Ed Brey, Beman Dawes,
 // David Abrahams.
 
 // Revision history:
@@ -108,12 +108,12 @@ struct get_class {
   template<class RET, class HT, class TT >
   inline static RET get(const cons<HT, TT>& t)
   {
-    return get_class<N-1>::template get<RET>(t.tail);
+    return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
   }
   template<class RET, class HT, class TT >
   inline static RET get(cons<HT, TT>& t)
   {
-    return get_class<N-1>::template get<RET>(t.tail);
+    return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
   }
 };
 
@@ -190,7 +190,7 @@ inline typename access_traits<
                   typename element<N, cons<HT, TT> >::type
                 >::non_const_type
 get(cons<HT, TT>& c BOOST_TUPLE_DUMMY_PARM) { 
-  return detail::get_class<N>::template 
+  return detail::get_class<N>::BOOST_NESTED_TEMPLATE 
          get<
            typename access_traits<
              typename element<N, cons<HT, TT> >::type
@@ -205,7 +205,7 @@ inline typename access_traits<
                   typename element<N, cons<HT, TT> >::type
                 >::const_type
 get(const cons<HT, TT>& c BOOST_TUPLE_DUMMY_PARM) { 
-  return detail::get_class<N>::template 
+  return detail::get_class<N>::BOOST_NESTED_TEMPLATE 
          get<
            typename access_traits<
              typename element<N, cons<HT, TT> >::type
@@ -332,6 +332,7 @@ struct cons<HT, null_type> {
 
   typedef HT head_type;
   typedef null_type tail_type;
+  typedef cons<HT, null_type> self_type;
 
   typedef typename 
     detail::wrap_non_storeable_type<head_type>::type stored_head_type;
@@ -360,7 +361,7 @@ struct cons<HT, null_type> {
        const null_type&, const null_type&, const null_type&)
   : head (t1) {}
 
-  cons(const null_type& t1
+  cons(const null_type&, 
        const null_type&, const null_type&, const null_type&, 
        const null_type&, const null_type&, const null_type&, 
        const null_type&, const null_type&, const null_type&)
@@ -379,7 +380,7 @@ struct cons<HT, null_type> {
 
   template <int N>
   typename access_traits<
-             typename element<N, cons>::type
+             typename element<N, self_type>::type
             >::non_const_type
   get(BOOST_TUPLE_SINGLE_DUMMY_PARM) {
     return boost::tuples::get<N>(*this);
@@ -387,7 +388,7 @@ struct cons<HT, null_type> {
 
   template <int N>
   typename access_traits<
-             typename element<N, cons>::type
+             typename element<N, self_type>::type
            >::const_type
   get(BOOST_TUPLE_SINGLE_DUMMY_PARM) const {
     return boost::tuples::get<N>(*this);
index f5dbdb62a7593e31b12ea226f2a7c0247dea00b0..41816d0c82a4fe2e8ad034ea97fc0e27ca2c5915 100644 (file)
@@ -98,6 +98,7 @@ namespace tuples {
         }
       };
 
+    template <typename T> struct add_const_reference : add_reference<typename add_const<T>::type> {};
   } // end of namespace detail
 
     // cons builds a heterogenous list of types
@@ -108,36 +109,42 @@ namespace tuples {
      typedef Head head_type;
      typedef Tail tail_type;
 
+    private:
+       typedef typename boost::add_reference<head_type>::type head_ref;
+       typedef typename boost::add_reference<tail_type>::type tail_ref;
+       typedef typename detail::add_const_reference<head_type>::type head_cref;
+       typedef typename detail::add_const_reference<tail_type>::type tail_cref;
+    public:
      head_type head;
      tail_type tail;
 
-     typename boost::add_reference<head_type>::type get_head() { return head; }
-     typename boost::add_reference<tail_type>::type get_tail() { return tail; }  
+     head_ref get_head() { return head; }
+     tail_ref get_tail() { return tail; }  
 
-     typename boost::add_reference<const head_type>::type get_head() const { return head; }
-     typename boost::add_reference<const tail_type>::type get_tail() const { return tail; }
+     head_cref get_head() const { return head; }
+     tail_cref get_tail() const { return tail; }
   
 #if defined BOOST_MSVC
       template<typename Tail>
-      explicit cons(const head_type& h /* = head_type() */, // causes MSVC 6.5 to barf.
+      explicit cons(head_cref h /* = head_type() */, // causes MSVC 6.5 to barf.
                     const Tail& t) : head(h), tail(t.head, t.tail)
       {
       }
 
-      explicit cons(const head_type& h /* = head_type() */, // causes MSVC 6.5 to barf.
+      explicit cons(head_cref h /* = head_type() */, // causes MSVC 6.5 to barf.
                     const null_type& t) : head(h), tail(t)
       {
       }
 
 #else
       template<typename T>
-      explicit cons(const head_type& h, const T& t) : 
+      explicit cons(head_cref h, const T& t) : 
         head(h), tail(t.head, t.tail)
       {
       }
 
-      explicit cons(const head_type& h = head_type(),
-                    const tail_type& t = tail_type()) :
+      explicit cons(head_cref h = head_type(),
+                    tail_cref t = tail_type()) :
         head(h), tail(t)
       {
       }
@@ -416,20 +423,31 @@ namespace tuples {
       typedef typename mapped_tuple::cons2 cons2;
       typedef typename mapped_tuple::cons1 cons1;
 
+      typedef typename detail::add_const_reference<T1>::type t1_cref;
+      typedef typename detail::add_const_reference<T2>::type t2_cref;
+      typedef typename detail::add_const_reference<T3>::type t3_cref;
+      typedef typename detail::add_const_reference<T4>::type t4_cref;
+      typedef typename detail::add_const_reference<T5>::type t5_cref;
+      typedef typename detail::add_const_reference<T6>::type t6_cref;
+      typedef typename detail::add_const_reference<T7>::type t7_cref;
+      typedef typename detail::add_const_reference<T8>::type t8_cref;
+      typedef typename detail::add_const_reference<T9>::type t9_cref;
+      typedef typename detail::add_const_reference<T10>::type t10_cref;
     public:
       typedef cons1 inherited;
       typedef tuple self_type;
 
-      explicit tuple(const T1& t1 = T1(), 
-                     const T2& t2 = T2(),
-                     const T3& t3 = T3(),
-                     const T4& t4 = T4(),
-                     const T5& t5 = T5(),
-                     const T6& t6 = T6(),
-                     const T7& t7 = T7(),
-                     const T8& t8 = T8(),
-                     const T9& t9 = T9(),
-                     const T10& t10 = T10()) :
+      explicit tuple(t1_cref t1 = T1(), 
+                     t2_cref t2 = T2(),
+                     t3_cref t3 = T3(),
+                     t4_cref t4 = T4(),
+                     t5_cref t5 = T5(),
+                     t6_cref t6 = T6(),
+                     t7_cref t7 = T7(),
+                     t8_cref t8 = T8(),
+                     t9_cref t9 = T9(),
+                     t10_cref t10 = T10()
+          ) :
         cons1(t1, cons2(t2, cons3(t3, cons4(t4, cons5(t5, cons6(t6,cons7(t7,cons8(t8,cons9(t9,cons10(t10))))))))))
       {
       }
index 71d6dabf6104272875846dba775afd552cb180b5..c1298222e48c6beb3f239846711f56e8e9f96667 100644 (file)
 #ifndef BOOST_TUPLE_HPP
 #define BOOST_TUPLE_HPP
 
+#if defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730
+// Work around a compiler bug.
+// boost::python::tuple has to be seen by the compiler before the
+// boost::tuple class template.
+namespace boost { namespace python { class tuple; }}
+#endif
+
 #include "boost/config.hpp"
 #include "boost/static_assert.hpp"
 
index 2869ff32d7b20ab80f14d76752f8487b4e757bdc..5ca9e8e5fa8d5bf7528a47db8ce3e8007e0998e2 100644 (file)
 
 #include "boost/tuple/tuple.hpp"
 
+// This is ugly: one should be using twoargument isspace since whitspace can
+// be locale dependent, in theory at least.
+// not all libraries implement have the two-arg version, so we need to 
+// use the one-arg one, which one should get with <cctype> but there seem
+// to be exceptions to this.
+
+#if !defined (BOOST_NO_STD_LOCALE)
+
+#include <locale> // for two-arg isspace
+
+#else 
+
+#include <cctype> // for one-arg (old) isspace 
+#include <ctype.h> // Metrowerks does not find one-arg isspace from cctype
+
+#endif
+
 namespace boost {
 namespace tuples {
 
@@ -328,7 +345,11 @@ extract_and_check_delimiter(
 {
   const char d = format_info::get_manipulator(is, del);
 
-  const bool is_delimiter = (!isspace(d) );      
+#if defined (BOOST_NO_STD_LOCALE)
+  const bool is_delimiter = !isspace(d);
+#else
+  const bool is_delimiter = (!std::isspace(d, is.getloc()) );            
+#endif
 
   char c;
   if (is_delimiter) { 
@@ -415,7 +436,11 @@ extract_and_check_delimiter(
 {
   const CharType d = format_info::get_manipulator(is, del);
 
-  const bool is_delimiter = (!isspace(d) );      
+#if defined (BOOST_NO_STD_LOCALE)
+  const bool is_delimiter = !isspace(d);
+#else
+  const bool is_delimiter = (!std::isspace(d, is.getloc()) );            
+#endif
 
   CharType c;
   if (is_delimiter) { 
index 02d76e0e2b97a5229d992ab38e73a79fdc7371bb..42b85c7c97c4901bcf67b993641e87b98ec4bef3 100644 (file)
@@ -4,39 +4,59 @@
 //  warranty, and with no claim as to its suitability for any purpose.
 
 //  See http://www.boost.org for most recent version including documentation.
+//  See boost/type_traits/*.hpp for full copyright notices.
 
 #ifndef BOOST_TYPE_TRAITS_HPP
 #define BOOST_TYPE_TRAITS_HPP
 
-#include <boost/type_traits/fwd.hpp>
-#include <boost/type_traits/ice.hpp>
-#include <boost/type_traits/conversion_traits.hpp>
-#include <boost/type_traits/arithmetic_traits.hpp>
-#include <boost/type_traits/cv_traits.hpp>
-#include <boost/type_traits/composite_traits.hpp>
-#include <boost/type_traits/alignment_traits.hpp>
-#include <boost/type_traits/object_traits.hpp>
-#include <boost/type_traits/transform_traits.hpp>
-#include <boost/type_traits/same_traits.hpp>
-#include <boost/type_traits/function_traits.hpp>
-
-/**************************************************************************/
-
-//
-// undefine helper macro's:
-//
-#undef BOOST_IS_CLASS
-#undef BOOST_IS_ENUM
-#undef BOOST_IS_UNION
-#undef BOOST_IS_POD
-#undef BOOST_IS_EMPTY
-#undef BOOST_HAS_TRIVIAL_CONSTRUCTOR
-#undef BOOST_HAS_TRIVIAL_COPY
-#undef BOOST_HAS_TRIVIAL_ASSIGN
-#undef BOOST_HAS_TRIVIAL_DESTRUCTOR
+#include "boost/type_traits/add_const.hpp"
+#include "boost/type_traits/add_cv.hpp"
+#include "boost/type_traits/add_pointer.hpp"
+#include "boost/type_traits/add_reference.hpp"
+#include "boost/type_traits/add_volatile.hpp"
+#include "boost/type_traits/alignment_of.hpp"
+#include "boost/type_traits/has_nothrow_assign.hpp"
+#include "boost/type_traits/has_nothrow_constructor.hpp"
+#include "boost/type_traits/has_nothrow_copy.hpp"
+#include "boost/type_traits/has_nothrow_destructor.hpp"
+#include "boost/type_traits/has_trivial_assign.hpp"
+#include "boost/type_traits/has_trivial_constructor.hpp"
+#include "boost/type_traits/has_trivial_copy.hpp"
+#include "boost/type_traits/has_trivial_destructor.hpp"
+#include "boost/type_traits/is_arithmetic.hpp"
+#include "boost/type_traits/is_array.hpp"
+#include "boost/type_traits/is_base_and_derived.hpp"
+#include "boost/type_traits/is_class.hpp"
+#include "boost/type_traits/is_compound.hpp"
+#include "boost/type_traits/is_const.hpp"
+#include "boost/type_traits/is_convertible.hpp"
+#include "boost/type_traits/is_empty.hpp"
+#include "boost/type_traits/is_enum.hpp"
+#include "boost/type_traits/is_float.hpp"
+#include "boost/type_traits/is_function.hpp"
+#include "boost/type_traits/is_fundamental.hpp"
+#include "boost/type_traits/is_integral.hpp"
+#include "boost/type_traits/is_member_function_pointer.hpp"
+#include "boost/type_traits/is_member_pointer.hpp"
+#include "boost/type_traits/is_object.hpp"
+#include "boost/type_traits/is_POD.hpp"
+#include "boost/type_traits/is_pointer.hpp"
+#include "boost/type_traits/is_reference.hpp"
+#include "boost/type_traits/is_same.hpp"
+#include "boost/type_traits/is_scalar.hpp"
+#include "boost/type_traits/is_stateless.hpp"
+#include "boost/type_traits/is_union.hpp"
+#include "boost/type_traits/is_void.hpp"
+#include "boost/type_traits/is_volatile.hpp"
+#include "boost/type_traits/remove_bounds.hpp"
+#include "boost/type_traits/remove_const.hpp"
+#include "boost/type_traits/remove_cv.hpp"
+#include "boost/type_traits/remove_pointer.hpp"
+#include "boost/type_traits/remove_reference.hpp"
+#include "boost/type_traits/remove_volatile.hpp"
+#include "boost/type_traits/type_with_alignment.hpp"
 
 #endif // BOOST_TYPE_TRAITS_HPP
 
 
 
-
diff --git a/boost/boost/type_traits/add_const.hpp b/boost/boost/type_traits/add_const.hpp
new file mode 100644 (file)
index 0000000..5c0a83f
--- /dev/null
@@ -0,0 +1,48 @@
+
+//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+//  Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+//  sell and distribute this software is granted provided this
+//  copyright notice appears in all copies. This software is provided
+//  "as is" without express or implied warranty, and with no claim as
+//  to its suitability for any purpose.
+//
+//  See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_ADD_CONST_HPP_INCLUDED
+#define BOOST_TT_ADD_CONST_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/type_trait_def.hpp"
+
+namespace boost {
+
+// * convert a type T to const type - add_const<T>
+// this is not required since the result is always
+// the same as "T const", but it does suppress warnings
+// from some compilers:
+
+#if defined(BOOST_MSVC)
+// This bogus warning will appear when add_const is applied to a
+// const volatile reference because we can't detect const volatile
+// references with MSVC6.
+#   pragma warning(push)
+#   pragma warning(disable:4181) // warning C4181: qualifier applied to reference type ignored
+#endif 
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_const,T,T const)
+
+#if defined(BOOST_MSVC)
+#   pragma warning(pop)
+#endif 
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,add_const,T&,T&)
+#endif
+
+} // namespace boost
+
+#include "boost/type_traits/detail/type_trait_undef.hpp"
+
+#endif // BOOST_TT_ADD_CONST_HPP_INCLUDED
diff --git a/boost/boost/type_traits/add_cv.hpp b/boost/boost/type_traits/add_cv.hpp
new file mode 100644 (file)
index 0000000..3f694db
--- /dev/null
@@ -0,0 +1,48 @@
+
+//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+//  Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+//  sell and distribute this software is granted provided this
+//  copyright notice appears in all copies. This software is provided
+//  "as is" without express or implied warranty, and with no claim as
+//  to its suitability for any purpose.
+//
+//  See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_ADD_CV_HPP_INCLUDED
+#define BOOST_TT_ADD_CV_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/type_trait_def.hpp"
+
+namespace boost {
+
+// * convert a type T to a const volatile type - add_cv<T>
+// this is not required since the result is always
+// the same as "T const volatile", but it does suppress warnings
+// from some compilers:
+
+#if defined(BOOST_MSVC)
+// This bogus warning will appear when add_volatile is applied to a
+// const volatile reference because we can't detect const volatile
+// references with MSVC6.
+#   pragma warning(push)
+#   pragma warning(disable:4181) // warning C4181: qualifier applied to reference type ignored
+#endif 
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_cv,T,T const volatile)
+
+#if defined(BOOST_MSVC)
+#   pragma warning(pop)
+#endif 
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,add_cv,T&,T&)
+#endif
+
+} // namespace boost
+
+#include "boost/type_traits/detail/type_trait_undef.hpp"
+
+#endif // BOOST_TT_ADD_CV_HPP_INCLUDED
diff --git a/boost/boost/type_traits/add_pointer.hpp b/boost/boost/type_traits/add_pointer.hpp
new file mode 100644 (file)
index 0000000..982a584
--- /dev/null
@@ -0,0 +1,37 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_ADD_POINTER_HPP_INCLUDED
+#define BOOST_TT_ADD_POINTER_HPP_INCLUDED
+
+#include "boost/type_traits/remove_reference.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/type_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct add_pointer_impl
+{
+    typedef typename remove_reference<T>::type no_ref_type;
+    typedef no_ref_type* type;
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_pointer,T,typename detail::add_pointer_impl<T>::type)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/type_trait_undef.hpp"
+
+#endif // BOOST_TT_ADD_POINTER_HPP_INCLUDED
diff --git a/boost/boost/type_traits/add_reference.hpp b/boost/boost/type_traits/add_reference.hpp
new file mode 100644 (file)
index 0000000..5d2cfcb
--- /dev/null
@@ -0,0 +1,81 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
+#define BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
+
+#include "boost/type_traits/is_reference.hpp"
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/type_trait_def.hpp"
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_reference,T,T&)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,add_reference,T&,T&)
+
+#elif defined(BOOST_MSVC6_MEMBER_TEMPLATES)
+
+namespace detail {
+
+template <bool x>
+struct reference_adder
+{
+    template <typename T> struct result_
+    {
+        typedef T& type;
+    };
+};
+
+template <>
+struct reference_adder<true>
+{
+    template <typename T> struct result_
+    {
+        typedef T type;
+    };
+};
+
+template <typename T>
+struct add_reference_impl
+{
+    typedef typename reference_adder<
+          ::boost::is_reference<T>::value
+        >::template result_<T> result;
+
+    typedef typename result::type type;
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_reference,T,typename detail::add_reference_impl<T>::type)
+
+#else
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_reference,T,T&)
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//
+// these full specialisations are always required:
+BOOST_TT_AUX_TYPE_TRAIT_SPEC1(add_reference,void,void)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_TYPE_TRAIT_SPEC1(add_reference,void const,void const)
+BOOST_TT_AUX_TYPE_TRAIT_SPEC1(add_reference,void volatile,void volatile)
+BOOST_TT_AUX_TYPE_TRAIT_SPEC1(add_reference,void const volatile,void const volatile)
+#endif
+
+} // namespace boost
+
+#include "boost/type_traits/detail/type_trait_undef.hpp"
+
+#endif // BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
diff --git a/boost/boost/type_traits/add_volatile.hpp b/boost/boost/type_traits/add_volatile.hpp
new file mode 100644 (file)
index 0000000..1f99fde
--- /dev/null
@@ -0,0 +1,48 @@
+
+//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+//  Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+//  sell and distribute this software is granted provided this
+//  copyright notice appears in all copies. This software is provided
+//  "as is" without express or implied warranty, and with no claim as
+//  to its suitability for any purpose.
+//
+//  See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_ADD_VOLATILE_HPP_INCLUDED
+#define BOOST_TT_ADD_VOLATILE_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/type_trait_def.hpp"
+
+namespace boost {
+
+// * convert a type T to volatile type - add_volatile<T>
+// this is not required since the result is always
+// the same as "T volatile", but it does suppress warnings
+// from some compilers:
+
+#if defined(BOOST_MSVC)
+// This bogus warning will appear when add_volatile is applied to a
+// const volatile reference because we can't detect const volatile
+// references with MSVC6.
+#   pragma warning(push)
+#   pragma warning(disable:4181) // warning C4181: qualifier applied to reference type ignored
+#endif 
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_volatile,T,T volatile)
+
+#if defined(BOOST_MSVC)
+#   pragma warning(pop)
+#endif 
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,add_volatile,T&,T&)
+#endif
+
+} // namespace boost
+
+#include "boost/type_traits/detail/type_trait_undef.hpp"
+
+#endif // BOOST_TT_ADD_VOLATILE_HPP_INCLUDED
diff --git a/boost/boost/type_traits/alignment_of.hpp b/boost/boost/type_traits/alignment_of.hpp
new file mode 100644 (file)
index 0000000..83ae20b
--- /dev/null
@@ -0,0 +1,85 @@
+
+// (C) Copyright John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+
+#ifndef BOOST_TT_ALIGNMENT_OF_HPP_INCLUDED
+#define BOOST_TT_ALIGNMENT_OF_HPP_INCLUDED
+
+#include "boost/config.hpp"
+#include <cstddef>
+
+// should be the last #include
+#include "boost/type_traits/detail/size_t_trait_def.hpp"
+
+#ifdef BOOST_MSVC
+#   pragma warning(push)
+#   pragma warning(disable: 4121) // alignment is sensitive to packing
+#endif
+
+namespace boost {
+
+template <typename T> struct alignment_of;
+
+// get the alignment of some arbitrary type:
+namespace detail {
+
+template <typename T>
+struct alignment_of_hack
+{
+    char c;
+    T t;
+    alignment_of_hack();
+};
+
+
+template <unsigned A, unsigned S>
+struct alignment_logic
+{
+    BOOST_STATIC_CONSTANT(std::size_t, value = A < S ? A : S);
+};
+
+
+template< typename T >
+struct alignment_of_impl
+{
+    BOOST_STATIC_CONSTANT(std::size_t, value =
+        (::boost::detail::alignment_logic<
+            sizeof(detail::alignment_of_hack<T>) - sizeof(T),
+            sizeof(T)
+        >::value));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_SIZE_T_TRAIT_DEF1(alignment_of,T,::boost::detail::alignment_of_impl<T>::value)
+
+// references have to be treated specially, assume
+// that a reference is just a special pointer:
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+template <typename T>
+struct alignment_of<T&>
+    : alignment_of<T*>
+{
+};
+#endif
+
+// void has to be treated specially:
+BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(alignment_of,void,0)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(alignment_of,void const,0)
+BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(alignment_of,void volatile,0)
+BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(alignment_of,void const volatile,0)
+#endif
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#   pragma warning(pop)
+#endif
+
+#include "boost/type_traits/detail/size_t_trait_undef.hpp"
+
+#endif // BOOST_TT_ALIGNMENT_OF_HPP_INCLUDED
index b509f67361957d739fb4170e9f184cdd8a71925a..991ac4109da58bfe47ceab51d60111aa04b021fa 100644 (file)
 //  in all copies. This software is provided "as is" without express or implied
 //  warranty, and with no claim as to its suitability for any purpose.
 
-//
-// defines alignment_of:
+#ifndef BOOST_TT_ALIGNMENT_TRAITS_HPP_INCLUDED
+#define BOOST_TT_ALIGNMENT_TRAITS_HPP_INCLUDED
 
-#ifndef ALIGNMENT_TYPE_TRAITS_HPP
-#define ALIGNMENT_TYPE_TRAITS_HPP
+#include "boost/type_traits/alignment_of.hpp"
+#include "boost/type_traits/type_with_alignment.hpp"
 
-#include <cstdlib>
-#include <cstddef>
-#ifndef BOOST_ICE_TYPE_TRAITS_HPP
-#include <boost/type_traits/ice.hpp>
-#endif
-#include <boost/preprocessor/list/for_each_i.hpp>
-#include <boost/preprocessor/tuple/to_list.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/type_traits/transform_traits.hpp>
-#include <boost/static_assert.hpp>
-
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4121) // alignment is sensitive to packing
-#endif
-
-namespace boost{
-template <class T> struct alignment_of;
-
-//
-// get the alignment of some arbitrary type:
-namespace detail{
-
-template <class T>
-struct alignment_of_hack
-{
-   char c;
-   T t;
-   alignment_of_hack();
-};
-
-
-template <unsigned A, unsigned S>
-struct alignment_logic
-{
-   BOOST_STATIC_CONSTANT(std::size_t, value = A < S ? A : S);
-};
-
-} // namespace detail
-
-template <class T>
-struct alignment_of
-{
-   BOOST_STATIC_CONSTANT(std::size_t, value =
-      (::boost::detail::alignment_logic<
-         sizeof(detail::alignment_of_hack<T>) - sizeof(T),
-         sizeof(T)
-      >::value));
-};
-
-//
-// references have to be treated specially, assume
-// that a reference is just a special pointer:
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <class T>
-struct alignment_of<T&>
-{
-public:
-   BOOST_STATIC_CONSTANT(std::size_t, value = ::boost::alignment_of<T*>::value);
-};
-#endif
-//
-// void has to be treated specially:
-template <>
-struct alignment_of<void>
-{ BOOST_STATIC_CONSTANT(std::size_t, value = 0); };
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <>
-struct alignment_of<const void>
-{ BOOST_STATIC_CONSTANT(std::size_t, value = 0); };
-template <>
-struct alignment_of<volatile void>
-{ BOOST_STATIC_CONSTANT(std::size_t, value = 0); };
-template <>
-struct alignment_of<const volatile void>
-{ BOOST_STATIC_CONSTANT(std::size_t, value = 0); };
-#endif
-
-namespace detail {
-class alignment_dummy;
-typedef void (*function_ptr)();
-typedef int (alignment_dummy::*member_ptr);
-typedef int (alignment_dummy::*member_function_ptr)();
-
-/*
- * The ct_if implementation is temporary code. It will be replaced with MPL
- * in the future...
- */
-struct select_then
-{
-  template<typename Then, typename Else>
-  struct result
-  {
-    typedef Then type;
-  };
-};
-struct select_else
-{
-  template<typename Then, typename Else>
-  struct result
-  { 
-    typedef Else type;
-  };
-};
-template<bool Condition>
-struct ct_if_selector
-{
-  typedef select_then type;
-};
-template<>
-struct ct_if_selector<false>
-{
-  typedef select_else type;
-};
-template<bool Condition, typename Then, typename Else>
-struct ct_if
-{
-  typedef typename ct_if_selector<Condition>::type select;
-  typedef typename select::template result<Then,Else>::type type;
-};
-
-#define BOOST_TT_ALIGNMENT_TYPES BOOST_PP_TUPLE_TO_LIST( \
-        11, ( \
-        char, short, int, long, float, double, long double \
-        , void*, function_ptr, member_ptr, member_function_ptr))
-
-#define BOOST_TT_CHOOSE_LOWER_ALIGNMENT(R,P,I,T) \
-        typename ct_if< \
-           alignment_of<T>::value <= target, T, char>::type BOOST_PP_CAT(t,I);
-
-#define BOOST_TT_CHOOSE_T(R,P,I,T) T BOOST_PP_CAT(t,I);
-           
-template <std::size_t target>
-union lower_alignment
-{
-  BOOST_PP_LIST_FOR_EACH_I(
-      BOOST_TT_CHOOSE_LOWER_ALIGNMENT
-      , ignored, BOOST_TT_ALIGNMENT_TYPES)
-};
-
-union max_align
-{
-  BOOST_PP_LIST_FOR_EACH_I(
-      BOOST_TT_CHOOSE_T
-      , ignored, BOOST_TT_ALIGNMENT_TYPES)
-};
-
-#undef BOOST_TT_ALIGNMENT_TYPES
-#undef BOOST_TT_CHOOSE_LOWER_ALIGNMENT
-#undef BOOST_TT_CHOOSE_T
-
-template<int TAlign, int Align>
-struct is_aligned 
-{
-  BOOST_STATIC_CONSTANT(bool, 
-                        value = (TAlign >= Align) & (TAlign % Align == 0));
-};
-
-}
-
-// This alignment method originally due to Brian Parker, implemented by David
-// Abrahams, and then ported here by Doug Gregor. 
-template <int Align>
-class type_with_alignment
-{
-  typedef detail::lower_alignment<Align> t1;
-
-  typedef type_with_alignment<Align> this_type;
-
-  typedef typename detail::ct_if<
-              (detail::is_aligned<(alignment_of<t1>::value), Align>::value)
-            , t1
-            , detail::max_align
-          >::type align_t;
-
-  BOOST_STATIC_CONSTANT(std::size_t, found = alignment_of<align_t>::value);
-  
-  BOOST_STATIC_ASSERT(found >= Align);
-  BOOST_STATIC_ASSERT(found % Align == 0);
-  
-public:
-  typedef align_t type;
-};
-
-} // namespace boost
-
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
-#endif // ALIGNMENT_TYPE_TRAITS_HPP
+#endif // BOOST_TT_ALIGNMENT_TRAITS_HPP_INCLUDED
index 1d111c4b98499533f51887b9e3dcbe9e15092d03..b7d0f06b7fe13b067cbade94e70db90190fe6efc 100644 (file)
 //
 //  defines traits classes for arithmetic types:
 //  is_void, is_integral, is_float, is_arithmetic, is_fundamental.
-//
-
-//  Revision History:
-// Feb 19 2001 Added #include <climits> (David Abrahams)
-
-#ifndef BOOST_ARITHMETIC_TYPE_TRAITS_HPP
-#define BOOST_ARITHMETIC_TYPE_TRAITS_HPP
-
-#ifndef BOOST_ICE_TYPE_TRAITS_HPP
-#include <boost/type_traits/ice.hpp>
-#endif
-#ifndef BOOST_FWD_TYPE_TRAITS_HPP
-#include <boost/type_traits/fwd.hpp>
-#endif
-
-#include <limits.h> // for ULLONG_MAX/ULONG_LONG_MAX
-
-namespace boost{
-
-//* is a type T void - is_void<T>
-template <typename T> struct is_void{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <> struct is_void<void>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-//* is a type T an [cv-qualified-] integral type described in the standard (3.9.1p3)
-// as an extention we include long long, as this is likely to be added to the
-// standard at a later date
-template <typename T> struct is_integral
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <> struct is_integral<unsigned char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<unsigned short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<unsigned int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<unsigned long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<signed char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<signed short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<signed int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<signed long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-template <> struct is_integral<wchar_t>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <> struct is_integral<bool>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-# if defined(BOOST_HAS_LONG_LONG)
-template <> struct is_integral<unsigned long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#elif defined(BOOST_HAS_MS_INT64)
-template <> struct is_integral<unsigned __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<__int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-//* is a type T a floating-point type described in the standard (3.9.1p8)
-template <typename T> struct is_float
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <> struct is_float<float>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<long double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-//
-// declare cv-qualified specialisations of these templates only
-// if BOOST_NO_CV_SPECIALIZATIONS is not defined:
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <> struct is_void<const void>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_void<volatile void>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_void<const volatile void>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#ifndef BOOST_NO_CV_SPECIALIZATIONS
-// const-variations:
-template <> struct is_integral<const unsigned char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const unsigned short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const unsigned int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const unsigned long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const signed char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const signed short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const signed int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const signed long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-template <> struct is_integral<const wchar_t>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <> struct is_integral<const bool>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-# if defined(BOOST_HAS_LONG_LONG)
-template <> struct is_integral<const unsigned long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#elif defined(BOOST_HAS_MS_INT64)
-template <> struct is_integral<const unsigned __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif //__int64
-
-template <> struct is_float<const float>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<const double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<const long double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-// volatile-variations:
-template <> struct is_integral<volatile  unsigned char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile  unsigned short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile  unsigned int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile  unsigned long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile  signed char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile  signed short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile  signed int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile  signed long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile  char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-template <> struct is_integral<volatile  wchar_t>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <> struct is_integral<volatile  bool>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-# if defined(BOOST_HAS_LONG_LONG)
-template <> struct is_integral<volatile  unsigned long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile  long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#elif defined(BOOST_HAS_MS_INT64)
-template <> struct is_integral<volatile  unsigned __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile  __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif //__int64
-
-template <> struct is_float<volatile  float>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<volatile  double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<volatile  long double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-// const-volatile-variations:
-template <> struct is_integral<const volatile unsigned char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile unsigned short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile unsigned int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile unsigned long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile signed char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile signed short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile signed int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile signed long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-template <> struct is_integral<const volatile wchar_t>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <> struct is_integral<const volatile bool>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-# if defined(BOOST_HAS_LONG_LONG)
-template <> struct is_integral<const volatile unsigned long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#elif defined(BOOST_HAS_MS_INT64)
-template <> struct is_integral<const volatile unsigned __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif //__int64
-
-template <> struct is_float<const volatile float>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<const volatile double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<const volatile long double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#endif // BOOST_NO_CV_SPECIALIZATIONS
-
-//* is a type T an arithmetic type described in the standard (3.9.1p8)
-template <typename T> 
-struct is_arithmetic
-{ 
-   BOOST_STATIC_CONSTANT(bool, value = 
-      (::boost::type_traits::ice_or< 
-         ::boost::is_integral<T>::value,
-         ::boost::is_float<T>::value
-      >::value)); 
-};
-
-//* is a type T a fundamental type described in the standard (3.9.1)
-template <typename T> 
-struct is_fundamental
-{ 
-   BOOST_STATIC_CONSTANT(bool, value = 
-      (::boost::type_traits::ice_or< 
-         ::boost::is_arithmetic<T>::value, 
-         ::boost::is_void<T>::value
-      >::value)); 
-};
-
-} // namespace boost
-
-#endif
-
-
-
-
 
+#ifndef BOOST_TT_ARITHMETIC_TRAITS_HPP_INCLUDED
+#define BOOST_TT_ARITHMETIC_TRAITS_HPP_INCLUDED
 
+#include "boost/type_traits/is_arithmetic.hpp"
+#include "boost/type_traits/is_float.hpp"
+#include "boost/type_traits/is_fundamental.hpp"
+#include "boost/type_traits/is_integral.hpp"
+#include "boost/type_traits/is_void.hpp"
 
+#endif // BOOST_TT_ARITHMETIC_TRAITS_HPP_INCLUDED
index 622c28fcb90b62cc0ac6e33fed695868980c2a89..38f78b08c09aa993d4b1e435af5327d389f97454 100644 (file)
@@ -6,82 +6,10 @@
 //  to its suitability for any purpose.
 //
 //  See http://www.boost.org for most recent version including documentation.
-//
-#ifndef BOOST_TT_ARRAY_TRAITS_HPP
-# define BOOST_TT_ARRAY_TRAITS_HPP
-# include <cstddef>
-# include <boost/type_traits/utility.hpp>
-# include <boost/type_traits/ice.hpp>
-
-namespace boost { 
-
-/**********************************************
- *
- * is_array
- *
- **********************************************/
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <typename T> struct is_array
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <typename T, std::size_t N> struct is_array<T[N]>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <typename T, std::size_t N> struct is_array<const T[N]>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <typename T, std::size_t N> struct is_array<volatile T[N]>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <typename T, std::size_t N> struct is_array<const volatile T[N]>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-namespace detail
-{
-  using ::boost::type_traits::yes_type;
-  using ::boost::type_traits::no_type;
-  using ::boost::type_traits::wrap;
-  
-  template <class T> T(* is_array_helper1(wrap<T>) )(wrap<T>);
-  char is_array_helper1(...);
-
-  template <class T> no_type is_array_helper2(T(*)(wrap<T>));
-  yes_type is_array_helper2(...);
-}
-
-template <typename T> 
-struct is_array
-{ 
-public:
-   BOOST_STATIC_CONSTANT(
-       bool, value = sizeof(
-           ::boost::detail::is_array_helper2(
-               ::boost::detail::is_array_helper1(
-                   ::boost::type_traits::wrap<T>()))) == 1
-       );
-};
-
-template <> 
-struct is_array<void>
-{ 
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
 
-# ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <> 
-struct is_array<const void>
-{ 
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <> 
-struct is_array<volatile void>
-{ 
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <> 
-struct is_array<const volatile void>
-{ 
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-# endif
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#ifndef BOOST_TT_ARRAY_TRAITS_HPP_INCLUDED
+#define BOOST_TT_ARRAY_TRAITS_HPP_INCLUDED
 
-} // namespace boost
+#include "boost/type_traits/is_array.hpp"
 
-#endif // BOOST_TT_ARRAY_TRAITS_HPP
+#endif // BOOST_TT_ARRAY_TRAITS_HPP_INCLUDED
diff --git a/boost/boost/type_traits/broken_compiler_spec.hpp b/boost/boost/type_traits/broken_compiler_spec.hpp
new file mode 100644 (file)
index 0000000..4ef151e
--- /dev/null
@@ -0,0 +1,108 @@
+
+// Copyright (c) 2001 Aleksey Gurtovoy.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. 
+// This software is provided "as is" without express or implied warranty, 
+// and with no claim as to its suitability for any purpose.
+
+#ifndef BOOST_TT_BROKEN_COMPILER_SPEC_HPP_INCLUDED
+#define BOOST_TT_BROKEN_COMPILER_SPEC_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+#   define BOOST_TT_BROKEN_COMPILER_SPEC(T) /**/
+
+#else
+
+namespace boost {
+// forward declarations
+template< typename T > struct remove_const;
+template< typename T > struct remove_volatile;
+template< typename T > struct remove_cv;
+template< typename T > struct remove_pointer;
+template< typename T > struct remove_reference;
+}
+
+// same as BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1 macro, except that it
+// never gets #undef-ined
+#   define BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(trait,spec,result) \
+template<> struct trait<spec> \
+{ \
+    typedef result type; \
+}; \
+/**/
+
+#   define BOOST_TT_AUX_REMOVE_CONST_VOLATILE_RANK1_SPEC(T)                         \
+    BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_const,T const,T)                    \
+    BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_const,T const volatile,T volatile)  \
+    BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_volatile,T volatile,T)              \
+    BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_volatile,T const volatile,T const)  \
+    BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_cv,T const,T)                       \
+    BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_cv,T volatile,T)                    \
+    BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_cv,T const volatile,T)              \
+    /**/
+
+#   define BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T)                               \
+    BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_pointer,T*,T)                       \
+    BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_reference,T&,T)                     \
+    /**/
+
+#   define BOOST_TT_AUX_REMOVE_PTR_REF_RANK_2_SPEC(T)                               \
+    BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T)                                      \
+    BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T const)                                \
+    BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T volatile)                             \
+    BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T const volatile)                       \
+    /**/
+
+#   define BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T)                                   \
+    BOOST_TT_AUX_REMOVE_PTR_REF_RANK_2_SPEC(T)                                      \
+    BOOST_TT_AUX_REMOVE_CONST_VOLATILE_RANK1_SPEC(T)                                \
+    /**/
+
+#   define BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T)                                   \
+    BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T*)                                         \
+    BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T const*)                                   \
+    BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T volatile*)                                \
+    BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T const volatile*)                          \
+    /**/
+
+#   define BOOST_TT_BROKEN_COMPILER_SPEC(T)                                         \
+    namespace boost {                                                               \
+    BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T)                                          \
+    BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T)                                          \
+    BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T*)                                         \
+    BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T const*)                                   \
+    BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T volatile*)                                \
+    BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T const volatile*)                          \
+    }                                                                               \
+    /**/
+
+#   include "boost/type_traits/detail/type_trait_undef.hpp"
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+BOOST_TT_BROKEN_COMPILER_SPEC(bool)
+BOOST_TT_BROKEN_COMPILER_SPEC(char)
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+BOOST_TT_BROKEN_COMPILER_SPEC(wchar_t)
+#endif
+BOOST_TT_BROKEN_COMPILER_SPEC(signed char)
+BOOST_TT_BROKEN_COMPILER_SPEC(unsigned char)
+BOOST_TT_BROKEN_COMPILER_SPEC(signed short)
+BOOST_TT_BROKEN_COMPILER_SPEC(unsigned short)
+BOOST_TT_BROKEN_COMPILER_SPEC(signed int)
+BOOST_TT_BROKEN_COMPILER_SPEC(unsigned int)
+BOOST_TT_BROKEN_COMPILER_SPEC(signed long)
+BOOST_TT_BROKEN_COMPILER_SPEC(unsigned long)
+BOOST_TT_BROKEN_COMPILER_SPEC(float)
+BOOST_TT_BROKEN_COMPILER_SPEC(double)
+BOOST_TT_BROKEN_COMPILER_SPEC(long double)
+
+// for backward compatibility
+#define BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(T) \
+    BOOST_TT_BROKEN_COMPILER_SPEC(T) \
+/**/
+
+#endif // BOOST_TT_BROKEN_COMPILER_SPEC_HPP_INCLUDED
index 4a4980ec2b212896307ee9da8cc611a7bd9363c5..71e64149901b8b616c59858ce5bb2ee075ad02a6 100644 (file)
 //    by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
 //    Fixes for is_array are based on a newgroup posting by Jonathan Lundquist.
 
-//
-// Revision History:
-// 21st March 2001:
-//   Fixed is_enum so that it works with incomplete types.
-
-#ifndef BOOST_COMPOSITE_TYPE_TRAITS_HPP
-#define BOOST_COMPOSITE_TYPE_TRAITS_HPP
-
-#ifndef BOOST_ICE_TYPE_TRAITS_HPP
-# include <boost/type_traits/ice.hpp>
-#endif
-#ifndef BOOST_FWD_TYPE_TRAITS_HPP
-# include <boost/type_traits/fwd.hpp>
-#endif
-#ifndef BOOST_CONVERSION_TYPE_TRAITS_HPP
-# include <boost/type_traits/conversion_traits.hpp>
-#endif
-#ifndef BOOST_CV_TYPE_TRAITS_HPP
-# include <boost/type_traits/cv_traits.hpp>
-#endif
-#ifndef BOOST_ARITHMETIC_TYPE_TRAITS_HPP
-# include <boost/type_traits/arithmetic_traits.hpp>
-#endif
-#ifndef BOOST_TRANSFORM_TRAITS_HPP
-# include <boost/type_traits/transform_traits.hpp>
-#endif
-#ifndef BOOST_TT_REFERENCE_TRAITS_HPP
-# include <boost/type_traits/reference_traits.hpp>
-#endif
-#ifndef BOOST_TT_ARRAY_TRAITS_HPP
-# include <boost/type_traits/array_traits.hpp>
-#endif 
-#ifndef BOOST_TYPE_TRAITS_IS_CLASS_HPP
-# include <boost/type_traits/is_class.hpp>
-#endif 
-
-namespace boost{
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-namespace detail{
-
-   struct pointer_helper
-   {
-      pointer_helper(const volatile void*);
-   };
-   yes_type BOOST_TT_DECL is_pointer_helper(pointer_helper);
-   no_type BOOST_TT_DECL is_pointer_helper(...);
-
-::boost::type_traits::no_type BOOST_TT_DECL is_function_tester(...);
-template <class R>
-::boost::type_traits::yes_type is_function_tester(R (*)(void));
-template <class R, class A0>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0));
-template <class R, class A0, class A1>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1));
-template <class R, class A0, class A1, class A2>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2));
-template <class R, class A0, class A1, class A2, class A3>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3));
-template <class R, class A0, class A1, class A2, class A3, class A4>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28));
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28, class A29>
-::boost::type_traits::yes_type is_function_tester(R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29));
-} // namespace detail
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-namespace detail
-{
-  // Utility metafunction which returns true if its argument is not an
-  // array and not a reference.
-  template <class T>
-  struct neither_array_nor_reference : ::boost::type_traits::ice_not<
-      ::boost::type_traits::ice_or<
-          ::boost::is_reference<T>::value
-        , ::boost::is_array<T>::value
-      >::value>
-  {};
-}
-
-/**********************************************
- *
- * is_pointer
- *
- **********************************************/
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-namespace detail{
-template <typename T> struct is_pointer_helper
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <typename T> struct is_pointer_helper<T*>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <typename T> struct is_pointer_helper<T*const>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <typename T> struct is_pointer_helper<T*volatile>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <typename T> struct is_pointer_helper<T*const volatile>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-} // namespace detail
-template <typename T> struct is_pointer
-{ BOOST_STATIC_CONSTANT(bool, value = (::boost::type_traits::ice_and< ::boost::detail::is_pointer_helper<T>::value, ::boost::type_traits::ice_not< ::boost::is_member_pointer<T>::value >::value >::value)); };
-#else
-
-namespace detail
-{
-  // is_pointer implementation
-  template <bool maybe = false>
-  struct is_pointer_select : ::boost::type_traits::false_unary_metafunction
-  {
-  };
-
-  template <>
-  struct is_pointer_select<true>
-  {
-      template <class T>
-      struct apply
-      {
-          static T& make_t();
-          BOOST_STATIC_CONSTANT(bool, value =
-                  (::boost::type_traits::ice_or<
-                       (1 == sizeof(is_pointer_helper(make_t()))),
-                       (1 == sizeof(is_function_tester(make_t())))
-                   >::value));
-      };
-  };
-}
-
-template <typename T>
-struct is_pointer : ::boost::detail::is_pointer_select<
-    ::boost::detail::neither_array_nor_reference<T>::value
->::template apply<T>
-{};
-
-template <>
-struct is_pointer <void>
-{ 
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <>
-struct is_pointer <const void>
-{ 
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <>
-struct is_pointer <volatile void>
-{ 
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <>
-struct is_pointer <const volatile void>
-{ 
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#endif
-#endif
-
-/**********************************************
- *
- * is_union
- *
- **********************************************/
-template <typename T> struct is_union
-{
-private:
-   typedef typename remove_cv<T>::type cvt;
-public:
-   BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_UNION(cvt));
-};
-
-/**********************************************
- *
- * is_enum
- *
- **********************************************/
-namespace detail
-{
-  struct int_convertible
-  {
-      int_convertible(int);
-  };
-
-  // Don't evaluate convertibility to int_convertible unless the type
-  // is non-arithmetic. This suppresses warnings with GCC.
-  template <bool is_class_arithmetic_or_reference = true>
-  struct is_enum_helper
-  {
-      template <class T>
-      struct type
-      {
-          BOOST_STATIC_CONSTANT(bool, value = false);
-      };
-  };
-
-  template <>
-  struct is_enum_helper<false>
-  {
-      template <class T> 
-      struct type
-          : ::boost::is_convertible<T,::boost::detail::int_convertible>
-      {
-      };
-  };
-} // namespace detail
-#if !(defined(__BORLANDC__) && (__BORLANDC__ <= 0x551))
-template <typename T> struct is_enum
-{
-private:
-   typedef ::boost::add_reference<T> ar_t;
-   typedef typename ar_t::type r_type;
-       
-# if (defined(__MWERKS__) && __MWERKS__ >= 0x3000) || BOOST_MSVC > 1301 || defined(BOOST_NO_COMPILER_CONFIG)
-   BOOST_STATIC_CONSTANT(bool, selector =
-      (::boost::type_traits::ice_or<
-           ::boost::is_arithmetic<T>::value
-         , ::boost::is_reference<T>::value
-       // We MUST do this on conforming compilers in order to
-       // correctly deduce that noncopyable types are not enums (dwa
-       // 2002/04/15)...
-         , ::boost::is_class<T>::value
-      >::value));
-# else 
-   BOOST_STATIC_CONSTANT(bool, selector =
-      (::boost::type_traits::ice_or<
-           ::boost::is_arithmetic<T>::value
-         , ::boost::is_reference<T>::value
-       // However, not doing this on non-conforming compilers prevents
-       // a dependency recursion.
-      >::value));
-# endif
-#ifdef __BORLANDC__
-    typedef ::boost::detail::is_enum_helper< ::boost::is_enum<T>::selector> se_t;
-#else
-    typedef ::boost::detail::is_enum_helper<selector> se_t;
-#endif
-    typedef typename se_t::template type<r_type> helper;
-public:
-    BOOST_STATIC_CONSTANT(bool, value = helper::value);
-};
-
-// Specializations suppress some nasty warnings with GCC
-template<>
-struct is_enum<float>
-{
-    BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-template<>
-struct is_enum<double>
-{
-    BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-template<>
-struct is_enum<long double>
-{
-    BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-#else // __BORLANDC__
-//
-// buggy is_convertible prevents working 
-// implementation of is_enum:
-template <typename T> struct is_enum
-{
-public:
-   BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_ENUM(T));
-};
-#endif
-
-/**********************************************
- *
- * is_member_pointer
- *
- **********************************************/
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(__BORLANDC__)
-template <typename T> struct is_member_pointer
-{ BOOST_STATIC_CONSTANT(bool, value = ::boost::is_member_function_pointer<T>::value); };
-template <typename T, typename U> struct is_member_pointer<U T::*>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-/**********************************************
- *
- * is_member_function_pointer
- *
- **********************************************/
-template <typename T>
-struct is_member_function_pointer{ BOOST_STATIC_CONSTANT(bool, value = false); };
-
-template <class R, class T>
-struct is_member_function_pointer<R (T::*)(void)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0>
-struct is_member_function_pointer<R (T::*)(A0)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1>
-struct is_member_function_pointer<R (T::*)(A0, A1)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-// Metrowerks thinks this creates ambiguities
-# if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
-
-template <class R, class T>
-struct is_member_function_pointer<R (T::*)(void)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0>
-struct is_member_function_pointer<R (T::*)(A0)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1>
-struct is_member_function_pointer<R (T::*)(A0, A1)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28)const>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T>
-struct is_member_function_pointer<R (T::*)(void)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0>
-struct is_member_function_pointer<R (T::*)(A0)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1>
-struct is_member_function_pointer<R (T::*)(A0, A1)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28)volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T>
-struct is_member_function_pointer<R (T::*)(void)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0>
-struct is_member_function_pointer<R (T::*)(A0)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1>
-struct is_member_function_pointer<R (T::*)(A0, A1)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28>
-struct is_member_function_pointer<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28)const volatile>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-# endif // __MWERKS__ < 0x3000
-#else
-
-namespace detail{
-template <class R, class T>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(void));
-template <class R, class T, class A0>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0));
-template <class R, class T, class A0, class A1>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1));
-template <class R, class T, class A0, class A1, class A2>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2));
-template <class R, class T, class A0, class A1, class A2, class A3>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28));
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28, class A29>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29));
-
-template <class R, class T>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(void) const);
-template <class R, class T, class A0>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0) const);
-template <class R, class T, class A0, class A1>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1) const);
-template <class R, class T, class A0, class A1, class A2>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2) const);
-template <class R, class T, class A0, class A1, class A2, class A3>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28) const);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28, class A29>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29) const);
-
-template <class R, class T>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(void) volatile);
-template <class R, class T, class A0>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0) volatile);
-template <class R, class T, class A0, class A1>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1) volatile);
-template <class R, class T, class A0, class A1, class A2>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28) volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28, class A29>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29) volatile);
-
-template <class R, class T>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(void) const volatile);
-template <class R, class T, class A0>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0) const volatile);
-template <class R, class T, class A0, class A1>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1) const volatile);
-template <class R, class T, class A0, class A1, class A2>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28) const volatile);
-template <class R, class T, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28, class A29>
-::boost::type_traits::yes_type is_member_function_pointer_helper(R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29) const volatile);
-::boost::type_traits::no_type BOOST_TT_DECL is_member_function_pointer_helper(...);
-
-template <class R, class T>
-::boost::type_traits::yes_type BOOST_TT_DECL is_member_pointer_helper(R T::*);
-::boost::type_traits::no_type BOOST_TT_DECL is_member_pointer_helper(...);
-
-}
-
-namespace detail
-{
-  template <bool maybe = false>
-  struct is_member_function_pointer_select
-      : ::boost::type_traits::false_unary_metafunction
-  {
-  };
-
-  template <>
-  struct is_member_function_pointer_select<true>
-  {
-      template <class T>
-      struct apply
-      {
-          static T& make_t();
-
-          BOOST_STATIC_CONSTANT(
-              bool, value = (1 == sizeof(detail::is_member_function_pointer_helper(make_t()))) );
-      };
-  };
-}
-
-template <typename T>
-struct is_member_function_pointer : ::boost::detail::is_member_function_pointer_select<
-    ::boost::detail::neither_array_nor_reference<T>::value
->::template apply<T>
-{};
-
-template <>
-struct is_member_function_pointer<void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <>
-struct is_member_function_pointer<const void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <> 
-struct is_member_function_pointer<volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <>
-struct is_member_function_pointer<const volatile void>
-{ 
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#endif
-#ifdef __BORLANDC__
-template <typename T> struct is_member_pointer
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <typename T, typename U> struct is_member_pointer<U T::*>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#else
-
-namespace detail
-{
-  template <bool maybe = false>
-  struct is_member_pointer_select
-      : ::boost::type_traits::false_unary_metafunction
-  {
-  };
-
-  template <>
-  struct is_member_pointer_select<true>
-  {
-      template <class T>
-      struct apply
-      {
-          static T& make_t();
-
-          BOOST_STATIC_CONSTANT(
-             bool, value = 
-               (::boost::type_traits::ice_or<
-                  (1 == sizeof(detail::is_member_function_pointer_helper(make_t()))),
-                  (1 == sizeof(detail::is_member_pointer_helper(make_t())))
-                >::value) );
-      };
-  };
-}
-
-template <typename T>
-struct is_member_pointer : ::boost::detail::is_member_pointer_select<
-    ::boost::detail::neither_array_nor_reference<T>::value
->::template apply<T>
-{};
-
-template <>
-struct is_member_pointer<void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <>
-struct is_member_pointer<const void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <> 
-struct is_member_pointer<volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <>
-struct is_member_pointer<const volatile void>
-{ 
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#endif
-#endif // __BORLANDC__
-
-#endif
-
-
-} // namespace boost
-
-#endif // BOOST_COMPOSITE_TYPE_TRAITS_HPP
+#ifndef BOOST_TT_COMPOSITE_TRAITS_HPP_INCLUDED
+#define BOOST_TT_COMPOSITE_TRAITS_HPP_INCLUDED
+
+#include "boost/type_traits/is_array.hpp"
+#include "boost/type_traits/is_enum.hpp"
+#include "boost/type_traits/is_member_pointer.hpp"
+#include "boost/type_traits/is_member_function_pointer.hpp"
+#include "boost/type_traits/is_pointer.hpp"
+#include "boost/type_traits/is_reference.hpp"
+#include "boost/type_traits/is_union.hpp"
+
+#endif // BOOST_TT_COMPOSITE_TRAITS_HPP_INCLUDED
 
 
 
diff --git a/boost/boost/type_traits/config.hpp b/boost/boost/type_traits/config.hpp
new file mode 100644 (file)
index 0000000..749b7d6
--- /dev/null
@@ -0,0 +1,94 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_CONFIG_HPP_INCLUDED
+#define BOOST_TT_CONFIG_HPP_INCLUDED
+
+#ifndef BOOST_CONFIG_HPP
+#include "boost/config.hpp"
+#endif
+
+//
+// Helper macros for builtin compiler support.
+// If your compiler has builtin support for any of the following
+// traits concepts, then redefine the appropriate macros to pick
+// up on the compiler support:
+//
+// (these should largely ignore cv-qualifiers)
+// BOOST_IS_CLASS(T) should evaluate to true if T is a class or struct type
+// BOOST_IS_ENUM(T) should evaluate to true if T is an enumerator type
+// BOOST_IS_UNION(T) should evaluate to true if T is a union type
+// BOOST_IS_POD(T) should evaluate to true if T is a POD type
+// BOOST_IS_EMPTY(T) should evaluate to true if T is an empty struct or union
+// BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) should evaluate to true if "T x;" has no effect
+// BOOST_HAS_TRIVIAL_COPY(T) should evaluate to true if T(t) <==> memcpy
+// BOOST_HAS_TRIVIAL_ASSIGN(T) should evaluate to true if t = u <==> memcpy
+// BOOST_HAS_TRIVIAL_DESTRUCTOR(T) should evaluate to true if ~T() has no effect
+
+#ifdef BOOST_HAS_SGI_TYPE_TRAITS
+#   include "boost/type_traits/is_same.hpp"
+#   include <type_traits.h>
+#   define BOOST_IS_POD(T) ::boost::is_same< typename ::__type_traits<T>::is_POD_type, ::__true_type>::value
+#   define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) ::boost::is_same< typename ::__type_traits<T>::has_trivial_default_constructor, ::__true_type>::value
+#   define BOOST_HAS_TRIVIAL_COPY(T) ::boost::is_same< typename ::__type_traits<T>::has_trivial_copy_constructor, ::__true_type>::value
+#   define BOOST_HAS_TRIVIAL_ASSIGN(T) ::boost::is_same< typename ::__type_traits<T>::has_trivial_assignment_operator, ::__true_type>::value
+#   define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) ::boost::is_same< typename ::__type_traits<T>::has_trivial_destructor, ::__true_type>::value
+#endif
+
+#ifndef BOOST_IS_CLASS
+#   define BOOST_IS_CLASS(T) false
+#endif
+
+#ifndef BOOST_IS_ENUM
+#   define BOOST_IS_ENUM(T) false
+#endif
+
+#ifndef BOOST_IS_UNION
+#   define BOOST_IS_UNION(T) false
+#endif
+
+#ifndef BOOST_IS_POD
+#   define BOOST_IS_POD(T) false
+#endif
+
+#ifndef BOOST_IS_EMPTY
+#   define BOOST_IS_EMPTY(T) false
+#endif
+
+#ifndef BOOST_HAS_TRIVIAL_CONSTRUCTOR
+#   define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) false
+#endif
+
+#ifndef BOOST_HAS_TRIVIAL_COPY
+#   define BOOST_HAS_TRIVIAL_COPY(T) false
+#endif
+
+#ifndef BOOST_HAS_TRIVIAL_ASSIGN
+#   define BOOST_HAS_TRIVIAL_ASSIGN(T) false
+#endif
+
+#ifndef BOOST_HAS_TRIVIAL_DESTRUCTOR
+#   define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) false
+#endif
+
+//
+// whenever we have a conversion function with elipses
+// it needs to be declared __cdecl to suppress compiler
+// warnings from MS and Borland compilers:
+#if defined(BOOST_MSVC) || defined(__BORLANDC__)
+#   define BOOST_TT_DECL __cdecl
+#else
+#   define BOOST_TT_DECL /**/
+#endif
+
+# if (defined(__MWERKS__) && __MWERKS__ >= 0x3000) || BOOST_MSVC > 1301 || defined(BOOST_NO_COMPILER_CONFIG)
+#   define BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
+#endif
+
+#endif // BOOST_TT_CONFIG_HPP_INCLUDED
index f5642cdb9dfc1afb7d9af86b4de471eece3064e4..5c3e3e5d6d2bc6b3aa460ceea737e6596b87319b 100644 (file)
 // and with no claim as to its suitability for any purpose.
 //
 
-#ifndef BOOST_CONVERSION_TYPE_TRAITS_HPP
-#define BOOST_CONVERSION_TYPE_TRAITS_HPP
-
-#ifndef BOOST_ICE_TYPE_TRAITS_HPP
-#include <boost/type_traits/ice.hpp>
-#endif
-#ifndef BOOST_FWD_TYPE_TRAITS_HPP
-#include <boost/type_traits/fwd.hpp>
-#endif
-#ifndef BOOST_ARITHMETIC_TYPE_TRAITS_HPP
-#include <boost/type_traits/arithmetic_traits.hpp>
-#endif
-//
-// is one type convertable to another?
-//
-// there are multiple versions of the is_convertible
-// template, almost every compiler seems to require its
-// own version.
-//
-// Thanks to Andrei Alexandrescu for the original version of the
-// conversion detection technique!
-//
-
-namespace boost{
-
-#if defined(BOOST_MSVC) 
-
-//
-// MS specific version:
-//
-namespace detail{
-
-   // This workaround is necessary to handle when From is void
-   // which is normally taken care of by the partial specialization
-   // of the is_convertible class.
-   using ::boost::type_traits::yes_type;
-   using ::boost::type_traits::no_type;
-
-  struct from_not_void_conversion {
-    template <class From, class To>
-    struct n_bind {
-      static no_type BOOST_TT_DECL _m_check(...);
-      static yes_type BOOST_TT_DECL _m_check(To);
-    public:
-      void foo(); // avoid warning about all members being private
-      static From _m_from;
-      enum { exists = sizeof( _m_check(_m_from) ) == sizeof(yes_type) };
-    };
-  };
-  struct from_is_void_conversion {
-    template <class From, class To>
-    struct n_bind {
-       enum { exists = ::boost::is_void<To>::value };
-    };
-  };
-
-  template <class From>
-  struct conversion_helper {
-    typedef from_not_void_conversion type;
-  };
-  template <>
-  struct conversion_helper<void> {
-    typedef from_is_void_conversion type;
-  };
-} // namespace detail
-
-template <class From, class To>
-struct is_convertible
-{
- typedef typename detail::conversion_helper<From>::type Selector;
- typedef typename Selector::template n_bind<From,To> Conversion;
-public:
- enum { value = Conversion::exists };
-};
-
-#elif defined(__BORLANDC__)
-//
-// special version for Borland compilers
-// this version breaks when used for some
-// UDT conversions:
-//
-template <class From, class To>
-struct is_convertible
-{
-private:
-#pragma option push -w-8074
-   // This workaround for Borland breaks the EDG C++ frontend,
-   // so we only use it for Borland.
-   template <class T>
-   struct checker
-   {
-      static type_traits::no_type BOOST_TT_DECL _m_check(...);
-      static type_traits::yes_type BOOST_TT_DECL _m_check(T);
-   };
-   static From _m_from;
-public:
-   static const bool value = sizeof( checker<To>::_m_check(_m_from) ) == sizeof(type_traits::yes_type);
-
-   void foo(); // avoid warning about all members being private
-#pragma option pop
-};
-
-#elif defined(__GNUC__)
-//
-// special version for gcc compiler
-//
-namespace detail{
-   struct any_conversion
-   {
-      template <class T>
-      any_conversion(const T&);
-      template <class T>
-      any_conversion(T&);
-   };
-   template <class T>
-   struct checker
-   {
-      static boost::type_traits::no_type _m_check(any_conversion ...);
-      static boost::type_traits::yes_type _m_check(T, int);
-   };
-} // namespace detail
-template <class From, class To>
-struct is_convertible
-{
-private:
-   static From _m_from;
-public:
-   static const bool value = sizeof( detail::checker<To>::_m_check(_m_from, 0) ) == sizeof(type_traits::yes_type);
-
-   void foo(); // avoid warning about all members being private
-};
-
-// Declare specializations of is_convertible for all of the floating
-// types to all of the integral types. This suppresses some nasty
-// warnings
-
-# define BOOST_IS_CONVERTIBLE(T1,T2) template<>struct is_convertible<T1,T2>{static const bool value=true;};
-# define BOOST_IS_CONVERTIBLE2(T1,T2)        \
-        BOOST_IS_CONVERTIBLE(T1,signed T2)   \
-        BOOST_IS_CONVERTIBLE(T1,unsigned T2)
-            
-# define BOOST_FLOAT_IS_CONVERTIBLE(F)  \
-   BOOST_IS_CONVERTIBLE(F,char)         \
-   BOOST_IS_CONVERTIBLE2(F,char)        \
-   BOOST_IS_CONVERTIBLE2(F,short)       \
-   BOOST_IS_CONVERTIBLE2(F,int)         \
-   BOOST_IS_CONVERTIBLE2(F,long)        \
-   BOOST_IS_CONVERTIBLE2(F,long long)
-
-BOOST_FLOAT_IS_CONVERTIBLE(float)
-BOOST_FLOAT_IS_CONVERTIBLE(double)
-BOOST_FLOAT_IS_CONVERTIBLE(long double)
-BOOST_FLOAT_IS_CONVERTIBLE(float const)
-BOOST_FLOAT_IS_CONVERTIBLE(double const)
-BOOST_FLOAT_IS_CONVERTIBLE(long double const)
-BOOST_FLOAT_IS_CONVERTIBLE(float volatile)
-BOOST_FLOAT_IS_CONVERTIBLE(double volatile)
-BOOST_FLOAT_IS_CONVERTIBLE(long double volatile)
-BOOST_FLOAT_IS_CONVERTIBLE(float const volatile)
-BOOST_FLOAT_IS_CONVERTIBLE(double const volatile)
-BOOST_FLOAT_IS_CONVERTIBLE(long double const volatile)
-# undef BOOST_FLOAT_IS_CONVERTIBLE
-# undef BOOST_IS_CONVERTIBLE2
-# undef BOOST_IS_CONVERTIBLE
-#else
-
-template <class From, class To>
-struct is_convertible
-{
-private:
-   static type_traits::no_type BOOST_TT_DECL _m_check(...);
-   static type_traits::yes_type BOOST_TT_DECL _m_check(To);
-   static From _m_from;
-public:
-   BOOST_STATIC_CONSTANT(bool, value = sizeof( _m_check(_m_from) ) == sizeof(type_traits::yes_type));
-   void foo(); // avoid warning about all members being private
-};
-
-#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-//  A definition is required even for integral static constants
-template <class From, class To>
-const bool is_convertible<From, To>::value;
-#endif
-
-
-#endif // is_convertible
-
-//
-// Now add the full and partial specialisations
-// for void types, these are common to all the
-// implementation above:
-//
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <class From>
-struct is_convertible<From, void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <class From>
-struct is_convertible<From, const void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <class From>
-struct is_convertible<From, volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <class From>
-struct is_convertible<From, const volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#endif // BOOST_NO_CV_VOID_SPECIALIZATIONS
-
-template <class To>
-struct is_convertible<void, To>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <class To>
-struct is_convertible<const void, To>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <class To>
-struct is_convertible<volatile void, To>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <class To>
-struct is_convertible<const volatile void, To>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#endif
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-template <>
-struct is_convertible<void, void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <>
-struct is_convertible<void, const void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct is_convertible<void, volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct is_convertible<void, const volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct is_convertible<const void, const void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct is_convertible<const void, volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct is_convertible<const void, const volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct is_convertible<volatile void, const void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct is_convertible<volatile void, volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct is_convertible<volatile void, const volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct is_convertible<const volatile void, const void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct is_convertible<const volatile void, volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct is_convertible<const volatile void, const volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-#endif
-
-} // namespace boost
-
-#endif  // include guard
+#ifndef BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
+#define BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
 
+#include "boost/type_traits/is_convertible.hpp"
 
+#endif // BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
index 514e0c193102a9910341d81c47ec2726c2568530..6d57c62da8e145c770bc1a4f2eff75623f3dc940 100644 (file)
 //
 //  defines traits classes for cv-qualified types:
 //  is_const, is_volatile, remove_const, remove_volatile, remove_cv.
-//
-//  Revision History:
-//  24th March 2001:
-//    Fixed is_const/is_volatile so that they work with reference types
-
-#ifndef BOOST_CV_TYPE_TRAITS_HPP
-#define BOOST_CV_TYPE_TRAITS_HPP
-
-#ifndef BOOST_ICE_TYPE_TRAITS_HPP
-#include <boost/type_traits/ice.hpp>
-#endif
-#ifndef BOOST_FWD_TYPE_TRAITS_HPP
-#include <boost/type_traits/fwd.hpp>
-#endif
-#ifndef BOOST_TT_REFERENCE_TRAITS_HPP
-# include <boost/type_traits/reference_traits.hpp>
-#endif
-#ifndef BOOST_TT_ARRAY_TRAITS_HPP
-# include <boost/type_traits/array_traits.hpp>
-#endif
-#ifndef BOOST_TT_UTILITY_HPP
-# include <boost/type_traits/utility.hpp>
-#endif 
-
-namespace boost{
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-namespace detail{
-//
-// implementation helper:
-//
-template <class T>
-struct cv_traits_imp{};
-
-template <class T>
-struct cv_traits_imp<T*>
-{
-   BOOST_STATIC_CONSTANT(bool, is_const = false);
-   BOOST_STATIC_CONSTANT(bool, is_volatile = false);
-   typedef T unqualified_type;
-};
-
-template <class T>
-struct cv_traits_imp<const T*>
-{
-   BOOST_STATIC_CONSTANT(bool, is_const = true);
-   BOOST_STATIC_CONSTANT(bool, is_volatile = false);
-   typedef T unqualified_type;
-};
-
-template <class T>
-struct cv_traits_imp<volatile T*>
-{
-   BOOST_STATIC_CONSTANT(bool, is_const = false);
-   BOOST_STATIC_CONSTANT(bool, is_volatile = true);
-   typedef T unqualified_type;
-};
-
-template <class T>
-struct cv_traits_imp<const volatile T*>
-{
-   BOOST_STATIC_CONSTANT(bool, is_const = true);
-   BOOST_STATIC_CONSTANT(bool, is_volatile = true);
-   typedef T unqualified_type;
-};
-
-template <class T, bool is_vol>
-struct remove_const_helper
-{
-   typedef T type;
-};
-template <class T>
-struct remove_const_helper<T, true>
-{
-   typedef volatile T type;
-};
-
-template <class T, bool is_vol>
-struct remove_volatile_helper
-{
-   typedef T type;
-};
-template <class T>
-struct remove_volatile_helper<T, true>
-{
-   typedef const T type;
-};
-
-} // namespace detail
-
-// * convert a type T to a non-volatile type - remove_volatile<T>
-template <typename T>
-struct remove_volatile
-{
-   typedef typename detail::cv_traits_imp<T*>::unqualified_type uq_type;
-   typedef typename detail::remove_volatile_helper<uq_type, ::boost::is_const<T>::value>::type type;
-};
-template <typename T> struct remove_volatile<T&>{ typedef T& type; };
-template <typename T, std::size_t N> struct remove_volatile<volatile T[N]>{ typedef T type[N]; };
-template <typename T, std::size_t N> struct remove_volatile<const volatile T[N]>{ typedef const T type[N]; };
-
-// * convert a type T to non-const type - remove_const<T>
-template <typename T>
-struct remove_const
-{
-   typedef typename detail::cv_traits_imp<T*>::unqualified_type uq_type;
-   typedef typename detail::remove_const_helper<uq_type, ::boost::is_volatile<T>::value>::type type;
-};
-template <typename T> struct remove_const<T&>{ typedef T& type; };
-template <typename T, std::size_t N> struct remove_const<const T[N]>{ typedef T type[N]; };
-template <typename T, std::size_t N> struct remove_const<const volatile T[N]>{ typedef volatile T type[N]; };
-
-//  convert a type T to a non-cv-qualified type - remove_cv<T>
-template <typename T>
-struct remove_cv
-{
-   typedef typename detail::cv_traits_imp<T*>::unqualified_type type;
-};
-template <typename T> struct remove_cv<T&>{ typedef T& type; };
-template <typename T, std::size_t N> struct remove_cv<const T[N]>{ typedef T type[N]; };
-template <typename T, std::size_t N> struct remove_cv<volatile T[N]>{ typedef T type[N]; };
-template <typename T, std::size_t N> struct remove_cv<const volatile T[N]>{ typedef T type[N]; };
-
-//* is a type T  declared const - is_const<T>
-template <typename T>
-struct is_const
-{
-   BOOST_STATIC_CONSTANT(bool, value = detail::cv_traits_imp<T*>::is_const);
-};
-template <typename T> struct is_const<T&>
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-#if defined(__BORLANDC__)
-// these are illegal specialisations; cv-qualifies applied to
-// references have no effect according to [8.3.2p1],
-// C++ Builder requires them though as it treats cv-qualified
-// references as distinct types...
-template <typename T> struct is_const<T&const>
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <typename T> struct is_const<T&volatile>
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <typename T> struct is_const<T&const volatile>
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-#endif
-
-//* is a type T declared volatile - is_volatile<T>
-template <typename T>
-struct is_volatile
-{
-   BOOST_STATIC_CONSTANT(bool, value = detail::cv_traits_imp<T*>::is_volatile);
-};
-template <typename T> struct is_volatile<T&>
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-#if defined(__BORLANDC__)
-// these are illegal specialisations; cv-qualifies applied to
-// references have no effect according to [8.3.2p1],
-// C++ Builder requires them though as it treats cv-qualified
-// references as distinct types...
-template <typename T> struct is_volatile<T&const>
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <typename T> struct is_volatile<T&volatile>
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <typename T> struct is_volatile<T&const volatile>
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-#endif
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-// The following three don't work:
-template <typename T> struct remove_volatile{ typedef T type; };
-template <typename T> struct remove_const{ typedef T type; };
-template <typename T> struct remove_cv{ typedef T type; };
-
-namespace detail{
-   using ::boost::type_traits::yes_type;
-   using ::boost::type_traits::no_type;
-   yes_type is_const_helper(const volatile void*);
-   no_type is_const_helper(volatile void *);
-   yes_type is_volatile_helper(const volatile void*);
-   no_type is_volatile_helper(const void *);
-}
-
-namespace detail
-{
-  template <bool is_ref, bool array>
-  struct is_const_impl
-      : ::boost::type_traits::false_unary_metafunction
-  {};
-
-  template <>
-  struct is_const_impl<false,false>
-  {
-      template <class T>
-      struct apply
-      {
-       private:
-          static T* t;
-       public:
-          BOOST_STATIC_CONSTANT(bool, value = (sizeof(detail::yes_type) == sizeof(detail::is_const_helper(t))));
-      };      
-  };
-
-  template <>
-  struct is_const_impl<false,true>
-  {
-      template <class T>
-      struct apply
-      {
-       private:
-          static T t;
-       public:
-          BOOST_STATIC_CONSTANT(bool, value = (sizeof(detail::yes_type) == sizeof(detail::is_const_helper(&t))));
-      };      
-  };
-}
-
-template <typename T>
-struct is_const
-    : ::boost::detail::is_const_impl<
-          is_reference<T>::value
-        , is_array<T>::value
-     >::template apply<T>
-{ 
-};
-
-template <>
-struct is_const<void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <>
-struct is_const<const void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct is_const<volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <>
-struct is_const<const volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-#endif
-
-namespace detail
-{
-  template <bool is_ref, bool array>
-  struct is_volatile_impl
-      : ::boost::type_traits::false_unary_metafunction
-  {};
-
-  template <>
-  struct is_volatile_impl<false,false>
-  {
-      template <class T>
-      struct apply
-      {
-       private:
-          static T* t;
-       public:
-          BOOST_STATIC_CONSTANT(bool, value = (sizeof(detail::yes_type) == sizeof(detail::is_volatile_helper(t))));
-      };      
-  };
-
-  template <>
-  struct is_volatile_impl<false,true>
-  {
-      template <class T>
-      struct apply
-      {
-       private:
-          static T t;
-       public:
-          BOOST_STATIC_CONSTANT(bool, value = (sizeof(detail::yes_type) == sizeof(detail::is_volatile_helper(&t))));
-      };      
-  };
-}
-
-template <typename T>
-struct is_volatile
-    : ::boost::detail::is_volatile_impl<
-          is_reference<T>::value
-        , is_array<T>::value
-     >::template apply<T>
-{ 
-};
-
-
-template <>
-struct is_volatile<void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <>
-struct is_volatile<const void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <>
-struct is_volatile<volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct is_volatile<const volatile void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-#endif
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-// * convert a type T to const type - add_const<T>
-// this is not required since the result is always
-// the same as "T const", but it does suppress warnings
-// from some compilers:
-template <typename T>
-struct add_const
-{
-#if defined(BOOST_MSVC)
-    // This bogus warning will appear when add_const is applied to a
-    // const volatile reference because we can't detect const volatile
-    // references with MSVC6.
-# pragma warning(push)
-# pragma warning(disable:4181) // warning C4181: qualifier applied to reference type ignored
-#endif 
-   typedef T const type;
-#if defined(BOOST_MSVC)
-# pragma warning(pop)
-#endif 
-};
-// * convert a type T to volatile type - add_volatile<T>
-// this is not required since the result is always
-// the same as "T volatile", but it does suppress warnings
-// from some compilers:
-template <typename T>
-struct add_volatile
-{
-#if defined(BOOST_MSVC)
-    // This bogus warning will appear when add_volatile is applied to a
-    // const volatile reference because we can't detect const volatile
-    // references with MSVC6.
-# pragma warning(push)
-# pragma warning(disable:4181) // warning C4181: qualifier applied to reference type ignored
-#endif 
-   typedef T volatile type;
-#if defined(BOOST_MSVC)
-# pragma warning(pop)
-#endif 
-};
-// * convert a type T to a const volatile type - add_cv<T>
-// this is not required since the result is always
-// the same as "T const volatile", but it does suppress warnings
-// from some compilers:
-template <typename T>
-struct add_cv
-{
-#if defined(BOOST_MSVC)
-    // This bogus warning will appear when add_volatile is applied to a
-    // const volatile reference because we can't detect const volatile
-    // references with MSVC6.
-# pragma warning(push)
-# pragma warning(disable:4181) // warning C4181: qualifier applied to reference type ignored
-#endif 
-   typedef T const volatile type;
-#if defined(BOOST_MSVC)
-# pragma warning(pop)
-#endif 
-};
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <class T>
-struct add_const<T&>{ typedef T& type; };
-template <class T>
-struct add_volatile<T&>{ typedef T& type; };
-template <class T>
-struct add_cv<T&>{ typedef T& type; };
-#endif
-
-} // namespace boost
-
-
-#endif // BOOST_CV_TYPE_TRAITS_HPP
-
 
+#ifndef BOOST_TT_CV_TRAITS_HPP_INCLUDED
+#define BOOST_TT_CV_TRAITS_HPP_INCLUDED
 
+#include "boost/type_traits/add_const.hpp"
+#include "boost/type_traits/add_volatile.hpp"
+#include "boost/type_traits/add_cv.hpp"
+#include "boost/type_traits/is_const.hpp"
+#include "boost/type_traits/is_volatile.hpp"
+#include "boost/type_traits/remove_const.hpp"
+#include "boost/type_traits/remove_volatile.hpp"
+#include "boost/type_traits/remove_cv.hpp"
 
+#endif // BOOST_TT_CV_TRAITS_HPP_INCLUDED
diff --git a/boost/boost/type_traits/detail/bool_trait_def.hpp b/boost/boost/type_traits/detail/bool_trait_def.hpp
new file mode 100644 (file)
index 0000000..f3f4f0a
--- /dev/null
@@ -0,0 +1,117 @@
+//-----------------------------------------------------------------------------
+// boost/type_traits/detail/bool_trait_def.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2002
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+// no include guards, the header is intended for multiple inclusion!
+
+#include "boost/type_traits/detail/template_arity_spec.hpp"
+#include "boost/mpl/bool_c.hpp"
+#include "boost/mpl/aux_/lambda_support.hpp"
+#include "boost/config.hpp"
+
+#if !defined(BOOST_MSVC) || BOOST_MSVC > 1200
+#   define BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) /**/
+#else
+#   define BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+    typedef mpl::bool_c< C > base_; \
+    using base_::value; \
+    /**/
+#endif
+
+#define BOOST_TT_AUX_BOOL_TRAIT_DEF1(trait,T,C) \
+template< typename T > struct trait \
+    : mpl::bool_c< C > \
+{ \
+    BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
+}; \
+\
+BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,trait) \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_DEF2(trait,T1,T2,C) \
+template< typename T1, typename T2 > struct trait \
+    : mpl::bool_c< C > \
+{ \
+    BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2,trait,(T1,T2)) \
+}; \
+\
+BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(2,trait) \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp,C) \
+template<> struct trait<sp> \
+    : mpl::bool_c< C > \
+{ \
+    BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(sp)) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_SPEC2(trait,sp1,sp2,C) \
+template<> struct trait<sp1,sp2> \
+    : mpl::bool_c< C > \
+{ \
+    BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2,trait,(sp1,sp2)) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(param,trait,sp,C) \
+template< param > struct trait<sp> \
+    : mpl::bool_c< C > \
+{ \
+    BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(param1,param2,trait,sp,C) \
+template< param1, param2 > struct trait<sp> \
+    : mpl::bool_c< C > \
+{ \
+    BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(param,trait,sp1,sp2,C) \
+template< param > struct trait<sp1,sp2> \
+    : mpl::bool_c< C > \
+{ \
+    BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2,trait,(sp1,sp2)) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(param1,param2,trait,sp1,sp2,C) \
+template< param1, param2 > struct trait<sp1,sp2> \
+    : mpl::bool_c< C > \
+{ \
+    BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+}; \
+/**/
+
+#ifndef BOOST_NO_CV_SPECIALIZATIONS
+#   define BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(trait,sp,value) \
+    BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp,value) \
+    BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp const,value) \
+    BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp volatile,value) \
+    BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp const volatile,value) \
+    /**/
+#else
+#   define BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(trait,sp,value) \
+    BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp,value) \
+    /**/
+#endif
diff --git a/boost/boost/type_traits/detail/bool_trait_undef.hpp b/boost/boost/type_traits/detail/bool_trait_undef.hpp
new file mode 100644 (file)
index 0000000..45bdd14
--- /dev/null
@@ -0,0 +1,27 @@
+//-----------------------------------------------------------------------------
+// boost/type_traits/detail/bool_trait_undef.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2002
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+// no include guards, the header is intended for multiple inclusion!
+
+#undef BOOST_TT_AUX_BOOL_TRAIT_DEF1
+#undef BOOST_TT_AUX_BOOL_TRAIT_DEF2
+#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC1
+#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC2
+#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1
+#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2
+#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1
+#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2
+#undef BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1
diff --git a/boost/boost/type_traits/detail/cv_traits_impl.hpp b/boost/boost/type_traits/detail/cv_traits_impl.hpp
new file mode 100644 (file)
index 0000000..f0e26f2
--- /dev/null
@@ -0,0 +1,62 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+// sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_DETAIL_CV_TRAITS_IMPL_HPP_INCLUDED
+#define BOOST_TT_DETAIL_CV_TRAITS_IMPL_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+namespace detail {
+
+// implementation helper:
+
+template <typename T> struct cv_traits_imp {};
+
+template <typename T>
+struct cv_traits_imp<T*>
+{
+    BOOST_STATIC_CONSTANT(bool, is_const = false);
+    BOOST_STATIC_CONSTANT(bool, is_volatile = false);
+    typedef T unqualified_type;
+};
+
+template <typename T>
+struct cv_traits_imp<const T*>
+{
+    BOOST_STATIC_CONSTANT(bool, is_const = true);
+    BOOST_STATIC_CONSTANT(bool, is_volatile = false);
+    typedef T unqualified_type;
+};
+
+template <typename T>
+struct cv_traits_imp<volatile T*>
+{
+    BOOST_STATIC_CONSTANT(bool, is_const = false);
+    BOOST_STATIC_CONSTANT(bool, is_volatile = true);
+    typedef T unqualified_type;
+};
+
+template <typename T>
+struct cv_traits_imp<const volatile T*>
+{
+    BOOST_STATIC_CONSTANT(bool, is_const = true);
+    BOOST_STATIC_CONSTANT(bool, is_volatile = true);
+    typedef T unqualified_type;
+};
+
+} // namespace detail
+} // namespace boost 
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_TT_DETAIL_CV_TRAITS_IMPL_HPP_INCLUDED
diff --git a/boost/boost/type_traits/detail/false_result.hpp b/boost/boost/type_traits/detail/false_result.hpp
new file mode 100644 (file)
index 0000000..e0287cf
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright David Abrahams 2002. Permission to copy, use,
+// modify, sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+
+#ifndef BOOST_TT_DETAIL_FALSE_RESULT_HPP_INCLUDED
+#define BOOST_TT_DETAIL_FALSE_RESULT_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+namespace boost {
+namespace type_traits {
+
+// Utility class which always "returns" false
+struct false_result
+{
+    template <typename T> struct result_
+    {
+        BOOST_STATIC_CONSTANT(bool, value = false);
+    };
+};
+
+}} // namespace boost::type_traits
+
+#endif // BOOST_TT_DETAIL_FALSE_RESULT_HPP_INCLUDED
diff --git a/boost/boost/type_traits/detail/ice_and.hpp b/boost/boost/type_traits/detail/ice_and.hpp
new file mode 100644 (file)
index 0000000..890cb61
--- /dev/null
@@ -0,0 +1,36 @@
+// (C) Copyright John Maddock and Steve Cleary 2000.
+//
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_DETAIL_ICE_AND_HPP_INCLUDED
+#define BOOST_TT_DETAIL_ICE_AND_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+namespace boost {
+namespace type_traits {
+
+template <bool b1, bool b2, bool b3 = true, bool b4 = true, bool b5 = true, bool b6 = true, bool b7 = true>
+struct ice_and;
+
+template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
+struct ice_and
+{
+    BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template <>
+struct ice_and<true, true, true, true, true, true, true>
+{
+    BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_ICE_AND_HPP_INCLUDED
diff --git a/boost/boost/type_traits/detail/ice_eq.hpp b/boost/boost/type_traits/detail/ice_eq.hpp
new file mode 100644 (file)
index 0000000..ba91e37
--- /dev/null
@@ -0,0 +1,38 @@
+// (C) Copyright John Maddock and Steve Cleary 2000.
+//
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_DETAIL_ICE_EQ_HPP_INCLUDED
+#define BOOST_TT_DETAIL_ICE_EQ_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+namespace boost {
+namespace type_traits {
+
+template <int b1, int b2>
+struct ice_eq
+{
+    BOOST_STATIC_CONSTANT(bool, value = (b1 == b2));
+};
+
+template <int b1, int b2>
+struct ice_ne
+{
+    BOOST_STATIC_CONSTANT(bool, value = (b1 != b2));
+};
+
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+template <int b1, int b2> bool const ice_eq<b1,b2>::value;
+template <int b1, int b2> bool const ice_ne<b1,b2>::value;
+#endif
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_ICE_EQ_HPP_INCLUDED
diff --git a/boost/boost/type_traits/detail/ice_not.hpp b/boost/boost/type_traits/detail/ice_not.hpp
new file mode 100644 (file)
index 0000000..1c04873
--- /dev/null
@@ -0,0 +1,33 @@
+// (C) Copyright John Maddock and Steve Cleary 2000.
+//
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_DETAIL_ICE_NOT_HPP_INCLUDED
+#define BOOST_TT_DETAIL_ICE_NOT_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+namespace boost {
+namespace type_traits {
+
+template <bool b>
+struct ice_not
+{
+    BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template <>
+struct ice_not<true>
+{
+    BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_ICE_NOT_HPP_INCLUDED
diff --git a/boost/boost/type_traits/detail/ice_or.hpp b/boost/boost/type_traits/detail/ice_or.hpp
new file mode 100644 (file)
index 0000000..0eca649
--- /dev/null
@@ -0,0 +1,36 @@
+// (C) Copyright John Maddock and Steve Cleary 2000.
+//
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_DETAIL_ICE_OR_HPP_INCLUDED
+#define BOOST_TT_DETAIL_ICE_OR_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+namespace boost {
+namespace type_traits {
+
+template <bool b1, bool b2, bool b3 = false, bool b4 = false, bool b5 = false, bool b6 = false, bool b7 = false>
+struct ice_or;
+
+template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
+struct ice_or
+{
+    BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template <>
+struct ice_or<false, false, false, false, false, false, false>
+{
+    BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_ICE_OR_HPP_INCLUDED
diff --git a/boost/boost/type_traits/detail/is_function_ptr_helper.hpp b/boost/boost/type_traits/detail/is_function_ptr_helper.hpp
new file mode 100644 (file)
index 0000000..e254c17
--- /dev/null
@@ -0,0 +1,142 @@
+
+// Copyright (C) 2000 John Maddock (john_maddock@compuserve.com)
+// Copyright (C) 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
+//
+// Permission to copy and use this software is granted, 
+// provided this copyright notice appears in all copies. 
+// Permission to modify the code and to distribute modified code is granted, 
+// provided this copyright notice appears in all copies, and a notice 
+// that the code was modified is included with the copyright notice.
+//
+// This software is provided "as is" without express or implied warranty, 
+// and with no claim as to its suitability for any purpose.
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
+#define BOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
+
+#include "boost/type_traits/config.hpp"
+
+#if defined(BOOST_TT_PREPROCESSING_MODE)
+#   include "boost/preprocessor/iterate.hpp"
+#   include "boost/preprocessor/enum_params.hpp"
+#   include "boost/preprocessor/comma_if.hpp"
+#endif
+
+namespace boost {
+namespace type_traits {
+
+template <class R>
+struct is_function_ptr_helper
+{
+    BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+#if !defined(BOOST_TT_PREPROCESSING_MODE)
+// preprocessor-generated part, don't edit by hand!
+
+template <class R>
+struct is_function_ptr_helper<R (*)()> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0>
+struct is_function_ptr_helper<R (*)(T0)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1>
+struct is_function_ptr_helper<R (*)(T0,T1)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2>
+struct is_function_ptr_helper<R (*)(T0,T1,T2)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23,class T24>
+struct is_function_ptr_helper<R (*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+
+#else
+
+#undef BOOST_STATIC_CONSTANT
+#define BOOST_PP_ITERATION_PARAMS_1 \
+    (0, 25, "boost/type_traits/detail/is_function_ptr_helper.hpp")
+#include BOOST_PP_ITERATE()
+
+#endif // BOOST_TT_PREPROCESSING_MODE
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define i BOOST_PP_FRAME_ITERATION(1)
+
+template <class R BOOST_PP_COMMA_IF(i) BOOST_PP_ENUM_PARAMS(i,class T)>
+struct is_function_ptr_helper<R (*)(BOOST_PP_ENUM_PARAMS(i,T))> { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#undef i
+#endif // BOOST_PP_IS_ITERATING
diff --git a/boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp b/boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp
new file mode 100644 (file)
index 0000000..617cd33
--- /dev/null
@@ -0,0 +1,358 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, 
+// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.  
+// Permission to copy, use, modify, sell and distribute this software 
+// is granted provided this copyright notice appears in all copies. 
+// This software is provided "as is" without express or implied warranty, 
+// and with no claim as to its suitability for any purpose.
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_IMPL_HPP_INCLUDED
+#define BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_IMPL_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+#if defined(BOOST_TT_PREPROCESSING_MODE)
+#   include "boost/preprocessor/iterate.hpp"
+#   include "boost/preprocessor/enum_params.hpp"
+#   include "boost/preprocessor/comma_if.hpp"
+#endif
+
+namespace boost {
+namespace type_traits {
+
+template <typename T>
+struct is_mem_fun_pointer_impl
+{
+    BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+#if !defined(BOOST_TT_PREPROCESSING_MODE)
+// preprocessor-generated part, don't edit by hand!
+
+template <class R,class T>
+struct is_mem_fun_pointer_impl<R (T::*)()> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T>
+struct is_mem_fun_pointer_impl<R (T::*)() const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T>
+struct is_mem_fun_pointer_impl<R (T::*)() volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T>
+struct is_mem_fun_pointer_impl<R (T::*)() const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0>
+struct is_mem_fun_pointer_impl<R (T::*)(T0)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0>
+struct is_mem_fun_pointer_impl<R (T::*)(T0) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0>
+struct is_mem_fun_pointer_impl<R (T::*)(T0) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0>
+struct is_mem_fun_pointer_impl<R (T::*)(T0) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23,class T24>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24)> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23,class T24>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24) const> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23,class T24>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24) volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+template <class R,class T,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23,class T24>
+struct is_mem_fun_pointer_impl<R (T::*)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24) const volatile> { BOOST_STATIC_CONSTANT(bool,value = true); };
+#endif // __MWERKS__ < 0x3000
+
+#else
+
+#undef BOOST_STATIC_CONSTANT
+#define BOOST_PP_ITERATION_PARAMS_1 \
+    (0, 25, "boost/type_traits/detail/is_mem_fun_pointer_impl.hpp")
+#include BOOST_PP_ITERATE()
+
+#endif // BOOST_TT_PREPROCESSING_MODE
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_IMPL_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define i BOOST_PP_FRAME_ITERATION(1)
+
+template <class R, class T BOOST_PP_COMMA_IF(i) BOOST_PP_ENUM_PARAMS(i,class T)>
+struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(i,T)) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+// Metrowerks thinks this creates ambiguities
+//: #if !defined(__MWERKS__) || __MWERKS__ >= 0x3000
+template <class R, class T BOOST_PP_COMMA_IF(i) BOOST_PP_ENUM_PARAMS(i,class T)>
+struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(i,T)) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T BOOST_PP_COMMA_IF(i) BOOST_PP_ENUM_PARAMS(i,class T)>
+struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(i,T)) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T BOOST_PP_COMMA_IF(i) BOOST_PP_ENUM_PARAMS(i,class T)>
+struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(i,T)) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+//: #endif // __MWERKS__ < 0x3000
+
+
+#undef i
+#endif // BOOST_PP_IS_ITERATING
diff --git a/boost/boost/type_traits/detail/size_t_trait_def.hpp b/boost/boost/type_traits/detail/size_t_trait_def.hpp
new file mode 100644 (file)
index 0000000..1683685
--- /dev/null
@@ -0,0 +1,60 @@
+//-----------------------------------------------------------------------------
+// boost/type_traits/detail/size_t_trait_def.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2002
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+// no include guards, the header is intended for multiple inclusion!
+
+#include "boost/type_traits/detail/template_arity_spec.hpp"
+#include "boost/mpl/size_t_c.hpp"
+#include "boost/mpl/aux_/lambda_support.hpp"
+
+#include <cstddef>
+
+#if !defined(BOOST_MSVC) || BOOST_MSVC > 1200
+#   define BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) /**/
+#else
+#   define BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
+    typedef mpl::size_t_c< C > base_; \
+    using base_::value; \
+    /**/
+#endif
+
+
+#define BOOST_TT_AUX_SIZE_T_TRAIT_DEF1(trait,T,C) \
+template< typename T > struct trait \
+    : mpl::size_t_c< C > \
+{ \
+    BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
+}; \
+\
+BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,trait) \
+/**/
+
+#define BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(trait,spec,C) \
+template<> struct trait<spec> \
+    : mpl::size_t_c< C > \
+{ \
+    BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(spec)) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_SIZE_T_TRAIT_PARTIAL_SPEC1_1(param,trait,spec,C) \
+template< param > struct trait<spec> \
+    : mpl::size_t_c< C > \
+{ \
+}; \
+/**/
diff --git a/boost/boost/type_traits/detail/size_t_trait_undef.hpp b/boost/boost/type_traits/detail/size_t_trait_undef.hpp
new file mode 100644 (file)
index 0000000..cc1c608
--- /dev/null
@@ -0,0 +1,21 @@
+//-----------------------------------------------------------------------------
+// boost/type_traits/detail/size_t_trait_undef.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2002
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+// no include guards, the header is intended for multiple inclusion!
+
+#undef BOOST_TT_AUX_SIZE_T_TRAIT_DEF1
+#undef BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1
+#undef BOOST_TT_AUX_SIZE_T_TRAIT_PARTIAL_SPEC1_1
diff --git a/boost/boost/type_traits/detail/template_arity_spec.hpp b/boost/boost/type_traits/detail/template_arity_spec.hpp
new file mode 100644 (file)
index 0000000..81e7921
--- /dev/null
@@ -0,0 +1,40 @@
+//-----------------------------------------------------------------------------
+// boost/type_traits/detail/template_arity_spec.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2002
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+// no include guards, the header is intended for multiple inclusion!
+
+#include "boost/mpl/aux_/template_arity_fwd.hpp"
+#include "boost/mpl/aux_/preprocessor/params.hpp"
+#include "boost/mpl/aux_/lambda_support.hpp"
+#include "boost/mpl/aux_/config/overload_resolution.hpp"
+#include "boost/config.hpp"
+
+#if defined(BOOST_MPL_NO_FULL_LAMBDA_SUPPORT) && \
+    defined(BOOST_MPL_BROKEN_OVERLOAD_RESOLUTION)
+#   define BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(i, name) \
+namespace mpl { namespace aux { \
+template< BOOST_MPL_PP_PARAMS(i, typename T) > \
+struct template_arity< \
+      name< BOOST_MPL_PP_PARAMS(i, T) > \
+    > \
+{ \
+    BOOST_STATIC_CONSTANT(int, value = i ); \
+}; \
+}} \
+/**/
+#else
+#   define BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(i, name) /**/
+#endif
diff --git a/boost/boost/type_traits/detail/type_trait_def.hpp b/boost/boost/type_traits/detail/type_trait_def.hpp
new file mode 100644 (file)
index 0000000..bdcc478
--- /dev/null
@@ -0,0 +1,52 @@
+//-----------------------------------------------------------------------------
+// boost/type_traits/detail/type_trait_def.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2002
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+// no include guards, the header is intended for multiple inclusion!
+
+#include "boost/type_traits/detail/template_arity_spec.hpp"
+#include "boost/mpl/aux_/lambda_support.hpp"
+
+#define BOOST_TT_AUX_TYPE_TRAIT_DEF1(trait,T,result) \
+template< typename T > struct trait \
+{ \
+    typedef result type; \
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
+}; \
+\
+BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,trait) \
+/**/
+
+#define BOOST_TT_AUX_TYPE_TRAIT_SPEC1(trait,spec,result) \
+template<> struct trait<spec> \
+{ \
+    typedef result type; \
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(spec)) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(param,trait,spec,result) \
+template< param > struct trait<spec> \
+{ \
+    typedef result type; \
+}; \
+/**/
+
+#define BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(param1,param2,trait,spec,result) \
+template< param1, param2 > struct trait<spec> \
+{ \
+    typedef result; \
+}; \
+/**/
diff --git a/boost/boost/type_traits/detail/type_trait_undef.hpp b/boost/boost/type_traits/detail/type_trait_undef.hpp
new file mode 100644 (file)
index 0000000..e001dcd
--- /dev/null
@@ -0,0 +1,22 @@
+//-----------------------------------------------------------------------------
+// boost/type_traits/detail/type_trait_undef.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2002
+// Aleksey Gurtovoy
+//
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee, 
+// provided that the above copyright notice appears in all copies and 
+// that both the copyright notice and this permission notice appear in 
+// supporting documentation. No representations are made about the 
+// suitability of this software for any purpose. It is provided "as is" 
+// without express or implied warranty.
+
+// no include guards, the header is intended for multiple inclusion!
+
+#undef BOOST_TT_AUX_TYPE_TRAIT_DEF1
+#undef BOOST_TT_AUX_TYPE_TRAIT_SPEC1
+#undef BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1
+#undef BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2
diff --git a/boost/boost/type_traits/detail/yes_no_type.hpp b/boost/boost/type_traits/detail/yes_no_type.hpp
new file mode 100644 (file)
index 0000000..3df055f
--- /dev/null
@@ -0,0 +1,24 @@
+
+// (C) Copyright John Maddock and Steve Cleary 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version including documentation.
+//
+// macros and helpers for working with integral-constant-expressions.
+
+#ifndef BOOST_TT_DETAIL_YES_NO_TYPE_HPP_INCLUDED
+#define BOOST_TT_DETAIL_YES_NO_TYPE_HPP_INCLUDED
+
+namespace boost {
+namespace type_traits {
+
+typedef char yes_type;
+typedef double no_type;
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_YES_NO_TYPE_HPP_INCLUDED
index 2ec084b547dbba286ee6b0a10130f9af10242dc0..c38d76e213604d4de94fb04589236409a5b333ca 100644 (file)
 // This software is provided "as is" without express or implied warranty, 
 // and with no claim as to its suitability for any purpose.
 
-#ifndef BOOST_FUNCTION_TYPE_TRAITS_HPP
-#define BOOST_FUNCTION_TYPE_TRAITS_HPP
-
-#ifndef BOOST_ICE_TYPE_TRAITS_HPP
-#include <boost/type_traits/ice.hpp>
-#endif
-#ifndef BOOST_FWD_TYPE_TRAITS_HPP
-#include <boost/type_traits/fwd.hpp>
-#endif
-#ifndef BOOST_COMPOSITE_TYPE_TRAITS_HPP
-#include <boost/type_traits/composite_traits.hpp>
-#endif
-//
-// is a type a function?
-// Please note that this implementation is unnecessarily complex:
-// we could just use !is_convertible<T*, const volatile void*>::value,
-// except that some compilers erroneously allow conversions from
-// function pointers to void*.
-//
-namespace boost{
-namespace detail{
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-template <class R>
-struct is_function_helper_base{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <class R>
-struct is_function_helper_base<R (*)(void)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0>
-struct is_function_helper_base<R (*)(A0)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1>
-struct is_function_helper_base<R (*)(A0, A1)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2>
-struct is_function_helper_base<R (*)(A0, A1, A2)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class A0, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class A19, class A20, class A21, class A22, class A23, class A24, class A25, class A26, class A27, class A28>
-struct is_function_helper_base<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28)>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class T>
-struct is_function_helper : is_function_helper_base<T*>{};
+#ifndef BOOST_TT_FUNCTION_TRAITS_HPP_INCLUDED
+#define BOOST_TT_FUNCTION_TRAITS_HPP_INCLUDED
 
-#else
+#include <boost/config.hpp>
+#include <boost/type_traits/is_function.hpp>
+#include <boost/type_traits/add_pointer.hpp>
 
-template <class T>
-struct is_function_helper
-{
-   static T* t;
-   BOOST_STATIC_CONSTANT(bool, value = sizeof(is_function_tester(t)) == sizeof(::boost::type_traits::yes_type));
-   //BOOST_STATIC_CONSTANT(bool, value = (!::boost::is_convertible<T*, const volatile void*>::value));
-};
-
-#endif
-
-template <class T>
-struct is_function_ref_helper
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-template <class T, bool is_ref>
-struct is_function_chooser
-{
-   typedef is_function_helper<T> type;
-};
-template <class T>
-struct is_function_chooser<T, true>
-{
-   typedef is_function_ref_helper<T> type;
-};
-#endif
-} // namespace detail
-
-template <class T>
-struct is_function
-{
-private:
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-   typedef typename detail::is_function_chooser<T, ::boost::is_reference<T>::value>::type m_type;
-#else
-   // without partial specialistaion we can't use is_reference on
-   // function types, that leaves this template broken in the case that
-   // T is a reference:
-   typedef detail::is_function_helper<T> m_type;
-#endif
-public:
-   BOOST_STATIC_CONSTANT(bool, value = m_type::value);
-};
+namespace boost {
 
 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 namespace detail {
@@ -361,6 +232,6 @@ struct function_traits
 };
 
 #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-} // boost
+}
 
-#endif // BOOST_FUNCTION_TYPE_TRAITS_HPP
+#endif // BOOST_TT_FUNCTION_TRAITS_HPP_INCLUDED
diff --git a/boost/boost/type_traits/has_nothrow_assign.hpp b/boost/boost/type_traits/has_nothrow_assign.hpp
new file mode 100644 (file)
index 0000000..a4a8531
--- /dev/null
@@ -0,0 +1,26 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_NOTHROW_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_NOTHROW_ASSIGN_HPP_INCLUDED
+
+#include "boost/type_traits/has_trivial_assign.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_assign,T,::boost::has_trivial_assign<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_HAS_NOTHROW_ASSIGN_HPP_INCLUDED
diff --git a/boost/boost/type_traits/has_nothrow_constructor.hpp b/boost/boost/type_traits/has_nothrow_constructor.hpp
new file mode 100644 (file)
index 0000000..c60c0cb
--- /dev/null
@@ -0,0 +1,26 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_NOTHROW_CONSTRUCTOR_HPP_INCLUDED
+#define BOOST_TT_HAS_NOTHROW_CONSTRUCTOR_HPP_INCLUDED
+
+#include "boost/type_traits/has_trivial_constructor.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_constructor,T,::boost::has_trivial_constructor<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_HAS_NOTHROW_CONSTRUCTOR_HPP_INCLUDED
diff --git a/boost/boost/type_traits/has_nothrow_copy.hpp b/boost/boost/type_traits/has_nothrow_copy.hpp
new file mode 100644 (file)
index 0000000..224b154
--- /dev/null
@@ -0,0 +1,26 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_NOTHROW_COPY_HPP_INCLUDED
+#define BOOST_TT_HAS_NOTHROW_COPY_HPP_INCLUDED
+
+#include "boost/type_traits/has_trivial_copy.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_copy,T,::boost::has_trivial_copy<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_HAS_NOTHROW_COPY_HPP_INCLUDED
diff --git a/boost/boost/type_traits/has_nothrow_destructor.hpp b/boost/boost/type_traits/has_nothrow_destructor.hpp
new file mode 100644 (file)
index 0000000..9eea57e
--- /dev/null
@@ -0,0 +1,26 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_NOTHROW_DESTRUCTOR_HPP_INCLUDED
+#define BOOST_TT_HAS_NOTHROW_DESTRUCTOR_HPP_INCLUDED
+
+#include "boost/type_traits/has_trivial_destructor.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_destructor,T,::boost::has_trivial_destructor<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_HAS_NOTHROW_DESTRUCTOR_HPP_INCLUDED
diff --git a/boost/boost/type_traits/has_trivial_assign.hpp b/boost/boost/type_traits/has_trivial_assign.hpp
new file mode 100644 (file)
index 0000000..7da4560
--- /dev/null
@@ -0,0 +1,50 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_TRIVIAL_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_TRIVIAL_ASSIGN_HPP_INCLUDED
+
+#include "boost/type_traits/is_POD.hpp"
+#include "boost/type_traits/is_const.hpp"
+#include "boost/type_traits/is_volatile.hpp"
+#include "boost/type_traits/detail/ice_and.hpp"
+#include "boost/type_traits/detail/ice_or.hpp"
+#include "boost/type_traits/detail/ice_not.hpp"
+#include "boost/type_traits/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct has_trivial_assign_impl
+{
+   BOOST_STATIC_CONSTANT(bool, value =
+      (::boost::type_traits::ice_and<
+         ::boost::type_traits::ice_or<
+            ::boost::is_POD<T>::value,
+            BOOST_HAS_TRIVIAL_ASSIGN(T)
+         >::value,
+      ::boost::type_traits::ice_not< ::boost::is_const<T>::value >::value,
+      ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
+      >::value));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_assign,T,::boost::detail::has_trivial_assign_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_HAS_TRIVIAL_ASSIGN_HPP_INCLUDED
diff --git a/boost/boost/type_traits/has_trivial_constructor.hpp b/boost/boost/type_traits/has_trivial_constructor.hpp
new file mode 100644 (file)
index 0000000..38cd8e2
--- /dev/null
@@ -0,0 +1,42 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_TRIVIAL_CONSTRUCTOR_HPP_INCLUDED
+#define BOOST_TT_HAS_TRIVIAL_CONSTRUCTOR_HPP_INCLUDED
+
+#include "boost/type_traits/is_POD.hpp"
+#include "boost/type_traits/detail/ice_or.hpp"
+#include "boost/type_traits/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct has_trivial_ctor_impl
+{
+   BOOST_STATIC_CONSTANT(bool, value =
+      (::boost::type_traits::ice_or<
+         ::boost::is_POD<T>::value,
+         BOOST_HAS_TRIVIAL_CONSTRUCTOR(T)
+      >::value));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_constructor,T,::boost::detail::has_trivial_ctor_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_HAS_TRIVIAL_CONSTRUCTOR_HPP_INCLUDED
diff --git a/boost/boost/type_traits/has_trivial_copy.hpp b/boost/boost/type_traits/has_trivial_copy.hpp
new file mode 100644 (file)
index 0000000..5d31cf5
--- /dev/null
@@ -0,0 +1,48 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_TRIVIAL_COPY_HPP_INCLUDED
+#define BOOST_TT_HAS_TRIVIAL_COPY_HPP_INCLUDED
+
+#include "boost/type_traits/is_volatile.hpp"
+#include "boost/type_traits/is_POD.hpp"
+#include "boost/type_traits/detail/ice_and.hpp"
+#include "boost/type_traits/detail/ice_or.hpp"
+#include "boost/type_traits/detail/ice_not.hpp"
+#include "boost/type_traits/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct has_trivial_copy_impl
+{
+   BOOST_STATIC_CONSTANT(bool, value =
+      (::boost::type_traits::ice_and<
+         ::boost::type_traits::ice_or<
+            ::boost::is_POD<T>::value,
+            BOOST_HAS_TRIVIAL_COPY(T)
+         >::value,
+      ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
+      >::value));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_copy,T,::boost::detail::has_trivial_copy_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_HAS_TRIVIAL_COPY_HPP_INCLUDED
diff --git a/boost/boost/type_traits/has_trivial_destructor.hpp b/boost/boost/type_traits/has_trivial_destructor.hpp
new file mode 100644 (file)
index 0000000..2314271
--- /dev/null
@@ -0,0 +1,42 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_TRIVIAL_DESTRUCTOR_HPP_INCLUDED
+#define BOOST_TT_HAS_TRIVIAL_DESTRUCTOR_HPP_INCLUDED
+
+#include "boost/type_traits/is_POD.hpp"
+#include "boost/type_traits/detail/ice_or.hpp"
+#include "boost/type_traits/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct has_trivial_dtor_impl
+{
+   BOOST_STATIC_CONSTANT(bool, value =
+      (::boost::type_traits::ice_or<
+         ::boost::is_POD<T>::value,
+         BOOST_HAS_TRIVIAL_DESTRUCTOR(T)
+      >::value));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_destructor,T,::boost::detail::has_trivial_dtor_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_HAS_TRIVIAL_DESTRUCTOR_HPP_INCLUDED
index 36e0e2ecc59d5010c364197e5ab24abec2b9938f..0195136090e9fdeeea44cd56d83507e7163864c4 100644 (file)
@@ -9,79 +9,13 @@
 //
 //  macros and helpers for working with integral-constant-expressions.
 
-#ifndef BOOST_ICE_TYPE_TRAITS_HPP
-#define BOOST_ICE_TYPE_TRAITS_HPP
-
-#ifndef BOOST_CONFIG_HPP
-#include <boost/config.hpp>
-#endif
-
-
-namespace boost{
-namespace type_traits{
-
-typedef char yes_type;
-typedef double no_type;
-
-template <bool b>
-struct ice_not
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <>
-struct ice_not<true>
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-
-template <bool b1, bool b2, bool b3 = false, bool b4 = false, bool b5 = false, bool b6 = false, bool b7 = false>
-struct ice_or;
-template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
-struct ice_or
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-template <>
-struct ice_or<false, false, false, false, false, false, false>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-template <bool b1, bool b2, bool b3 = true, bool b4 = true, bool b5 = true, bool b6 = true, bool b7 = true>
-struct ice_and;
-template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
-struct ice_and
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <>
-struct ice_and<true, true, true, true, true, true, true>
-{
-   BOOST_STATIC_CONSTANT(bool, value = true);
-};
-
-template <int b1, int b2>
-struct ice_eq
-{
-   BOOST_STATIC_CONSTANT(bool, value = (b1 == b2));
-};
-
-template <int b1, int b2>
-struct ice_ne
-{
-   BOOST_STATIC_CONSTANT(bool, value = (b1 != b2));
-};
-
-#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-template <int b1, int b2>
-const bool ice_eq<b1,b2>::value;
-template <int b1, int b2>
-const bool ice_ne<b1,b2>::value;
-#endif
-
-} // namespace type_traits
-
-} // namespace boost
-
-#endif // BOOST_ICE_TYPE_TRAITS_HPP
-
-
-
+#ifndef BOOST_TT_ICE_HPP_INCLUDED
+#define BOOST_TT_ICE_HPP_INCLUDED
 
+#include "boost/type_traits/detail/yes_no_type.hpp"
+#include "boost/type_traits/detail/ice_or.hpp"
+#include "boost/type_traits/detail/ice_and.hpp"
+#include "boost/type_traits/detail/ice_not.hpp"
+#include "boost/type_traits/detail/ice_eq.hpp"
 
+#endif // BOOST_TT_ICE_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_POD.hpp b/boost/boost/type_traits/is_POD.hpp
new file mode 100644 (file)
index 0000000..907e1b3
--- /dev/null
@@ -0,0 +1,123 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_POD_HPP_INCLUDED
+#define BOOST_TT_IS_POD_HPP_INCLUDED
+
+#include "boost/type_traits/is_void.hpp"
+#include "boost/type_traits/is_scalar.hpp"
+#include "boost/type_traits/detail/ice_or.hpp"
+#include "boost/type_traits/config.hpp"
+
+#include <cstddef>
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+// forward declaration, needed by 'is_POD_array_helper' template below
+template< typename T > struct is_POD;
+
+namespace detail {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+template <typename T> struct is_POD_impl
+{ 
+    BOOST_STATIC_CONSTANT(
+        bool, value =
+        (::boost::type_traits::ice_or<
+            ::boost::is_scalar<T>::value,
+            ::boost::is_void<T>::value,
+            BOOST_IS_POD(T)
+         >::value));
+};
+
+template <typename T, std::size_t sz>
+struct is_POD_impl<T[sz]>
+    : is_POD_impl<T>
+{
+};
+
+#else
+
+template <bool is_array = false>
+struct is_POD_helper
+{
+    template <typename T> struct result_
+    {
+        BOOST_STATIC_CONSTANT(
+            bool, value =
+            (::boost::type_traits::ice_or<
+                ::boost::is_scalar<T>::value,
+                ::boost::is_void<T>::value,
+                BOOST_IS_POD(T)
+            >::value));
+    };
+};
+
+template <bool b>
+struct bool_to_yes_no_type
+{
+    typedef ::boost::type_traits::no_type type;
+};
+
+template <>
+struct bool_to_yes_no_type<true>
+{
+    typedef ::boost::type_traits::yes_type type;
+};
+
+template <typename ArrayType>
+struct is_POD_array_helper
+{
+    enum { is_pod = ::boost::is_POD<ArrayType>::value }; // MSVC workaround
+    typedef typename bool_to_yes_no_type<is_pod>::type type;
+    type instance() const;
+};
+
+template <typename T>
+is_POD_array_helper<T> is_POD_array(T*);
+
+template <>
+struct is_POD_helper<true>
+{
+    template <typename T> struct result_
+    {
+        static T& help();
+        BOOST_STATIC_CONSTANT(bool, value =
+            sizeof(is_POD_array(help()).instance()) == sizeof(::boost::type_traits::yes_type)
+            );
+    };
+};
+
+
+template <typename T> struct is_POD_impl
+{ 
+   BOOST_STATIC_CONSTANT(
+       bool, value = (
+           ::boost::detail::is_POD_helper<
+              ::boost::is_array<T>::value
+           >::template result_<T>::value
+           )
+       );
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_POD,T,::boost::detail::is_POD_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_POD_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_arithmetic.hpp b/boost/boost/type_traits/is_arithmetic.hpp
new file mode 100644 (file)
index 0000000..21c87ae
--- /dev/null
@@ -0,0 +1,44 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
+#define BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
+
+#include "boost/type_traits/is_integral.hpp"
+#include "boost/type_traits/is_float.hpp"
+#include "boost/type_traits/detail/ice_or.hpp"
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+
+template< typename T >
+struct is_arithmetic_impl
+{ 
+    BOOST_STATIC_CONSTANT(bool, value = 
+        (::boost::type_traits::ice_or< 
+            ::boost::is_integral<T>::value,
+            ::boost::is_float<T>::value
+        >::value)); 
+};
+
+} // namespace detail
+
+//* is a type T an arithmetic type described in the standard (3.9.1p8)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_arithmetic,T,::boost::detail::is_arithmetic_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_array.hpp b/boost/boost/type_traits/is_array.hpp
new file mode 100644 (file)
index 0000000..72a83b2
--- /dev/null
@@ -0,0 +1,78 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+// sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_ARRAY_HPP_INCLUDED
+#define BOOST_TT_IS_ARRAY_HPP_INCLUDED
+
+#include "boost/type_traits/config.hpp"
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   include "boost/type_traits/detail/yes_no_type.hpp"
+#   include "boost/type_traits/detail/wrap.hpp"
+#endif
+
+#include <cstddef>
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_array,T,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T[N],true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T const[N],true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T volatile[N],true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T const volatile[N],true)
+
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace detail {
+
+using ::boost::type_traits::yes_type;
+using ::boost::type_traits::no_type;
+using ::boost::type_traits::wrap;
+
+template< typename T > T(* is_array_tester1(wrap<T>) )(wrap<T>);
+char BOOST_TT_DECL is_array_tester1(...);
+
+template< typename T> no_type is_array_tester2(T(*)(wrap<T>));
+yes_type BOOST_TT_DECL is_array_tester2(...);
+
+template< typename T >
+struct is_array_impl
+{ 
+    BOOST_STATIC_CONSTANT(bool, value = 
+        sizeof(::boost::detail::is_array_tester2(
+            ::boost::detail::is_array_tester1(
+                ::boost::type_traits::wrap<T>()
+                )
+        )) == 1
+    );
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_array,T,::boost::detail::is_array_impl<T>::value)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_array,void,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_array,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_array,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_array,void const volatile,false)
+#endif
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_ARRAY_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_base_and_derived.hpp b/boost/boost/type_traits/is_base_and_derived.hpp
new file mode 100644 (file)
index 0000000..b6c69bf
--- /dev/null
@@ -0,0 +1,56 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED
+#define BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED
+
+#include "boost/type_traits/is_class.hpp"
+#include "boost/type_traits/is_convertible.hpp"
+#include "boost/type_traits/detail/ice_and.hpp"
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+
+template <typename Base, typename Derived>
+struct is_base_and_derived_impl
+{
+   BOOST_STATIC_CONSTANT(bool, value =
+      (::boost::type_traits::ice_and<
+         ::boost::is_convertible<Derived*,Base*>::value,
+         ::boost::is_class<Derived>::value,
+         ::boost::is_class<Base>::value
+      >::value)
+   );
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(
+      is_base_and_derived
+    , Base
+    , Derived
+    , (::boost::detail::is_base_and_derived_impl<Base,Derived>::value)
+    )
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base&,Derived,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base,Derived&,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base&,Derived&,false)
+#endif
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED
index 4dceaf214cbb719e3a3b9bd722433fa843adb2f4..c652491e5f9fae4882f59fc67c3b2ba1fbeeed3a 100644 (file)
@@ -6,44 +6,91 @@
 //  to its suitability for any purpose.
 //
 //  See http://www.boost.org for most recent version including documentation.
-//
-#ifndef BOOST_TYPE_TRAITS_IS_CLASS_HPP
-# define BOOST_TYPE_TRAITS_IS_CLASS_HPP
 
-# if (defined(__MWERKS__) && __MWERKS__ >= 0x3000) || defined(BOOST_MSVC) && _MSC_FULL_VER > 13012108 || defined(BOOST_NO_COMPILER_CONFIG)
-# ifndef BOOST_ICE_TYPE_TRAITS_HPP
-#  include <boost/type_traits/ice.hpp>
-# endif
+#ifndef BOOST_TT_IS_CLASS_HPP_INCLUDED
+#define BOOST_TT_IS_CLASS_HPP_INCLUDED
+
+#include "boost/type_traits/config.hpp"
+
+#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
+#   include "boost/type_traits/detail/yes_no_type.hpp"
+#else
+#   include "boost/type_traits/is_union.hpp"
+#   include "boost/type_traits/is_scalar.hpp"
+#   include "boost/type_traits/is_array.hpp"
+#   include "boost/type_traits/is_reference.hpp"
+#   include "boost/type_traits/is_void.hpp"
+#   include "boost/type_traits/is_function.hpp"
+#   include "boost/type_traits/detail/ice_and.hpp"
+#   include "boost/type_traits/detail/ice_not.hpp"
+#endif
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
 
-# define BOOST_TYPE_TRAITS_IS_CLASS_DEFINED
 namespace boost {
 
-template <typename T>
-struct is_class
-{
-    // This is actually the conforming implementation which works with
-    // abstract classes.  However, enough compilers have trouble with
-    // it that most will use the one in
-    // boost/type_traits/object_traits.hpp. This implementation
-    // actually works with VC7.0, but other interactions seem to fail
-    // when we use it.
+namespace detail {
+
+#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
+
+// This is actually the conforming implementation which works with
+// abstract classes.  However, enough compilers have trouble with
+// it that most will use the one in
+// boost/type_traits/object_traits.hpp. This implementation
+// actually works with VC7.0, but other interactions seem to fail
+// when we use it.
 
 // is_class<> metafunction due to Paul Mensonides
 // (leavings@attbi.com). For more details:
 // http://groups.google.com/groups?hl=en&selm=000001c1cc83%24e154d5e0%247772e50c%40c161550a&rnum=1
- private:
-    template <class U> static ::boost::type_traits::yes_type is_class_helper(void(U::*)(void));
-    template <class U> static ::boost::type_traits::no_type is_class_helper(...);
- public:
-    BOOST_STATIC_CONSTANT(
-        bool, value = sizeof(
-            is_class_helper<T>(0)
-            ) == sizeof(::boost::type_traits::yes_type));
+
+template <typename T>
+struct is_class_impl
+{
+    template <class U> static ::boost::type_traits::yes_type is_class_tester(void(U::*)(void));
+    template <class U> static ::boost::type_traits::no_type is_class_tester(...);
+
+    BOOST_STATIC_CONSTANT(bool, value = 
+        sizeof(is_class_tester<T>(0)) == sizeof(::boost::type_traits::yes_type)
+        );
+};
+
+#else
+
+template <typename T>
+struct is_class_impl
+{
+#   ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+    BOOST_STATIC_CONSTANT(bool, value =
+    (::boost::type_traits::ice_and<
+        ::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value,
+        ::boost::type_traits::ice_not< ::boost::is_scalar<T>::value >::value,
+        ::boost::type_traits::ice_not< ::boost::is_array<T>::value >::value,
+        ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
+        ::boost::type_traits::ice_not< ::boost::is_void<T>::value >::value,
+        ::boost::type_traits::ice_not< ::boost::is_function<T>::value >::value
+        >::value));
+#   else
+    BOOST_STATIC_CONSTANT(bool, value =
+    (::boost::type_traits::ice_and<
+        ::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value,
+        ::boost::type_traits::ice_not< ::boost::is_scalar<T>::value >::value,
+        ::boost::type_traits::ice_not< ::boost::is_array<T>::value >::value,
+        ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
+        ::boost::type_traits::ice_not< ::boost::is_void<T>::value >::value
+        >::value));
+#   endif
 };
-}
 
-# else // nonconforming compilers will use a different impelementation, in object_traits.hpp
+# endif // BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_class,T,::boost::detail::is_class_impl<T>::value)
+
+} // namespace boost
 
-# endif // nonconforming implementations
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
 
-#endif // BOOST_TYPE_TRAITS_IS_CLASS_HPP
+#endif // BOOST_TT_IS_CLASS_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_compound.hpp b/boost/boost/type_traits/is_compound.hpp
new file mode 100644 (file)
index 0000000..29691ab
--- /dev/null
@@ -0,0 +1,53 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_COMPOUND_HPP_INCLUDED
+#define BOOST_TT_IS_COMPOUND_HPP_INCLUDED
+
+#include "boost/type_traits/is_array.hpp"
+#include "boost/type_traits/is_pointer.hpp"
+#include "boost/type_traits/is_reference.hpp"
+#include "boost/type_traits/is_class.hpp"
+#include "boost/type_traits/is_union.hpp"
+#include "boost/type_traits/is_enum.hpp"
+#include "boost/type_traits/is_member_pointer.hpp"
+#include "boost/type_traits/detail/ice_or.hpp"
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct is_compound_impl
+{
+   BOOST_STATIC_CONSTANT(bool, value =
+      (::boost::type_traits::ice_or<
+         ::boost::is_array<T>::value,
+         ::boost::is_pointer<T>::value,
+         ::boost::is_reference<T>::value,
+         ::boost::is_class<T>::value,
+         ::boost::is_union<T>::value,
+         ::boost::is_enum<T>::value,
+         ::boost::is_member_pointer<T>::value
+      >::value));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_compound,T,::boost::detail::is_compound_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_COMPOUND_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_const.hpp b/boost/boost/type_traits/is_const.hpp
new file mode 100644 (file)
index 0000000..34149dd
--- /dev/null
@@ -0,0 +1,112 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+// sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_CONST_HPP_INCLUDED
+#define BOOST_TT_IS_CONST_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   include "boost/type_traits/detail/cv_traits_impl.hpp"
+#else
+#   include "boost/type_traits/is_reference.hpp"
+#   include "boost/type_traits/is_array.hpp"
+#   include "boost/type_traits/detail/yes_no_type.hpp"
+#   include "boost/type_traits/detail/false_result.hpp"
+#endif
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//* is a type T  declared const - is_const<T>
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,::boost::detail::cv_traits_imp<T*>::is_const)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T&,false)
+
+#if defined(__BORLANDC__)
+// these are illegal specialisations; cv-qualifies applied to
+// references have no effect according to [8.3.2p1],
+// C++ Builder requires them though as it treats cv-qualified
+// references as distinct types...
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T& const,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T& volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T& const volatile,false)
+#endif
+
+#else
+
+namespace detail {
+
+using ::boost::type_traits::yes_type;
+using ::boost::type_traits::no_type;
+
+yes_type is_const_tester(const volatile void*);
+no_type is_const_tester(volatile void *);
+
+template <bool is_ref, bool array>
+struct is_const_helper
+    : ::boost::type_traits::false_result
+{
+};
+
+template <>
+struct is_const_helper<false,false>
+{
+    template <typename T> struct result_
+    {
+        static T* t;
+        BOOST_STATIC_CONSTANT(bool, value = (
+            sizeof(detail::yes_type) == sizeof(detail::is_const_tester(t))
+            ));
+    };      
+};
+
+template <>
+struct is_const_helper<false,true>
+{
+    template <typename T> struct result_
+    {
+        static T t;
+        BOOST_STATIC_CONSTANT(bool, value = (
+            sizeof(detail::yes_type) == sizeof(detail::is_const_tester(&t))
+            ));
+    };      
+};
+
+template <typename T>
+struct is_const_impl
+    : is_const_helper<
+          is_reference<T>::value
+        , is_array<T>::value
+        >::template result_<T>
+{ 
+};
+
+} // namespace detail
+
+//* is a type T  declared const - is_const<T>
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,::boost::detail::is_const_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_const,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_const,void const,true)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_const,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_const,void const volatile,true)
+#endif
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_CONST_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_convertible.hpp b/boost/boost/type_traits/is_convertible.hpp
new file mode 100644 (file)
index 0000000..3027cff
--- /dev/null
@@ -0,0 +1,235 @@
+
+// Copyright (C) 2000 John Maddock (john_maddock@compuserve.com)
+// Copyright (C) 2000 Jeremy Siek (jsiek@lsc.nd.edu)
+// Copyright (C) 1999, 2000 Jaakko J\84rvi (jaakko.jarvi@cs.utu.fi)
+//
+// Permission to copy and use this software is granted, 
+// provided this copyright notice appears in all copies. 
+// Permission to modify the code and to distribute modified code is granted, 
+// provided this copyright notice appears in all copies, and a notice 
+// that the code was modified is included with the copyright notice.
+//
+// This software is provided "as is" without express or implied warranty, 
+// and with no claim as to its suitability for any purpose.
+//
+
+#ifndef BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
+#define BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
+
+#include "boost/type_traits/detail/yes_no_type.hpp"
+#include "boost/type_traits/config.hpp"
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
+#   include "boost/type_traits/is_void.hpp"
+#endif
+
+// should be always the last #include directive
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+// is one type convertable to another?
+//
+// there are multiple versions of the is_convertible
+// template, almost every compiler seems to require its
+// own version.
+//
+// Thanks to Andrei Alexandrescu for the original version of the
+// conversion detection technique!
+//
+
+namespace detail {
+
+// MS specific version:
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
+
+// This workaround is necessary to handle when From is void
+// which is normally taken care of by the partial specialization
+// of the is_convertible typename.
+using ::boost::type_traits::yes_type;
+using ::boost::type_traits::no_type;
+
+template< typename From >
+struct does_conversion_exist
+{
+    template< typename To > struct result_
+    {
+        static no_type BOOST_TT_DECL _m_check(...);
+        static yes_type BOOST_TT_DECL _m_check(To);
+        static From _m_from;
+        enum { value = sizeof( _m_check(_m_from) ) == sizeof(yes_type) };
+    };
+};
+
+template<>
+struct does_conversion_exist<void>
+{
+    template< typename To > struct result_
+    {
+        enum { value = ::boost::is_void<To>::value };
+    };
+};
+
+template <typename From, typename To>
+struct is_convertible_impl
+    : does_conversion_exist<From>::template result_<To>
+{
+};
+
+#elif defined(__BORLANDC__)
+//
+// special version for Borland compilers
+// this version breaks when used for some
+// UDT conversions:
+//
+template <typename From, typename To>
+struct is_convertible_impl
+{
+#pragma option push -w-8074
+    // This workaround for Borland breaks the EDG C++ frontend,
+    // so we only use it for Borland.
+    template <typename T> struct checker
+    {
+        static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
+        static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(T);
+    };
+
+    static From _m_from;
+    static bool const value = sizeof( checker<To>::_m_check(_m_from) ) 
+        == sizeof(::boost::type_traits::yes_type);
+#pragma option pop
+};
+
+#elif defined(__GNUC__)
+// special version for gcc compiler
+
+struct any_conversion
+{
+    template <typename T> any_conversion(const T&);
+    template <typename T> any_conversion(T&);
+};
+
+template <typename T> struct checker
+{
+    static boost::type_traits::no_type _m_check(any_conversion ...);
+    static boost::type_traits::yes_type _m_check(T, int);
+};
+
+template <typename From, typename To>
+struct is_convertible_impl
+{
+    static From _m_from;
+    static bool const value = sizeof( detail::checker<To>::_m_check(_m_from, 0) ) 
+        == sizeof(::boost::type_traits::yes_type);
+};
+
+#else
+
+template <typename From, typename To>
+struct is_convertible_impl
+{
+    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
+    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
+    static From _m_from;
+
+    BOOST_STATIC_CONSTANT(bool, value = 
+        sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
+        );
+};
+
+#endif // is_convertible_impl
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_convertible,From,To,(::boost::detail::is_convertible_impl<From,To>::value))
+
+//
+// Now add the full and partial specialisations
+// for void types, these are common to all the
+// implementation above:
+//
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename To,is_convertible,void,To,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename From,is_convertible,From,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename To,is_convertible,void const,To,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename To,is_convertible,void volatile,To,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename To,is_convertible,void const volatile,To,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename From,is_convertible,From,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const volatile,false)
+#endif
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+#   define TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1,spec2,value) \
+    BOOST_TT_AUX_BOOL_TRAIT_SPEC2(trait,spec1,spec2,value) \
+    BOOST_TT_AUX_BOOL_TRAIT_SPEC2(trait,spec1,spec2 const,value) \
+    BOOST_TT_AUX_BOOL_TRAIT_SPEC2(trait,spec1,spec2 volatile,value) \
+    BOOST_TT_AUX_BOOL_TRAIT_SPEC2(trait,spec1,spec2 const volatile,value) \
+    /**/
+
+#   define TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2(trait,spec1,spec2,value) \
+    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1,spec2,value) \
+    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 const,spec2,value) \
+    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 volatile,spec2,value) \
+    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 const volatile,spec2,value) \
+    /**/
+
+    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2(is_convertible,void,void,true)
+
+#   undef TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2
+#   undef TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1
+
+#else
+    BOOST_TT_AUX_BOOL_TRAIT_SPEC2(is_convertible,void,void,true)
+#endif // BOOST_NO_CV_VOID_SPECIALIZATIONS
+
+
+#if defined(__GNUC__)
+
+// Declare specializations of is_convertible for all of the floating
+// types to all of the integral types. This suppresses some nasty
+// warnings
+
+#   define TT_AUX_IS_CONVERTIBLE_SPEC(T1,T2) \
+    BOOST_TT_AUX_BOOL_TRAIT_SPEC2(is_convertible,T1,T2,true) \
+    /**/
+
+#   define TT_AUX_IS_CONVERTIBLE_SPEC_2(T1,T2) \
+    TT_AUX_IS_CONVERTIBLE_SPEC(T1,signed T2) \
+    TT_AUX_IS_CONVERTIBLE_SPEC(T1,unsigned T2) \
+    /**/
+
+#   define TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_SPEC(F) \
+    TT_AUX_IS_CONVERTIBLE_SPEC(F,char) \
+    TT_AUX_IS_CONVERTIBLE_SPEC_2(F,char) \
+    TT_AUX_IS_CONVERTIBLE_SPEC_2(F,short) \
+    TT_AUX_IS_CONVERTIBLE_SPEC_2(F,int) \
+    TT_AUX_IS_CONVERTIBLE_SPEC_2(F,long) \
+    TT_AUX_IS_CONVERTIBLE_SPEC_2(F,long long) \
+    /**/
+
+#   define TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_CV_SPEC(F) \
+    TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_SPEC(F const) \
+    TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_SPEC(F volatile) \
+    TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_SPEC(F const volatile) \
+    /**/
+
+TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_CV_SPEC(float)
+TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_CV_SPEC(double)
+TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_CV_SPEC(long double)
+
+#   undef TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_CV_SPEC
+#   undef TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_SPEC
+#   undef TT_AUX_IS_CONVERTIBLE_SPEC_2
+#   undef TT_AUX_IS_CONVERTIBLE_SPEC
+
+#endif // __GNUC__
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_empty.hpp b/boost/boost/type_traits/is_empty.hpp
new file mode 100644 (file)
index 0000000..9c9191b
--- /dev/null
@@ -0,0 +1,198 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_EMPTY_HPP_INCLUDED
+#define BOOST_TT_IS_EMPTY_HPP_INCLUDED
+
+#include "boost/type_traits/is_convertible.hpp"
+#include "boost/type_traits/detail/ice_or.hpp"
+#include "boost/type_traits/config.hpp"
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   include "boost/type_traits/remove_cv.hpp"
+#   include "boost/type_traits/is_class.hpp"
+#   include "boost/type_traits/add_reference.hpp"
+#else
+#   include "boost/type_traits/is_reference.hpp"
+#   include "boost/type_traits/is_pointer.hpp"
+#   include "boost/type_traits/is_member_pointer.hpp"
+#   include "boost/type_traits/is_array.hpp"
+#   include "boost/type_traits/is_void.hpp"
+#   include "boost/type_traits/detail/ice_and.hpp"
+#   include "boost/type_traits/detail/ice_not.hpp"
+#endif
+
+// should be always the last #include directive
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+template <typename T>
+struct empty_helper_t1 : public T
+{
+    empty_helper_t1();  // hh compiler bug workaround
+    int i[256];
+};
+
+struct empty_helper_t2 { int i[256]; };
+
+#ifndef __BORLANDC__
+
+template <typename T, bool is_a_class = false>
+struct empty_helper
+{
+    BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template <typename T>
+struct empty_helper<T, true>
+{
+    BOOST_STATIC_CONSTANT(
+        bool, value = (sizeof(empty_helper_t1<T>) == sizeof(empty_helper_t2))
+        );
+};
+
+template <typename T>
+struct is_empty_impl
+{
+    typedef typename remove_cv<T>::type cvt;
+    BOOST_STATIC_CONSTANT(
+        bool, value = (
+            ::boost::type_traits::ice_or<
+              ::boost::detail::empty_helper<cvt,::boost::is_class<T>::value>::value
+              , BOOST_IS_EMPTY(cvt)
+            >::value
+            ));
+};
+
+#else // __BORLANDC__
+
+template <typename T, bool is_a_class, bool convertible_to_int>
+struct empty_helper
+{
+    BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template <typename T>
+struct empty_helper<T, true, false>
+{
+    BOOST_STATIC_CONSTANT(bool, value = (
+        sizeof(empty_helper_t1<T>) == sizeof(empty_helper_t2)
+        ));
+};
+
+template <typename T>
+struct is_empty_impl
+{
+   typedef typename remove_cv<T>::type cvt;
+   typedef typename add_reference<T>::type r_type;
+
+   BOOST_STATIC_CONSTANT(
+       bool, value = (
+           ::boost::type_traits::ice_or<
+              ::boost::detail::empty_helper<
+                  cvt
+                , ::boost::is_class<T>::value
+                , ::boost::is_convertible< r_type,int>::value
+              >::value
+              , BOOST_IS_EMPTY(cvt)
+           >::value));
+};
+
+#endif // __BORLANDC__
+
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#ifdef BOOST_MSVC6_MEMBER_TEMPLATES
+
+template <typename T>
+struct empty_helper_t1 : public T
+{
+   empty_helper_t1();
+   int i[256];
+};
+
+struct empty_helper_t2 { int i[256]; };
+
+template <typename T>
+struct empty_helper_base
+{
+   enum { value = (sizeof(empty_helper_t1<T>) == sizeof(empty_helper_t2)) };
+};
+
+template <typename T>
+struct empty_helper_nonbase
+{
+   enum { value = false };
+};
+
+template <bool base>
+struct empty_helper_chooser
+{
+   template <typename T> struct result_
+   {
+      typedef empty_helper_nonbase<T> type;
+   };
+};
+
+template <>
+struct empty_helper_chooser<true>
+{
+   template <typename T> struct result_
+   {
+      typedef empty_helper_base<T> type;
+   };
+};
+
+template <typename T> 
+struct is_empty_impl
+{ 
+   typedef ::boost::detail::empty_helper_chooser<
+      ::boost::type_traits::ice_and<
+         ::boost::type_traits::ice_not< ::boost::is_reference<T>::value >::value,
+         ::boost::type_traits::ice_not< ::boost::is_convertible<T,double>::value >::value,
+         ::boost::type_traits::ice_not< ::boost::is_pointer<T>::value >::value,
+         ::boost::type_traits::ice_not< ::boost::is_member_pointer<T>::value >::value,
+         ::boost::type_traits::ice_not< ::boost::is_array<T>::value >::value,
+         ::boost::type_traits::ice_not< ::boost::is_void<T>::value >::value,
+         ::boost::type_traits::ice_not<
+            ::boost::is_convertible<T,void const volatile*>::value
+            >::value
+      >::value > chooser;
+
+   typedef typename chooser::template result_<T> result;
+   typedef typename result::type eh_type;
+
+   BOOST_STATIC_CONSTANT(bool, value =
+      (::boost::type_traits::ice_or<eh_type::value, BOOST_IS_EMPTY(T)>::value)); 
+};
+
+#else
+
+template <typename T> struct is_empty_impl
+{
+    BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_EMPTY(T));
+};
+
+#endif  // BOOST_MSVC6_MEMBER_TEMPLATES
+
+#endif  // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_empty,T,::boost::detail::is_empty_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_EMPTY_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_enum.hpp b/boost/boost/type_traits/is_enum.hpp
new file mode 100644 (file)
index 0000000..172be3a
--- /dev/null
@@ -0,0 +1,115 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+// sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_ENUM_HPP_INCLUDED
+#define BOOST_TT_IS_ENUM_HPP_INCLUDED
+
+#include "boost/type_traits/add_reference.hpp"
+#include "boost/type_traits/is_arithmetic.hpp"
+#include "boost/type_traits/is_reference.hpp"
+#include "boost/type_traits/is_convertible.hpp"
+#include "boost/type_traits/config.hpp"
+
+#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
+#   include "boost/type_traits/is_class.hpp"
+#endif
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+#if !(defined(__BORLANDC__) && (__BORLANDC__ <= 0x551))
+
+namespace detail {
+  
+struct int_convertible
+{
+    int_convertible(int);
+};
+
+// Don't evaluate convertibility to int_convertible unless the type
+// is non-arithmetic. This suppresses warnings with GCC.
+template <bool is_typename_arithmetic_or_reference = true>
+struct is_enum_helper
+{
+    template <typename T> struct type
+    {
+        BOOST_STATIC_CONSTANT(bool, value = false);
+    };
+};
+
+template <>
+struct is_enum_helper<false>
+{
+    template <typename T> struct type
+        : ::boost::is_convertible<T,::boost::detail::int_convertible>
+    {
+    };
+};
+
+template <typename T> struct is_enum_impl
+{
+   typedef ::boost::add_reference<T> ar_t;
+   typedef typename ar_t::type r_type;
+       
+#if defined(BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION)
+   BOOST_STATIC_CONSTANT(bool, selector =
+      (::boost::type_traits::ice_or<
+           ::boost::is_arithmetic<T>::value
+         , ::boost::is_reference<T>::value
+       // We MUST do this on conforming compilers in order to
+       // correctly deduce that noncopyable types are not enums (dwa
+       // 2002/04/15)...
+         , ::boost::is_class<T>::value
+      >::value));
+#else 
+   BOOST_STATIC_CONSTANT(bool, selector =
+      (::boost::type_traits::ice_or<
+           ::boost::is_arithmetic<T>::value
+         , ::boost::is_reference<T>::value
+       // However, not doing this on non-conforming compilers prevents
+       // a dependency recursion.
+      >::value));
+#endif
+
+#ifdef __BORLANDC__
+    typedef ::boost::detail::is_enum_helper<
+          ::boost::detail::is_enum_impl<T>::selector
+        > se_t;
+#else
+    typedef ::boost::detail::is_enum_helper<selector> se_t;
+#endif
+    typedef typename se_t::template type<r_type> helper;
+    BOOST_STATIC_CONSTANT(bool, value = helper::value);
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_enum,T,::boost::detail::is_enum_impl<T>::value)
+
+// Specializations suppress some nasty warnings with GCC
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_enum,float,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_enum,double,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_enum,long double,false)
+
+#else // __BORLANDC__
+//
+// buggy is_convertible prevents working 
+// implementation of is_enum:
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_enum,T,BOOST_IS_ENUM(T))
+
+#endif
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_ENUM_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_float.hpp b/boost/boost/type_traits/is_float.hpp
new file mode 100644 (file)
index 0000000..5450fca
--- /dev/null
@@ -0,0 +1,28 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TYPE_TRAITS_IS_FLOAT_HPP_INCLUDED
+#define BOOST_TYPE_TRAITS_IS_FLOAT_HPP_INCLUDED
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+//* is a type T a floating-point type described in the standard (3.9.1p8)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_float,T,false)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_float,float,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_float,double,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_float,long double,true)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TYPE_TRAITS_IS_FLOAT_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_function.hpp b/boost/boost/type_traits/is_function.hpp
new file mode 100644 (file)
index 0000000..02c661d
--- /dev/null
@@ -0,0 +1,85 @@
+
+// Copyright (C) 2000 John Maddock (john_maddock@compuserve.com)
+// Copyright (C) 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
+//
+// Permission to copy and use this software is granted, 
+// provided this copyright notice appears in all copies. 
+// Permission to modify the code and to distribute modified code is granted, 
+// provided this copyright notice appears in all copies, and a notice 
+// that the code was modified is included with the copyright notice.
+//
+// This software is provided "as is" without express or implied warranty, 
+// and with no claim as to its suitability for any purpose.
+
+#ifndef BOOST_TT_IS_FUNCTION_HPP_INCLUDED
+#define BOOST_TT_IS_FUNCTION_HPP_INCLUDED
+
+#include "boost/type_traits/is_reference.hpp"
+#include "boost/type_traits/detail/false_result.hpp"
+#include "boost/config.hpp"
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   include "boost/type_traits/detail/is_function_ptr_helper.hpp"
+#else
+#   include "boost/type_traits/detail/is_function_ptr_tester.hpp"
+#   include "boost/type_traits/detail/yes_no_type.hpp"
+#endif
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+// is a type a function?
+// Please note that this implementation is unnecessarily complex:
+// we could just use !is_convertible<T*, const volatile void*>::value,
+// except that some compilers erroneously allow conversions from
+// function pointers to void*.
+
+namespace boost {
+namespace detail {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+template<bool is_ref = true>
+struct is_function_chooser
+    : ::boost::type_traits::false_result
+{
+};
+
+template <>
+struct is_function_chooser<false>
+{
+    template< typename T > struct result_
+        : ::boost::type_traits::is_function_ptr_helper<T*>
+    {
+    };
+};
+
+template <typename T>
+struct is_function_impl
+    : is_function_chooser< ::boost::is_reference<T>::value >
+        ::template result_<T>
+{
+};
+
+#else
+
+template <typename T>
+struct is_function_impl
+{
+    static T* t;
+    BOOST_STATIC_CONSTANT(
+        bool, value = sizeof(::boost::type_traits::is_function_ptr_tester(t))
+        == sizeof(::boost::type_traits::yes_type)
+        );
+};
+
+#endif
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,::boost::detail::is_function_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_FUNCTION_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_fundamental.hpp b/boost/boost/type_traits/is_fundamental.hpp
new file mode 100644 (file)
index 0000000..09e4da9
--- /dev/null
@@ -0,0 +1,42 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_FUNDAMENTAL_HPP_INCLUDED
+#define BOOST_TT_IS_FUNDAMENTAL_HPP_INCLUDED
+
+#include "boost/type_traits/is_arithmetic.hpp"
+#include "boost/type_traits/is_void.hpp"
+#include "boost/type_traits/detail/ice_or.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+
+template <typename T> 
+struct is_fundamental_impl
+    : ::boost::type_traits::ice_or< 
+          ::boost::is_arithmetic<T>::value
+        , ::boost::is_void<T>::value
+        >
+{ 
+};
+
+} // namespace detail
+
+//* is a type T a fundamental type described in the standard (3.9.1)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_fundamental,T,::boost::detail::is_fundamental_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_FUNDAMENTAL_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_integral.hpp b/boost/boost/type_traits/is_integral.hpp
new file mode 100644 (file)
index 0000000..e02a468
--- /dev/null
@@ -0,0 +1,54 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_INTEGRAL_HPP_INCLUDED
+#define BOOST_TT_IS_INTEGRAL_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+//* is a type T an [cv-qualified-] integral type described in the standard (3.9.1p3)
+// as an extention we include long long, as this is likely to be added to the
+// standard at a later date
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_integral,T,false)
+
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned char,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned short,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned int,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned long,true)
+
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,signed char,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,signed short,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,signed int,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,signed long,true)
+
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,bool,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,char,true)
+
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,wchar_t,true)
+#endif
+
+# if defined(BOOST_HAS_LONG_LONG)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned long long,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,long long,true)
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int64,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int64,true)
+#endif
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_INTEGRAL_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_member_function_pointer.hpp b/boost/boost/type_traits/is_member_function_pointer.hpp
new file mode 100644 (file)
index 0000000..cab7ea4
--- /dev/null
@@ -0,0 +1,117 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+// sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
+#define BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
+
+#include "boost/type_traits/config.hpp"
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(__BORLANDC__)
+#   include "boost/type_traits/detail/is_mem_fun_pointer_impl.hpp"
+#else
+#   include "boost/type_traits/is_reference.hpp"
+#   include "boost/type_traits/is_array.hpp"
+#   include "boost/type_traits/detail/is_mem_fun_pointer_tester.hpp"
+#   include "boost/type_traits/detail/yes_no_type.hpp"
+#   include "boost/type_traits/detail/false_result.hpp"
+#   include "boost/type_traits/detail/ice_or.hpp"
+#endif
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(__BORLANDC__)
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(
+      is_member_function_pointer
+    , T
+    , ::boost::type_traits::is_mem_fun_pointer_impl<T>::value
+    )
+
+#else
+
+#ifndef __BORLANDC__
+
+namespace detail {
+
+template <bool>
+struct is_member_function_pointer_select
+    : ::boost::type_traits::false_result
+{
+};
+
+template <>
+struct is_member_function_pointer_select<false>
+{
+    template <typename T> struct result_
+    {
+        static T& make_t;
+        typedef result_<T> self_type;
+        
+        BOOST_STATIC_CONSTANT(
+            bool, value = (
+                1 == sizeof(::boost::type_traits::is_mem_fun_pointer_tester(self_type::make_t))
+            ));
+    };
+};
+
+template <typename T>
+struct is_mem_fun_pointer_impl
+    : is_member_function_pointer_select<
+          ::boost::type_traits::ice_or<
+              ::boost::is_reference<T>::value
+            , ::boost::is_array<T>::value
+            >::value
+        >::template result_<T>
+{
+};
+
+} // namespace detail
+
+#else // Borland C++
+
+namespace detail {
+
+template <typename T>
+struct is_mem_fun_pointer_impl
+{
+   static T& m_t;
+   BOOST_STATIC_CONSTANT(
+              bool, value =
+               (1 == sizeof(type_traits::is_mem_fun_pointer_tester(m_t))) );
+};
+
+template <typename T>
+struct is_mem_fun_pointer_impl<T&>
+{
+   BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+} // namespace detail
+
+#endif
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_function_pointer,T,::boost::detail::is_mem_fun_pointer_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_member_function_pointer,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_member_function_pointer,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_member_function_pointer,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_member_function_pointer,void const volatile,false)
+#endif
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_member_pointer.hpp b/boost/boost/type_traits/is_member_pointer.hpp
new file mode 100644 (file)
index 0000000..f285d32
--- /dev/null
@@ -0,0 +1,96 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+// sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_MEMBER_POINTER_HPP_INCLUDED
+#define BOOST_TT_IS_MEMBER_POINTER_HPP_INCLUDED
+
+#include "boost/type_traits/config.hpp"
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(__BORLANDC__)
+#   include "boost/type_traits/is_member_function_pointer.hpp"
+#else
+#   include "boost/type_traits/is_reference.hpp"
+#   include "boost/type_traits/is_array.hpp"
+#   include "boost/type_traits/detail/is_mem_fun_pointer_tester.hpp"
+#   include "boost/type_traits/detail/yes_no_type.hpp"
+#   include "boost/type_traits/detail/false_result.hpp"
+#   include "boost/type_traits/detail/ice_or.hpp"
+#endif
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+#if defined(__BORLANDC__)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*,true)
+
+#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,::boost::is_member_function_pointer<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*,true)
+
+#else // no partial template specialization
+
+namespace detail {
+
+template <typename R, typename T>
+::boost::type_traits::yes_type BOOST_TT_DECL is_member_pointer_tester(R T::*);
+::boost::type_traits::no_type BOOST_TT_DECL is_member_pointer_tester(...);
+
+template <bool>
+struct is_member_pointer_select
+    : ::boost::type_traits::false_result
+{
+};
+
+template <>
+struct is_member_pointer_select<false>
+{
+    template <typename T> struct result_
+    {
+        static T& make_t();
+        BOOST_STATIC_CONSTANT(
+            bool, value = 
+            (::boost::type_traits::ice_or<
+                (1 == sizeof(::boost::type_traits::is_mem_fun_pointer_tester(make_t()))),
+                (1 == sizeof(is_member_pointer_tester(make_t())))
+            >::value) );
+    };
+};
+
+template <typename T>
+struct is_member_pointer_impl
+    : is_member_pointer_select<
+          ::boost::type_traits::ice_or<
+              ::boost::is_reference<T>::value
+            , ::boost::is_array<T>::value
+            >::value
+        >::template result_<T>
+{
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,::boost::detail::is_member_pointer_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_member_pointer,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_member_pointer,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_member_pointer,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_member_pointer,void const volatile,false)
+#endif
+
+#endif // __BORLANDC__
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_MEMBER_POINTER_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_object.hpp b/boost/boost/type_traits/is_object.hpp
new file mode 100644 (file)
index 0000000..efe737b
--- /dev/null
@@ -0,0 +1,54 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_OBJECT_HPP_INCLUDED
+#define BOOST_TT_IS_OBJECT_HPP_INCLUDED
+
+#include "boost/type_traits/is_reference.hpp"
+#include "boost/type_traits/is_void.hpp"
+#include "boost/type_traits/is_function.hpp"
+#include "boost/type_traits/detail/ice_and.hpp"
+#include "boost/type_traits/detail/ice_not.hpp"
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct is_object_impl
+{
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+   BOOST_STATIC_CONSTANT(bool, value =
+      (::boost::type_traits::ice_and<
+         ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
+         ::boost::type_traits::ice_not< ::boost::is_void<T>::value>::value,
+         ::boost::type_traits::ice_not< ::boost::is_function<T>::value>::value
+      >::value));
+#else
+   BOOST_STATIC_CONSTANT(bool, value =
+      (::boost::type_traits::ice_and<
+         ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
+         ::boost::type_traits::ice_not< ::boost::is_void<T>::value>::value
+      >::value));
+#endif
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_object,T,::boost::detail::is_object_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_OBJECT_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_pointer.hpp b/boost/boost/type_traits/is_pointer.hpp
new file mode 100644 (file)
index 0000000..a483585
--- /dev/null
@@ -0,0 +1,132 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+// sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_POINTER_HPP_INCLUDED
+#define BOOST_TT_IS_POINTER_HPP_INCLUDED
+
+#include "boost/type_traits/is_member_pointer.hpp"
+#include "boost/type_traits/detail/ice_and.hpp"
+#include "boost/type_traits/detail/ice_not.hpp"
+#include "boost/type_traits/config.hpp"
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   include "boost/type_traits/is_reference.hpp"
+#   include "boost/type_traits/is_array.hpp"
+#   include "boost/type_traits/detail/is_function_ptr_tester.hpp"
+#   include "boost/type_traits/detail/false_result.hpp"
+#   include "boost/type_traits/detail/ice_or.hpp"
+#endif
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace detail {
+
+template< typename T > struct is_pointer_helper
+{
+    BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+#   define TT_AUX_BOOL_TRAIT_HELPER_PARTIAL_SPEC(helper,sp,result) \
+template< typename T > struct helper<sp> \
+{ \
+    BOOST_STATIC_CONSTANT(bool, value = result); \
+}; \
+/**/
+
+TT_AUX_BOOL_TRAIT_HELPER_PARTIAL_SPEC(is_pointer_helper,T*,true)
+TT_AUX_BOOL_TRAIT_HELPER_PARTIAL_SPEC(is_pointer_helper,T* const,true)
+TT_AUX_BOOL_TRAIT_HELPER_PARTIAL_SPEC(is_pointer_helper,T* volatile,true)
+TT_AUX_BOOL_TRAIT_HELPER_PARTIAL_SPEC(is_pointer_helper,T* const volatile,true)
+
+#   undef TT_AUX_BOOL_TRAIT_HELPER_PARTIAL_SPEC
+
+template< typename T >
+struct is_pointer_impl
+{
+    BOOST_STATIC_CONSTANT(bool, value = 
+        (::boost::type_traits::ice_and<
+              ::boost::detail::is_pointer_helper<T>::value
+            , ::boost::type_traits::ice_not<
+                ::boost::is_member_pointer<T>::value
+                >::value
+            >::value)
+        );
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pointer,T,::boost::detail::is_pointer_impl<T>::value)
+
+#else // no partial template specialization
+
+namespace detail {
+
+struct pointer_helper
+{
+    pointer_helper(const volatile void*);
+};
+
+yes_type BOOST_TT_DECL is_pointer_tester(pointer_helper);
+no_type BOOST_TT_DECL is_pointer_tester(...);
+
+template <bool>
+struct is_pointer_select
+    : ::boost::type_traits::false_result
+{
+};
+
+template <>
+struct is_pointer_select<false>
+{
+    template <typename T> struct result_
+    {
+        static T& make_t();
+        BOOST_STATIC_CONSTANT(bool, value =
+                (::boost::type_traits::ice_or<
+                    (1 == sizeof(is_pointer_tester(make_t()))),
+                    (1 == sizeof(type_traits::is_function_ptr_tester(make_t())))
+                >::value));
+    };
+};
+
+template <typename T>
+struct is_pointer_impl
+    : is_pointer_select<
+          ::boost::type_traits::ice_or<
+              ::boost::is_reference<T>::value
+            , ::boost::is_array<T>::value
+            >::value
+        >::template result_<T>
+{
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pointer,T,::boost::detail::is_pointer_impl<T>::value)
+
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_pointer,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_pointer,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_pointer,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_pointer,void const volatile,false)
+#endif
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_POINTER_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_reference.hpp b/boost/boost/type_traits/is_reference.hpp
new file mode 100644 (file)
index 0000000..354d8be
--- /dev/null
@@ -0,0 +1,95 @@
+
+//  (C) Copyright David Abrahams Steve Cleary, Beman Dawes, Howard
+//  Hinnant & John Maddock 2000-2002.  Permission to copy, use,
+//  modify, sell and distribute this software is granted provided this
+//  copyright notice appears in all copies. This software is provided
+//  "as is" without express or implied warranty, and with no claim as
+//  to its suitability for any purpose.
+//
+//  See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_REFERENCE_HPP_INCLUDED
+#define BOOST_TT_IS_REFERENCE_HPP_INCLUDED
+
+#include "boost/type_traits/config.hpp"
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   include "boost/type_traits/detail/yes_no_type.hpp"
+#   include "boost/type_traits/detail/wrap.hpp"
+#endif
+
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && defined(BOOST_MSVC)
+#   include "boost/type_traits/detail/is_function_type_tester.hpp"
+#   include "boost/type_traits/detail/false_result.hpp"
+#endif
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost { 
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T&,true)
+
+#if defined(__BORLANDC__)
+// these are illegal specialisations; cv-qualifies applied to
+// references have no effect according to [8.3.2p1],
+// C++ Builder requires them though as it treats cv-qualified
+// references as distinct types...
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T& const,true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T& volatile,true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T& const volatile,true)
+#endif
+
+#else
+
+#ifdef BOOST_MSVC
+#   pragma warning(push)
+#   pragma warning(disable: 4181)
+#endif
+
+namespace detail {
+
+using ::boost::type_traits::yes_type;
+using ::boost::type_traits::no_type;
+using ::boost::type_traits::wrap;
+
+template <class T> T&(* is_reference_helper1(wrap<T>) )(wrap<T>);
+char is_reference_helper1(...);
+
+template <class T> no_type is_reference_helper2(T&(*)(wrap<T>));
+yes_type is_reference_helper2(...);
+
+template <typename T>
+struct is_reference_impl
+{
+    BOOST_STATIC_CONSTANT(
+        bool, value = sizeof(
+            ::boost::detail::is_reference_helper2(
+                ::boost::detail::is_reference_helper1(::boost::type_traits::wrap<T>()))) == 1
+        );
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,::boost::detail::is_reference_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_reference,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_reference,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_reference,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_reference,void const volatile,false)
+#endif
+
+#ifdef BOOST_MSVC
+#   pragma warning(pop)
+#endif
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_REFERENCE_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_same.hpp b/boost/boost/type_traits/is_same.hpp
new file mode 100644 (file)
index 0000000..8cd18ab
--- /dev/null
@@ -0,0 +1,81 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Aleksey Gurtovoy, 
+// Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This 
+// software is provided "as is" without express or implied warranty, and 
+// with no claim as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_SAME_HPP_INCLUDED
+#define BOOST_TT_IS_SAME_HPP_INCLUDED
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_same,T,U,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename T,is_same,T,T,true)
+
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace detail {
+
+#ifdef BOOST_MSVC
+// the following VC6 specific implementation is *NOT* legal
+// C++, but has the advantage that it works for incomplete
+// types.
+
+template< typename T1 >
+struct is_same_part_1
+{
+    template<typename T2>  struct part_2     { enum { value = false }; };
+    template<>             struct part_2<T1> { enum { value = true }; };
+};
+
+template< typename T1, typename T2 >
+struct is_same_impl
+{
+    enum { value = detail::is_same_part_1<T1>::template part_2<T2>::value };
+};
+
+#else // generic "no-partial-specialization" version
+
+template <typename T>
+::boost::type_traits::yes_type
+BOOST_TT_DECL is_same_tester(T*, T*);
+
+::boost::type_traits::no_type
+BOOST_TT_DECL is_same_tester(...);
+
+template <typename T, typename U>
+struct is_same_impl
+{
+   static T t;
+   static U u;
+
+   BOOST_STATIC_CONSTANT(bool, value =
+      (::boost::type_traits::ice_and<
+         (sizeof(type_traits::yes_type) == sizeof(detail::is_same_tester(&t,&u))),
+         (::boost::is_reference<T>::value == ::boost::is_reference<U>::value),
+         (sizeof(T) == sizeof(U))
+        >::value));
+};
+
+#endif // BOOST_MSVC
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_same,T,U,(::boost::detail::is_same_impl<T,U>::value))
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif  // BOOST_TT_IS_SAME_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_scalar.hpp b/boost/boost/type_traits/is_scalar.hpp
new file mode 100644 (file)
index 0000000..51f587f
--- /dev/null
@@ -0,0 +1,47 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_SCALAR_HPP_INCLUDED
+#define BOOST_TT_IS_SCALAR_HPP_INCLUDED
+
+#include "boost/type_traits/is_arithmetic.hpp"
+#include "boost/type_traits/is_enum.hpp"
+#include "boost/type_traits/is_pointer.hpp"
+#include "boost/type_traits/is_member_pointer.hpp"
+#include "boost/type_traits/detail/ice_or.hpp"
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct is_scalar_impl
+{ 
+   BOOST_STATIC_CONSTANT(bool, value =
+      (::boost::type_traits::ice_or<
+         ::boost::is_arithmetic<T>::value,
+         ::boost::is_enum<T>::value,
+         ::boost::is_pointer<T>::value,
+         ::boost::is_member_pointer<T>::value
+      >::value));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_scalar,T,::boost::detail::is_scalar_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_SCALAR_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_stateless.hpp b/boost/boost/type_traits/is_stateless.hpp
new file mode 100644 (file)
index 0000000..d2c764b
--- /dev/null
@@ -0,0 +1,49 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_STATELESS_HPP_INCLUDED
+#define BOOST_TT_IS_STATELESS_HPP_INCLUDED
+
+#include "boost/type_traits/has_trivial_constructor.hpp"
+#include "boost/type_traits/has_trivial_copy.hpp"
+#include "boost/type_traits/has_trivial_destructor.hpp"
+#include "boost/type_traits/is_class.hpp"
+#include "boost/type_traits/is_empty.hpp"
+#include "boost/type_traits/detail/ice_and.hpp"
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct is_stateless_impl
+{
+  BOOST_STATIC_CONSTANT(bool, value = 
+    (::boost::type_traits::ice_and<
+       ::boost::has_trivial_constructor<T>::value,
+       ::boost::has_trivial_copy<T>::value,
+       ::boost::has_trivial_destructor<T>::value,
+       ::boost::is_class<T>::value,
+       ::boost::is_empty<T>::value
+     >::value));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_stateless,T,::boost::detail::is_stateless_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_STATELESS_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_union.hpp b/boost/boost/type_traits/is_union.hpp
new file mode 100644 (file)
index 0000000..507c000
--- /dev/null
@@ -0,0 +1,36 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+// sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_UNION_HPP_INCLUDED
+#define BOOST_TT_IS_UNION_HPP_INCLUDED
+
+#include "boost/type_traits/remove_cv.hpp"
+#include "boost/type_traits/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail {
+template <typename T> struct is_union_impl
+{
+   typedef typename remove_cv<T>::type cvt;
+   BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_UNION(cvt));
+};
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_union,T,::boost::detail::is_union_impl<T>::value)
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_UNION_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_void.hpp b/boost/boost/type_traits/is_void.hpp
new file mode 100644 (file)
index 0000000..1ef7eb7
--- /dev/null
@@ -0,0 +1,34 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_VOID_HPP_INCLUDED
+#define BOOST_TT_IS_VOID_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+//* is a type T void - is_void<T>
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_void,T,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void,true)
+
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void const,true)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void volatile,true)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void const volatile,true)
+#endif
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_VOID_HPP_INCLUDED
diff --git a/boost/boost/type_traits/is_volatile.hpp b/boost/boost/type_traits/is_volatile.hpp
new file mode 100644 (file)
index 0000000..dd3395a
--- /dev/null
@@ -0,0 +1,112 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+// sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_VOLATILE_HPP_INCLUDED
+#define BOOST_TT_IS_VOLATILE_HPP_INCLUDED
+
+#include "boost/config.hpp"
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   include "boost/type_traits/detail/cv_traits_impl.hpp"
+#else
+#   include "boost/type_traits/is_reference.hpp"
+#   include "boost/type_traits/is_array.hpp"
+#   include "boost/type_traits/detail/yes_no_type.hpp"
+#   include "boost/type_traits/detail/false_result.hpp"
+#endif
+
+// should be the last #include
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//* is a type T declared volatile - is_volatile<T>
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,::boost::detail::cv_traits_imp<T*>::is_volatile)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T&,false)
+
+#if defined(__BORLANDC__)
+// these are illegal specialisations; cv-qualifies applied to
+// references have no effect according to [8.3.2p1],
+// C++ Builder requires them though as it treats cv-qualified
+// references as distinct types...
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T& const,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T& volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T& const volatile,false)
+#endif
+
+#else
+
+namespace detail {
+
+using ::boost::type_traits::yes_type;
+using ::boost::type_traits::no_type;
+
+yes_type is_volatile_tester(void const volatile*);
+no_type is_volatile_tester(void const*);
+
+template <bool is_ref, bool array>
+struct is_volatile_helper
+    : ::boost::type_traits::false_result
+{
+};
+
+template <>
+struct is_volatile_helper<false,false>
+{
+    template <typename T> struct result_
+    {
+        static T* t;
+        BOOST_STATIC_CONSTANT(bool, value = (
+            sizeof(detail::yes_type) == sizeof(detail::is_volatile_tester(t))
+            ));
+    };      
+};
+
+template <>
+struct is_volatile_helper<false,true>
+{
+    template <typename T> struct result_
+    {
+        static T t;
+        BOOST_STATIC_CONSTANT(bool, value = (
+            sizeof(detail::yes_type) == sizeof(detail::is_volatile_tester(&t))
+            ));
+    };      
+};
+
+template <typename T>
+struct is_volatile_impl
+    : is_volatile_helper<
+          is_reference<T>::value
+        , is_array<T>::value
+        >::template result_<T>
+{ 
+};
+
+} // namespace detail
+
+//* is a type T declared volatile - is_volatile<T>
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,::boost::detail::is_volatile_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_volatile,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_volatile,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_volatile,void volatile,true)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_volatile,void const volatile,true)
+#endif
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_TT_IS_VOLATILE_HPP_INCLUDED
index 4386e9cfbd0f92228e76c40c17d79c42fe1c26ae..f9c963a4c9a8c6e90877d55aa78731d3644c2223 100644 (file)
 //  has_trivial_destructor, is_empty.
 //
 
-#ifndef BOOST_OBJECT_TYPE_TRAITS_HPP
-#define BOOST_OBJECT_TYPE_TRAITS_HPP
-
-#ifndef BOOST_ICE_TYPE_TRAITS_HPP
-#include <boost/type_traits/ice.hpp>
-#endif
-#ifndef BOOST_FWD_TYPE_TRAITS_HPP
-#include <boost/type_traits/fwd.hpp>
-#endif
-#ifndef BOOST_COMPOSITE_TYPE_TRAITS_HPP
-#include <boost/type_traits/composite_traits.hpp>
-#endif
-#ifndef BOOST_ARITHMETIC_TYPE_TRAITS_HPP
-#include <boost/type_traits/arithmetic_traits.hpp>
-#endif
-#ifndef BOOST_FUNCTION_TYPE_TRAITS_HPP
-#include <boost/type_traits/function_traits.hpp>
-#endif
-#ifndef BOOST_TYPE_TRAITS_IS_CLASS_HPP
-# include <boost/type_traits/is_class.hpp>
-#endif 
-
-#ifdef BOOST_HAS_SGI_TYPE_TRAITS
-#  include <type_traits.h>
-#  include <boost/type_traits/same_traits.hpp>
-#endif
-
-namespace boost{
-
-/**********************************************
- *
- * is_object
- *
- **********************************************/
-template <typename T>
-struct is_object
-{
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::type_traits::ice_and<
-         ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
-         ::boost::type_traits::ice_not< ::boost::is_void<T>::value>::value,
-         ::boost::type_traits::ice_not< ::boost::is_function<T>::value>::value
-      >::value));
-#else
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::type_traits::ice_and<
-         ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
-         ::boost::type_traits::ice_not< ::boost::is_void<T>::value>::value
-      >::value));
-#endif
-};
-
-/**********************************************
- *
- * is_scalar
- *
- **********************************************/
-template <typename T>
-struct is_scalar
-{ 
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::type_traits::ice_or<
-         ::boost::is_arithmetic<T>::value,
-         ::boost::is_enum<T>::value,
-         ::boost::is_pointer<T>::value,
-         ::boost::is_member_pointer<T>::value
-      >::value));
-};
-
-# ifndef BOOST_TYPE_TRAITS_IS_CLASS_DEFINED
-// conforming compilers use the implementation in <boost/type_traits/is_class.hpp>
-/**********************************************
- *
- * is_class
- *
- **********************************************/
-template <typename T>
-struct is_class
-{
-#  ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::type_traits::ice_and<
-         ::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value,
-         ::boost::type_traits::ice_not< ::boost::is_scalar<T>::value >::value,
-         ::boost::type_traits::ice_not< ::boost::is_array<T>::value >::value,
-         ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
-         ::boost::type_traits::ice_not< ::boost::is_void<T>::value >::value,
-         ::boost::type_traits::ice_not< ::boost::is_function<T>::value >::value
-      >::value));
-#  else
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::type_traits::ice_and<
-         ::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value,
-         ::boost::type_traits::ice_not< ::boost::is_scalar<T>::value >::value,
-         ::boost::type_traits::ice_not< ::boost::is_array<T>::value >::value,
-         ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
-         ::boost::type_traits::ice_not< ::boost::is_void<T>::value >::value
-      >::value));
-#  endif
-};
-# endif // nonconforming implementations
-/**********************************************
- *
- * is_compound
- *
- **********************************************/
-template <typename T> struct is_compound
-{
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::type_traits::ice_or<
-         ::boost::is_array<T>::value,
-         ::boost::is_pointer<T>::value,
-         ::boost::is_reference<T>::value,
-         ::boost::is_class<T>::value,
-         ::boost::is_union<T>::value,
-         ::boost::is_enum<T>::value,
-         ::boost::is_member_pointer<T>::value
-      >::value));
-};
-
-/**********************************************
- *
- * is_POD
- *
- **********************************************/
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <typename T> struct is_POD
-{ 
-    BOOST_STATIC_CONSTANT(
-        bool, value =
-        (::boost::type_traits::ice_or<
-         ::boost::is_scalar<T>::value,
-         ::boost::is_void<T>::value,
-         BOOST_IS_POD(T)
-         >::value));
-};
-
-template <typename T, std::size_t sz>
-struct is_POD<T[sz]>
-{
-   BOOST_STATIC_CONSTANT(bool, value = ::boost::is_POD<T>::value);
-};
-#else
-namespace detail
-{
-  template <bool is_array = false> struct is_POD_helper;
-}
-
-template <typename T> struct is_POD
-{ 
-   BOOST_STATIC_CONSTANT(
-       bool, value = (
-           ::boost::detail::is_POD_helper<
-              ::boost::is_array<T>::value
-           >::template apply<T>::value
-           )
-       );
-};
-
-namespace detail
-{
-  template <bool is_array>
-  struct is_POD_helper
-  {
-      template <typename T> struct apply
-      {
-          BOOST_STATIC_CONSTANT(
-              bool, value =
-              (::boost::type_traits::ice_or<
-               ::boost::is_scalar<T>::value,
-               ::boost::is_void<T>::value,
-               BOOST_IS_POD(T)
-               >::value));
-      };
-  };
-
-  template <bool b>
-  struct bool_to_type
-  {
-      typedef ::boost::type_traits::no_type type;
-  };
-
-  template <>
-  struct bool_to_type<true>
-  {
-      typedef ::boost::type_traits::yes_type type;
-  };
-  
-  template <class ArrayType>
-  struct is_POD_array_helper
-  {
-      typedef
-#if !defined(__BORLANDC__) || __BORLANDC__ > 0x551
-      typename
-#endif 
-      ::boost::detail::bool_to_type<(::boost::is_POD<ArrayType>::value)>::type type;
-      
-      type instance() const;
-  };
-  
-  template <class T>
-  is_POD_array_helper<T> is_POD_array(T*);
-
-  template <>
-  struct is_POD_helper<true>
-  {
-      template <typename T> struct apply
-      {
-          static T& help();
-
-          BOOST_STATIC_CONSTANT(
-              bool, value =
-              sizeof(is_POD_array(help()).instance()) == sizeof(::boost::type_traits::yes_type));
-      };
-  };
-}
-#endif
-
-/**********************************************
- *
- * has_trivial_constructor
- *
- **********************************************/
-template <typename T>
-struct has_trivial_constructor
-{
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::type_traits::ice_or<
-         ::boost::is_POD<T>::value,
-         BOOST_HAS_TRIVIAL_CONSTRUCTOR(T)
-      >::value));
-};
-
-/**********************************************
- *
- * has_trivial_copy
- *
- **********************************************/
-template <typename T>
-struct has_trivial_copy
-{
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::type_traits::ice_and<
-         ::boost::type_traits::ice_or<
-            ::boost::is_POD<T>::value,
-            BOOST_HAS_TRIVIAL_COPY(T)
-         >::value,
-      ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
-      >::value));
-};
-
-/**********************************************
- *
- * has_trivial_assign
- *
- **********************************************/
-template <typename T>
-struct has_trivial_assign
-{
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::type_traits::ice_and<
-         ::boost::type_traits::ice_or<
-            ::boost::is_POD<T>::value,
-            BOOST_HAS_TRIVIAL_ASSIGN(T)
-         >::value,
-      ::boost::type_traits::ice_not< ::boost::is_const<T>::value >::value,
-      ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
-      >::value));
-};
-
-/**********************************************
- *
- * has_trivial_destructor
- *
- **********************************************/
-template <typename T>
-struct has_trivial_destructor
-{
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::type_traits::ice_or<
-         ::boost::is_POD<T>::value,
-         BOOST_HAS_TRIVIAL_DESTRUCTOR(T)
-      >::value));
-};
-
-/**********************************************
- *
- * has_nothrow_constructor
- *
- **********************************************/
-template <typename T>
-struct has_nothrow_constructor
-{
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::has_trivial_constructor<T>::value));
-};
-
-/**********************************************
- *
- * has_nothrow_copy
- *
- **********************************************/
-template <typename T>
-struct has_nothrow_copy
-{
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::has_trivial_copy<T>::value));
-};
-
-/**********************************************
- *
- * has_nothrow_assign
- *
- **********************************************/
-template <typename T>
-struct has_nothrow_assign
-{
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::has_trivial_assign<T>::value));
-};
-
-/**********************************************
- *
- * is_empty
- *
- **********************************************/
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-namespace detail
-{
-  template <typename T>
-  struct empty_helper_t1 : public T
-  {
-//#ifdef __MWERKS__
-      empty_helper_t1();  // hh compiler bug workaround
-//#endif
-      int i[256];
-  };
-  struct empty_helper_t2 { int i[256]; };
-}
-
-# ifndef __BORLANDC__
-namespace detail
-{
-  template <typename T, bool is_a_class = false>
-  struct empty_helper{ BOOST_STATIC_CONSTANT(bool, value = false); };
-
-  template <typename T>
-  struct empty_helper<T, true>
-  {
-      BOOST_STATIC_CONSTANT(
-          bool, value = (sizeof(empty_helper_t1<T>) == sizeof(empty_helper_t2)));
-  };
-}
-
-template <typename T>
-struct is_empty
-{
- private:
-    typedef typename remove_cv<T>::type cvt;
-    
- public:
-    BOOST_STATIC_CONSTANT(
-        bool, value = (
-            ::boost::type_traits::ice_or<
-              ::boost::detail::empty_helper<T,::boost::is_class<T>::value>::value
-              , BOOST_IS_EMPTY(cvt)
-            >::value
-            ));
-};
-
-# else // __BORLANDC__
-
-namespace detail
-{
-  template <typename T, bool is_a_class, bool convertible_to_int>
-  struct empty_helper{ BOOST_STATIC_CONSTANT(bool, value = false); };
-
-  template <typename T>
-  struct empty_helper<T, true, false>
-  {
-      BOOST_STATIC_CONSTANT(bool, value =
-                            (sizeof(empty_helper_t1<T>) == sizeof(empty_helper_t2)));
-  };
-}
-
-template <typename T>
-struct is_empty
-{
-private:
-   typedef typename remove_cv<T>::type cvt;
-   typedef typename add_reference<T>::type r_type;
-public:
-   BOOST_STATIC_CONSTANT(
-       bool, value = (
-           ::boost::type_traits::ice_or<
-              ::boost::detail::empty_helper<
-                  T
-                , ::boost::is_class<T>::value
-                , ::boost::is_convertible< r_type,int>::value
-              >::value
-              , BOOST_IS_EMPTY(cvt)
-           >::value));
-};
-# endif // __BORLANDC__
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-#ifdef BOOST_MSVC6_MEMBER_TEMPLATES
-
-namespace detail{
-
-template <typename T>
-struct empty_helper_t1 : public T
-{
-   empty_helper_t1();
-   int i[256];
-};
-struct empty_helper_t2 { int i[256]; };
-
-template <typename T>
-struct empty_helper_base
-{
-   enum{ value = (sizeof(empty_helper_t1<T>) == sizeof(empty_helper_t2)) };
-};
-
-template <typename T>
-struct empty_helper_nonbase
-{
-   enum{ value = false };
-};
-
-template <bool base>
-struct empty_helper_chooser
-{
-   template <class T>
-   struct rebind
-   {
-      typedef empty_helper_nonbase<T> type;
-   };
-};
-
-template <>
-struct empty_helper_chooser<true>
-{
-   template <class T>
-   struct rebind
-   {
-      typedef empty_helper_base<T> type;
-   };
-};
-
-} // namespace detail
-
-template <typename T> 
-struct is_empty
-{ 
-private:
-   typedef ::boost::detail::empty_helper_chooser<
-      ::boost::type_traits::ice_and<
-         ::boost::type_traits::ice_not< 
-            ::boost::is_reference<T>::value>::value,
-         ::boost::type_traits::ice_not< 
-            ::boost::is_convertible<T,double>::value>::value,
-         ::boost::type_traits::ice_not< 
-            ::boost::is_pointer<T>::value>::value,
-         ::boost::type_traits::ice_not< 
-            ::boost::is_member_pointer<T>::value>::value,
-         ::boost::type_traits::ice_not< 
-            ::boost::is_array<T>::value>::value,
-         ::boost::type_traits::ice_not< 
-            ::boost::is_void<T>::value>::value,
-         ::boost::type_traits::ice_not< 
-            ::boost::is_convertible<T, const volatile void*>::value>::value
-      >::value> chooser;
-   typedef typename chooser::template rebind<T> bound_type;
-   typedef typename bound_type::type eh_type;
-public:
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::type_traits::ice_or<eh_type::value, BOOST_IS_EMPTY(T)>::value)); 
-};
-
-#else
-template <typename T> struct is_empty
-{ enum{ value = BOOST_IS_EMPTY(T) }; };
-#endif  // BOOST_MSVC6_MEMBER_TEMPLATES
-
-#endif  // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-/**********************************************
- *
- * is_stateless
- *
- **********************************************/
-template <typename T>
-struct is_stateless
-{
-  BOOST_STATIC_CONSTANT(bool, value = 
-    (::boost::type_traits::ice_and<
-       ::boost::has_trivial_constructor<T>::value,
-       ::boost::has_trivial_copy<T>::value,
-       ::boost::has_trivial_destructor<T>::value,
-       ::boost::is_class<T>::value,
-       ::boost::is_empty<T>::value
-     >::value));
-};
-
-template <class Base, class Derived>
-struct is_base_and_derived
-{
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::type_traits::ice_and<
-         ::boost::is_convertible<Derived*,Base*>::value,
-         ::boost::is_class<Derived>::value,
-         ::boost::is_class<Base>::value
-      >::value)
-   );
-};
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <class Base, class Derived>
-struct is_base_and_derived<Base&, Derived>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <class Base, class Derived>
-struct is_base_and_derived<Base, Derived&>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-template <class Base, class Derived>
-struct is_base_and_derived<Base&, Derived&>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#endif
-
-} // namespace boost
-
-#endif // BOOST_OBJECT_TYPE_TRAITS_HPP
-
-
-
-
-
-
-
+#ifndef BOOST_TT_OBJECT_TRAITS_HPP_INLCUDED
+#define BOOST_TT_OBJECT_TRAITS_HPP_INLCUDED
+
+#include "boost/type_traits/has_trivial_assign.hpp"
+#include "boost/type_traits/has_trivial_constructor.hpp"
+#include "boost/type_traits/has_trivial_copy.hpp"
+#include "boost/type_traits/has_trivial_destructor.hpp"
+#include "boost/type_traits/has_nothrow_constructor.hpp"
+#include "boost/type_traits/has_nothrow_copy.hpp"
+#include "boost/type_traits/has_nothrow_assign.hpp"
+#include "boost/type_traits/is_base_and_derived.hpp"
+#include "boost/type_traits/is_class.hpp"
+#include "boost/type_traits/is_compound.hpp"
+#include "boost/type_traits/is_empty.hpp"
+#include "boost/type_traits/is_object.hpp"
+#include "boost/type_traits/is_POD.hpp"
+#include "boost/type_traits/is_scalar.hpp"
+#include "boost/type_traits/is_stateless.hpp"
+
+#endif // BOOST_TT_OBJECT_TRAITS_HPP_INLCUDED
index b9df72a93f35078b73f5d2dfd107cd264734566e..aa7729b209ddad6e1188ad28f9b1d8afc1487a76 100644 (file)
@@ -6,85 +6,10 @@
 //  to its suitability for any purpose.
 //
 //  See http://www.boost.org for most recent version including documentation.
-//
-#ifndef BOOST_TT_REFERENCE_TRAITS_HPP
-# define BOOST_TT_REFERENCE_TRAITS_HPP
-
-# ifndef BOOST_TT_UTILITY_HPP
-#  include <boost/type_traits/utility.hpp>
-# endif // BOOST_TT_UTILITY_HPP
-
-namespace boost { 
-
-/**********************************************
- *
- * is_reference
- *
- **********************************************/
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <typename T> struct is_reference 
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <typename T> struct is_reference<T&> 
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#if defined(__BORLANDC__)
-// these are illegal specialisations; cv-qualifies applied to
-// references have no effect according to [8.3.2p1],
-// C++ Builder requires them though as it treats cv-qualified
-// references as distinct types...
-template <typename T> struct is_reference<T&const> 
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <typename T> struct is_reference<T&volatile> 
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <typename T> struct is_reference<T&const volatile> 
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#else
-# ifdef BOOST_MSVC
-#  pragma warning(push)
-#  pragma warning(disable: 4181)
-#endif // BOOST_MSVC
-
-namespace detail
-{
-  using ::boost::type_traits::yes_type;
-  using ::boost::type_traits::no_type;
-  using ::boost::type_traits::wrap;
-  
-  template <class T> T&(* is_reference_helper1(wrap<T>) )(wrap<T>);
-  char is_reference_helper1(...);
-
-  template <class T> no_type is_reference_helper2(T&(*)(wrap<T>));
-  yes_type is_reference_helper2(...);
-}
-
-template <typename T>
-struct is_reference
-{
-    BOOST_STATIC_CONSTANT(
-        bool, value = sizeof(
-            ::boost::detail::is_reference_helper2(
-                ::boost::detail::is_reference_helper1(::boost::type_traits::wrap<T>()))) == 1
-        );
-};
-    
-template <> struct is_reference<void>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <> struct is_reference<const void>
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <> struct is_reference<volatile void>
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <> struct is_reference<const volatile void>
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-#endif
 
-# ifdef BOOST_MSVC
-#  pragma warning(pop)
-# endif // BOOST_MSVC
-#endif
+#ifndef BOOST_TT_REFERENCE_TRAITS_HPP_INCLUDED
+#define BOOST_TT_REFERENCE_TRAITS_HPP_INCLUDED
 
-} // namespace boost::type_traits
+#include "boost/type_traits/is_reference.hpp"
 
-#endif // BOOST_TT_REFERENCE_TRAITS_HPP
+#endif // BOOST_TT_REFERENCE_TRAITS_HPP_INCLUDED
diff --git a/boost/boost/type_traits/remove_bounds.hpp b/boost/boost/type_traits/remove_bounds.hpp
new file mode 100644 (file)
index 0000000..20199d3
--- /dev/null
@@ -0,0 +1,34 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED
+#define BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED
+
+#include "boost/config.hpp"
+#include <cstddef>
+
+// should be the last #include
+#include "boost/type_traits/detail/type_trait_def.hpp"
+
+namespace boost {
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_bounds,T,T)
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T[N],T type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T const[N],T const type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T volatile[N],T volatile type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T const volatile[N],T const volatile type)
+#endif
+
+} // namespace boost
+
+#include "boost/type_traits/detail/type_trait_undef.hpp"
+
+#endif // BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED
diff --git a/boost/boost/type_traits/remove_const.hpp b/boost/boost/type_traits/remove_const.hpp
new file mode 100644 (file)
index 0000000..5edeffe
--- /dev/null
@@ -0,0 +1,71 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+// sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_REMOVE_CONST_HPP_INCLUDED
+#define BOOST_TT_REMOVE_CONST_HPP_INCLUDED
+
+#include "boost/type_traits/is_volatile.hpp"
+#include "boost/type_traits/broken_compiler_spec.hpp"
+#include "boost/type_traits/detail/cv_traits_impl.hpp"
+#include "boost/config.hpp"
+
+#include <cstddef>
+
+// should be the last #include
+#include "boost/type_traits/detail/type_trait_def.hpp"
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace detail {
+
+template <typename T, bool is_vol>
+struct remove_const_helper
+{
+    typedef T type;
+};
+
+template <typename T>
+struct remove_const_helper<T, true>
+{
+    typedef T volatile type;
+};
+
+
+template <typename T>
+struct remove_const_impl
+{
+    typedef typename remove_const_helper<
+          typename cv_traits_imp<T*>::unqualified_type
+        , ::boost::is_volatile<T>::value
+        >::type type;
+};
+
+} // namespace detail
+
+// * convert a type T to non-const type - remove_const<T>
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_const,T,typename detail::remove_const_impl<T>::type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_const,T&,T&)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_const,T const[N],T type[N])
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_const,T const volatile[N],T volatile type[N])
+
+#else
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_const,T,T)
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include "boost/type_traits/detail/type_trait_undef.hpp"
+
+#endif // BOOST_TT_REMOVE_CONST_HPP_INCLUDED
diff --git a/boost/boost/type_traits/remove_cv.hpp b/boost/boost/type_traits/remove_cv.hpp
new file mode 100644 (file)
index 0000000..1b1f60a
--- /dev/null
@@ -0,0 +1,45 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+// sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_REMOVE_CV_HPP_INCLUDED
+#define BOOST_TT_REMOVE_CV_HPP_INCLUDED
+
+#include "boost/type_traits/broken_compiler_spec.hpp"
+#include "boost/type_traits/detail/cv_traits_impl.hpp"
+#include "boost/config.hpp"
+
+#include <cstddef>
+
+// should be the last #include
+#include "boost/type_traits/detail/type_trait_def.hpp"
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//  convert a type T to a non-cv-qualified type - remove_cv<T>
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_cv,T,typename detail::cv_traits_imp<T*>::unqualified_type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_cv,T&,T&)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_cv,T const[N],T type[N])
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_cv,T volatile[N],T type[N])
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_cv,T const volatile[N],T type[N])
+
+#else
+
+// doesn't work
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_cv,T,T)
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include "boost/type_traits/detail/type_trait_undef.hpp"
+
+#endif // BOOST_TT_REMOVE_CV_HPP_INCLUDED
diff --git a/boost/boost/type_traits/remove_pointer.hpp b/boost/boost/type_traits/remove_pointer.hpp
new file mode 100644 (file)
index 0000000..fc51c4a
--- /dev/null
@@ -0,0 +1,34 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
+#define BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
+
+#include "boost/type_traits/broken_compiler_spec.hpp"
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/type_trait_def.hpp"
+
+namespace boost {
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_pointer,T,T)
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T*,T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T* const,T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T* volatile,T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T* const volatile,T)
+#endif
+
+} // namespace boost
+
+#include "boost/type_traits/detail/type_trait_undef.hpp"
+
+#endif // BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
diff --git a/boost/boost/type_traits/remove_reference.hpp b/boost/boost/type_traits/remove_reference.hpp
new file mode 100644 (file)
index 0000000..45bd305
--- /dev/null
@@ -0,0 +1,42 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This software 
+// is provided "as is" without express or implied warranty, and with no claim 
+// as to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_REMOVE_REFERENCE_HPP_INCLUDED
+#define BOOST_TT_REMOVE_REFERENCE_HPP_INCLUDED
+
+#include "boost/type_traits/broken_compiler_spec.hpp"
+#include "boost/config.hpp"
+
+// should be the last #include
+#include "boost/type_traits/detail/type_trait_def.hpp"
+
+namespace boost {
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_reference,T,T)
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T&,T)
+
+#if defined(__BORLANDC__)
+// these are illegal specialisations; cv-qualifies applied to
+// references have no effect according to [8.3.2p1],
+// C++ Builder requires them though as it treats cv-qualified
+// references as distinct types...
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T& const,T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T& volatile,T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T& const volatile,T)
+#endif
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include "boost/type_traits/detail/type_trait_undef.hpp"
+
+#endif // BOOST_TT_REMOVE_REFERENCE_HPP_INCLUDED
diff --git a/boost/boost/type_traits/remove_volatile.hpp b/boost/boost/type_traits/remove_volatile.hpp
new file mode 100644 (file)
index 0000000..83c9f62
--- /dev/null
@@ -0,0 +1,71 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.  Permission to copy, use, modify,
+// sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+//
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_TT_REMOVE_VOLATILE_HPP_INCLUDED
+#define BOOST_TT_REMOVE_VOLATILE_HPP_INCLUDED
+
+#include "boost/type_traits/is_const.hpp"
+#include "boost/type_traits/broken_compiler_spec.hpp"
+#include "boost/type_traits/detail/cv_traits_impl.hpp"
+#include "boost/config.hpp"
+
+#include <cstddef>
+
+// should be the last #include
+#include "boost/type_traits/detail/type_trait_def.hpp"
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace detail {
+
+template <typename T, bool is_const>
+struct remove_volatile_helper
+{
+    typedef T type;
+};
+
+template <typename T>
+struct remove_volatile_helper<T,true>
+{
+    typedef T const type;
+};
+
+template <typename T>
+struct remove_volatile_impl
+{
+    typedef typename remove_volatile_helper<
+          typename cv_traits_imp<T*>::unqualified_type
+        , ::boost::is_const<T>::value
+        >::type type;
+};
+
+} // namespace detail
+
+// * convert a type T to a non-volatile type - remove_volatile<T>
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_volatile,T,typename detail::remove_volatile_impl<T>::type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_volatile,T&,T&)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_volatile,T volatile[N],T type[N])
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_volatile,T const volatile[N],T const type[N])
+
+#else
+
+// doesn't work
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_volatile,T,T)
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include "boost/type_traits/detail/type_trait_undef.hpp"
+
+#endif // BOOST_TT_REMOVE_VOLATILE_HPP_INCLUDED
index e05579cf3c9535e8f1d1dfec3c929f2753617e3b..c66dddbd061df62393b7f31ae94b3b21b8b149cd 100644 (file)
@@ -8,101 +8,9 @@
 //
 //  defines is_same:
 
-// Revision History
-// 19 Feb 2001 Fixed for MSVC (David Abrahams)
-
-#ifndef BOOST_SAME_TRAITS_HPP
-#define BOOST_SAME_TRAITS_HPP
-
-#ifndef BOOST_ICE_TYPE_TRAITS_HPP
-#include <boost/type_traits/ice.hpp>
-#endif
-#ifndef BOOST_FWD_TYPE_TRAITS_HPP
-#include <boost/type_traits/fwd.hpp>
-#endif
-#if !defined(BOOST_COMPOSITE_TYPE_TRAITS_HPP) && defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC)
-#include <boost/type_traits/composite_traits.hpp>
-#endif
-
-namespace boost{
-
-/**********************************************
- *
- * is_same
- *
- **********************************************/
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-template <typename T, typename U>
-struct is_same
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-
-template <typename T>
-struct is_same<T, T>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-//  A definition is required even for integral static constants
-template <typename T, typename U>
-const bool is_same<T, U>::value;
-
-template <typename T>
-const bool is_same<T, T>::value;
-#endif
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300
-//
-// the following VC6 specific implementation is *NOT* legal
-// C++, but has the advantage that it works for incomplete
-// types.
-//
-namespace detail{
-
-template<class T1>
-struct is_same_part_1 {
-  template<class T2>  struct part_2     { enum { value = false }; };
-  template<>          struct part_2<T1> { enum { value = true }; };
-};
-
-} // namespace detail
-
-template<class T1, class T2>
-struct is_same {
-    enum { value = detail::is_same_part_1<T1>::template part_2<T2>::value };
-};
-
-#else // BOOST_MSVC
-
-namespace detail{
-   template <class T>
-   ::boost::type_traits::yes_type BOOST_TT_DECL is_same_helper(T*, T*);
-   ::boost::type_traits::no_type BOOST_TT_DECL is_same_helper(...);
-}
-
-template <typename T, typename U>
-struct is_same
-{
-private:
-   static T t;
-   static U u;
-public:
-   BOOST_STATIC_CONSTANT(bool, value =
-      (::boost::type_traits::ice_and<
-         (sizeof(type_traits::yes_type) == sizeof(detail::is_same_helper(&t,&u))),
-         (::boost::is_reference<T>::value == ::boost::is_reference<U>::value),
-         (sizeof(T) == sizeof(U))
-        >::value));
-};
-
-#endif // BOOST_MSVC
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace boost
-
-#endif  // BOOST_SAME_TRAITS_HPP
+#ifndef BOOST_TT_SAME_TRAITS_HPP_INCLUDED
+#define BOOST_TT_SAME_TRAITS_HPP_INCLUDED
 
+#include "boost/type_traits/is_same.hpp"
 
+#endif  // BOOST_TT_SAME_TRAITS_HPP_INCLUDED
index 6cc0536e4e7a4b8778057f0cbe6670703137671d..f11679ddbc2ad9a33b029b715028acbc216a9910 100644 (file)
 //  defines traits classes for transforming one type to another:
 //  remove_reference, add_reference, remove_bounds, remove_pointer.
 //
-// Revision History:
-// 21st March 2001
-//    Added void specialisations to add_reference.
-
-#ifndef BOOST_TRANSFORM_TRAITS_HPP
-#define BOOST_TRANSFORM_TRAITS_HPP
-
-#ifndef BOOST_ICE_TYPE_TRAITS_HPP
-#include <boost/type_traits/ice.hpp>
-#endif
-#ifndef BOOST_FWD_TYPE_TRAITS_HPP
-#include <boost/type_traits/fwd.hpp>
-#endif
-#if !defined(BOOST_COMPOSITE_TYPE_TRAITS_HPP) && defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-#include <boost/type_traits/composite_traits.hpp>
-#endif
-
-namespace boost{
-
-/**********************************************
- *
- * remove_reference
- *
- **********************************************/
-template <typename T>
-struct remove_reference
-{ typedef T type; };
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <typename T>
-struct remove_reference<T&>
-{ typedef T type; };
-#endif
-#if defined(__BORLANDC__) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-// these are illegal specialisations; cv-qualifies applied to
-// references have no effect according to [8.3.2p1],
-// C++ Builder requires them though as it treats cv-qualified
-// references as distinct types...
-template <typename T>
-struct remove_reference<T&const>
-{ typedef T type; };
-template <typename T>
-struct remove_reference<T&volatile>
-{ typedef T type; };
-template <typename T>
-struct remove_reference<T&const volatile>
-{ typedef T type; };
-#endif
-
-/**********************************************
- *
- * add_reference
- *
- **********************************************/
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <typename T>
-struct add_reference
-{ typedef T& type; };
-template <typename T>
-struct add_reference<T&>
-{ typedef T& type; };
-#elif defined(BOOST_MSVC6_MEMBER_TEMPLATES)
-namespace detail{
-
-template <bool x>
-struct reference_adder
-{
-   template <class T>
-   struct rebind
-   {
-      typedef T& type;
-   };
-};
-
-template <>
-struct reference_adder<true>
-{
-   template <class T>
-   struct rebind
-   {
-      typedef T type;
-   };
-};
-
-} // namespace detail
-
-template <typename T>
-struct add_reference
-{
-private:
-   typedef typename detail::reference_adder< ::boost::is_reference<T>::value>::template rebind<T> binder;
-public:
-   typedef typename binder::type type;
-};
-
-#else
-template <typename T>
-struct add_reference
-{ typedef T& type; };
-#endif
-
-//
-// these full specialisations are always required:
-template <> struct add_reference<void>{ typedef void type; };
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <> struct add_reference<const volatile void>{ typedef const volatile void type; };
-template <> struct add_reference<const void>{ typedef const void type; };
-template <> struct add_reference<volatile void>{ typedef volatile void type; };
-#endif
-
-
-/**********************************************
- *
- * remove_bounds
- *
- **********************************************/
-template <typename T>
-struct remove_bounds
-{ typedef T type; };
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <typename T, std::size_t N>
-struct remove_bounds<T[N]>
-{ typedef T type; };
-template <typename T, std::size_t N>
-struct remove_bounds<const T[N]>
-{ typedef const T type; };
-template <typename T, std::size_t N>
-struct remove_bounds<volatile T[N]>
-{ typedef volatile T type; };
-template <typename T, std::size_t N>
-struct remove_bounds<const volatile T[N]>
-{ typedef const volatile T type; };
-#endif
-
-/**********************************************
- *
- * remove_pointer
- *
- **********************************************/
-template <typename T>
-struct remove_pointer
-{ typedef T type; };
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <typename T>
-struct remove_pointer<T*>
-{ typedef T type; };
-template <typename T>
-struct remove_pointer<T*const>
-{ typedef T type; };
-template <typename T>
-struct remove_pointer<T*volatile>
-{ typedef T type; };
-template <typename T>
-struct remove_pointer<T*const volatile>
-{ typedef T type; };
-#endif
-
-/**********************************************
- *
- * add_pointer
- *
- **********************************************/
-template <typename T>
-struct add_pointer
-{
-private:
-   typedef typename remove_reference<T>::type no_ref_type;
-public:
-   typedef no_ref_type* type;
-};
-
-} // namespace boost
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-//
-// if there is no partial specialisation support
-// include a bunch of full specialisations as a workaround:
-//
-#include <boost/type_traits/transform_traits_spec.hpp>
-#else
-#define BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(x)
-#endif
-
-#endif // BOOST_TRANSFORM_TRAITS_HPP
-
 
+#ifndef BOOST_TT_TRANSFORM_TRAITS_HPP_INCLUDED
+#define BOOST_TT_TRANSFORM_TRAITS_HPP_INCLUDED
 
+#include "boost/type_traits/add_pointer.hpp"
+#include "boost/type_traits/add_reference.hpp"
+#include "boost/type_traits/remove_bounds.hpp"
+#include "boost/type_traits/remove_pointer.hpp"
+#include "boost/type_traits/remove_reference.hpp"
 
+#endif // BOOST_TT_TRANSFORM_TRAITS_HPP_INCLUDED
index e9fd0cbf8a1f855f6b794117edd685eee49cc407..b3855d60cdea7c84439721d83d0282ee5c6ce018 100644 (file)
@@ -5,74 +5,9 @@
 // This software is provided "as is" without express or implied warranty, 
 // and with no claim as to its suitability for any purpose.
 
-#ifndef BOOST_TT_TRANSFORM_TRAITS_SPEC_HPP
-#define BOOST_TT_TRANSFORM_TRAITS_SPEC_HPP
+#ifndef BOOST_TT_TRANSFORM_TRAITS_SPEC_HPP_INCLUDED
+#define BOOST_TT_TRANSFORM_TRAITS_SPEC_HPP_INCLUDED
 
-#ifndef TRANSFORM_TRAITS_HPP
-#include <boost/type_traits/transform_traits.hpp>
-#endif
-
-#define BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_CONST_VOLATILE_RANK1(T)           \
-template<> struct remove_const<T const>             { typedef T type; };          \
-template<> struct remove_const<T const volatile>    { typedef T volatile type; }; \
-template<> struct remove_volatile<T volatile>       { typedef T type; };          \
-template<> struct remove_volatile<T const volatile> { typedef T const type; };    \
-template<> struct remove_cv<T const>                { typedef T type; };          \
-template<> struct remove_cv<T volatile>             { typedef T type; };          \
-template<> struct remove_cv<T const volatile>       { typedef T type; };          \
-/**/
-
-#define BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_PTR_REF_RANK_1(T)             \
-template<> struct remove_pointer<T*>          { typedef T type; };            \
-template<> struct remove_reference<T&>        { typedef T type; };            \
-/**/
-
-#define BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_PTR_REF_RANK_2(T)             \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_PTR_REF_RANK_1(T)                     \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_PTR_REF_RANK_1(T const)               \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_PTR_REF_RANK_1(T volatile)            \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_PTR_REF_RANK_1(T const volatile)      \
-/**/
-
-#define BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_ALL_RANK_1(T)                 \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_PTR_REF_RANK_2(T)                     \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_CONST_VOLATILE_RANK1(T)               \
-/**/
-
-#define BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_ALL_RANK_2(T)                 \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_ALL_RANK_1(T*)                        \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_ALL_RANK_1(T const*)                  \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_ALL_RANK_1(T volatile*)               \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_ALL_RANK_1(T const volatile*)         \
-/**/
-
-#define BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(T)                   \
-namespace boost {                                                             \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_ALL_RANK_1(T)                         \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_ALL_RANK_2(T)                         \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_ALL_RANK_2(T*)                        \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_ALL_RANK_2(T const*)                  \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_ALL_RANK_2(T volatile*)               \
-BOOST_TYPE_TRAITS_SPECIALIZATION_REMOVE_ALL_RANK_2(T const volatile*)         \
-}                                                                             \
-/**/
-
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(bool)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(char)
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(wchar_t)
-#endif
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(signed   char)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(unsigned char)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(signed   short)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(unsigned short)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(signed   int)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(unsigned int)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(signed   long)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(unsigned long)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(float)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(double)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(long double)
-
-#endif // BOOST_TT_TRANSFORM_TRAITS_SPEC_HPP
+#include "boost/type_traits/broken_compiler_spec.hpp"
 
+#endif // BOOST_TT_TRANSFORM_TRAITS_SPEC_HPP_INCLUDED
index b87d27825723dc9db872b64fc33f187c748a0198..030ecd98850d889adb9eb7ba4f4eea704b0bee33 100644 (file)
@@ -9,11 +9,16 @@
 
 #ifndef BOOST_TYPE_TRAITS_TEST_HPP
 #define BOOST_TYPE_TRAITS_TEST_HPP
+
+#include "boost/config.hpp"
+#include "boost/utility.hpp"
+#include "boost/type_traits/alignment_of.hpp"
+#include "boost/type_traits/type_with_alignment.hpp"
+#include "boost/type_traits/ice.hpp"
+
 #include <iostream>
 #include <typeinfo>
-#include <boost/config.hpp>
-#include <boost/utility.hpp>
-#include <boost/type_traits/alignment_traits.hpp>
+
 //
 // define tests here
 unsigned failures = 0;
@@ -156,6 +161,7 @@ struct test_align
       char c;
       T t;
    };
+
    static void do_it()
    {
       padded p;
@@ -169,9 +175,12 @@ struct test_align
          std::cout << "\tfound: " << boost::alignment_of<T>::value << " expected " << a << std::endl;
       }
       // suppress warnings about unused variables:
-      (void)p;
-      (void)a;
+      not_unused(p);
+      not_unused(a);
    }
+    
+   template <class U>
+   static void not_unused(U const&) {}
 };
 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 template <class T>
@@ -422,13 +431,3 @@ struct incomplete_type;
 
 
 #endif // BOOST_TYPE_TRAITS_TEST_HPP
-
-
-
-
-
-
-
-
-
-
diff --git a/boost/boost/type_traits/type_with_alignment.hpp b/boost/boost/type_traits/type_with_alignment.hpp
new file mode 100644 (file)
index 0000000..03b6b1b
--- /dev/null
@@ -0,0 +1,106 @@
+
+// (C) Copyright John Maddock 2000.
+// Permission to copy, use, modify, sell and distribute this software is 
+// granted provided this copyright notice appears in all copies. This 
+// software is provided "as is" without express or implied warranty, 
+// and with no claim as to its suitability for any purpose.
+
+#ifndef BOOST_TT_TYPE_WITH_ALIGNMENT_INCLUDED
+#define BOOST_TT_TYPE_WITH_ALIGNMENT_INCLUDED
+
+#include "boost/mpl/if.hpp"
+#include "boost/preprocessor/list/for_each_i.hpp"
+#include "boost/preprocessor/tuple/to_list.hpp"
+#include "boost/preprocessor/cat.hpp"
+#include "boost/type_traits/alignment_of.hpp"
+#include "boost/static_assert.hpp"
+#include "boost/config.hpp"
+
+#include <cstddef>
+
+#ifdef BOOST_MSVC
+#   pragma warning(push)
+#   pragma warning(disable: 4121) // alignment is sensitive to packing
+#endif
+
+namespace boost {
+
+namespace detail {
+
+class alignment_dummy;
+typedef void (*function_ptr)();
+typedef int (alignment_dummy::*member_ptr);
+typedef int (alignment_dummy::*member_function_ptr)();
+
+#define BOOST_TT_ALIGNMENT_TYPES BOOST_PP_TUPLE_TO_LIST( \
+        11, ( \
+        char, short, int, long, float, double, long double \
+        , void*, function_ptr, member_ptr, member_function_ptr))
+
+#define BOOST_TT_CHOOSE_MIN_ALIGNMENT(R,P,I,T) \
+        typename mpl::if_c< \
+           alignment_of<T>::value <= target, T, char>::type BOOST_PP_CAT(t,I);
+
+#define BOOST_TT_CHOOSE_T(R,P,I,T) T BOOST_PP_CAT(t,I);
+           
+template <std::size_t target>
+union lower_alignment
+{
+    BOOST_PP_LIST_FOR_EACH_I(
+          BOOST_TT_CHOOSE_MIN_ALIGNMENT
+        , ignored
+        , BOOST_TT_ALIGNMENT_TYPES
+        )
+};
+
+union max_align
+{
+    BOOST_PP_LIST_FOR_EACH_I(
+          BOOST_TT_CHOOSE_T
+        , ignored
+        , BOOST_TT_ALIGNMENT_TYPES
+        )
+};
+
+#undef BOOST_TT_ALIGNMENT_TYPES
+#undef BOOST_TT_CHOOSE_MIN_ALIGNMENT
+#undef BOOST_TT_CHOOSE_T
+
+template<int TAlign, int Align>
+struct is_aligned
+{
+    BOOST_STATIC_CONSTANT(bool,
+        value = (TAlign >= Align) & (TAlign % Align == 0)
+        );
+};
+
+} // namespace detail
+
+// This alignment method originally due to Brian Parker, implemented by David
+// Abrahams, and then ported here by Doug Gregor. 
+template <int Align>
+class type_with_alignment
+{
+    typedef detail::lower_alignment<Align> t1;
+    typedef typename mpl::if_c<
+          ::boost::detail::is_aligned< ::boost::alignment_of<t1>::value,Align >::value
+        , t1
+        , detail::max_align
+        >::type align_t;
+
+    BOOST_STATIC_CONSTANT(std::size_t, found = alignment_of<align_t>::value);
+
+    BOOST_STATIC_ASSERT(found >= Align);
+    BOOST_STATIC_ASSERT(found % Align == 0);
+
+ public:
+    typedef align_t type;
+};
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#   pragma warning(pop)
+#endif
+
+#endif // BOOST_TT_TYPE_WITH_ALIGNMENT_INCLUDED
index e04b4f12d95424771e4d58cc2daffc83187e9fe9..c76cb28a13ebabca7b8dc703c238ae6fba60daf3 100644 (file)
@@ -76,7 +76,7 @@ public:
         this_type().swap(*this);
     }
 
-    T * get() const // never throws; unsafe in multithreaded programs!
+    T * get() const // never throws; deprecated, removal pending, don't use
     {
         return pn.use_count() == 0? 0: px;
     }
@@ -168,6 +168,10 @@ template<class T> shared_ptr<T> make_shared(weak_ptr<T> const & r) // never thro
     }
 }
 
+// Note: there is no get_pointer overload for weak_ptr.
+// This is intentional. Even get() will disappear in a
+// future release; these accessors are too error-prone.
+
 } // namespace boost
 
 #ifdef BOOST_MSVC
index 5fd36d86c0d575f0f16d8f9a3579d7370a803a37..0c89ad24462114bc263ba5130063401634c3a54a 100644 (file)
@@ -8,11 +8,11 @@
  * provided that the above copyright notice appear in all copies and
  * that both that copyright notice and this permission notice appear
  * in supporting documentation.  Dr John Maddock makes no representations
- * about the suitability of this software for any purpose.
+ * about the suitability of this software for any purpose.  
  * It is provided "as is" without express or implied warranty.
  *
  */
-
  /*
   *   LOCATION:    see http://www.boost.org for most recent version.
   *   FILE:        c_regex_traits.cpp
@@ -86,7 +86,7 @@ const char* re_char_class_names[] = {
 };
 
 template <class charT,
-         class traits = ::std::char_traits<charT> >
+          class traits = ::std::char_traits<charT> >
 class parser_buf : public ::std::basic_streambuf<charT, traits>
 {
    typedef ::std::basic_streambuf<charT, traits> base_type;
@@ -129,23 +129,26 @@ parser_buf<charT, traits>::seekoff(off_type off, ::std::ios_base::seekdir way, :
    {
    case ::std::ios_base::beg:
       if((off < 0) || (off > size))
-        return pos_type(off_type(-1));
+         return pos_type(off_type(-1));
       else
-        this->setg(g, g + off, g + size);
+         this->setg(g, g + off, g + size);
+      break;
    case ::std::ios_base::end:
       if((off < 0) || (off > size))
-        return pos_type(off_type(-1));
+         return pos_type(off_type(-1));
       else
-        this->setg(g, g + size - off, g + size);
+         this->setg(g, g + size - off, g + size);
+      break;
    case ::std::ios_base::cur:
    {
       std::ptrdiff_t newpos = pos + off;
       if((newpos < 0) || (newpos > size))
-        return pos_type(off_type(-1));
+         return pos_type(off_type(-1));
       else
-        this->setg(g, g + newpos, g + size);
+         this->setg(g, g + newpos, g + size);
+      break;
    }
-   default: ; // just to avoid warnings from gcc
+   default: ;
    }
    return static_cast<pos_type>(this->gptr() - this->eback());
 }
@@ -197,7 +200,11 @@ message_data<char>::message_data(const std::locale& l, const std::string& regex_
 #ifndef BOOST_NO_STD_MESSAGES
 
    const std::messages<char>* pm = 0;
-   std::messages<char>::catalog cat = -1;
+#ifndef __IBMCPP__
+   std::messages<char>::catalog cat = static_cast<std::messages<wchar_t>::catalog>(-1);
+#else
+   std::messages<char>::catalog cat = reinterpret_cast<std::messages<wchar_t>::catalog>(-1);
+#endif
    if(regex_message_catalogue.size())
    {
       pm = &BOOST_USE_FACET(std::messages<char>, l);
@@ -205,13 +212,13 @@ message_data<char>::message_data(const std::locale& l, const std::string& regex_
 #ifndef BOOST_NO_EXCEPTIONS
       if(cat < 0)
       {
-        std::string m("Unable to open message catalog: ");
-        throw std::runtime_error(m + regex_message_catalogue);
+         std::string m("Unable to open message catalog: ");
+         throw std::runtime_error(m + regex_message_catalogue);
       }
 #else
       BOOST_REGEX_NOEH_ASSERT(cat >= 0);
 #endif
-   }
+   } 
 #endif
    std::memset(syntax_map, cpp_regex_traits<char>::syntax_char, 256);
    unsigned i;
@@ -223,18 +230,18 @@ message_data<char>::message_data(const std::locale& l, const std::string& regex_
       new_size = re_get_default_message(0, 0, i+100);
       if(new_size > array_size)
       {
-        a.reset(new char[new_size]);
-        array_size = new_size;
+         a.reset(new char[new_size]);
+         array_size = new_size;
       }
       re_get_default_message(a.get(), array_size, i+100);
       std::string s = a.get();
 #ifndef BOOST_NO_STD_MESSAGES
       if((int)cat >= 0)
-        s = pm->get(cat, 0, i+100, s);
+         s = pm->get(cat, 0, i+100, s);
 #endif
       for(std::size_t j = 0; j < s.size(); ++j)
       {
-        syntax_map[s[j]] = (unsigned char)(i);
+         syntax_map[s[j]] = (unsigned char)(i);
       }
    }
 
@@ -261,19 +268,19 @@ message_data<char>::message_data(const std::locale& l, const std::string& regex_
       c2 = pm->get(cat, 0, i, c1);
       while(c2.size())
       {
-        const char* p1, *p2, *p3, *p4;;
-        p1 = c2.c_str();
-        while(*p1 && BOOST_REGEX_STD isspace((char)*p1, l))++p1;
-        p2 = p1;
-        while(*p2 && !BOOST_REGEX_STD isspace((char)*p2, l))++p2;
-        p3 = p2;
-        while(*p3 && BOOST_REGEX_STD isspace((char)*p3, l))++p3;
-        p4 = p3;
-        while(*p4 && !BOOST_REGEX_STD isspace((char)*p4, l))++p4;
-        collating_elements[std::string(p1, p2)] = std::string(p3, p4);
-
-        ++i;
-        c2 = pm->get(cat, 0, i, c1);
+         const char* p1, *p2, *p3, *p4;;
+         p1 = c2.c_str();
+         while(*p1 && BOOST_REGEX_STD isspace((char)*p1, l))++p1;
+         p2 = p1;
+         while(*p2 && !BOOST_REGEX_STD isspace((char)*p2, l))++p2;
+         p3 = p2;
+         while(*p3 && BOOST_REGEX_STD isspace((char)*p3, l))++p3;
+         p4 = p3;
+         while(*p4 && !BOOST_REGEX_STD isspace((char)*p4, l))++p4;
+         collating_elements[std::string(p1, p2)] = std::string(p3, p4);
+
+         ++i;
+         c2 = pm->get(cat, 0, i, c1);
       }
    }
 #endif
@@ -284,14 +291,14 @@ message_data<char>::message_data(const std::locale& l, const std::string& regex_
    {
       for(i = 0; i < re_classes_max; ++i)
       {
-        s = pm->get(cat, 0, i+300, m);
-        if(s.size())
-           classes[s] = i;
+         s = pm->get(cat, 0, i+300, m);
+         if(s.size())
+            classes[s] = i;
       }
       for(i = 0; i <= boost::REG_E_UNKNOWN ; ++i)
       {
-        s = pm->get(cat, 0, i+200, m);
-        error_strings[i] = s;
+         s = pm->get(cat, 0, i+200, m);
+         error_strings[i] = s;
       }
    }
 
@@ -390,7 +397,7 @@ boost::uint_fast32_t BOOST_REGEX_CALL cpp_regex_traits<char>::lookup_classname(c
    for(i = 0; i < re_classes_max; ++i)
    {
       if(s == re_char_class_names[i])
-        return re_char_class_id[i];
+         return re_char_class_id[i];
    }
    return 0;
 }
@@ -418,16 +425,16 @@ void BOOST_REGEX_CALL cpp_regex_traits<char>::transform_primary(std::string& out
       break;
    case re_detail::sort_fixed:
       if((unsigned)sort_delim < out.size())
-        out.erase((int)sort_delim);
+         out.erase((int)sort_delim);
       break;
    case re_detail::sort_delim:
       for(unsigned int i = 0; i < out.size(); ++i)
       {
-        if((out[i] == sort_delim) && (i+1 < out.size()))
-        {
-           out.erase(i+1);
-           break;
-        }
+         if((out[i] == sort_delim) && (i+1 < out.size()))
+         {
+            out.erase(i+1);
+            break;
+         }
       }
    }
 }
@@ -482,20 +489,20 @@ std::string BOOST_REGEX_CALL to_narrow(const std::basic_string<wchar_t>& is, con
       switch(cvt.out(state, is.c_str(), is.c_str() + is.size(), next_in, t.get(), t.get() + bufsize, next_out))
       {
       case std::codecvt_base::ok:
-        return std::string(t.get(), next_out);
+         return std::string(t.get(), next_out);
       case std::codecvt_base::partial:
-        bufsize *= 2;
-        t.reset(new char[bufsize]);
-        continue;
+         bufsize *= 2;
+         t.reset(new char[bufsize]);
+         continue;
       case std::codecvt_base::error:
-        // not much we can do here but guess:
+         // not much we can do here but guess:
       case std::codecvt_base::noconv:
-        std::string out;
-        for(unsigned i = 0; i < is.size(); ++i)
-        {
-           out.append(1, (char)is[i]);
-        }
-        return out;
+         std::string out;
+         for(unsigned i = 0; i < is.size(); ++i)
+         {
+            out.append(1, (char)is[i]);
+         }
+         return out;
       }
    }
 }
@@ -523,25 +530,25 @@ std::wstring BOOST_REGEX_CALL to_wide(const std::string& is, const std::codecvt<
       switch(cvt.in(state, is.c_str(), is.c_str() + is.size(), next_in, t.get(), t.get() + bufsize, next_out))
       {
       case std::codecvt_base::ok:
-        return std::wstring(t.get(), next_out);
+         return std::wstring(t.get(), next_out);
       case std::codecvt_base::partial:
-        bufsize *= 2;
-        if(bufsize < maxsize)
-        {
-           t.reset(new wchar_t[bufsize]);
-           continue;
-        }
-        //
-        // error fall through:
+         bufsize *= 2;
+         if(bufsize < maxsize)
+         {
+            t.reset(new wchar_t[bufsize]);
+            continue;
+         }
+         //
+         // error fall through:
       case std::codecvt_base::error:
-        // not much we can do here but guess:
+         // not much we can do here but guess:
       case std::codecvt_base::noconv:
-        std::wstring out;
-        for(unsigned i = 0; i < is.size(); ++i)
-        {
-           out.append(1, is[i]);
-        }
-        return out;
+         std::wstring out;
+         for(unsigned i = 0; i < is.size(); ++i)
+         {
+            out.append(1, is[i]);
+         }
+         return out;
       }
    }
 }
@@ -589,15 +596,19 @@ message_data<wchar_t>::message_data(const std::locale& l, const std::string& reg
    const cvt_type& cvt = BOOST_USE_FACET(cvt_type, l);
 #ifndef BOOST_NO_STD_MESSAGES
    const std::messages<wchar_t>& msgs = BOOST_USE_FACET(std::messages<wchar_t>, l);
-   std::messages<wchar_t>::catalog cat = -1;
+#ifndef __IBMCPP__
+   std::messages<wchar_t>::catalog cat = static_cast<std::messages<wchar_t>::catalog>(-1);
+#else
+   std::messages<wchar_t>::catalog cat = reinterpret_cast<std::messages<wchar_t>::catalog>(-1);
+#endif
    if(regex_message_catalogue.size())
    {
       cat = msgs.open(regex_message_catalogue, l);
 #ifndef BOOST_NO_EXCEPTIONS
       if(cat < 0)
       {
-        std::string m("Unable to open message catalog: ");
-        throw std::runtime_error(m + regex_message_catalogue);
+         std::string m("Unable to open message catalog: ");
+         throw std::runtime_error(m + regex_message_catalogue);
       }
 #else
       BOOST_REGEX_NOEH_ASSERT(cat >= 0);
@@ -614,26 +625,26 @@ message_data<wchar_t>::message_data(const std::locale& l, const std::string& reg
       new_size = re_get_default_message(0, 0, i+100);
       if(new_size > array_size)
       {
-        a.reset(new char[new_size]);
-        array_size = new_size;
+         a.reset(new char[new_size]);
+         array_size = new_size;
       }
       re_get_default_message(a.get(), array_size, i+100);
       std::string ns = a.get();
       string_type s = to_wide(ns, cvt);
 #ifndef BOOST_NO_STD_MESSAGES
       if((int)cat >= 0)
-        s = BOOST_USE_FACET(std::messages<wchar_t>, l).get(cat, 0, (int)i+100, s);
+         s = BOOST_USE_FACET(std::messages<wchar_t>, l).get(cat, 0, (int)i+100, s);
 #endif
       for(unsigned int j = 0; j < s.size(); ++j)
       {
-        if((s[j] <= UCHAR_MAX) && (s[j] >= 0))
-           syntax_[s[j]] = static_cast<unsigned char>(i);
-        else
-        {
-           m.c = s[j];
-           m.type = static_cast<unsigned int>(i);
-           syntax.push_back(m);
-        }
+         if((s[j] <= UCHAR_MAX) && (s[j] >= 0))
+            syntax_[s[j]] = static_cast<unsigned char>(i);
+         else
+         {
+            m.c = s[j];
+            m.type = static_cast<unsigned int>(i);
+            syntax.push_back(m);
+         }
       }
    }
 
@@ -646,19 +657,19 @@ message_data<wchar_t>::message_data(const std::locale& l, const std::string& reg
       c2 = msgs.get(cat, 0, (int)i, c1);
       while(c2.size())
       {
-        const wchar_t* p1, *p2, *p3, *p4;;
-        p1 = c2.c_str();
-        while(*p1 && BOOST_REGEX_STD isspace((wchar_t)*p1, l))++p1;
-        p2 = p1;
-        while(*p2 && !BOOST_REGEX_STD isspace((wchar_t)*p2, l))++p2;
-        p3 = p2;
-        while(*p3 && BOOST_REGEX_STD isspace((wchar_t)*p3, l))++p3;
-        p4 = p3;
-        while(*p4 && !BOOST_REGEX_STD isspace((wchar_t)*p4, l))++p4;
-        collating_elements[std::basic_string<wchar_t>(p1, p2)] = std::basic_string<wchar_t>(p3, p4);
-
-        ++i;
-        c2 = msgs.get(cat, 0, (int)i, c1);
+         const wchar_t* p1, *p2, *p3, *p4;;
+         p1 = c2.c_str();
+         while(*p1 && BOOST_REGEX_STD isspace((wchar_t)*p1, l))++p1;
+         p2 = p1;
+         while(*p2 && !BOOST_REGEX_STD isspace((wchar_t)*p2, l))++p2;
+         p3 = p2;
+         while(*p3 && BOOST_REGEX_STD isspace((wchar_t)*p3, l))++p3;
+         p4 = p3;
+         while(*p4 && !BOOST_REGEX_STD isspace((wchar_t)*p4, l))++p4;
+         collating_elements[std::basic_string<wchar_t>(p1, p2)] = std::basic_string<wchar_t>(p3, p4);
+
+         ++i;
+         c2 = msgs.get(cat, 0, (int)i, c1);
       }
    }
 
@@ -667,20 +678,20 @@ message_data<wchar_t>::message_data(const std::locale& l, const std::string& reg
       c2.erase();
       for(i = 0; i < re_classes_max; ++i)
       {
-        c1 = msgs.get(cat, 0, static_cast<int>(i+300), c2);
-        if(c1.size())
-           classes[c1] = i;
+         c1 = msgs.get(cat, 0, static_cast<int>(i+300), c2);
+         if(c1.size())
+            classes[c1] = i;
       }
       for(i = 0; i <= boost::REG_E_UNKNOWN ; ++i)
       {
-        c1 = msgs.get(cat, 0, static_cast<int>(i+200), c2);
-        error_strings[i] = to_narrow(c1, cvt);
+         c1 = msgs.get(cat, 0, static_cast<int>(i+200), c2);
+         error_strings[i] = to_narrow(c1, cvt);
       }
    }
 
    if((int)cat >= 0)
       msgs.close(cat);
-#endif
+#endif      
 }
 
 } // namespace re_detail
@@ -693,7 +704,7 @@ unsigned int BOOST_REGEX_CALL cpp_regex_traits<wchar_t>::do_syntax_type(size_typ
    while(i != j)
    {
       if(((uchar_type)(*i).c) == c)
-        return (*i).type;
+         return (*i).type;
       ++i;
    }
    return 0;
@@ -709,16 +720,16 @@ void BOOST_REGEX_CALL cpp_regex_traits<wchar_t>::transform_primary(std::basic_st
       break;
    case re_detail::sort_fixed:
       if((unsigned)sort_delim < out.size())
-        out.erase((int)sort_delim);
+         out.erase((int)sort_delim);
       break;
    case re_detail::sort_delim:
       for(unsigned int i = 0; i < out.size(); ++i)
       {
-        if((out[i] == sort_delim) && (i+1 < out.size()))
-        {
-           out.erase(i+1);
-           break;
-        }
+         if((out[i] == sort_delim) && (i+1 < out.size()))
+         {
+            out.erase(i+1);
+            break;
+         }
       }
    }
 }
@@ -769,7 +780,7 @@ boost::uint_fast32_t BOOST_REGEX_CALL cpp_regex_traits<wchar_t>::lookup_classnam
    for(i = 0; i < re_classes_max; ++i)
    {
       if(ns == re_char_class_names[i])
-        return re_char_class_id[i];
+         return re_char_class_id[i];
    }
    return 0;
 }
@@ -865,3 +876,5 @@ std::size_t BOOST_REGEX_CALL cpp_regex_traits<wchar_t>::strwiden(wchar_t *s1, st
 } // namespace boost
 
 #endif
+
+