// Distributed under the Boost Software License Version 1.0 https://www.boost.org/LICENSE_1_0.txt // Copyright Gero Peterhoff #ifndef BOOST_CONFIG_INTEGER_HPP #define BOOST_CONFIG_INTEGER_HPP #include #include #include namespace boost { #if defined(BOOST_HAS_INT128) using uint128_t = uint128_type; using int128_t = int128_type; #define UINT128_C(c) (boost::uint128_t(c)) #define INT128_C(c) (boost::int128_t(c)) #else #define BOOST_NO_INT128_T #endif // BOOST_NO_INT64_T is available // no known HW //#define BOOST_NO_INT32_T // no known HW //#define BOOST_NO_INT16_T #if (CHAR_BIT != 8) #define BOOST_NO_INT8_T #endif namespace platform { // provides correct min/max-types #if !defined(BOOST_NO_INT128_T) using uintmax_t = uint128_t; using intmax_t = int128_t; #elif !defined(BOOST_NO_INT64_T) using uintmax_t = uint64_t; using intmax_t = int64_t; #elif !defined(BOOST_NO_INT32_T) using uintmax_t = uint32_t; using intmax_t = int32_t; #elif !defined(BOOST_NO_INT16_T) using uintmax_t = uint16_t; using intmax_t = int16_t; #elif !defined(BOOST_NO_INT8_T) using uintmax_t = uint8_t; using intmax_t = int8_t; #else static_assert(false); #endif #if !defined(BOOST_NO_INT8_T) using uintmin_t = uint8_t; using intmin_t = int8_t; #elif !defined(BOOST_NO_INT16_T) using uintmin_t = uint16_t; using intmin_t = int16_t; #elif !defined(BOOST_NO_INT32_T) using uintmin_t = uint32_t; using intmin_t = int32_t; #elif !defined(BOOST_NO_INT64_T) using uintmin_t= uint64_t; using intmin_t = int64_t; #elif !defined(BOOST_NO_INT128_T) using uintmin_t = uint128_t; using intmin_t = int128_t; #else static_assert(false); #endif } // platform } // boost #endif // BOOST_CONFIG_INTEGER_HPP