williamr@2: // Boost integer_fwd.hpp header file ---------------------------------------// williamr@2: williamr@2: // (C) Copyright Dave Abrahams and Daryle Walker 2001. Distributed under the Boost williamr@2: // Software License, Version 1.0. (See accompanying file williamr@2: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) williamr@2: williamr@2: // See http://www.boost.org/libs/integer for documentation. williamr@2: williamr@2: #ifndef BOOST_INTEGER_FWD_HPP williamr@2: #define BOOST_INTEGER_FWD_HPP williamr@2: williamr@2: #include // for UCHAR_MAX, etc. williamr@2: #include // for std::size_t williamr@2: williamr@2: #include // for BOOST_NO_INTRINSIC_WCHAR_T williamr@2: #include // for std::numeric_limits williamr@2: williamr@2: williamr@2: namespace boost williamr@2: { williamr@2: williamr@2: williamr@2: // From ------------------------------------------------// williamr@2: williamr@2: // Only has typedefs or using statements, with #conditionals williamr@2: williamr@2: williamr@2: // From -----------------------------------------// williamr@2: williamr@2: template < class T > williamr@2: class integer_traits; williamr@2: williamr@2: template < > williamr@2: class integer_traits< bool >; williamr@2: williamr@2: template < > williamr@2: class integer_traits< char >; williamr@2: williamr@2: template < > williamr@2: class integer_traits< signed char >; williamr@2: williamr@2: template < > williamr@2: class integer_traits< unsigned char >; williamr@2: williamr@2: #ifndef BOOST_NO_INTRINSIC_WCHAR_T williamr@2: template < > williamr@2: class integer_traits< wchar_t >; williamr@2: #endif williamr@2: williamr@2: template < > williamr@2: class integer_traits< short >; williamr@2: williamr@2: template < > williamr@2: class integer_traits< unsigned short >; williamr@2: williamr@2: template < > williamr@2: class integer_traits< int >; williamr@2: williamr@2: template < > williamr@2: class integer_traits< unsigned int >; williamr@2: williamr@2: template < > williamr@2: class integer_traits< long >; williamr@2: williamr@2: template < > williamr@2: class integer_traits< unsigned long >; williamr@2: williamr@2: #ifdef ULLONG_MAX williamr@2: template < > williamr@2: class integer_traits< ::boost::long_long_type>; williamr@2: williamr@2: template < > williamr@2: class integer_traits< ::boost::ulong_long_type >; williamr@2: #endif williamr@2: williamr@2: williamr@2: // From ------------------------------------------------// williamr@2: williamr@2: template < typename LeastInt > williamr@2: struct int_fast_t; williamr@2: williamr@2: template< int Bits > williamr@2: struct int_t; williamr@2: williamr@2: template< int Bits > williamr@2: struct uint_t; williamr@2: williamr@2: template< long MaxValue > williamr@2: struct int_max_value_t; williamr@2: williamr@2: template< long MinValue > williamr@2: struct int_min_value_t; williamr@2: williamr@2: template< unsigned long Value > williamr@2: struct uint_value_t; williamr@2: williamr@2: williamr@2: // From -----------------------------------// williamr@2: williamr@2: template < std::size_t Bit > williamr@2: struct high_bit_mask_t; williamr@2: williamr@2: template < std::size_t Bits > williamr@2: struct low_bits_mask_t; williamr@2: williamr@2: template < > williamr@2: struct low_bits_mask_t< ::std::numeric_limits::digits >; williamr@2: williamr@2: #if USHRT_MAX > UCHAR_MAX williamr@2: template < > williamr@2: struct low_bits_mask_t< ::std::numeric_limits::digits >; williamr@2: #endif williamr@2: williamr@2: #if UINT_MAX > USHRT_MAX williamr@2: template < > williamr@2: struct low_bits_mask_t< ::std::numeric_limits::digits >; williamr@2: #endif williamr@2: williamr@2: #if ULONG_MAX > UINT_MAX williamr@2: template < > williamr@2: struct low_bits_mask_t< ::std::numeric_limits::digits >; williamr@2: #endif williamr@2: williamr@2: williamr@2: // From ------------------------------------// williamr@2: williamr@2: template < unsigned long Value > williamr@2: struct static_log2; williamr@2: williamr@2: template < > williamr@2: struct static_log2< 0ul >; williamr@2: williamr@2: williamr@2: // From ---------------------------------// williamr@2: williamr@2: template < long Value1, long Value2 > williamr@2: struct static_signed_min; williamr@2: williamr@2: template < long Value1, long Value2 > williamr@2: struct static_signed_max; williamr@2: williamr@2: template < unsigned long Value1, unsigned long Value2 > williamr@2: struct static_unsigned_min; williamr@2: williamr@2: template < unsigned long Value1, unsigned long Value2 > williamr@2: struct static_unsigned_max; williamr@2: williamr@2: williamr@2: } // namespace boost williamr@2: williamr@2: williamr@2: #endif // BOOST_INTEGER_FWD_HPP