summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2014-10-19 20:22:58 (GMT)
committerTobias Markmann <tm@ayena.de>2014-10-20 13:49:33 (GMT)
commit6b22dfcf59474dd016a0355a3102a1dd3692d92c (patch)
tree2b1fd33be433a91e81fee84fdc2bf1b52575d934 /3rdParty/Boost/src/boost/tti/detail
parent38b0cb785fea8eae5e48fae56440695fdfd10ee1 (diff)
downloadswift-6b22dfcf59474dd016a0355a3102a1dd3692d92c.zip
swift-6b22dfcf59474dd016a0355a3102a1dd3692d92c.tar.bz2
Update Boost in 3rdParty to version 1.56.0.
This updates Boost in our 3rdParty directory to version 1.56.0. Updated our update.sh script to stop on error. Changed error reporting in SwiftTools/CrashReporter.cpp to SWIFT_LOG due to missing include of <iostream> with newer Boost. Change-Id: I4b35c77de951333979a524097f35f5f83d325edc
Diffstat (limited to '3rdParty/Boost/src/boost/tti/detail')
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dcomp_mem_fun.hpp78
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/ddata.hpp29
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/ddeftype.hpp23
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dftclass.hpp43
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dfunction.hpp34
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dlambda.hpp34
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dmem_data.hpp219
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dmem_fun.hpp133
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dmem_type.hpp51
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dmetafunc.hpp29
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dnotype.hpp23
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dnullptr.hpp22
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dplaceholder.hpp36
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dptmf.hpp46
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dstatic_mem_data.hpp117
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dstatic_mem_fun.hpp103
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dtemplate.hpp67
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dtemplate_params.hpp239
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dtfunction.hpp35
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dtype.hpp80
-rw-r--r--3rdParty/Boost/src/boost/tti/detail/dvm_template_params.hpp164
21 files changed, 1605 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/tti/detail/dcomp_mem_fun.hpp b/3rdParty/Boost/src/boost/tti/detail/dcomp_mem_fun.hpp
new file mode 100644
index 0000000..95b37d1
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dcomp_mem_fun.hpp
@@ -0,0 +1,78 @@
+
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_COMP_MEM_FUN_HPP)
+#define BOOST_TTI_DETAIL_COMP_MEM_FUN_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/tti/detail/dftclass.hpp>
+#include <boost/tti/detail/dnullptr.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+
+#if defined(__SUNPRO_CC)
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_COMP_MEMBER_FUNCTION(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T> \
+ struct BOOST_PP_CAT(trait,_detail_hcmf) \
+ { \
+ template<class BOOST_TTI_DETAIL_TP_F> \
+ struct cl_type : \
+ boost::remove_const \
+ < \
+ typename BOOST_TTI_NAMESPACE::detail::class_type<BOOST_TTI_DETAIL_TP_F>::type \
+ > \
+ { \
+ }; \
+ \
+ template<BOOST_TTI_DETAIL_TP_T> \
+ struct helper {}; \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U> \
+ static ::boost::type_traits::yes_type chkt(helper<&BOOST_TTI_DETAIL_TP_U::name> *); \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U> \
+ static ::boost::type_traits::no_type chkt(...); \
+ \
+ typedef boost::mpl::bool_<sizeof(chkt<typename cl_type<BOOST_TTI_DETAIL_TP_T>::type>(BOOST_TTI_DETAIL_NULLPTR))==sizeof(::boost::type_traits::yes_type)> type; \
+ }; \
+/**/
+
+#else
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_COMP_MEMBER_FUNCTION(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T> \
+ struct BOOST_PP_CAT(trait,_detail_hcmf) \
+ { \
+ template<class BOOST_TTI_DETAIL_TP_F> \
+ struct cl_type : \
+ boost::remove_const \
+ < \
+ typename BOOST_TTI_NAMESPACE::detail::class_type<BOOST_TTI_DETAIL_TP_F>::type \
+ > \
+ { \
+ }; \
+ \
+ template<BOOST_TTI_DETAIL_TP_T> \
+ struct helper; \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U> \
+ static ::boost::type_traits::yes_type chkt(helper<&BOOST_TTI_DETAIL_TP_U::name> *); \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U> \
+ static ::boost::type_traits::no_type chkt(...); \
+ \
+ typedef boost::mpl::bool_<sizeof(chkt<typename cl_type<BOOST_TTI_DETAIL_TP_T>::type>(BOOST_TTI_DETAIL_NULLPTR))==sizeof(::boost::type_traits::yes_type)> type; \
+ }; \
+/**/
+
+#endif
+
+
+#endif // BOOST_TTI_DETAIL_COMP_MEM_FUN_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/ddata.hpp b/3rdParty/Boost/src/boost/tti/detail/ddata.hpp
new file mode 100644
index 0000000..b8b4d88
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/ddata.hpp
@@ -0,0 +1,29 @@
+
+// (C) Copyright Edward Diener 2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_DATA_HPP)
+#define BOOST_TTI_DETAIL_DATA_HPP
+
+#include <boost/mpl/or.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/tti/detail/dmem_data.hpp>
+#include <boost/tti/detail/dstatic_mem_data.hpp>
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_DATA(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_DATA(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_STATIC_MEMBER_DATA(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_ET,class BOOST_TTI_DETAIL_TP_DT> \
+ struct BOOST_PP_CAT(trait,_detail_hd) : \
+ boost::mpl::or_ \
+ < \
+ BOOST_PP_CAT(trait,_detail_hmd_with_enclosing_class)<BOOST_TTI_DETAIL_TP_ET,BOOST_TTI_DETAIL_TP_DT>, \
+ BOOST_PP_CAT(trait,_detail_hsd)<BOOST_TTI_DETAIL_TP_ET,BOOST_TTI_DETAIL_TP_DT> \
+ > \
+ { \
+ }; \
+/**/
+
+#endif // BOOST_TTI_DETAIL_DATA_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/ddeftype.hpp b/3rdParty/Boost/src/boost/tti/detail/ddeftype.hpp
new file mode 100644
index 0000000..760d5e2
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/ddeftype.hpp
@@ -0,0 +1,23 @@
+
+// (C) Copyright Edward Diener 2012
+// Use, modification and distribution are subject to 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_TTI_DETAIL_DEFTYPE_HPP)
+#define BOOST_TTI_DETAIL_DEFTYPE_HPP
+
+namespace boost
+ {
+ namespace tti
+ {
+ namespace detail
+ {
+ struct deftype
+ {
+ };
+ }
+ }
+ }
+
+#endif // BOOST_TTI_DETAIL_DEFTYPE_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dftclass.hpp b/3rdParty/Boost/src/boost/tti/detail/dftclass.hpp
new file mode 100644
index 0000000..ce3060f
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dftclass.hpp
@@ -0,0 +1,43 @@
+
+// (C) Copyright Edward Diener 2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_FTCLASS_HPP)
+#define BOOST_TTI_DETAIL_FTCLASS_HPP
+
+#include <boost/function_types/parameter_types.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/quote.hpp>
+
+namespace boost
+ {
+ namespace tti
+ {
+ namespace detail
+ {
+ template<class BOOST_TTI_DETAIL_TP_F>
+ struct class_type :
+ boost::mpl::at
+ <
+ typename
+ boost::function_types::parameter_types
+ <
+ BOOST_TTI_DETAIL_TP_F,
+ boost::mpl::quote1
+ <
+ boost::mpl::identity
+ >
+ >::type,
+ boost::mpl::int_<0>
+ >
+ {
+ };
+ }
+ }
+ }
+
+#endif // BOOST_TTI_DETAIL_FTCLASS_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dfunction.hpp b/3rdParty/Boost/src/boost/tti/detail/dfunction.hpp
new file mode 100644
index 0000000..f86fef4
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dfunction.hpp
@@ -0,0 +1,34 @@
+
+// (C) Copyright Edward Diener 2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_FUNCTION_HPP)
+#define BOOST_TTI_DETAIL_FUNCTION_HPP
+
+#include <boost/mpl/or.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/tti/detail/dmem_fun.hpp>
+#include <boost/tti/detail/dstatic_mem_fun.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_FUNCTION(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_CALL_TYPES_MEMBER_FUNCTION(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_IMPL_HAS_STATIC_MEMBER_FUNCTION(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_R,class BOOST_TTI_DETAIL_TP_FS,class BOOST_TTI_DETAIL_TP_TAG> \
+ struct BOOST_PP_CAT(trait,_detail_hf) : \
+ boost::mpl::or_ \
+ < \
+ BOOST_PP_CAT(trait,_detail_call_types)<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_R,BOOST_TTI_DETAIL_TP_FS,BOOST_TTI_DETAIL_TP_TAG>, \
+ BOOST_PP_CAT(trait,_detail_ihsmf) \
+ < \
+ BOOST_TTI_DETAIL_TP_T, \
+ typename BOOST_TTI_NAMESPACE::detail::tfunction_seq<BOOST_TTI_DETAIL_TP_R,BOOST_TTI_DETAIL_TP_FS,BOOST_TTI_DETAIL_TP_TAG>::type \
+ > \
+ > \
+ { \
+ }; \
+/**/
+
+#endif // BOOST_TTI_DETAIL_FUNCTION_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dlambda.hpp b/3rdParty/Boost/src/boost/tti/detail/dlambda.hpp
new file mode 100644
index 0000000..758007c
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dlambda.hpp
@@ -0,0 +1,34 @@
+
+// (C) Copyright Edward Diener 2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_LAMBDA_HPP)
+#define BOOST_TTI_DETAIL_LAMBDA_HPP
+
+#include <boost/mpl/or.hpp>
+#include <boost/tti/detail/dmetafunc.hpp>
+#include <boost/tti/detail/dplaceholder.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
+
+namespace boost
+ {
+ namespace tti
+ {
+ namespace detail
+ {
+ template <class BOOST_TTI_DETAIL_TP_T>
+ struct is_lambda_expression :
+ boost::mpl::or_
+ <
+ BOOST_TTI_NAMESPACE::detail::is_metafunction_class<BOOST_TTI_DETAIL_TP_T>,
+ BOOST_TTI_NAMESPACE::detail::is_placeholder_expression<BOOST_TTI_DETAIL_TP_T>
+ >
+ {
+ };
+ }
+ }
+ }
+
+#endif // BOOST_TTI_DETAIL_LAMBDA_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dmem_data.hpp b/3rdParty/Boost/src/boost/tti/detail/dmem_data.hpp
new file mode 100644
index 0000000..140a443
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dmem_data.hpp
@@ -0,0 +1,219 @@
+
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_MEM_DATA_HPP)
+#define BOOST_TTI_DETAIL_MEM_DATA_HPP
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/function_types/components.hpp>
+#include <boost/function_types/is_member_object_pointer.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/tti/detail/ddeftype.hpp>
+#include <boost/tti/detail/dftclass.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <boost/type_traits/is_class.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_const.hpp>
+
+#if defined(BOOST_MSVC) || (BOOST_WORKAROUND(BOOST_GCC, >= 40400) && BOOST_WORKAROUND(BOOST_GCC, < 40600))
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_DATA_OP(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_C> \
+ struct BOOST_PP_CAT(trait,_detail_hmd_op) \
+ { \
+ template<class> \
+ struct return_of; \
+ \
+ template<class BOOST_TTI_DETAIL_TP_R,class BOOST_TTI_DETAIL_TP_IC> \
+ struct return_of<BOOST_TTI_DETAIL_TP_R BOOST_TTI_DETAIL_TP_IC::*> \
+ { \
+ typedef BOOST_TTI_DETAIL_TP_R type; \
+ }; \
+ \
+ template<bool,typename BOOST_TTI_DETAIL_TP_U> \
+ struct menable_if; \
+ \
+ template<typename BOOST_TTI_DETAIL_TP_U> \
+ struct menable_if<true,BOOST_TTI_DETAIL_TP_U> \
+ { \
+ typedef BOOST_TTI_DETAIL_TP_U type; \
+ }; \
+ \
+ template<typename BOOST_TTI_DETAIL_TP_U,typename BOOST_TTI_DETAIL_TP_V> \
+ static ::boost::type_traits::yes_type check2(BOOST_TTI_DETAIL_TP_V BOOST_TTI_DETAIL_TP_U::*); \
+ \
+ template<typename BOOST_TTI_DETAIL_TP_U,typename BOOST_TTI_DETAIL_TP_V> \
+ static ::boost::type_traits::no_type check2(BOOST_TTI_DETAIL_TP_U); \
+ \
+ template<typename BOOST_TTI_DETAIL_TP_U,typename BOOST_TTI_DETAIL_TP_V> \
+ static typename \
+ menable_if \
+ < \
+ sizeof(check2<BOOST_TTI_DETAIL_TP_U,BOOST_TTI_DETAIL_TP_V>(&BOOST_TTI_DETAIL_TP_U::name))==sizeof(::boost::type_traits::yes_type), \
+ ::boost::type_traits::yes_type \
+ > \
+ ::type \
+ has_matching_member(int); \
+ \
+ template<typename BOOST_TTI_DETAIL_TP_U,typename BOOST_TTI_DETAIL_TP_V> \
+ static ::boost::type_traits::no_type has_matching_member(...); \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U,class BOOST_TTI_DETAIL_TP_V> \
+ struct ttc_md \
+ { \
+ typedef boost::mpl::bool_<sizeof(has_matching_member<BOOST_TTI_DETAIL_TP_V,typename return_of<BOOST_TTI_DETAIL_TP_U>::type>(0))==sizeof(::boost::type_traits::yes_type)> type; \
+ }; \
+ \
+ typedef typename ttc_md<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_C>::type type; \
+ \
+ }; \
+/**/
+
+#else // !defined(BOOST_MSVC)
+
+#include <boost/tti/detail/dmem_fun.hpp>
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_DATA_OP(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_TYPES_MEMBER_FUNCTION(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_C> \
+ struct BOOST_PP_CAT(trait,_detail_hmd_op) : \
+ BOOST_PP_CAT(trait,_detail_types)<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_C> \
+ { \
+ }; \
+/**/
+
+#endif // defined(BOOST_MSVC)
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_DATA_INVOKE_ENCLOSING_CLASS(trait) \
+ template<class BOOST_TTI_DETAIL_TP_ET,class BOOST_TTI_DETAIL_TP_TYPE> \
+ struct BOOST_PP_CAT(trait,_detail_hmd_invoke_enclosing_class) : \
+ BOOST_PP_CAT(trait,_detail_hmd_op) \
+ < \
+ typename BOOST_TTI_NAMESPACE::detail::ptmd<BOOST_TTI_DETAIL_TP_ET,BOOST_TTI_DETAIL_TP_TYPE>::type, \
+ typename boost::remove_const<BOOST_TTI_DETAIL_TP_ET>::type \
+ > \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_DATA_INVOKE_PT_MEMBER(trait) \
+ template<class BOOST_TTI_DETAIL_TP_ET,class BOOST_TTI_DETAIL_TP_TYPE> \
+ struct BOOST_PP_CAT(trait,_detail_hmd_invoke_pt_member) : \
+ BOOST_PP_CAT(trait,_detail_hmd_op) \
+ < \
+ typename BOOST_TTI_NAMESPACE::detail::dmem_get_type<BOOST_TTI_DETAIL_TP_ET,BOOST_TTI_DETAIL_TP_TYPE>::type, \
+ typename boost::remove_const \
+ < \
+ typename BOOST_TTI_NAMESPACE::detail::dmem_get_enclosing<BOOST_TTI_DETAIL_TP_ET,BOOST_TTI_DETAIL_TP_TYPE>::type \
+ >::type \
+ > \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_DATA_WITH_ENCLOSING_CLASS(trait) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_DATA_INVOKE_ENCLOSING_CLASS(trait) \
+ template<class BOOST_TTI_DETAIL_TP_ET,class BOOST_TTI_DETAIL_TP_TYPE> \
+ struct BOOST_PP_CAT(trait,_detail_hmd_with_enclosing_class) : \
+ boost::mpl::eval_if \
+ < \
+ boost::is_class<BOOST_TTI_DETAIL_TP_ET>, \
+ BOOST_PP_CAT(trait,_detail_hmd_invoke_enclosing_class) \
+ < \
+ BOOST_TTI_DETAIL_TP_ET, \
+ BOOST_TTI_DETAIL_TP_TYPE \
+ >, \
+ boost::mpl::false_ \
+ > \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_DATA(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_DATA_OP(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_DATA_WITH_ENCLOSING_CLASS(trait) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_DATA_INVOKE_PT_MEMBER(trait) \
+ template<class BOOST_TTI_DETAIL_TP_ET,class BOOST_TTI_DETAIL_TP_TYPE> \
+ struct BOOST_PP_CAT(trait,_detail_hmd) : \
+ boost::mpl::eval_if \
+ < \
+ boost::is_same<BOOST_TTI_DETAIL_TP_TYPE,BOOST_TTI_NAMESPACE::detail::deftype>, \
+ BOOST_PP_CAT(trait,_detail_hmd_invoke_pt_member) \
+ < \
+ BOOST_TTI_DETAIL_TP_ET, \
+ BOOST_TTI_DETAIL_TP_TYPE \
+ >, \
+ BOOST_PP_CAT(trait,_detail_hmd_with_enclosing_class) \
+ < \
+ BOOST_TTI_DETAIL_TP_ET, \
+ BOOST_TTI_DETAIL_TP_TYPE \
+ > \
+ > \
+ { \
+ }; \
+/**/
+
+namespace boost
+ {
+ namespace tti
+ {
+ namespace detail
+ {
+
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_R>
+ struct ptmd
+ {
+ typedef BOOST_TTI_DETAIL_TP_R BOOST_TTI_DETAIL_TP_T::* type;
+ };
+
+ template<class BOOST_TTI_DETAIL_TP_T>
+ struct dmem_check_ptmd :
+ boost::mpl::identity<BOOST_TTI_DETAIL_TP_T>
+ {
+ BOOST_MPL_ASSERT((boost::function_types::is_member_object_pointer<BOOST_TTI_DETAIL_TP_T>));
+ };
+
+ template<class BOOST_TTI_DETAIL_TP_T>
+ struct dmem_check_ptec :
+ BOOST_TTI_NAMESPACE::detail::class_type<BOOST_TTI_DETAIL_TP_T>
+ {
+ BOOST_MPL_ASSERT((boost::function_types::is_member_object_pointer<BOOST_TTI_DETAIL_TP_T>));
+ };
+
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_T2>
+ struct dmem_get_type :
+ boost::mpl::eval_if
+ <
+ boost::is_same<BOOST_TTI_DETAIL_TP_T2,BOOST_TTI_NAMESPACE::detail::deftype>,
+ BOOST_TTI_NAMESPACE::detail::dmem_check_ptmd<BOOST_TTI_DETAIL_TP_T>,
+ BOOST_TTI_NAMESPACE::detail::ptmd<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_T2>
+ >
+ {
+ };
+
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_T2>
+ struct dmem_get_enclosing :
+ boost::mpl::eval_if
+ <
+ boost::is_same<BOOST_TTI_DETAIL_TP_T2,BOOST_TTI_NAMESPACE::detail::deftype>,
+ BOOST_TTI_NAMESPACE::detail::dmem_check_ptec<BOOST_TTI_DETAIL_TP_T>,
+ boost::mpl::identity<BOOST_TTI_DETAIL_TP_T>
+ >
+ {
+ };
+
+ }
+ }
+ }
+
+#endif // BOOST_TTI_DETAIL_MEM_DATA_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dmem_fun.hpp b/3rdParty/Boost/src/boost/tti/detail/dmem_fun.hpp
new file mode 100644
index 0000000..4217802
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dmem_fun.hpp
@@ -0,0 +1,133 @@
+
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_MEM_FUN_HPP)
+#define BOOST_TTI_DETAIL_MEM_FUN_HPP
+
+#include <boost/config.hpp>
+#include <boost/function_types/is_member_function_pointer.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/logical.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <boost/type_traits/is_class.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/tti/detail/dcomp_mem_fun.hpp>
+#include <boost/tti/detail/ddeftype.hpp>
+#include <boost/tti/detail/dnullptr.hpp>
+#include <boost/tti/detail/dptmf.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
+
+#if defined(__SUNPRO_CC)
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_TYPES_MEMBER_FUNCTION(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_PMEMF,class BOOST_TTI_DETAIL_TP_C> \
+ struct BOOST_PP_CAT(trait,_detail_types) \
+ { \
+ template<BOOST_TTI_DETAIL_TP_PMEMF> \
+ struct helper {}; \
+ \
+ template<class BOOST_TTI_DETAIL_TP_EC> \
+ static ::boost::type_traits::yes_type chkt(helper<&BOOST_TTI_DETAIL_TP_EC::name> *); \
+ \
+ template<class BOOST_TTI_DETAIL_TP_EC> \
+ static ::boost::type_traits::no_type chkt(...); \
+ \
+ typedef boost::mpl::bool_<sizeof(chkt<BOOST_TTI_DETAIL_TP_C>(BOOST_TTI_DETAIL_NULLPTR))==sizeof(::boost::type_traits::yes_type)> type; \
+ }; \
+/**/
+
+#else
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_TYPES_MEMBER_FUNCTION(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_PMEMF,class BOOST_TTI_DETAIL_TP_C> \
+ struct BOOST_PP_CAT(trait,_detail_types) \
+ { \
+ template<BOOST_TTI_DETAIL_TP_PMEMF> \
+ struct helper; \
+ \
+ template<class BOOST_TTI_DETAIL_TP_EC> \
+ static ::boost::type_traits::yes_type chkt(helper<&BOOST_TTI_DETAIL_TP_EC::name> *); \
+ \
+ template<class BOOST_TTI_DETAIL_TP_EC> \
+ static ::boost::type_traits::no_type chkt(...); \
+ \
+ typedef boost::mpl::bool_<sizeof(chkt<BOOST_TTI_DETAIL_TP_C>(BOOST_TTI_DETAIL_NULLPTR))==sizeof(::boost::type_traits::yes_type)> type; \
+ }; \
+/**/
+
+#endif
+
+#define BOOST_TTI_DETAIL_TRAIT_CTMF_INVOKE(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_TYPES_MEMBER_FUNCTION(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_R,class BOOST_TTI_DETAIL_TP_FS,class BOOST_TTI_DETAIL_TP_TAG> \
+ struct BOOST_PP_CAT(trait,_detail_ctmf_invoke) : \
+ BOOST_PP_CAT(trait,_detail_types) \
+ < \
+ typename BOOST_TTI_NAMESPACE::detail::ptmf_seq<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_R,BOOST_TTI_DETAIL_TP_FS,BOOST_TTI_DETAIL_TP_TAG>::type, \
+ BOOST_TTI_DETAIL_TP_T \
+ > \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_CALL_TYPES_MEMBER_FUNCTION(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_CTMF_INVOKE(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_R,class BOOST_TTI_DETAIL_TP_FS,class BOOST_TTI_DETAIL_TP_TAG> \
+ struct BOOST_PP_CAT(trait,_detail_call_types) : \
+ boost::mpl::eval_if \
+ < \
+ boost::is_class<BOOST_TTI_DETAIL_TP_T>, \
+ BOOST_PP_CAT(trait,_detail_ctmf_invoke) \
+ < \
+ BOOST_TTI_DETAIL_TP_T, \
+ BOOST_TTI_DETAIL_TP_R, \
+ BOOST_TTI_DETAIL_TP_FS, \
+ BOOST_TTI_DETAIL_TP_TAG \
+ >, \
+ boost::mpl::false_ \
+ > \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_CHECK_HAS_COMP_MEMBER_FUNCTION(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_COMP_MEMBER_FUNCTION(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T> \
+ struct BOOST_PP_CAT(trait,_detail_check_comp) : \
+ BOOST_PP_CAT(trait,_detail_hcmf)<BOOST_TTI_DETAIL_TP_T> \
+ { \
+ BOOST_MPL_ASSERT((boost::function_types::is_member_function_pointer<BOOST_TTI_DETAIL_TP_T>)); \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_FUNCTION(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_CALL_TYPES_MEMBER_FUNCTION(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_CHECK_HAS_COMP_MEMBER_FUNCTION(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_R,class BOOST_TTI_DETAIL_TP_FS,class BOOST_TTI_DETAIL_TP_TAG> \
+ struct BOOST_PP_CAT(trait,_detail_hmf) : \
+ boost::mpl::eval_if \
+ < \
+ boost::mpl::and_ \
+ < \
+ boost::is_same<BOOST_TTI_DETAIL_TP_R,BOOST_TTI_NAMESPACE::detail::deftype>, \
+ boost::is_same<BOOST_TTI_DETAIL_TP_FS,boost::mpl::vector<> >, \
+ boost::is_same<BOOST_TTI_DETAIL_TP_TAG,boost::function_types::null_tag> \
+ >, \
+ BOOST_PP_CAT(trait,_detail_check_comp)<BOOST_TTI_DETAIL_TP_T>, \
+ BOOST_PP_CAT(trait,_detail_call_types)<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_R,BOOST_TTI_DETAIL_TP_FS,BOOST_TTI_DETAIL_TP_TAG> \
+ > \
+ { \
+ }; \
+/**/
+
+#endif // BOOST_TTI_DETAIL_MEM_FUN_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dmem_type.hpp b/3rdParty/Boost/src/boost/tti/detail/dmem_type.hpp
new file mode 100644
index 0000000..53c7c81
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dmem_type.hpp
@@ -0,0 +1,51 @@
+
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_MEM_TYPE_HPP)
+#define BOOST_TTI_DETAIL_MEM_TYPE_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/has_xxx.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/type_traits/is_class.hpp>
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_TYPE_MEMBER_TYPE_OP(trait,name) \
+ BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(BOOST_PP_CAT(trait,_detail_mpl), name, false) \
+ template<class BOOST_TTI_DETAIL_TP_T> \
+ struct BOOST_PP_CAT(trait,_detail_op) : \
+ BOOST_PP_CAT(trait,_detail_mpl)<BOOST_TTI_DETAIL_TP_T> \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_TYPE_MEMBER_TYPE(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_TYPE_MEMBER_TYPE_OP(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T> \
+ struct BOOST_PP_CAT(trait,_detail) \
+ { \
+ typedef typename \
+ boost::mpl::eval_if \
+ < \
+ boost::is_class<BOOST_TTI_DETAIL_TP_T>, \
+ BOOST_PP_CAT(trait,_detail_op)<BOOST_TTI_DETAIL_TP_T>, \
+ boost::mpl::false_ \
+ >::type type; \
+ \
+ BOOST_STATIC_CONSTANT(bool,value=type::value); \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_MEMBER_TYPE(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T> \
+ struct BOOST_PP_CAT(trait,_detail_member_type) \
+ { \
+ typedef typename BOOST_TTI_DETAIL_TP_T::name type; \
+ }; \
+/**/
+
+#endif // BOOST_TTI_DETAIL_MEM_TYPE_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dmetafunc.hpp b/3rdParty/Boost/src/boost/tti/detail/dmetafunc.hpp
new file mode 100644
index 0000000..8a31f09
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dmetafunc.hpp
@@ -0,0 +1,29 @@
+
+// (C) Copyright Edward Diener 2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_METAFUNC_HPP)
+#define BOOST_TTI_DETAIL_METAFUNC_HPP
+
+#include <boost/mpl/has_xxx.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
+
+namespace boost
+ {
+ namespace tti
+ {
+ namespace detail
+ {
+ BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(is_metafunction_class_apply, apply, false)
+ template <class BOOST_TTI_DETAIL_TP_T>
+ struct is_metafunction_class :
+ BOOST_TTI_NAMESPACE::detail::is_metafunction_class_apply<BOOST_TTI_DETAIL_TP_T>
+ {
+ };
+ }
+ }
+ }
+
+#endif // BOOST_TTI_DETAIL_METAFUNC_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dnotype.hpp b/3rdParty/Boost/src/boost/tti/detail/dnotype.hpp
new file mode 100644
index 0000000..89418db
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dnotype.hpp
@@ -0,0 +1,23 @@
+
+// (C) Copyright Edward Diener 2011,2012
+// Use, modification and distribution are subject to 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_TTI_DETAIL_NOTYPE_HPP)
+#define BOOST_TTI_DETAIL_NOTYPE_HPP
+
+namespace boost
+ {
+ namespace tti
+ {
+ namespace detail
+ {
+ struct notype
+ {
+ };
+ }
+ }
+ }
+
+#endif // BOOST_TTI_DETAIL_NOTYPE_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dnullptr.hpp b/3rdParty/Boost/src/boost/tti/detail/dnullptr.hpp
new file mode 100644
index 0000000..7454df7
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dnullptr.hpp
@@ -0,0 +1,22 @@
+
+// (C) Copyright Edward Diener 2012
+// Use, modification and distribution are subject to 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_TTI_DETAIL_NULLPTR_HPP)
+#define BOOST_TTI_DETAIL_NULLPTR_HPP
+
+#include <boost/config.hpp>
+
+#if defined(BOOST_NO_CXX11_NULLPTR)
+
+#define BOOST_TTI_DETAIL_NULLPTR 0
+
+#else // !BOOST_NO_CXX11_NULLPTR
+
+#define BOOST_TTI_DETAIL_NULLPTR nullptr
+
+#endif // BOOST_NO_CXX11_NULLPTR
+
+#endif // BOOST_TTI_DETAIL_NULLPTR_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dplaceholder.hpp b/3rdParty/Boost/src/boost/tti/detail/dplaceholder.hpp
new file mode 100644
index 0000000..05fef8b
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dplaceholder.hpp
@@ -0,0 +1,36 @@
+
+// (C) Copyright Edward Diener 2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_PLACEHOLDER_HPP)
+#define BOOST_TTI_DETAIL_PLACEHOLDER_HPP
+
+#include <boost/mpl/lambda.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost
+ {
+ namespace tti
+ {
+ namespace detail
+ {
+ template <class BOOST_TTI_DETAIL_TP_T>
+ struct is_placeholder_expression :
+ boost::mpl::not_
+ <
+ boost::is_same
+ <
+ typename boost::mpl::lambda<BOOST_TTI_DETAIL_TP_T>::type,
+ BOOST_TTI_DETAIL_TP_T
+ >
+ >
+ {
+ };
+ }
+ }
+ }
+
+#endif // BOOST_TTI_DETAIL_PLACEHOLDER_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dptmf.hpp b/3rdParty/Boost/src/boost/tti/detail/dptmf.hpp
new file mode 100644
index 0000000..ad6cdf5
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dptmf.hpp
@@ -0,0 +1,46 @@
+
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_PTMF_HPP)
+#define BOOST_TTI_DETAIL_PTMF_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/push_front.hpp>
+#include <boost/function_types/member_function_pointer.hpp>
+
+namespace boost
+ {
+ namespace tti
+ {
+ namespace detail
+ {
+ template
+ <
+ class BOOST_TTI_DETAIL_TP_T,
+ class BOOST_TTI_DETAIL_TP_R,
+ class BOOST_TTI_DETAIL_TP_FS,
+ class BOOST_TTI_DETAIL_TP_TAG
+ >
+ struct ptmf_seq
+ {
+ typedef typename
+ boost::function_types::member_function_pointer
+ <
+ typename
+ boost::mpl::push_front
+ <
+ typename
+ boost::mpl::push_front<BOOST_TTI_DETAIL_TP_FS,BOOST_TTI_DETAIL_TP_T>::type,
+ BOOST_TTI_DETAIL_TP_R
+ >::type,
+ BOOST_TTI_DETAIL_TP_TAG
+ >::type type;
+ };
+ }
+ }
+ }
+
+#endif // BOOST_TTI_DETAIL_PTMF_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dstatic_mem_data.hpp b/3rdParty/Boost/src/boost/tti/detail/dstatic_mem_data.hpp
new file mode 100644
index 0000000..5a3b537
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dstatic_mem_data.hpp
@@ -0,0 +1,117 @@
+
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_STATIC_MEM_DATA_HPP)
+#define BOOST_TTI_DETAIL_STATIC_MEM_DATA_HPP
+
+#include <boost/config.hpp>
+#include <boost/function_types/is_function.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/type_traits/is_class.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <boost/tti/detail/dnullptr.hpp>
+
+#if defined(BOOST_MSVC)
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_STATIC_MEMBER_DATA_OP(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_TYPE> \
+ struct BOOST_PP_CAT(trait,_detail_hsd_op) \
+ { \
+ template<bool,typename BOOST_TTI_DETAIL_TP_U> \
+ struct menable_if; \
+ \
+ template<typename BOOST_TTI_DETAIL_TP_U> \
+ struct menable_if<true,BOOST_TTI_DETAIL_TP_U> \
+ { \
+ typedef BOOST_TTI_DETAIL_TP_U type; \
+ }; \
+ \
+ template<typename BOOST_TTI_DETAIL_TP_U,typename BOOST_TTI_DETAIL_TP_V> \
+ static ::boost::type_traits::yes_type check2(BOOST_TTI_DETAIL_TP_V *); \
+ \
+ template<typename BOOST_TTI_DETAIL_TP_U,typename BOOST_TTI_DETAIL_TP_V> \
+ static ::boost::type_traits::no_type check2(BOOST_TTI_DETAIL_TP_U); \
+ \
+ template<typename BOOST_TTI_DETAIL_TP_U,typename BOOST_TTI_DETAIL_TP_V> \
+ static typename \
+ menable_if \
+ < \
+ sizeof(check2<BOOST_TTI_DETAIL_TP_U,BOOST_TTI_DETAIL_TP_V>(&BOOST_TTI_DETAIL_TP_U::name))==sizeof(::boost::type_traits::yes_type), \
+ ::boost::type_traits::yes_type \
+ > \
+ ::type \
+ has_matching_member(int); \
+ \
+ template<typename BOOST_TTI_DETAIL_TP_U,typename BOOST_TTI_DETAIL_TP_V> \
+ static ::boost::type_traits::no_type has_matching_member(...); \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U,class BOOST_TTI_DETAIL_TP_V> \
+ struct ttc_sd \
+ { \
+ typedef boost::mpl::bool_<sizeof(has_matching_member<BOOST_TTI_DETAIL_TP_V,BOOST_TTI_DETAIL_TP_U>(0))==sizeof(::boost::type_traits::yes_type)> type; \
+ }; \
+ \
+ typedef typename ttc_sd<BOOST_TTI_DETAIL_TP_TYPE,BOOST_TTI_DETAIL_TP_T>::type type; \
+ }; \
+/**/
+
+#elif defined(__SUNPRO_CC)
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_STATIC_MEMBER_DATA_OP(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_TYPE> \
+ struct BOOST_PP_CAT(trait,_detail_hsd_op) \
+ { \
+ template<BOOST_TTI_DETAIL_TP_TYPE *> \
+ struct helper {}; \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U> \
+ static ::boost::type_traits::yes_type chkt(helper<&BOOST_TTI_DETAIL_TP_U::name> *); \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U> \
+ static ::boost::type_traits::no_type chkt(...); \
+ \
+ typedef boost::mpl::bool_<(!boost::function_types::is_function<BOOST_TTI_DETAIL_TP_TYPE>::value) && (sizeof(chkt<BOOST_TTI_DETAIL_TP_T>(BOOST_TTI_DETAIL_NULLPTR))==sizeof(::boost::type_traits::yes_type))> type; \
+ }; \
+/**/
+
+#else
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_STATIC_MEMBER_DATA_OP(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_TYPE> \
+ struct BOOST_PP_CAT(trait,_detail_hsd_op) \
+ { \
+ template<BOOST_TTI_DETAIL_TP_TYPE *> \
+ struct helper; \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U> \
+ static ::boost::type_traits::yes_type chkt(helper<&BOOST_TTI_DETAIL_TP_U::name> *); \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U> \
+ static ::boost::type_traits::no_type chkt(...); \
+ \
+ typedef boost::mpl::bool_<(!boost::function_types::is_function<BOOST_TTI_DETAIL_TP_TYPE>::value) && (sizeof(chkt<BOOST_TTI_DETAIL_TP_T>(BOOST_TTI_DETAIL_NULLPTR))==sizeof(::boost::type_traits::yes_type))> type; \
+ }; \
+/**/
+
+#endif // defined(BOOST_MSVC)
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_STATIC_MEMBER_DATA(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_STATIC_MEMBER_DATA_OP(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_TYPE> \
+ struct BOOST_PP_CAT(trait,_detail_hsd) : \
+ boost::mpl::eval_if \
+ < \
+ boost::is_class<BOOST_TTI_DETAIL_TP_T>, \
+ BOOST_PP_CAT(trait,_detail_hsd_op)<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_TYPE>, \
+ boost::mpl::false_ \
+ > \
+ { \
+ }; \
+/**/
+
+#endif // BOOST_TTI_DETAIL_STATIC_MEM_DATA_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dstatic_mem_fun.hpp b/3rdParty/Boost/src/boost/tti/detail/dstatic_mem_fun.hpp
new file mode 100644
index 0000000..35b46e4
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dstatic_mem_fun.hpp
@@ -0,0 +1,103 @@
+
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_STATIC_MEM_FUN_HPP)
+#define BOOST_TTI_DETAIL_STATIC_MEM_FUN_HPP
+
+#include <boost/function_types/is_function.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/tti/detail/dnullptr.hpp>
+#include <boost/tti/detail/dtfunction.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
+#include <boost/type_traits/is_class.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+
+#if defined(__SUNPRO_CC)
+
+#define BOOST_TTI_DETAIL_TRAIT_IMPL_HAS_STATIC_MEMBER_FUNCTION(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_TYPE> \
+ struct BOOST_PP_CAT(trait,_detail_ihsmf) \
+ { \
+ template<BOOST_TTI_DETAIL_TP_TYPE *> \
+ struct helper {}; \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U> \
+ static ::boost::type_traits::yes_type chkt(helper<&BOOST_TTI_DETAIL_TP_U::name> *); \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U> \
+ static ::boost::type_traits::no_type chkt(...); \
+ \
+ typedef boost::mpl::bool_<sizeof(chkt<BOOST_TTI_DETAIL_TP_T>(BOOST_TTI_DETAIL_NULLPTR))==sizeof(::boost::type_traits::yes_type)> type; \
+ }; \
+/**/
+
+#else
+
+#define BOOST_TTI_DETAIL_TRAIT_IMPL_HAS_STATIC_MEMBER_FUNCTION(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_TYPE> \
+ struct BOOST_PP_CAT(trait,_detail_ihsmf) \
+ { \
+ template<BOOST_TTI_DETAIL_TP_TYPE *> \
+ struct helper; \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U> \
+ static ::boost::type_traits::yes_type chkt(helper<&BOOST_TTI_DETAIL_TP_U::name> *); \
+ \
+ template<class BOOST_TTI_DETAIL_TP_U> \
+ static ::boost::type_traits::no_type chkt(...); \
+ \
+ typedef boost::mpl::bool_<sizeof(chkt<BOOST_TTI_DETAIL_TP_T>(BOOST_TTI_DETAIL_NULLPTR))==sizeof(::boost::type_traits::yes_type)> type; \
+ }; \
+/**/
+
+#endif
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_STATIC_MEMBER_FUNCTION_OP(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_IMPL_HAS_STATIC_MEMBER_FUNCTION(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_R,class BOOST_TTI_DETAIL_TP_FS,class BOOST_TTI_DETAIL_TP_TAG> \
+ struct BOOST_PP_CAT(trait,_detail_hsmf_op) : \
+ BOOST_PP_CAT(trait,_detail_ihsmf) \
+ < \
+ BOOST_TTI_DETAIL_TP_T, \
+ typename \
+ boost::mpl::eval_if \
+ < \
+ boost::mpl::and_ \
+ < \
+ boost::function_types::is_function<BOOST_TTI_DETAIL_TP_R>, \
+ boost::is_same<BOOST_TTI_DETAIL_TP_FS,boost::mpl::vector<> >, \
+ boost::is_same<BOOST_TTI_DETAIL_TP_TAG,boost::function_types::null_tag> \
+ >, \
+ boost::mpl::identity<BOOST_TTI_DETAIL_TP_R>, \
+ BOOST_TTI_NAMESPACE::detail::tfunction_seq<BOOST_TTI_DETAIL_TP_R,BOOST_TTI_DETAIL_TP_FS,BOOST_TTI_DETAIL_TP_TAG> \
+ >::type \
+ > \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_STATIC_MEMBER_FUNCTION(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_STATIC_MEMBER_FUNCTION_OP(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_R,class BOOST_TTI_DETAIL_TP_FS,class BOOST_TTI_DETAIL_TP_TAG> \
+ struct BOOST_PP_CAT(trait,_detail_hsmf) : \
+ boost::mpl::eval_if \
+ < \
+ boost::is_class<BOOST_TTI_DETAIL_TP_T>, \
+ BOOST_PP_CAT(trait,_detail_hsmf_op)<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_R,BOOST_TTI_DETAIL_TP_FS,BOOST_TTI_DETAIL_TP_TAG>, \
+ boost::mpl::false_ \
+ > \
+ { \
+ }; \
+/**/
+
+#endif // BOOST_TTI_DETAIL_STATIC_MEM_FUN_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dtemplate.hpp b/3rdParty/Boost/src/boost/tti/detail/dtemplate.hpp
new file mode 100644
index 0000000..484cc59
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dtemplate.hpp
@@ -0,0 +1,67 @@
+
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_TEMPLATE_HPP)
+#define BOOST_TTI_DETAIL_TEMPLATE_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/has_xxx.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/debug/assert.hpp>
+#include <boost/preprocessor/facilities/is_empty.hpp>
+#include <boost/type_traits/is_class.hpp>
+
+#define BOOST_TTI_DETAIL_IS_HELPER_BOOST_PP_NIL
+
+#define BOOST_TTI_DETAIL_IS_NIL(param) \
+ BOOST_PP_IS_EMPTY \
+ ( \
+ BOOST_PP_CAT(BOOST_TTI_DETAIL_IS_HELPER_,param) \
+ ) \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_ASSERT_NOT_NIL(trait,name,params) \
+ BOOST_PP_ASSERT_MSG(0, "The parameter must be BOOST_PP_NIL") \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_CHECK_IS_NIL(trait,name,params) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_TTI_DETAIL_IS_NIL(params), \
+ BOOST_TTI_DETAIL_TRAIT_HAS_TEMPLATE, \
+ BOOST_TTI_DETAIL_TRAIT_ASSERT_NOT_NIL \
+ ) \
+ (trait,name,params) \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_TEMPLATE_THT(trait,name) \
+ BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(BOOST_PP_CAT(trait,_detail_mpl), name, false) \
+ template<class BOOST_TTI_DETAIL_TP_T> \
+ struct BOOST_PP_CAT(trait,_tht) : \
+ BOOST_PP_CAT(trait,_detail_mpl)<BOOST_TTI_DETAIL_TP_T> \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_TEMPLATE(trait,name,params) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_TEMPLATE_THT(trait,name) \
+ template<class BOOST_TTI_DETAIL_TP_T> \
+ struct trait \
+ { \
+ typedef typename \
+ boost::mpl::eval_if \
+ < \
+ boost::is_class<BOOST_TTI_DETAIL_TP_T>, \
+ BOOST_PP_CAT(trait,_tht)<BOOST_TTI_DETAIL_TP_T>, \
+ boost::mpl::false_ \
+ >::type type; \
+ BOOST_STATIC_CONSTANT(bool,value=type::value); \
+ }; \
+/**/
+
+#endif // !BOOST_TTI_DETAIL_TEMPLATE_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dtemplate_params.hpp b/3rdParty/Boost/src/boost/tti/detail/dtemplate_params.hpp
new file mode 100644
index 0000000..cfc1612
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dtemplate_params.hpp
@@ -0,0 +1,239 @@
+
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_TEMPLATE_PARAMS_HPP)
+#define BOOST_TTI_DETAIL_TEMPLATE_PARAMS_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/has_xxx.hpp>
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/arithmetic/sub.hpp>
+#include <boost/preprocessor/array/elem.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/array/enum.hpp>
+#include <boost/preprocessor/array/size.hpp>
+#include <boost/type_traits/is_class.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
+
+#define BOOST_TTI_DETAIL_TEMPLATE_PARAMETERS(z,n,args) \
+BOOST_PP_ARRAY_ELEM(BOOST_PP_ADD(4,n),args) \
+/**/
+
+#define BOOST_TTI_DETAIL_HAS_MEMBER_IMPLEMENTATION(args,introspect_macro) \
+ template \
+ < \
+ typename BOOST_TTI_DETAIL_TP_T, \
+ typename BOOST_TTI_DETAIL_TP_FALLBACK_ \
+ = boost::mpl::bool_< BOOST_PP_ARRAY_ELEM(3, args) > \
+ > \
+ struct BOOST_PP_ARRAY_ELEM(0, args) \
+ { \
+ private: \
+ introspect_macro(args) \
+ public: \
+ static const bool value \
+ = BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)< BOOST_TTI_DETAIL_TP_T >::value; \
+ typedef typename BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) \
+ < \
+ BOOST_TTI_DETAIL_TP_T \
+ >::type type; \
+ }; \
+/**/
+
+#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
+
+#define BOOST_TTI_DETAIL_HAS_MEMBER_MULTI_SUBSTITUTE(z,n,args) \
+ template \
+ < \
+ template \
+ < \
+ BOOST_PP_ENUM_ ## z \
+ ( \
+ BOOST_PP_SUB \
+ ( \
+ BOOST_PP_ARRAY_SIZE(args), \
+ 4 \
+ ), \
+ BOOST_TTI_DETAIL_TEMPLATE_PARAMETERS, \
+ args \
+ ) \
+ > \
+ class BOOST_TTI_DETAIL_TM_V \
+ > \
+ struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_HAS_MEMBER_SUBSTITUTE(args) \
+ BOOST_PP_REPEAT \
+ ( \
+ BOOST_PP_ARRAY_ELEM(2, args), \
+ BOOST_TTI_DETAIL_HAS_MEMBER_MULTI_SUBSTITUTE, \
+ args \
+ ) \
+/**/
+
+#define BOOST_TTI_DETAIL_HAS_MEMBER_INTROSPECT(args) \
+ template< typename U > \
+ struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) \
+ { \
+ BOOST_TTI_DETAIL_HAS_MEMBER_SUBSTITUTE(args) \
+ BOOST_MPL_HAS_MEMBER_REJECT(args, BOOST_PP_NIL) \
+ BOOST_MPL_HAS_MEMBER_ACCEPT(args, BOOST_PP_NIL) \
+ BOOST_STATIC_CONSTANT \
+ ( \
+ bool, value = BOOST_MPL_HAS_MEMBER_TEST(args) \
+ ); \
+ typedef boost::mpl::bool_< value > type; \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_HAS_MEMBER_WITH_FUNCTION_SFINAE(args) \
+ BOOST_TTI_DETAIL_HAS_MEMBER_IMPLEMENTATION \
+ ( \
+ args, \
+ BOOST_TTI_DETAIL_HAS_MEMBER_INTROSPECT \
+ ) \
+/**/
+
+#else // !!BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
+
+#define BOOST_TTI_DETAIL_HAS_MEMBER_MULTI_SUBSTITUTE_WITH_TEMPLATE_SFINAE(z,n,args) \
+ template \
+ < \
+ template \
+ < \
+ BOOST_PP_ENUM_ ## z \
+ ( \
+ BOOST_PP_SUB \
+ ( \
+ BOOST_PP_ARRAY_SIZE(args), \
+ 4 \
+ ), \
+ BOOST_TTI_DETAIL_TEMPLATE_PARAMETERS, \
+ args \
+ ) \
+ > \
+ class BOOST_TTI_DETAIL_TM_U \
+ > \
+ struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE \
+ ( \
+ args, \
+ n \
+ ) \
+ { \
+ typedef \
+ BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME(args) \
+ type; \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_HAS_MEMBER_SUBSTITUTE_WITH_TEMPLATE_SFINAE(args) \
+ typedef void \
+ BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME(args); \
+ BOOST_PP_REPEAT \
+ ( \
+ BOOST_PP_ARRAY_ELEM(2, args), \
+ BOOST_TTI_DETAIL_HAS_MEMBER_MULTI_SUBSTITUTE_WITH_TEMPLATE_SFINAE, \
+ args \
+ ) \
+/**/
+
+#define BOOST_TTI_DETAIL_HAS_MEMBER_INTROSPECT_WITH_TEMPLATE_SFINAE(args) \
+ BOOST_MPL_HAS_MEMBER_REJECT_WITH_TEMPLATE_SFINAE(args,BOOST_PP_NIL) \
+ BOOST_MPL_HAS_MEMBER_ACCEPT_WITH_TEMPLATE_SFINAE(args,BOOST_PP_NIL) \
+ template< typename BOOST_TTI_DETAIL_TP_U > \
+ struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) \
+ : BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)< BOOST_TTI_DETAIL_TP_U > { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_HAS_MEMBER_WITH_TEMPLATE_SFINAE(args) \
+ BOOST_TTI_DETAIL_HAS_MEMBER_SUBSTITUTE_WITH_TEMPLATE_SFINAE \
+ ( \
+ args \
+ ) \
+ BOOST_TTI_DETAIL_HAS_MEMBER_IMPLEMENTATION \
+ ( \
+ args, \
+ BOOST_TTI_DETAIL_HAS_MEMBER_INTROSPECT_WITH_TEMPLATE_SFINAE \
+ ) \
+/**/
+
+#endif // !BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
+
+#else // defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
+
+#define BOOST_TTI_DETAIL_SAME(trait,name) \
+ BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF \
+ ( \
+ trait, \
+ name, \
+ false \
+ ) \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_CALL_HAS_TEMPLATE_CHECK_PARAMS(trait,name,tp) \
+ BOOST_TTI_DETAIL_SAME(trait,name) \
+/**/
+
+#endif // !BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_TEMPLATE_CHECK_PARAMS_OP(trait,name,tpArray) \
+ BOOST_TTI_DETAIL_TRAIT_CALL_HAS_TEMPLATE_CHECK_PARAMS(BOOST_PP_CAT(trait,_detail),name,tpArray) \
+ template<class BOOST_TTI_DETAIL_TP_T> \
+ struct BOOST_PP_CAT(trait,_detail_cp_op) : \
+ BOOST_PP_CAT(trait,_detail)<BOOST_TTI_DETAIL_TP_T> \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(trait,name,tpArray) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_TEMPLATE_CHECK_PARAMS_OP(trait,name,tpArray) \
+ template<class BOOST_TTI_DETAIL_TP_T> \
+ struct trait \
+ { \
+ typedef typename \
+ boost::mpl::eval_if \
+ < \
+ boost::is_class<BOOST_TTI_DETAIL_TP_T>, \
+ BOOST_PP_CAT(trait,_detail_cp_op)<BOOST_TTI_DETAIL_TP_T>, \
+ boost::mpl::false_ \
+ >::type type; \
+ BOOST_STATIC_CONSTANT(bool,value=type::value); \
+ }; \
+/**/
+
+#if !defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
+#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
+
+#define BOOST_TTI_DETAIL_TRAIT_CALL_HAS_TEMPLATE_CHECK_PARAMS(trait,name,tpArray) \
+ BOOST_TTI_DETAIL_HAS_MEMBER_WITH_FUNCTION_SFINAE \
+ ( \
+ ( BOOST_PP_ADD(BOOST_PP_ARRAY_SIZE(tpArray),4), ( trait, name, 1, false, BOOST_PP_ARRAY_ENUM(tpArray) ) ) \
+ ) \
+/**/
+
+#else // BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
+
+#define BOOST_TTI_DETAIL_TRAIT_CALL_HAS_TEMPLATE_CHECK_PARAMS(trait,name,tpArray) \
+ BOOST_TTI_DETAIL_HAS_MEMBER_WITH_TEMPLATE_SFINAE \
+ ( \
+ ( BOOST_PP_ADD(BOOST_PP_ARRAY_SIZE(tpArray),4), ( trait, name, 1, false, BOOST_PP_ARRAY_ENUM(tpArray) ) ) \
+ ) \
+/**/
+
+#endif // !BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
+#endif // !defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
+
+#endif // BOOST_TTI_DETAIL_TEMPLATE_PARAMS_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dtfunction.hpp b/3rdParty/Boost/src/boost/tti/detail/dtfunction.hpp
new file mode 100644
index 0000000..f539958
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dtfunction.hpp
@@ -0,0 +1,35 @@
+
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_TFUNCTION_HPP)
+#define BOOST_TTI_DETAIL_TFUNCTION_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/push_front.hpp>
+#include <boost/function_types/function_type.hpp>
+
+namespace boost
+ {
+ namespace tti
+ {
+ namespace detail
+ {
+ template
+ <
+ class BOOST_TTI_DETAIL_TP_R,
+ class BOOST_TTI_DETAIL_TP_FS,
+ class BOOST_TTI_DETAIL_TP_TAG
+ >
+ struct tfunction_seq
+ {
+ typedef typename boost::mpl::push_front<BOOST_TTI_DETAIL_TP_FS,BOOST_TTI_DETAIL_TP_R>::type ftseq;
+ typedef typename boost::function_types::function_type<ftseq,BOOST_TTI_DETAIL_TP_TAG>::type type;
+ };
+ }
+ }
+ }
+
+#endif // BOOST_TTI_DETAIL_TFUNCTION_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dtype.hpp b/3rdParty/Boost/src/boost/tti/detail/dtype.hpp
new file mode 100644
index 0000000..45964cf
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dtype.hpp
@@ -0,0 +1,80 @@
+
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_TYPE_HPP)
+#define BOOST_TTI_DETAIL_TYPE_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/has_xxx.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/tti/detail/ddeftype.hpp>
+#include <boost/tti/detail/dlambda.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
+#include <boost/type_traits/is_class.hpp>
+
+#define BOOST_TTI_DETAIL_TRAIT_INVOKE_HAS_TYPE(trait,name) \
+template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_MFC> \
+struct BOOST_PP_CAT(trait,_detail_type_invoke) : \
+ boost::mpl::apply<BOOST_TTI_DETAIL_TP_MFC,typename BOOST_TTI_DETAIL_TP_T::name> \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_TYPE_OP_CHOOSE(trait,name) \
+BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(BOOST_PP_CAT(trait,_detail_type_mpl), name, false) \
+BOOST_TTI_DETAIL_TRAIT_INVOKE_HAS_TYPE(trait,name) \
+template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_U,class BOOST_TTI_DETAIL_TP_B> \
+struct BOOST_PP_CAT(trait,_detail_type_op_choose) \
+ { \
+ BOOST_MPL_ASSERT((BOOST_TTI_NAMESPACE::detail::is_lambda_expression<BOOST_TTI_DETAIL_TP_U>)); \
+ typedef typename BOOST_PP_CAT(trait,_detail_type_invoke)<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_U>::type type; \
+ }; \
+\
+template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_U> \
+struct BOOST_PP_CAT(trait,_detail_type_op_choose)<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_U,boost::mpl::false_::type> : \
+ boost::mpl::false_ \
+ { \
+ }; \
+\
+template<class BOOST_TTI_DETAIL_TP_T> \
+struct BOOST_PP_CAT(trait,_detail_type_op_choose)<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_NAMESPACE::detail::deftype,boost::mpl::true_::type> : \
+ boost::mpl::true_ \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_TYPE_OP(trait,name) \
+BOOST_TTI_DETAIL_TRAIT_HAS_TYPE_OP_CHOOSE(trait,name) \
+template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_U> \
+struct BOOST_PP_CAT(trait,_detail_type_op) : \
+ BOOST_PP_CAT(trait,_detail_type_op_choose) \
+ < \
+ BOOST_TTI_DETAIL_TP_T, \
+ BOOST_TTI_DETAIL_TP_U, \
+ typename BOOST_PP_CAT(trait,_detail_type_mpl)<BOOST_TTI_DETAIL_TP_T>::type \
+ > \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_TRAIT_HAS_TYPE(trait,name) \
+BOOST_TTI_DETAIL_TRAIT_HAS_TYPE_OP(trait,name) \
+template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_U> \
+struct BOOST_PP_CAT(trait,_detail_type) : \
+ boost::mpl::eval_if \
+ < \
+ boost::is_class<BOOST_TTI_DETAIL_TP_T>, \
+ BOOST_PP_CAT(trait,_detail_type_op)<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_U>, \
+ boost::mpl::false_ \
+ > \
+ { \
+ }; \
+/**/
+
+#endif // BOOST_TTI_DETAIL_TYPE_HPP
diff --git a/3rdParty/Boost/src/boost/tti/detail/dvm_template_params.hpp b/3rdParty/Boost/src/boost/tti/detail/dvm_template_params.hpp
new file mode 100644
index 0000000..a8bc2af
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/detail/dvm_template_params.hpp
@@ -0,0 +1,164 @@
+
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to 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_TTI_DETAIL_VM_TEMPLATE_PARAMS_HPP)
+#define BOOST_TTI_DETAIL_VM_TEMPLATE_PARAMS_HPP
+
+#include <boost/config.hpp>
+#include <boost/preprocessor/config/config.hpp>
+
+#if BOOST_PP_VARIADICS
+
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/has_xxx.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/variadic/size.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/comparison/equal.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/detail/is_binary.hpp>
+#include <boost/preprocessor/facilities/is_empty.hpp>
+#include <boost/preprocessor/seq/enum.hpp>
+#include <boost/preprocessor/seq/seq.hpp>
+#include <boost/preprocessor/variadic/elem.hpp>
+#include <boost/preprocessor/variadic/to_seq.hpp>
+#include <boost/tti/detail/dtemplate.hpp>
+#include <boost/tti/detail/dtemplate_params.hpp>
+#include <boost/type_traits/is_class.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
+#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
+
+#define BOOST_TTI_DETAIL_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(trait,name,...) \
+ BOOST_TTI_DETAIL_HAS_MEMBER_WITH_FUNCTION_SFINAE \
+ ( \
+ ( BOOST_PP_ADD(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__),4), ( trait, name, 1, false, __VA_ARGS__ ) ) \
+ ) \
+/**/
+
+#else // !!BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
+
+#define BOOST_TTI_DETAIL_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(trait,name,...) \
+ BOOST_TTI_DETAIL_HAS_MEMBER_WITH_TEMPLATE_SFINAE \
+ ( \
+ ( BOOST_PP_ADD(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__),4), ( trait, name, 1, false, __VA_ARGS__ ) ) \
+ ) \
+/**/
+
+#endif // !BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
+#else // defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
+
+#define BOOST_TTI_DETAIL_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(trait,name,...) \
+ BOOST_TTI_DETAIL_SAME(trait,name) \
+/**/
+
+#endif // !defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
+
+#define BOOST_TTI_DETAIL_VM_CHECK_MORE_THAN_TWO(trait,...) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_EQUAL \
+ ( \
+ BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), \
+ 2 \
+ ), \
+ BOOST_TTI_DETAIL_VM_TRAIT_CHOOSE_FROM_TWO, \
+ BOOST_TTI_DETAIL_VM_TRAIT_EXPAND_ARGUMENTS \
+ ) \
+ (trait,__VA_ARGS__) \
+/**/
+
+#define BOOST_TTI_DETAIL_VM_TRAIT_CHOOSE_FROM_TWO(trait,...) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_IS_BINARY \
+ ( \
+ BOOST_PP_VARIADIC_ELEM(1,__VA_ARGS__) \
+ ), \
+ BOOST_TTI_DETAIL_TRAIT_HAS_TEMPLATE_CHECK_PARAMS, \
+ BOOST_TTI_DETAIL_VM_TRAIT_CHOOSE_IF_NIL \
+ ) \
+ ( \
+ trait, \
+ BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__), \
+ BOOST_PP_VARIADIC_ELEM(1,__VA_ARGS__) \
+ ) \
+/**/
+
+#define BOOST_TTI_DETAIL_VM_IS_NIL(param) \
+ BOOST_PP_IS_EMPTY \
+ ( \
+ BOOST_PP_CAT(BOOST_TTI_DETAIL_IS_HELPER_,param) \
+ ) \
+/**/
+
+#define BOOST_TTI_DETAIL_VM_TRAIT_CHOOSE_IF_NIL(trait,name,param) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_TTI_DETAIL_VM_IS_NIL(param), \
+ BOOST_TTI_DETAIL_TRAIT_HAS_TEMPLATE, \
+ BOOST_TTI_DETAIL_VM_CALL_TRAIT_HAS_TEMPLATE_CHECK_PARAMS \
+ ) \
+ (trait,name,param) \
+/**/
+
+#define BOOST_TTI_DETAIL_VM_VARIADIC_TAIL(...) \
+ BOOST_PP_SEQ_ENUM \
+ ( \
+ BOOST_PP_SEQ_TAIL \
+ ( \
+ BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__) \
+ ) \
+ ) \
+/**/
+
+#define BOOST_TTI_DETAIL_VM_TRAIT_EXPAND_ARGUMENTS(trait,...) \
+ BOOST_TTI_DETAIL_VM_CALL_TRAIT_HAS_TEMPLATE_CHECK_PARAMS \
+ ( \
+ trait, \
+ BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__), \
+ BOOST_TTI_DETAIL_VM_VARIADIC_TAIL(__VA_ARGS__) \
+ ) \
+/**/
+
+#define BOOST_TTI_DETAIL_VM_TRAIT_HAS_TEMPLATE(trait,...) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_TEMPLATE \
+ ( \
+ trait, \
+ BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__), \
+ BOOST_PP_NIL \
+ ) \
+/**/
+
+#define BOOST_TTI_DETAIL_VM_CT_INVOKE(trait,name,...) \
+ BOOST_TTI_DETAIL_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(BOOST_PP_CAT(trait,_detail),name,__VA_ARGS__) \
+ template<class BOOST_TTI_DETAIL_TP_T> \
+ struct BOOST_PP_CAT(trait,_detail_vm_ct_invoke) : \
+ BOOST_PP_CAT(trait,_detail)<BOOST_TTI_DETAIL_TP_T> \
+ { \
+ }; \
+/**/
+
+#define BOOST_TTI_DETAIL_VM_CALL_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(trait,name,...) \
+ BOOST_TTI_DETAIL_VM_CT_INVOKE(trait,name,__VA_ARGS__) \
+ template<class BOOST_TTI_DETAIL_TP_T> \
+ struct trait \
+ { \
+ typedef typename \
+ boost::mpl::eval_if \
+ < \
+ boost::is_class<BOOST_TTI_DETAIL_TP_T>, \
+ BOOST_PP_CAT(trait,_detail_vm_ct_invoke)<BOOST_TTI_DETAIL_TP_T>, \
+ boost::mpl::false_ \
+ >::type type; \
+ BOOST_STATIC_CONSTANT(bool,value=type::value); \
+ }; \
+/**/
+
+#endif // BOOST_PP_VARIADICS
+
+#endif // BOOST_TTI_DETAIL_VM_TEMPLATE_PARAMS_HPP