From 9cc587a7f21975a692ab7bd6a1ab74940fda880c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 21 Oct 2002 11:00:50 +0000 Subject: [PATCH] Merged changes from RC_1_29_0 branch [SVN r15958] --- include/boost/cstdint.hpp | 2 +- include/boost/integer_traits.hpp | 36 +++++++++++++++++++++++++------- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp index 20678c5..6f65b90 100644 --- a/include/boost/cstdint.hpp +++ b/include/boost/cstdint.hpp @@ -35,7 +35,7 @@ // this is triggered with GCC, because it defines __cplusplus < 199707L # define BOOST_NO_INT64_T # endif -# elif defined(__FreeBSD__) +# elif defined(__FreeBSD__) || defined(__IBMCPP__) # include # else # include diff --git a/include/boost/integer_traits.hpp b/include/boost/integer_traits.hpp index 569eb01..402060f 100644 --- a/include/boost/integer_traits.hpp +++ b/include/boost/integer_traits.hpp @@ -147,42 +147,64 @@ class integer_traits public detail::integer_traits_base { }; -#if defined(ULLONG_MAX) && !defined(__SUNPRO_CC) +#if !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T) +#if defined(ULLONG_MAX) && defined(BOOST_HAS_LONG_LONG) + template<> class integer_traits : public std::numeric_limits, public detail::integer_traits_base { }; + template<> class integer_traits : public std::numeric_limits, public detail::integer_traits_base { }; -#elif defined(ULONG_LONG_MAX) + +#elif defined(ULONG_LONG_MAX) && defined(BOOST_HAS_LONG_LONG) + template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; +class integer_traits : public std::numeric_limits, public detail::integer_traits_base{ }; template<> class integer_traits : public std::numeric_limits, public detail::integer_traits_base { }; -#elif defined(ULONGLONG_MAX) && !defined(BOOST_MSVC) && !defined(__BORLANDC__) + +#elif defined(ULONGLONG_MAX) && defined(BOOST_HAS_LONG_LONG) + template<> class integer_traits : public std::numeric_limits, public detail::integer_traits_base { }; + template<> class integer_traits : public std::numeric_limits, public detail::integer_traits_base { }; + +#elif defined(_LLONG_MAX) && defined(_C2) && defined(BOOST_HAS_LONG_LONG) + +template<> +class integer_traits + : public std::numeric_limits, + public detail::integer_traits_base +{ }; + +template<> +class integer_traits + : public std::numeric_limits, + public detail::integer_traits_base +{ }; + +#endif #endif } // namespace boost #endif /* BOOST_INTEGER_TRAITS_HPP */ +