diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-02-11 12:14:00 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-02-11 12:14:00 (GMT) |
commit | 0efa7c32aaf21a29b42b5926cc116007056843be (patch) | |
tree | 882f663a5dd0e65694bf6077b71086dd77fd7ff8 /3rdParty/Boost/boost/detail/indirect_traits.hpp | |
parent | 1d20eabbc32274b491b4c2bedf73d19933d97bfd (diff) | |
download | swift-0efa7c32aaf21a29b42b5926cc116007056843be.zip swift-0efa7c32aaf21a29b42b5926cc116007056843be.tar.bz2 |
Moved some modules into separate git modules.
Diffstat (limited to '3rdParty/Boost/boost/detail/indirect_traits.hpp')
m--------- | 3rdParty/Boost | 0 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/detail/indirect_traits.hpp | 487 |
2 files changed, 0 insertions, 487 deletions
diff --git a/3rdParty/Boost b/3rdParty/Boost new file mode 160000 +Subproject 3bbdbc8cf1996f23d9a366da8bac0f97be6ad79 diff --git a/3rdParty/Boost/boost/detail/indirect_traits.hpp b/3rdParty/Boost/boost/detail/indirect_traits.hpp deleted file mode 100644 index f9c0cd6..0000000 --- a/3rdParty/Boost/boost/detail/indirect_traits.hpp +++ /dev/null @@ -1,487 +0,0 @@ -// Copyright David Abrahams 2002. -// 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 INDIRECT_TRAITS_DWA2002131_HPP -# define INDIRECT_TRAITS_DWA2002131_HPP -# include <boost/type_traits/is_function.hpp> -# include <boost/type_traits/is_reference.hpp> -# include <boost/type_traits/is_pointer.hpp> -# include <boost/type_traits/is_class.hpp> -# include <boost/type_traits/is_const.hpp> -# include <boost/type_traits/is_volatile.hpp> -# include <boost/type_traits/is_member_function_pointer.hpp> -# include <boost/type_traits/is_member_pointer.hpp> -# include <boost/type_traits/remove_cv.hpp> -# include <boost/type_traits/remove_reference.hpp> -# include <boost/type_traits/remove_pointer.hpp> - -# include <boost/type_traits/detail/ice_and.hpp> -# include <boost/detail/workaround.hpp> - -# include <boost/mpl/eval_if.hpp> -# include <boost/mpl/if.hpp> -# include <boost/mpl/bool.hpp> -# include <boost/mpl/and.hpp> -# include <boost/mpl/not.hpp> -# include <boost/mpl/aux_/lambda_support.hpp> - -# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -# include <boost/detail/is_function_ref_tester.hpp> -# endif - -namespace boost { namespace detail { - -namespace indirect_traits { - -# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -template <class T> -struct is_reference_to_const : mpl::false_ -{ -}; - -template <class T> -struct is_reference_to_const<T const&> : mpl::true_ -{ -}; - -# if defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140 // vc7.01 alpha workaround -template<class T> -struct is_reference_to_const<T const volatile&> : mpl::true_ -{ -}; -# endif - -template <class T> -struct is_reference_to_function : mpl::false_ -{ -}; - -template <class T> -struct is_reference_to_function<T&> : is_function<T> -{ -}; - -template <class T> -struct is_pointer_to_function : mpl::false_ -{ -}; - -// There's no such thing as a pointer-to-cv-function, so we don't need -// specializations for those -template <class T> -struct is_pointer_to_function<T*> : is_function<T> -{ -}; - -template <class T> -struct is_reference_to_member_function_pointer_impl : mpl::false_ -{ -}; - -template <class T> -struct is_reference_to_member_function_pointer_impl<T&> - : is_member_function_pointer<typename remove_cv<T>::type> -{ -}; - - -template <class T> -struct is_reference_to_member_function_pointer - : is_reference_to_member_function_pointer_impl<T> -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_member_function_pointer,(T)) -}; - -template <class T> -struct is_reference_to_function_pointer_aux - : mpl::and_< - is_reference<T> - , is_pointer_to_function< - typename remove_cv< - typename remove_reference<T>::type - >::type - > - > -{ - // There's no such thing as a pointer-to-cv-function, so we don't need specializations for those -}; - -template <class T> -struct is_reference_to_function_pointer - : mpl::if_< - is_reference_to_function<T> - , mpl::false_ - , is_reference_to_function_pointer_aux<T> - >::type -{ -}; - -template <class T> -struct is_reference_to_non_const - : mpl::and_< - is_reference<T> - , mpl::not_< - is_reference_to_const<T> - > - > -{ -}; - -template <class T> -struct is_reference_to_volatile : mpl::false_ -{ -}; - -template <class T> -struct is_reference_to_volatile<T volatile&> : mpl::true_ -{ -}; - -# if defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140 // vc7.01 alpha workaround -template <class T> -struct is_reference_to_volatile<T const volatile&> : mpl::true_ -{ -}; -# endif - - -template <class T> -struct is_reference_to_pointer : mpl::false_ -{ -}; - -template <class T> -struct is_reference_to_pointer<T*&> : mpl::true_ -{ -}; - -template <class T> -struct is_reference_to_pointer<T* const&> : mpl::true_ -{ -}; - -template <class T> -struct is_reference_to_pointer<T* volatile&> : mpl::true_ -{ -}; - -template <class T> -struct is_reference_to_pointer<T* const volatile&> : mpl::true_ -{ -}; - -template <class T> -struct is_reference_to_class - : mpl::and_< - is_reference<T> - , is_class< - typename remove_cv< - typename remove_reference<T>::type - >::type - > - > -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_class,(T)) -}; - -template <class T> -struct is_pointer_to_class - : mpl::and_< - is_pointer<T> - , is_class< - typename remove_cv< - typename remove_pointer<T>::type - >::type - > - > -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_pointer_to_class,(T)) -}; - -# else - -using namespace boost::detail::is_function_ref_tester_; - -typedef char (&inner_yes_type)[3]; -typedef char (&inner_no_type)[2]; -typedef char (&outer_no_type)[1]; - -template <typename V> -struct is_const_help -{ - typedef typename mpl::if_< - is_const<V> - , inner_yes_type - , inner_no_type - >::type type; -}; - -template <typename V> -struct is_volatile_help -{ - typedef typename mpl::if_< - is_volatile<V> - , inner_yes_type - , inner_no_type - >::type type; -}; - -template <typename V> -struct is_pointer_help -{ - typedef typename mpl::if_< - is_pointer<V> - , inner_yes_type - , inner_no_type - >::type type; -}; - -template <typename V> -struct is_class_help -{ - typedef typename mpl::if_< - is_class<V> - , inner_yes_type - , inner_no_type - >::type type; -}; - -template <class T> -struct is_reference_to_function_aux -{ - static T t; - BOOST_STATIC_CONSTANT( - bool, value = sizeof(detail::is_function_ref_tester(t,0)) == sizeof(::boost::type_traits::yes_type)); - typedef mpl::bool_<value> type; - }; - -template <class T> -struct is_reference_to_function - : mpl::if_<is_reference<T>, is_reference_to_function_aux<T>, mpl::bool_<false> >::type -{ -}; - -template <class T> -struct is_pointer_to_function_aux -{ - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = sizeof(::boost::type_traits::is_function_ptr_tester(t)) == sizeof(::boost::type_traits::yes_type)); - typedef mpl::bool_<value> type; -}; - -template <class T> -struct is_pointer_to_function - : mpl::if_<is_pointer<T>, is_pointer_to_function_aux<T>, mpl::bool_<false> >::type -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_pointer_to_function,(T)) -}; - -struct false_helper1 -{ - template <class T> - struct apply : mpl::false_ - { - }; -}; - -template <typename V> -typename is_const_help<V>::type reference_to_const_helper(V&); -outer_no_type -reference_to_const_helper(...); - -struct true_helper1 -{ - template <class T> - struct apply - { - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = sizeof(reference_to_const_helper(t)) == sizeof(inner_yes_type)); - typedef mpl::bool_<value> type; - }; -}; - -template <bool ref = true> -struct is_reference_to_const_helper1 : true_helper1 -{ -}; - -template <> -struct is_reference_to_const_helper1<false> : false_helper1 -{ -}; - - -template <class T> -struct is_reference_to_const - : is_reference_to_const_helper1<is_reference<T>::value>::template apply<T> -{ -}; - - -template <bool ref = true> -struct is_reference_to_non_const_helper1 -{ - template <class T> - struct apply - { - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = sizeof(reference_to_const_helper(t)) == sizeof(inner_no_type)); - - typedef mpl::bool_<value> type; - }; -}; - -template <> -struct is_reference_to_non_const_helper1<false> : false_helper1 -{ -}; - - -template <class T> -struct is_reference_to_non_const - : is_reference_to_non_const_helper1<is_reference<T>::value>::template apply<T> -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_non_const,(T)) -}; - - -template <typename V> -typename is_volatile_help<V>::type reference_to_volatile_helper(V&); -outer_no_type -reference_to_volatile_helper(...); - -template <bool ref = true> -struct is_reference_to_volatile_helper1 -{ - template <class T> - struct apply - { - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = sizeof(reference_to_volatile_helper(t)) == sizeof(inner_yes_type)); - typedef mpl::bool_<value> type; - }; -}; - -template <> -struct is_reference_to_volatile_helper1<false> : false_helper1 -{ -}; - - -template <class T> -struct is_reference_to_volatile - : is_reference_to_volatile_helper1<is_reference<T>::value>::template apply<T> -{ -}; - -template <typename V> -typename is_pointer_help<V>::type reference_to_pointer_helper(V&); -outer_no_type reference_to_pointer_helper(...); - -template <class T> -struct reference_to_pointer_impl -{ - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = (sizeof((reference_to_pointer_helper)(t)) == sizeof(inner_yes_type)) - ); - - typedef mpl::bool_<value> type; -}; - -template <class T> -struct is_reference_to_pointer - : mpl::eval_if<is_reference<T>, reference_to_pointer_impl<T>, mpl::false_>::type -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_pointer,(T)) -}; - -template <class T> -struct is_reference_to_function_pointer - : mpl::eval_if<is_reference<T>, is_pointer_to_function_aux<T>, mpl::false_>::type -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_function_pointer,(T)) -}; - - -template <class T> -struct is_member_function_pointer_help - : mpl::if_<is_member_function_pointer<T>, inner_yes_type, inner_no_type> -{}; - -template <typename V> -typename is_member_function_pointer_help<V>::type member_function_pointer_helper(V&); -outer_no_type member_function_pointer_helper(...); - -template <class T> -struct is_pointer_to_member_function_aux -{ - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = sizeof((member_function_pointer_helper)(t)) == sizeof(inner_yes_type)); - typedef mpl::bool_<value> type; -}; - -template <class T> -struct is_reference_to_member_function_pointer - : mpl::if_< - is_reference<T> - , is_pointer_to_member_function_aux<T> - , mpl::bool_<false> - >::type -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_member_function_pointer,(T)) -}; - -template <typename V> -typename is_class_help<V>::type reference_to_class_helper(V const volatile&); -outer_no_type reference_to_class_helper(...); - -template <class T> -struct is_reference_to_class -{ - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = (is_reference<T>::value - & (sizeof(reference_to_class_helper(t)) == sizeof(inner_yes_type))) - ); - typedef mpl::bool_<value> type; - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_class,(T)) -}; - -template <typename V> -typename is_class_help<V>::type pointer_to_class_helper(V const volatile*); -outer_no_type pointer_to_class_helper(...); - -template <class T> -struct is_pointer_to_class -{ - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = (is_pointer<T>::value - && sizeof(pointer_to_class_helper(t)) == sizeof(inner_yes_type)) - ); - typedef mpl::bool_<value> type; -}; -# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -} - -using namespace indirect_traits; - -}} // namespace boost::python::detail - -#endif // INDIRECT_TRAITS_DWA2002131_HPP |