summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/src/boost/spirit/home/phoenix/bind')
-rw-r--r--3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_function.hpp58
-rw-r--r--3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_function_object.hpp40
-rw-r--r--3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_member_function.hpp77
-rw-r--r--3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_member_variable.hpp105
-rw-r--r--3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/bind_function.hpp53
-rw-r--r--3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/bind_function_object.hpp43
-rw-r--r--3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/bind_member_function.hpp132
-rw-r--r--3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/function_ptr.hpp99
-rw-r--r--3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/member_function_ptr.hpp119
9 files changed, 726 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_function.hpp b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_function.hpp
new file mode 100644
index 0000000..9121fdc
--- /dev/null
+++ b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_function.hpp
@@ -0,0 +1,58 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef PHOENIX_BIND_BIND_FUNCTION_HPP
+#define PHOENIX_BIND_BIND_FUNCTION_HPP
+
+#include <boost/spirit/home/phoenix/core/compose.hpp>
+#include <boost/spirit/home/phoenix/core/detail/function_eval.hpp>
+#include <boost/spirit/home/phoenix/bind/detail/function_ptr.hpp>
+
+namespace boost { namespace phoenix
+{
+ template <typename RT>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<0>
+ , detail::function_ptr<0, RT, RT(*)()>
+ >::type>
+ bind(RT(*f)())
+ {
+ typedef detail::function_ptr<0, RT, RT(*)()> fp_type;
+ return compose<detail::function_eval<0> >(fp_type(f));
+ }
+
+ template <typename RT, typename T0, typename A0>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<1>
+ , detail::function_ptr<1, RT, RT(*)(T0)>
+ , A0
+ >::type>
+ bind(RT(*f)(T0), A0 const& _0)
+ {
+ typedef detail::function_ptr<1, RT, RT(*)(T0)> fp_type;
+ return compose<detail::function_eval<1> >(fp_type(f), _0);
+ }
+
+ template <typename RT, typename T0, typename T1, typename A0, typename A1>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<2>
+ , detail::function_ptr<2, RT, RT(*)(T0, T1)>
+ , A0, A1
+ >::type>
+ bind(RT(*f)(T0, T1), A0 const& _0, A1 const& _1)
+ {
+ typedef detail::function_ptr<2, RT, RT(*)(T0, T1)> fp_type;
+ return compose<detail::function_eval<2> >(fp_type(f), _0, _1);
+ }
+
+ // Bring in the rest of the function binders
+ #include <boost/spirit/home/phoenix/bind/detail/bind_function.hpp>
+}}
+
+#endif
diff --git a/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_function_object.hpp b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_function_object.hpp
new file mode 100644
index 0000000..752ae31
--- /dev/null
+++ b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_function_object.hpp
@@ -0,0 +1,40 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef PHOENIX_BIND_BIND_FUNCTION_OBJECT_HPP
+#define PHOENIX_BIND_BIND_FUNCTION_OBJECT_HPP
+
+#include <boost/spirit/home/phoenix/core/compose.hpp>
+#include <boost/spirit/home/phoenix/core/detail/function_eval.hpp>
+
+namespace boost { namespace phoenix
+{
+ template <typename F>
+ inline actor<typename as_composite<detail::function_eval<0>, F>::type>
+ bind(F const& f)
+ {
+ return compose<detail::function_eval<0> >(f);
+ }
+
+ template <typename F, typename A0>
+ inline actor<typename as_composite<detail::function_eval<1>, F, A0>::type>
+ bind(F const& f, A0 const& _0)
+ {
+ return compose<detail::function_eval<1> >(f, _0);
+ }
+
+ template <typename F, typename A0, typename A1>
+ inline actor<typename as_composite<detail::function_eval<2>, F, A0, A1>::type>
+ bind(F const& f, A0 const& _0, A1 const& _1)
+ {
+ return compose<detail::function_eval<2> >(f, _0, _1);
+ }
+
+ // Bring in the rest of the function object binders
+ #include <boost/spirit/home/phoenix/bind/detail/bind_function_object.hpp>
+}}
+
+#endif
diff --git a/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_member_function.hpp b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_member_function.hpp
new file mode 100644
index 0000000..9d31a38
--- /dev/null
+++ b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_member_function.hpp
@@ -0,0 +1,77 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef PHOENIX_BIND_BIND_MEMBER_FUNCTION_HPP
+#define PHOENIX_BIND_BIND_MEMBER_FUNCTION_HPP
+
+#include <boost/spirit/home/phoenix/core/reference.hpp>
+#include <boost/spirit/home/phoenix/core/compose.hpp>
+#include <boost/spirit/home/phoenix/core/detail/function_eval.hpp>
+#include <boost/spirit/home/phoenix/bind/detail/member_function_ptr.hpp>
+
+namespace boost { namespace phoenix
+{
+ template <typename RT, typename ClassT, typename ClassA>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<1>
+ , detail::member_function_ptr<0, RT, RT(ClassT::*)()>
+ , ClassA
+ >::type>
+ bind(RT(ClassT::*f)(), ClassA const& obj)
+ {
+ typedef detail::member_function_ptr<0, RT, RT(ClassT::*)()> fp_type;
+ return compose<detail::function_eval<1> >(fp_type(f), obj);
+ }
+
+ template <typename RT, typename ClassT, typename ClassA>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<1>
+ , detail::member_function_ptr<0, RT, RT(ClassT::*)() const>
+ , ClassA
+ >::type>
+ bind(RT(ClassT::*f)() const, ClassA const& obj)
+ {
+ typedef detail::member_function_ptr<0, RT, RT(ClassT::*)() const> fp_type;
+ return compose<detail::function_eval<1> >(fp_type(f), obj);
+ }
+
+ template <typename RT, typename ClassT>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<1>
+ , detail::member_function_ptr<0, RT, RT(ClassT::*)()>
+ , actor<reference<ClassT> >
+ >::type>
+ bind(RT(ClassT::*f)(), ClassT& obj)
+ {
+ typedef detail::member_function_ptr<0, RT, RT(ClassT::*)()> fp_type;
+ return compose<detail::function_eval<1> >(
+ fp_type(f)
+ , actor<reference<ClassT> >(reference<ClassT>(obj)));
+ }
+
+ template <typename RT, typename ClassT>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<1>
+ , detail::member_function_ptr<0, RT, RT(ClassT::*)() const>
+ , actor<reference<ClassT> >
+ >::type>
+ bind(RT(ClassT::*f)() const, ClassT& obj)
+ {
+ typedef detail::member_function_ptr<0, RT, RT(ClassT::*)() const> fp_type;
+ return compose<detail::function_eval<1> >(
+ fp_type(f)
+ , actor<reference<ClassT> >(reference<ClassT>(obj)));
+ }
+
+ // Bring in the rest of the function binders
+ #include <boost/spirit/home/phoenix/bind/detail/bind_member_function.hpp>
+}}
+
+#endif
diff --git a/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_member_variable.hpp b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_member_variable.hpp
new file mode 100644
index 0000000..3d11351
--- /dev/null
+++ b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/bind_member_variable.hpp
@@ -0,0 +1,105 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef PHOENIX_BIND_BIND_MEMBER_VARIABLE_HPP
+#define PHOENIX_BIND_BIND_MEMBER_VARIABLE_HPP
+
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+#include <boost/spirit/home/phoenix/core/actor.hpp>
+#include <boost/spirit/home/phoenix/core/compose.hpp>
+#include <boost/spirit/home/phoenix/core/reference.hpp>
+#include <boost/spirit/home/phoenix/core/detail/function_eval.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+namespace boost { namespace phoenix
+{
+ namespace detail
+ {
+ template <typename RT, typename MP>
+ struct member_variable
+ {
+ template <typename Class>
+ struct result
+ {
+ typedef typename boost::mpl::if_<
+ boost::is_const<
+ typename boost::remove_pointer<
+ typename boost::remove_reference<Class>::type
+ >::type
+ >
+ , const RT&
+ , RT&
+ >::type type;
+ };
+
+ member_variable(MP mp)
+ : mp(mp) {}
+
+ template <typename Class>
+ RT& operator()(Class& obj) const
+ {
+ return obj.*mp;
+ }
+
+ template <typename Class>
+ RT& operator()(Class* obj) const
+ {
+ return obj->*mp;
+ }
+
+ template <typename Class>
+ RT const& operator()(Class const& obj) const
+ {
+ return obj.*mp;
+ }
+
+ template <typename Class>
+ RT const& operator()(Class const* obj) const
+ {
+ return obj->*mp;
+ }
+
+ MP mp;
+ };
+ }
+
+ template <typename RT, typename ClassT, typename ClassA>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<1>
+ , detail::member_variable<RT, RT ClassT::*>
+ , ClassA
+ >::type>
+ bind(RT ClassT::*mp, ClassA const& obj)
+ {
+ typedef detail::member_variable<RT, RT ClassT::*> mp_type;
+ return compose<detail::function_eval<1> >(mp_type(mp), obj);
+ }
+
+ template <typename RT, typename ClassT>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<1>
+ , detail::member_variable<RT, RT ClassT::*>
+ , actor<reference<ClassT> >
+ >::type>
+ bind(RT ClassT::*mp, ClassT& obj)
+ {
+ typedef detail::member_variable<RT, RT ClassT::*> mp_type;
+ return compose<detail::function_eval<1> >(
+ mp_type(mp)
+ , actor<reference<ClassT> >(reference<ClassT>(obj)));
+ }
+}}
+
+#endif
diff --git a/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/bind_function.hpp b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/bind_function.hpp
new file mode 100644
index 0000000..8d6340d
--- /dev/null
+++ b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/bind_function.hpp
@@ -0,0 +1,53 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(PHOENIX_BIND_DETAIL_BIND_FUNCTION_HPP)
+#define PHOENIX_BIND_DETAIL_BIND_FUNCTION_HPP
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3, (3, BOOST_PP_DEC(PHOENIX_COMPOSITE_LIMIT), \
+ "boost/spirit/home/phoenix/bind/detail/bind_function.hpp"))
+#include BOOST_PP_ITERATE()
+
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+#else // defined(BOOST_PP_IS_ITERATING)
+
+#define N BOOST_PP_ITERATION()
+
+ template <typename RT
+ , BOOST_PP_ENUM_PARAMS(N, typename T)
+ , BOOST_PP_ENUM_PARAMS(N, typename A)>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<N>
+ , detail::function_ptr<N, RT, RT(*)(BOOST_PP_ENUM_PARAMS(N, T))>
+ , BOOST_PP_ENUM_PARAMS(N, A)
+ >::type>
+ bind(RT(*f)(BOOST_PP_ENUM_PARAMS(N, T))
+ , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& _))
+ {
+ typedef detail::function_ptr<
+ N, RT, RT(*)(BOOST_PP_ENUM_PARAMS(N, T))> fp_type;
+ return compose<detail::function_eval<N> >(
+ fp_type(f), BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+
+
diff --git a/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/bind_function_object.hpp b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/bind_function_object.hpp
new file mode 100644
index 0000000..4e4984d
--- /dev/null
+++ b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/bind_function_object.hpp
@@ -0,0 +1,43 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(PHOENIX_BIND_DETAIL_BIND_FUNCTION_OBJECT_HPP)
+#define PHOENIX_BIND_DETAIL_BIND_FUNCTION_OBJECT_HPP
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3, (3, BOOST_PP_DEC(PHOENIX_COMPOSITE_LIMIT), \
+ "boost/spirit/home/phoenix/bind/detail/bind_function_object.hpp"))
+#include BOOST_PP_ITERATE()
+
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+#else // defined(BOOST_PP_IS_ITERATING)
+
+#define N BOOST_PP_ITERATION()
+
+ template <typename F, BOOST_PP_ENUM_PARAMS(N, typename A)>
+ inline actor<typename as_composite<detail::function_eval<N>, F
+ , BOOST_PP_ENUM_PARAMS(N, A)>::type>
+ bind(F const& f, BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& _))
+ {
+ return compose<detail::function_eval<N> >(f, BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+
+
diff --git a/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/bind_member_function.hpp b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/bind_member_function.hpp
new file mode 100644
index 0000000..315f56f
--- /dev/null
+++ b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/bind_member_function.hpp
@@ -0,0 +1,132 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(PHOENIX_BIND_DETAIL_BIND_MEMBER_FUNCTION_HPP)
+#define PHOENIX_BIND_DETAIL_BIND_MEMBER_FUNCTION_HPP
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3, (1, BOOST_PP_DEC(BOOST_PP_DEC(PHOENIX_COMPOSITE_LIMIT)), \
+ "boost/spirit/home/phoenix/bind/detail/bind_member_function.hpp"))
+#include BOOST_PP_ITERATE()
+
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+#else // defined(BOOST_PP_IS_ITERATING)
+
+#define N BOOST_PP_ITERATION()
+
+ template <typename RT
+ , typename ClassT
+ , BOOST_PP_ENUM_PARAMS(N, typename T)
+ , typename ClassA
+ , BOOST_PP_ENUM_PARAMS(N, typename A)>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<BOOST_PP_INC(N)>
+ , detail::member_function_ptr<N,
+ RT, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(N, T))>
+ , ClassA, BOOST_PP_ENUM_PARAMS(N, A)
+ >::type>
+ bind(
+ RT(ClassT::*f)(BOOST_PP_ENUM_PARAMS(N, T))
+ , ClassA const& obj
+ , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& _))
+ {
+ typedef detail::member_function_ptr<
+ N, RT, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(N, T))> fp_type;
+ return compose<detail::function_eval<BOOST_PP_INC(N)> >(
+ fp_type(f), obj, BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+ template <typename RT
+ , typename ClassT
+ , BOOST_PP_ENUM_PARAMS(N, typename T)
+ , typename ClassA
+ , BOOST_PP_ENUM_PARAMS(N, typename A)>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<BOOST_PP_INC(N)>
+ , detail::member_function_ptr<N,
+ RT, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(N, T)) const>
+ , ClassA, BOOST_PP_ENUM_PARAMS(N, A)
+ >::type>
+ bind(
+ RT(ClassT::*f)(BOOST_PP_ENUM_PARAMS(N, T)) const
+ , ClassA const& obj
+ , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& _))
+ {
+ typedef detail::member_function_ptr<
+ N, RT, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(N, T)) const> fp_type;
+ return compose<detail::function_eval<BOOST_PP_INC(N)> >(
+ fp_type(f), obj, BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+ template <typename RT
+ , typename ClassT
+ , BOOST_PP_ENUM_PARAMS(N, typename T)
+ , BOOST_PP_ENUM_PARAMS(N, typename A)>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<BOOST_PP_INC(N)>
+ , detail::member_function_ptr<N,
+ RT, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(N, T))>
+ , actor<reference<ClassT> >
+ , BOOST_PP_ENUM_PARAMS(N, A)
+ >::type>
+ bind(
+ RT(ClassT::*f)(BOOST_PP_ENUM_PARAMS(N, T))
+ , ClassT& obj
+ , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& _))
+ {
+ typedef detail::member_function_ptr<
+ N, RT, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(N, T))> fp_type;
+ return compose<detail::function_eval<BOOST_PP_INC(N)> >(
+ fp_type(f)
+ , actor<reference<ClassT> >(reference<ClassT>(obj))
+ , BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+ template <typename RT
+ , typename ClassT
+ , BOOST_PP_ENUM_PARAMS(N, typename T)
+ , BOOST_PP_ENUM_PARAMS(N, typename A)>
+ inline actor<
+ typename as_composite<
+ detail::function_eval<BOOST_PP_INC(N)>
+ , detail::member_function_ptr<N,
+ RT, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(N, T)) const>
+ , actor<reference<ClassT> >
+ , BOOST_PP_ENUM_PARAMS(N, A)
+ >::type>
+ bind(
+ RT(ClassT::*f)(BOOST_PP_ENUM_PARAMS(N, T)) const
+ , ClassT& obj
+ , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& _))
+ {
+ typedef detail::member_function_ptr<
+ N, RT, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(N, T)) const> fp_type;
+ return compose<detail::function_eval<BOOST_PP_INC(N)> >(
+ fp_type(f)
+ , actor<reference<ClassT> >(reference<ClassT>(obj))
+ , BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+
+
diff --git a/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/function_ptr.hpp b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/function_ptr.hpp
new file mode 100644
index 0000000..a2352cd
--- /dev/null
+++ b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/function_ptr.hpp
@@ -0,0 +1,99 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(PHOENIX_BIND_DETAIL_FUNCTION_PTR_HPP)
+#define PHOENIX_BIND_DETAIL_FUNCTION_PTR_HPP
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/dec.hpp>
+
+namespace boost { namespace phoenix { namespace detail
+{
+ template <int N>
+ struct function_ptr_impl
+ {
+ template <typename RT, typename FP>
+ struct impl;
+ };
+
+ template <int N, typename RT, typename FP>
+ struct function_ptr : function_ptr_impl<N>::template impl<RT, FP>
+ {
+ typedef typename function_ptr_impl<N>::template impl<RT, FP> base;
+ function_ptr(FP fp)
+ : base(fp) {}
+ };
+
+ template <>
+ struct function_ptr_impl<0>
+ {
+ template <typename RT, typename FP>
+ struct impl
+ {
+ typedef RT result_type;
+
+ impl(FP fp)
+ : fp(fp) {}
+
+ RT operator()() const
+ {
+ return fp();
+ }
+
+ FP fp;
+ };
+ };
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3, (1, PHOENIX_COMPOSITE_LIMIT, \
+ "boost/spirit/home/phoenix/bind/detail/function_ptr.hpp"))
+#include BOOST_PP_ITERATE()
+
+}}} // namespace boost::phoenix::detail
+
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+#else // defined(BOOST_PP_IS_ITERATING)
+
+#define N BOOST_PP_ITERATION()
+
+ template <>
+ struct function_ptr_impl<N>
+ {
+ template <typename RT, typename FP>
+ struct impl
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ struct result
+ {
+ typedef RT type;
+ };
+
+ impl(FP fp)
+ : fp(fp) {}
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename A)>
+ RT operator()(BOOST_PP_ENUM_BINARY_PARAMS(N, A, & _)) const
+ {
+ return fp(BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+ FP fp;
+ };
+ };
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+
+
diff --git a/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/member_function_ptr.hpp b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/member_function_ptr.hpp
new file mode 100644
index 0000000..2c11510
--- /dev/null
+++ b/3rdParty/Boost/src/boost/spirit/home/phoenix/bind/detail/member_function_ptr.hpp
@@ -0,0 +1,119 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(PHOENIX_BIND_DETAIL_MEMBER_FUNCTION_PTR_HPP)
+#define PHOENIX_BIND_DETAIL_MEMBER_FUNCTION_PTR_HPP
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/utility/addressof.hpp>
+
+namespace boost { namespace phoenix { namespace detail
+{
+ template <int N>
+ struct member_function_ptr_impl
+ {
+ template <typename RT, typename FP>
+ struct impl;
+ };
+
+ template <int N, typename RT, typename FP>
+ struct member_function_ptr
+ : member_function_ptr_impl<N>::template impl<RT, FP>
+ {
+ typedef typename member_function_ptr_impl<N>::
+ template impl<RT, FP> base;
+ member_function_ptr(FP fp)
+ : base(fp) {}
+ };
+
+ template <>
+ struct member_function_ptr_impl<0>
+ {
+ template <typename RT, typename FP>
+ struct impl
+ {
+ template <typename Class>
+ struct result
+ {
+ typedef RT type;
+ };
+
+ impl(FP fp)
+ : fp(fp) {}
+
+ template <typename Class>
+ RT operator()(Class& obj) const
+ {
+ return (obj.*fp)();
+ }
+
+ template <typename Class>
+ RT operator()(Class* obj) const
+ {
+ return (obj->*fp)();
+ }
+
+ FP fp;
+ };
+ };
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3, (1, PHOENIX_COMPOSITE_LIMIT, \
+ "boost/spirit/home/phoenix/bind/detail/member_function_ptr.hpp"))
+#include BOOST_PP_ITERATE()
+
+}}} // namespace boost::phoenix::detail
+
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+#else // defined(BOOST_PP_IS_ITERATING)
+
+#define N BOOST_PP_ITERATION()
+
+ template <>
+ struct member_function_ptr_impl<N>
+ {
+ template <typename RT, typename FP>
+ struct impl
+ {
+ template <typename Class, BOOST_PP_ENUM_PARAMS(N, typename T)>
+ struct result
+ {
+ typedef RT type;
+ };
+
+ impl(FP fp)
+ : fp(fp) {}
+
+ template <typename Class, BOOST_PP_ENUM_PARAMS(N, typename A)>
+ RT operator()(Class& obj, BOOST_PP_ENUM_BINARY_PARAMS(N, A, & _)) const
+ {
+ return (obj.*fp)(BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+ template <typename Class, BOOST_PP_ENUM_PARAMS(N, typename A)>
+ RT operator()(Class* obj, BOOST_PP_ENUM_BINARY_PARAMS(N, A, & _)) const
+ {
+ return (obj->*fp)(BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+ FP fp;
+ };
+ };
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+
+