|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r68909 - sandbox/tti/boost/tti/detail
From: eldiener_at_[hidden]
Date: 2011-02-15 08:32:56
Author: eldiener
Date: 2011-02-15 08:32:54 EST (Tue, 15 Feb 2011)
New Revision: 68909
URL: http://svn.boost.org/trac/boost/changeset/68909
Log:
Removed and not needed anymore.
Removed:
sandbox/tti/boost/tti/detail/dtti.hpp
Deleted: sandbox/tti/boost/tti/detail/dtti.hpp
==============================================================================
--- sandbox/tti/boost/tti/detail/dtti.hpp 2011-02-15 08:32:54 EST (Tue, 15 Feb 2011)
+++ (empty file)
@@ -1,1006 +0,0 @@
-#if !defined(TT_INTROSPECTION_DETAIL_HPP)
-#define TT_INTROSPECTION_DETAIL_HPP
-
-#include <boost/config.hpp>
-#include <boost/mpl/at.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/has_xxx.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/int.hpp>
-#include <boost/mpl/push_front.hpp>
-#include <boost/mpl/quote.hpp>
-#include <boost/preprocessor/arithmetic/add.hpp>
-#include <boost/preprocessor/arithmetic/sub.hpp>
-#include <boost/preprocessor/array/elem.hpp>
-#include <boost/preprocessor/array/size.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/seq/enum.hpp>
-#include <boost/preprocessor/seq/size.hpp>
-#include <boost/function_types/function_type.hpp>
-#include <boost/function_types/is_member_object_pointer.hpp>
-#include <boost/function_types/member_function_pointer.hpp>
-#include <boost/function_types/parameter_types.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/type_traits/remove_const.hpp>
-#include <boost/type_traits/detail/yes_no_type.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
-
-#define TTI_DETAIL_TEMPLATE_PARAMETERS(z,n,args) \
-BOOST_PP_ARRAY_ELEM(BOOST_PP_ADD(4,n),args) \
-/**/
-
-#define TTI_DETAIL_HAS_MEMBER_IMPLEMENTATION(args,introspect_macro) \
- template \
- < \
- typename T, \
- typename fallback_ \
- = boost::mpl::bool_< BOOST_PP_ARRAY_ELEM(3, args) > \
- > \
- class BOOST_PP_ARRAY_ELEM(0, args) \
- { \
- introspect_macro(args) \
- public: \
- static const bool value \
- = BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)< T >::value; \
- typedef typename BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) \
- < \
- T \
- >::type type; \
- }; \
-/**/
-
-#define TTI_DETAIL_MTFC_HAS_MEMBER_IMPLEMENTATION(args,introspect_macro) \
- struct BOOST_PP_ARRAY_ELEM(0, args) \
- { \
- template \
- < \
- typename T, \
- typename fallback_ \
- = boost::mpl::bool_< BOOST_PP_ARRAY_ELEM(3, args) > \
- > \
- class apply \
- { \
- introspect_macro(args) \
- public: \
- static const bool value \
- = BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)< T >::value; \
- typedef typename BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) \
- < \
- T \
- >::type type; \
- }; \
- }; \
-/**/
-
-#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-
-#define TTI_DETAIL_HAS_MEMBER_MULTI_SUBSTITUTE(z,n,args) \
- template \
- < \
- template \
- < \
- BOOST_PP_ENUM_ ## z \
- ( \
- BOOST_PP_SUB \
- ( \
- BOOST_PP_ARRAY_SIZE(args), \
- 4 \
- ), \
- TTI_DETAIL_TEMPLATE_PARAMETERS, \
- args \
- ) \
- > \
- class V \
- > \
- struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) \
- { \
- }; \
-/**/
-
-#define TTI_DETAIL_HAS_MEMBER_SUBSTITUTE(args) \
- BOOST_PP_REPEAT \
- ( \
- BOOST_PP_ARRAY_ELEM(2, args), \
- TTI_DETAIL_HAS_MEMBER_MULTI_SUBSTITUTE, \
- args \
- ) \
-/**/
-
-#define TTI_DETAIL_HAS_MEMBER_INTROSPECT(args) \
- template< typename U > \
- struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) \
- { \
- 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 TTI_DETAIL_HAS_MEMBER_WITH_FUNCTION_SFINAE(args) \
- TTI_DETAIL_HAS_MEMBER_IMPLEMENTATION \
- ( \
- args, \
- TTI_DETAIL_HAS_MEMBER_INTROSPECT \
- ) \
-/**/
-
-#else // !!BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-
-#define 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 \
- ), \
- TTI_DETAIL_TEMPLATE_PARAMETERS, \
- args \
- ) \
- > \
- class 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 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), \
- TTI_DETAIL_HAS_MEMBER_MULTI_SUBSTITUTE_WITH_TEMPLATE_SFINAE, \
- args \
- ) \
-/**/
-
-#define 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 U > \
- struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) \
- : BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)< U > { \
- }; \
-/**/
-
-#define TTI_DETAIL_HAS_MEMBER_WITH_TEMPLATE_SFINAE(args) \
- TTI_DETAIL_HAS_MEMBER_SUBSTITUTE_WITH_TEMPLATE_SFINAE \
- ( \
- args \
- ) \
- TTI_DETAIL_HAS_MEMBER_IMPLEMENTATION \
- ( \
- args, \
- TTI_DETAIL_HAS_MEMBER_INTROSPECT_WITH_TEMPLATE_SFINAE \
- ) \
-/**/
-
-#define TTI_DETAIL_MTFC_HAS_MEMBER_WITH_TEMPLATE_SFINAE(args) \
- TTI_DETAIL_HAS_MEMBER_SUBSTITUTE_WITH_TEMPLATE_SFINAE \
- ( \
- args \
- ) \
- TTI_DETAIL_MTFC_HAS_MEMBER_IMPLEMENTATION \
- ( \
- args, \
- TTI_DETAIL_HAS_MEMBER_INTROSPECT_WITH_TEMPLATE_SFINAE \
- ) \
-/**/
-
-#endif // !BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-#else // !!defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
-
-#define TTI_DETAIL_SAME(trait,name) \
- BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF \
- ( \
- trait, \
- name, \
- false \
- ) \
-/**/
-
-#endif // !defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
-
-#define TTI_DETAIL_TRAIT_HAS_TYPE_MEMBER_TYPE(trait,name) \
-namespace mpl \
- { \
- BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, false) \
- } \
-template<class T> \
-struct trait \
- { \
- typedef typename mpl::trait<T>::type type; \
- \
- BOOST_STATIC_CONSTANT(bool,value=type::value); \
- }; \
-/**/
-
-#define TTI_DETAIL_TRAIT_MEMBER_TYPE(trait,name) \
-namespace member_type \
- { \
- template<class T> \
- struct trait \
- { \
- typedef typename T::name type; \
- }; \
- } \
-/**/
-
-#define TTI_DETAIL_TRAIT_HAS_TYPE(trait,name) \
-namespace mpl \
- { \
- BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, false) \
- } \
-template<class T,class U,class B> \
-struct trait \
- { \
- typedef typename \
- boost::mpl::eval_if \
- < \
- boost::is_same<typename T::name,U>, \
- boost::mpl::true_, \
- boost::mpl::false_ \
- >::type \
- type; \
- BOOST_STATIC_CONSTANT(bool,value=type::value); \
- }; \
-\
-template<class T,class U> \
-struct trait<T,U,boost::mpl::false_::type> \
- { \
- typedef boost::mpl::false_::type type; \
- BOOST_STATIC_CONSTANT(bool,value=type::value); \
- }; \
-\
-template<class T> \
-struct trait<T,notype,boost::mpl::true_::type> \
- { \
- typedef boost::mpl::true_::type type; \
- BOOST_STATIC_CONSTANT(bool,value=type::value); \
- }; \
-/**/
-
-#define TTI_DETAIL_PP_REPEAT_CLASS(z,n,data) \
- BOOST_PP_COMMA_IF(n) data \
-/**/
-
-#define TTI_DETAIL_PP_ENUM_SHIFTED_TYPENAME(z,n,data) \
- BOOST_PP_CAT(typename P,n::type) \
-/**/
-
-#if defined(BOOST_NO_NULLPTR)
-
-#define TTI_DETAIL_TRAIT_HAS_MEMBER_FUNCTION(trait,name) \
- template<class T,class C> \
- struct trait \
- { \
- template<T> \
- struct helper; \
- \
- template<class U> \
- static ::boost::type_traits::yes_type check(helper<&U::name> *); \
- \
- template<class U> \
- static ::boost::type_traits::no_type check(...); \
- \
- BOOST_STATIC_CONSTANT(bool,value=sizeof(check<C>(0))==sizeof(::boost::type_traits::yes_type)); \
- \
- typedef boost::mpl::bool_<value> type; \
- }; \
-/**/
-
-#else // !defined(BOOST_NO_NULLPTR)
-
-#define TTI_DETAIL_TRAIT_HAS_MEMBER_FUNCTION(trait,name) \
- template<class T,class C> \
- struct trait \
- { \
- template<T> \
- struct helper; \
- \
- template<class U> \
- static ::boost::type_traits::yes_type check(helper<&U::name> *); \
- \
- template<class U> \
- static ::boost::type_traits::no_type check(...); \
- \
- BOOST_STATIC_CONSTANT(bool,value=sizeof(check<C>(nullptr))==sizeof(::boost::type_traits::yes_type)); \
- \
- typedef boost::mpl::bool_<value> type; \
- }; \
-/**/
-
-#endif // defined(BOOST_NO_NULLPTR)
-
-#if defined(BOOST_MSVC)
-
-#define TTI_DETAIL_TRAIT_HAS_MEMBER_DATA(trait,name) \
- template<class T,class C> \
- struct trait \
- { \
- template<class> \
- struct return_of; \
- \
- template<class R,class C> \
- struct return_of<R C::*> \
- { \
- typedef R type; \
- }; \
- \
- template<bool,typename U> \
- struct menable_if; \
- \
- template<typename U> \
- struct menable_if<true,U> \
- { \
- typedef U type; \
- }; \
- \
- template<typename U,typename V> \
- static ::boost::type_traits::yes_type check2(V U::*); \
- \
- template<typename U,typename V> \
- static ::boost::type_traits::no_type check2(U); \
- \
- template<typename U,typename V> \
- static typename \
- menable_if \
- < \
- sizeof(check2<U,V>(&U::name))==sizeof(::boost::type_traits::yes_type), \
- ::boost::type_traits::yes_type \
- > \
- ::type \
- has_matching_member(int); \
- \
- template<typename U,typename V> \
- static ::boost::type_traits::no_type has_matching_member(...); \
- \
- template<class U,class V> \
- struct ttc_md \
- { \
- typedef boost::mpl::bool_<sizeof(has_matching_member<V,typename return_of<U>::type>(0))==sizeof(::boost::type_traits::yes_type)> type; \
- }; \
- \
- typedef typename ttc_md<T,C>::type type; \
- \
- BOOST_STATIC_CONSTANT(bool,value=type::value); \
- \
- }; \
-/**/
-
-#else // !defined(BOOST_MSVC)
-
-#define TTI_DETAIL_TRAIT_HAS_MEMBER_DATA(trait,name) \
- TTI_DETAIL_TRAIT_HAS_MEMBER_FUNCTION(trait,name) \
-/**/
-
-#endif // defined(BOOST_MSVC)
-
-#if defined(BOOST_NO_NULLPTR)
-
-#define TTI_DETAIL_TRAIT_HAS_STATIC_MEMBER_FUNCTION(trait,name) \
- template<class T,class Type> \
- struct trait \
- { \
- template<Type *> \
- struct helper; \
- \
- template<class U> \
- static ::boost::type_traits::yes_type check(helper<&U::name> *); \
- \
- template<class U> \
- static ::boost::type_traits::no_type check(...); \
- \
- BOOST_STATIC_CONSTANT(bool,value=sizeof(check<T>(0))==sizeof(::boost::type_traits::yes_type)); \
- \
- typedef boost::mpl::bool_<value> type; \
- }; \
-/**/
-
-#else // !defined(BOOST_NO_NULLPTR)
-
-#define TTI_DETAIL_TRAIT_HAS_STATIC_MEMBER_FUNCTION(trait,name) \
- template<class T,class Type> \
- struct trait \
- { \
- template<Type *> \
- struct helper; \
- \
- template<class U> \
- static ::boost::type_traits::yes_type check(helper<&U::name> *); \
- \
- template<class U> \
- static ::boost::type_traits::no_type check(...); \
- \
- BOOST_STATIC_CONSTANT(bool,value=sizeof(check<T>(nullptr))==sizeof(::boost::type_traits::yes_type)); \
- \
- typedef boost::mpl::bool_<value> type; \
- }; \
-/**/
-
-#endif // defined(BOOST_NO_NULLPTR)
-
-#if defined(BOOST_MSVC)
-
-#if defined(BOOST_NO_NULLPTR)
-
-#define TTI_DETAIL_TRAIT_HAS_MEMBER(trait,name) \
- template<class T> \
- struct trait \
- { \
- template<class> \
- struct class_of; \
- \
- template<class R,class C> \
- struct class_of<R C::*> \
- { \
- typedef C type; \
- }; \
- \
- template<class> \
- struct return_of; \
- \
- template<class R,class C> \
- struct return_of<R C::*> \
- { \
- typedef R type; \
- }; \
- \
- template<bool,typename U> \
- struct menable_if; \
- \
- template<typename U> \
- struct menable_if<true,U> \
- { \
- typedef U type; \
- }; \
- \
- template<typename U,typename V> \
- static ::boost::type_traits::yes_type check2(V U::*); \
- \
- template<typename U,typename V> \
- static ::boost::type_traits::no_type check2(U); \
- \
- template<class F> \
- struct class_type \
- { \
- typedef typename \
- boost::remove_const \
- < \
- typename \
- boost::mpl::at \
- < \
- typename \
- boost::function_types::parameter_types \
- < \
- F, \
- boost::mpl::quote1 \
- < \
- boost::mpl::identity \
- > \
- > \
- ::type, \
- boost::mpl::int_<0> \
- >::type \
- >::type \
- type; \
- }; \
- \
- template<T> \
- struct helper; \
- \
- template<typename U,typename V> \
- static typename \
- menable_if \
- < \
- sizeof(check2<U,V>(&U::name))==sizeof(::boost::type_traits::yes_type), \
- ::boost::type_traits::yes_type \
- > \
- ::type \
- has_matching_member(int); \
- \
- template<typename U,typename V> \
- static ::boost::type_traits::no_type has_matching_member(...); \
- \
- template<class U> \
- static ::boost::type_traits::yes_type check(helper<&U::name> *); \
- \
- template<class U> \
- static ::boost::type_traits::no_type check(...); \
- \
- template<class F> \
- struct ttc_md \
- { \
- typedef boost::mpl::bool_<sizeof(has_matching_member<typename class_of<F>::type,typename return_of<F>::type>(0))==sizeof(::boost::type_traits::yes_type)> type; \
- }; \
- \
- template<class F> \
- struct ttc_mf \
- { \
- typedef boost::mpl::bool_<sizeof(check<typename class_type<F>::type>(0))==sizeof(::boost::type_traits::yes_type)> type; \
- }; \
- \
- template<class F> \
- struct type_to_check \
- { \
- typedef typename \
- boost::mpl::eval_if \
- < \
- boost::function_types::is_member_object_pointer<F>, \
- ttc_md<F>, \
- ttc_mf<F> \
- >::type \
- type; \
- }; \
- \
- typedef typename type_to_check<T>::type type; \
- \
- BOOST_STATIC_CONSTANT(bool,value=type::value); \
- \
- }; \
-/**/
-
-#else // !defined(BOOST_NO_NULLPTR)
-
-#define TTI_DETAIL_TRAIT_HAS_MEMBER(trait,name) \
- template<class T> \
- struct trait \
- { \
- template<class> \
- struct class_of; \
- \
- template<class R,class C> \
- struct class_of<R C::*> \
- { \
- typedef C type; \
- }; \
- \
- template<class> \
- struct return_of; \
- \
- template<class R,class C> \
- struct return_of<R C::*> \
- { \
- typedef R type; \
- }; \
- \
- template<bool,typename U> \
- struct menable_if; \
- \
- template<typename U> \
- struct menable_if<true,U> \
- { \
- typedef U type; \
- }; \
- \
- template<typename U,typename V> \
- static ::boost::type_traits::yes_type check2(V U::*); \
- \
- template<typename U,typename V> \
- static ::boost::type_traits::no_type check2(U); \
- \
- template<class F> \
- struct class_type \
- { \
- typedef typename \
- boost::remove_const \
- < \
- typename \
- boost::mpl::at \
- < \
- typename \
- boost::function_types::parameter_types \
- < \
- F, \
- boost::mpl::quote1 \
- < \
- boost::mpl::identity \
- > \
- > \
- ::type, \
- boost::mpl::int_<0> \
- >::type \
- >::type \
- type; \
- }; \
- \
- template<T> \
- struct helper; \
- \
- template<typename U,typename V> \
- static typename \
- menable_if \
- < \
- sizeof(check2<U,V>(&U::name))==sizeof(::boost::type_traits::yes_type), \
- ::boost::type_traits::yes_type \
- > \
- ::type \
- has_matching_member(int); \
- \
- template<typename U,typename V> \
- static ::boost::type_traits::no_type has_matching_member(...); \
- \
- template<class U> \
- static ::boost::type_traits::yes_type check(helper<&U::name> *); \
- \
- template<class U> \
- static ::boost::type_traits::no_type check(...); \
- \
- template<class F> \
- struct ttc_md \
- { \
- typedef boost::mpl::bool_<sizeof(has_matching_member<typename class_of<F>::type,typename return_of<F>::type>(0))==sizeof(::boost::type_traits::yes_type)> type; \
- }; \
- \
- template<class F> \
- struct ttc_mf \
- { \
- typedef boost::mpl::bool_<sizeof(check<typename class_type<F>::type>(nullptr))==sizeof(::boost::type_traits::yes_type)> type; \
- }; \
- \
- template<class F> \
- struct type_to_check \
- { \
- typedef typename \
- boost::mpl::eval_if \
- < \
- boost::function_types::is_member_object_pointer<F>, \
- ttc_md<F>, \
- ttc_mf<F> \
- >::type \
- type; \
- }; \
- \
- typedef typename type_to_check<T>::type type; \
- \
- BOOST_STATIC_CONSTANT(bool,value=type::value); \
- \
- }; \
-/**/
-
-#endif // defined(BOOST_NO_NULLPTR)
-
-#else // !defined(BOOST_MSVC)
-
-#if defined(BOOST_NO_NULLPTR)
-
-#define TTI_DETAIL_TRAIT_HAS_MEMBER(trait,name) \
- template<class T> \
- struct trait \
- { \
- template<class> \
- struct class_of; \
- \
- template<class R,class C> \
- struct class_of<R C::*> \
- { \
- typedef C type; \
- }; \
- \
- template<class F> \
- struct class_type \
- { \
- typedef typename \
- boost::mpl::eval_if \
- < \
- boost::function_types::is_member_object_pointer<F>, \
- class_of<F>, \
- boost::remove_const \
- < \
- typename \
- boost::mpl::at \
- < \
- typename \
- boost::function_types::parameter_types \
- < \
- F, \
- boost::mpl::quote1 \
- < \
- boost::mpl::identity \
- > \
- > \
- ::type, \
- boost::mpl::int_<0> \
- >::type \
- > \
- >::type \
- type; \
- }; \
- \
- template<T> \
- struct helper; \
- \
- template<class U> \
- static ::boost::type_traits::yes_type check(helper<&U::name> *); \
- \
- template<class U> \
- static ::boost::type_traits::no_type check(...); \
- \
- BOOST_STATIC_CONSTANT(bool,value=sizeof(check<typename class_type<T>::type>(0))==sizeof(::boost::type_traits::yes_type)); \
- \
- typedef boost::mpl::bool_<value> type; \
- }; \
-/**/
-
-#else // !defined(BOOST_NO_NULLPTR)
-
-#define TTI_DETAIL_TRAIT_HAS_MEMBER(trait,name) \
- template<class T> \
- struct trait \
- { \
- template<class> \
- struct class_of; \
- \
- template<class R,class C> \
- struct class_of<R C::*> \
- { \
- typedef C type; \
- }; \
- \
- template<class F> \
- struct class_type \
- { \
- typedef typename \
- boost::mpl::eval_if \
- < \
- boost::function_types::is_member_object_pointer<F>, \
- class_of<F>, \
- boost::remove_const \
- < \
- typename \
- boost::mpl::at \
- < \
- typename \
- boost::function_types::parameter_types \
- < \
- F, \
- boost::mpl::quote1 \
- < \
- boost::mpl::identity \
- > \
- > \
- ::type, \
- boost::mpl::int_<0> \
- >::type \
- > \
- >::type \
- type; \
- }; \
- \
- template<T> \
- struct helper; \
- \
- template<class U> \
- static ::boost::type_traits::yes_type check(helper<&U::name> *); \
- \
- template<class U> \
- static ::boost::type_traits::no_type check(...); \
- \
- BOOST_STATIC_CONSTANT(bool,value=sizeof(check<typename class_type<T>::type>(nullptr))==sizeof(::boost::type_traits::yes_type)); \
- \
- typedef boost::mpl::bool_<value> type; \
- }; \
-/**/
-
-#endif // defined(BOOST_NO_NULLPTR)
-
-#endif // defined(BOOST_MSVC)
-
-#if !defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
-#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-
-#define TTI_DETAIL_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(trait,name,tpSeq) \
- TTI_DETAIL_HAS_MEMBER_WITH_FUNCTION_SFINAE \
- ( \
- ( BOOST_PP_ADD(BOOST_PP_SEQ_SIZE(tpSeq),4), ( trait, name, 1, false, BOOST_PP_SEQ_ENUM(tpSeq) ) ) \
- ) \
-/**/
-
-#define TTI_DETAIL_MTFC_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(trait,name,tpSeq) \
- struct trait \
- { \
- TTI_DETAIL_HAS_MEMBER_WITH_FUNCTION_SFINAE \
- ( \
- ( BOOST_PP_ADD(BOOST_PP_SEQ_SIZE(tpSeq),4), ( apply, name, 1, false, BOOST_PP_SEQ_ENUM(tpSeq) ) ) \
- ) \
- }; \
-/**/
-
-#else // !!BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-
-#define TTI_DETAIL_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(trait,name,tpSeq) \
- TTI_DETAIL_HAS_MEMBER_WITH_TEMPLATE_SFINAE \
- ( \
- ( BOOST_PP_ADD(BOOST_PP_SEQ_SIZE(tpSeq),4), ( trait, name, 1, false, BOOST_PP_SEQ_ENUM(tpSeq) ) ) \
- ) \
-/**/
-
-#define TTI_DETAIL_MTFC_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(trait,name,tpSeq) \
- TTI_DETAIL_MTFC_HAS_MEMBER_WITH_TEMPLATE_SFINAE \
- ( \
- ( BOOST_PP_ADD(BOOST_PP_SEQ_SIZE(tpSeq),4), ( trait, name, 1, false, BOOST_PP_SEQ_ENUM(tpSeq) ) ) \
- ) \
-/**/
-
-#endif // !BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-#else // !!defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
-
-#define TTI_DETAIL_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(trait,name,tpSeq) \
- TTI_DETAIL_SAME(trait,name) \
-/**/
-
-#define TTI_DETAIL_MTFC_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(trait,name,tpSeq) \
- struct trait \
- { \
- TTI_DETAIL_SAME(apply,name) \
- }; \
-/**/
-
-#endif // !defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
-
-#if defined(BOOST_NO_NULLPTR)
-
-#define TTI_DETAIL_TRAIT_HAS_STATIC_MEMBER(trait,name) \
- template<class T,class Type> \
- struct trait \
- { \
- template<Type *> \
- struct helper; \
- \
- template<class U> \
- static ::boost::type_traits::yes_type check(helper<&U::name> *); \
- \
- template<class U> \
- static ::boost::type_traits::no_type check(...); \
- \
- BOOST_STATIC_CONSTANT(bool,value=sizeof(check<T>(0))==sizeof(::boost::type_traits::yes_type)); \
- \
- typedef boost::mpl::bool_<value> type; \
- }; \
-/**/
-
-#define TTI_DETAIL_MTFC_TRAIT_HAS_STATIC_MEMBER(trait,name) \
- struct trait \
- { \
- template<class T,class Type> \
- struct apply \
- { \
- template<Type *> \
- struct helper; \
- \
- template<class U> \
- static ::boost::type_traits::yes_type check(helper<&U::name> *); \
- \
- template<class U> \
- static ::boost::type_traits::no_type check(...); \
- \
- BOOST_STATIC_CONSTANT(bool,value=sizeof(check<T>(0))==sizeof(::boost::type_traits::yes_type)); \
- \
- typedef boost::mpl::bool_<value> type; \
- }; \
- }; \
-/**/
-
-#else // !defined(BOOST_NO_NULLPTR)
-
-#define TTI_DETAIL_TRAIT_HAS_STATIC_MEMBER(trait,name) \
- template<class T,class Type> \
- struct trait \
- { \
- template<Type *> \
- struct helper; \
- \
- template<class U> \
- static ::boost::type_traits::yes_type check(helper<&U::name> *); \
- \
- template<class U> \
- static ::boost::type_traits::no_type check(...); \
- \
- BOOST_STATIC_CONSTANT(bool,value=sizeof(check<T>(nullptr))==sizeof(::boost::type_traits::yes_type)); \
- \
- typedef boost::mpl::bool_<value> type; \
- }; \
-/**/
-
-#define TTI_DETAIL_MTFC_TRAIT_HAS_STATIC_MEMBER(trait,name) \
- struct trait \
- { \
- template<class T,class Type> \
- struct apply \
- { \
- template<Type *> \
- struct helper; \
- \
- template<class U> \
- static ::boost::type_traits::yes_type check(helper<&U::name> *); \
- \
- template<class U> \
- static ::boost::type_traits::no_type check(...); \
- \
- BOOST_STATIC_CONSTANT(bool,value=sizeof(check<T>(nullptr))==sizeof(::boost::type_traits::yes_type)); \
- \
- typedef boost::mpl::bool_<value> type; \
- }; \
- }; \
-/**/
-
-#endif // defined(BOOST_NO_NULLPTR)
-
-namespace boost
- {
- namespace tti
- {
- namespace detail
- {
- struct notype
- {
- };
-
- template <class T>
- struct tself : T
- {
- };
-
- template
- <
- class T,
- class R,
- class FS,
- class TAG
- >
- struct ptmf_seq
- {
- typedef typename boost::mpl::push_front<FS,T>::type tfs1;
- typedef typename boost::mpl::push_front<tfs1,R>::type tfs2;
- typedef typename boost::function_types::member_function_pointer<tfs2,TAG>::type type;
- };
-
- template
- <
- class T,
- class R
- >
- struct ptmd
- {
- typedef R T::* type;
- };
-
- template
- <
- class R,
- class FS,
- class TAG
- >
- struct tfunction_seq
- {
- typedef typename boost::mpl::push_front<FS,R>::type ftseq;
- typedef typename boost::function_types::function_type<ftseq,TAG>::type type;
- };
- }
- }
- }
-
-#endif // TT_INTROSPECTION_DETAIL_HPP
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk