/extlibs/Boost/include/boost/integer_fwd.hpp
C++ Header | 180 lines | 112 code | 56 blank | 12 comment | 7 complexity | dabbf87a52de361f2ff67f7d36e5925d MD5 | raw file
1// Boost integer_fwd.hpp header file ---------------------------------------// 2 3// (C) Copyright Dave Abrahams and Daryle Walker 2001. Distributed under the Boost 4// Software License, Version 1.0. (See accompanying file 5// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 7// See http://www.boost.org/libs/integer for documentation. 8 9#ifndef BOOST_INTEGER_FWD_HPP 10#define BOOST_INTEGER_FWD_HPP 11 12#include <climits> // for UCHAR_MAX, etc. 13#include <cstddef> // for std::size_t 14 15#include <boost/config.hpp> // for BOOST_NO_INTRINSIC_WCHAR_T 16#include <boost/limits.hpp> // for std::numeric_limits 17#include <boost/cstdint.hpp> // For intmax_t 18 19 20namespace boost 21{ 22 23#ifdef BOOST_NO_INTEGRAL_INT64_T 24 typedef unsigned long static_log2_argument_type; 25 typedef int static_log2_result_type; 26 typedef long static_min_max_signed_type; 27 typedef unsigned long static_min_max_unsigned_type; 28#else 29 typedef boost::uintmax_t static_min_max_unsigned_type; 30 typedef boost::intmax_t static_min_max_signed_type; 31 typedef boost::uintmax_t static_log2_argument_type; 32 typedef int static_log2_result_type; 33#endif 34 35// From <boost/cstdint.hpp> ------------------------------------------------// 36 37// Only has typedefs or using statements, with #conditionals 38 39 40// From <boost/integer_traits.hpp> -----------------------------------------// 41 42template < class T > 43 class integer_traits; 44 45template < > 46 class integer_traits< bool >; 47 48template < > 49 class integer_traits< char >; 50 51template < > 52 class integer_traits< signed char >; 53 54template < > 55 class integer_traits< unsigned char >; 56 57#ifndef BOOST_NO_INTRINSIC_WCHAR_T 58template < > 59 class integer_traits< wchar_t >; 60#endif 61 62template < > 63 class integer_traits< short >; 64 65template < > 66 class integer_traits< unsigned short >; 67 68template < > 69 class integer_traits< int >; 70 71template < > 72 class integer_traits< unsigned int >; 73 74template < > 75 class integer_traits< long >; 76 77template < > 78 class integer_traits< unsigned long >; 79 80#if !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T) && defined(BOOST_HAS_LONG_LONG) 81template < > 82class integer_traits< ::boost::long_long_type>; 83 84template < > 85class integer_traits< ::boost::ulong_long_type >; 86#elif !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T) && defined(BOOST_HAS_MS_INT64) 87template < > 88class integer_traits<__int64>; 89 90template < > 91class integer_traits<unsigned __int64>; 92#endif 93 94 95// From <boost/integer.hpp> ------------------------------------------------// 96 97template < typename LeastInt > 98 struct int_fast_t; 99 100template< int Bits > 101 struct int_t; 102 103template< int Bits > 104 struct uint_t; 105 106#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG) 107 template< boost::long_long_type MaxValue > // maximum value to require support 108#else 109 template< long MaxValue > // maximum value to require support 110#endif 111 struct int_max_value_t; 112 113#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG) 114 template< boost::long_long_type MinValue > // minimum value to require support 115#else 116 template< long MinValue > // minimum value to require support 117#endif 118 struct int_min_value_t; 119 120#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG) 121 template< boost::ulong_long_type MaxValue > // maximum value to require support 122#else 123 template< unsigned long MaxValue > // maximum value to require support 124#endif 125 struct uint_value_t; 126 127 128// From <boost/integer/integer_mask.hpp> -----------------------------------// 129 130template < std::size_t Bit > 131 struct high_bit_mask_t; 132 133template < std::size_t Bits > 134 struct low_bits_mask_t; 135 136template < > 137 struct low_bits_mask_t< ::std::numeric_limits<unsigned char>::digits >; 138 139#if USHRT_MAX > UCHAR_MAX 140template < > 141 struct low_bits_mask_t< ::std::numeric_limits<unsigned short>::digits >; 142#endif 143 144#if UINT_MAX > USHRT_MAX 145template < > 146 struct low_bits_mask_t< ::std::numeric_limits<unsigned int>::digits >; 147#endif 148 149#if ULONG_MAX > UINT_MAX 150template < > 151 struct low_bits_mask_t< ::std::numeric_limits<unsigned long>::digits >; 152#endif 153 154 155// From <boost/integer/static_log2.hpp> ------------------------------------// 156 157template <static_log2_argument_type Value > 158 struct static_log2; 159 160template <> struct static_log2<0u>; 161 162 163// From <boost/integer/static_min_max.hpp> ---------------------------------// 164 165template <static_min_max_signed_type Value1, static_min_max_signed_type Value2> 166 struct static_signed_min; 167 168template <static_min_max_signed_type Value1, static_min_max_signed_type Value2> 169 struct static_signed_max; 170 171template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2> 172 struct static_unsigned_min; 173 174template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2> 175 struct static_unsigned_max; 176 177} // namespace boost 178 179 180#endif // BOOST_INTEGER_FWD_HPP