diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-06-01 08:48:42 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-06-01 09:24:28 (GMT) |
commit | 2812bddd81f8a1b804c7460f4e14cd0aa393d129 (patch) | |
tree | d46294f35150c4f0f43deaf2d31fceaf945ae715 /3rdParty/Boost/boost/type_traits/is_unsigned.hpp | |
download | swift-contrib-2812bddd81f8a1b804c7460f4e14cd0aa393d129.zip swift-contrib-2812bddd81f8a1b804c7460f4e14cd0aa393d129.tar.bz2 |
Import.
Diffstat (limited to '3rdParty/Boost/boost/type_traits/is_unsigned.hpp')
-rw-r--r-- | 3rdParty/Boost/boost/type_traits/is_unsigned.hpp | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/3rdParty/Boost/boost/type_traits/is_unsigned.hpp b/3rdParty/Boost/boost/type_traits/is_unsigned.hpp new file mode 100644 index 0000000..4866486 --- /dev/null +++ b/3rdParty/Boost/boost/type_traits/is_unsigned.hpp @@ -0,0 +1,123 @@ + +// (C) Copyright John Maddock 2005. +// 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). +// +// See http://www.boost.org/libs/type_traits for most recent version including documentation. + + +#ifndef BOOST_TT_IS_UNSIGNED_HPP_INCLUDED +#define BOOST_TT_IS_UNSIGNED_HPP_INCLUDED + +#include <boost/type_traits/is_integral.hpp> +#include <boost/type_traits/is_enum.hpp> +#include <boost/type_traits/remove_cv.hpp> +#include <boost/type_traits/detail/ice_or.hpp> + +// should be the last #include +#include <boost/type_traits/detail/bool_trait_def.hpp> + +namespace boost { + +#if !defined( __CODEGEARC__ ) + +namespace detail{ + +#if !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238) + +template <class T> +struct is_ununsigned_helper +{ + typedef typename remove_cv<T>::type no_cv_t; + BOOST_STATIC_CONSTANT(bool, value = (static_cast<no_cv_t>(-1) > 0)); +}; + +template <bool integral_type> +struct is_ununsigned_select_helper +{ + template <class T> + struct rebind + { + typedef is_ununsigned_helper<T> type; + }; +}; + +template <> +struct is_ununsigned_select_helper<false> +{ + template <class T> + struct rebind + { + typedef false_type type; + }; +}; + +template <class T> +struct is_unsigned_imp +{ + typedef is_ununsigned_select_helper< + ::boost::type_traits::ice_or< + ::boost::is_integral<T>::value, + ::boost::is_enum<T>::value>::value + > selector; + typedef typename selector::template rebind<T> binder; + typedef typename binder::type type; + BOOST_STATIC_CONSTANT(bool, value = type::value); +}; + +#else + +template <class T> struct is_unsigned_imp : public false_type{}; +template <> struct is_unsigned_imp<unsigned char> : public true_type{}; +template <> struct is_unsigned_imp<const unsigned char> : public true_type{}; +template <> struct is_unsigned_imp<volatile unsigned char> : public true_type{}; +template <> struct is_unsigned_imp<const volatile unsigned char> : public true_type{}; +template <> struct is_unsigned_imp<unsigned short> : public true_type{}; +template <> struct is_unsigned_imp<const unsigned short> : public true_type{}; +template <> struct is_unsigned_imp<volatile unsigned short> : public true_type{}; +template <> struct is_unsigned_imp<const volatile unsigned short> : public true_type{}; +template <> struct is_unsigned_imp<unsigned int> : public true_type{}; +template <> struct is_unsigned_imp<const unsigned int> : public true_type{}; +template <> struct is_unsigned_imp<volatile unsigned int> : public true_type{}; +template <> struct is_unsigned_imp<const volatile unsigned int> : public true_type{}; +template <> struct is_unsigned_imp<unsigned long> : public true_type{}; +template <> struct is_unsigned_imp<const unsigned long> : public true_type{}; +template <> struct is_unsigned_imp<volatile unsigned long> : public true_type{}; +template <> struct is_unsigned_imp<const volatile unsigned long> : public true_type{}; +#ifdef BOOST_HAS_LONG_LONG +template <> struct is_unsigned_imp<unsigned long long> : public true_type{}; +template <> struct is_unsigned_imp<const unsigned long long> : public true_type{}; +template <> struct is_unsigned_imp<volatile unsigned long long> : public true_type{}; +template <> struct is_unsigned_imp<const volatile unsigned long long> : public true_type{}; +#endif +#if defined(CHAR_MIN) && (CHAR_MIN == 0) +template <> struct is_unsigned_imp<char> : public true_type{}; +template <> struct is_unsigned_imp<const char> : public true_type{}; +template <> struct is_unsigned_imp<volatile char> : public true_type{}; +template <> struct is_unsigned_imp<const volatile char> : public true_type{}; +#endif +#if defined(WCHAR_MIN) && (WCHAR_MIN == 0) +template <> struct is_unsigned_imp<wchar_t> : public true_type{}; +template <> struct is_unsigned_imp<const wchar_t> : public true_type{}; +template <> struct is_unsigned_imp<volatile wchar_t> : public true_type{}; +template <> struct is_unsigned_imp<const volatile wchar_t> : public true_type{}; +#endif + +#endif + +} + +#endif // !defined( __CODEGEARC__ ) + +#if defined( __CODEGEARC__ ) +BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_unsigned,T,__is_unsigned(T)) +#else +BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_unsigned,T,::boost::detail::is_unsigned_imp<T>::value) +#endif + +} // namespace boost + +#include <boost/type_traits/detail/bool_trait_undef.hpp> + +#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED |