1 // Boost integer_fwd.hpp header file ---------------------------------------//
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)
7 // See http://www.boost.org/libs/integer for documentation.
9 #ifndef BOOST_INTEGER_FWD_HPP
10 #define BOOST_INTEGER_FWD_HPP
12 #include <cstddef> // for std::size_t
14 #include <boost/config.hpp> // for BOOST_NO_INTRINSIC_WCHAR_T, etc.
15 #include <boost/cstdint.hpp> // for boost::uintmax_t, intmax_t
17 #include <boost/detail/extended_integer.hpp> // for BOOST_HAS_XINT, etc.
24 // From <boost/cstdint.hpp> ------------------------------------------------//
26 // Only has typedefs or using statements, with #conditionals
28 // ALERT: the forward declarations of items in <boost/integer.hpp> need items
29 // from this header. That means that <boost/cstdint.hpp> cannot #include this
30 // forwarding header, to avoid infinite recursion! One day, maybe
31 // boost::uintmax_t and boost::intmax_t could be segregated into their own
32 // header file (which can't #include this header), <boost/integer.hpp> will use
33 // that header, and <boost/cstdint.hpp> could refer to <boost/integer.hpp>.
36 // From <boost/integer_traits.hpp> -----------------------------------------//
42 class integer_traits
< bool >;
45 class integer_traits
< char >;
48 class integer_traits
< signed char >;
51 class integer_traits
< unsigned char >;
53 #ifndef BOOST_NO_INTRINSIC_WCHAR_T
55 class integer_traits
< wchar_t >;
59 class integer_traits
< short >;
62 class integer_traits
< unsigned short >;
65 class integer_traits
< int >;
68 class integer_traits
< unsigned int >;
71 class integer_traits
< long >;
74 class integer_traits
< unsigned long >;
76 #if !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T) && BOOST_HAS_XINT
78 class integer_traits
< ::boost::detail::xint_t
>;
81 class integer_traits
< ::boost::detail::uxint_t
>;
85 // From <boost/integer.hpp> ------------------------------------------------//
87 template < typename BaseInt
>
90 template < typename LeastInt
>
93 template < int Bits
, typename Signedness
>
94 struct sized_integral
;
96 template < int Bits
, typename Signedness
>
97 struct exact_integral
;
99 template < intmax_t MaxValue
>
100 struct maximum_signed_integral
;
102 template < intmax_t MinValue
>
103 struct minimum_signed_integral
;
105 template < uintmax_t Value
>
106 struct maximum_unsigned_integral
;
120 template< intmax_t MaxValue
>
121 struct int_max_value_t
;
123 template< intmax_t MinValue
>
124 struct int_min_value_t
;
126 template< uintmax_t Value
>
130 // From <boost/integer/integer_mask.hpp> -----------------------------------//
132 template < int Offset
>
133 struct integer_hi_mask
;
135 template < int Length
>
136 struct integer_lo_mask
;
138 template < std::size_t Bit
>
139 class high_bit_mask_t
;
141 template < std::size_t Bits
>
142 class low_bits_mask_t
;
145 // From <boost/integer/static_log2.hpp> ------------------------------------//
147 template < unsigned long Value
>
151 struct static_log2
< 0ul >;
154 // From <boost/integer/static_min_max.hpp> ---------------------------------//
156 template < long Value1
, long Value2
>
157 struct static_signed_min
;
159 template < long Value1
, long Value2
>
160 struct static_signed_max
;
162 template < unsigned long Value1
, unsigned long Value2
>
163 struct static_unsigned_min
;
165 template < unsigned long Value1
, unsigned long Value2
>
166 struct static_unsigned_max
;
172 #endif // BOOST_INTEGER_FWD_HPP