// 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 { // BOOST_HAS_INT128 is available #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)) #endif #if !defined(BOOST_NO_INT64_T) #define BOOST_HAS_INT64 #endif #define BOOST_HAS_INT32 // always available ? #define BOOST_HAS_INT16 // always available ? #if (CHAR_BIT == 8) #define BOOST_HAS_INT8 #endif #if defined(BOOST_HAS_INT128) && (__WORDSIZE >= 128) #define BOOST_HAS_NATIVE_INT128 #endif #if defined(BOOST_HAS_INT64) && (__WORDSIZE >= 64) #define BOOST_HAS_NATIVE_INT64 #endif #if defined(BOOST_HAS_INT32) && (__WORDSIZE >= 32) #define BOOST_HAS_NATIVE_INT32 #endif #if defined(BOOST_HAS_INT16) && (__WORDSIZE >= 16) #define BOOST_HAS_NATIVE_INT16 #endif #if defined(BOOST_HAS_INT8) && (__WORDSIZE >= 8) #define BOOST_HAS_NATIVE_INT8 #endif namespace platform { // provides correct min/max-types #if defined(BOOST_HAS_INT128) using uintmax_t = uint128_t; using intmax_t = int128_t; #elif defined(BOOST_HAS_INT64) using uintmax_t = uint64_t; using intmax_t = int64_t; #elif defined(BOOST_HAS_INT32) using uintmax_t = uint32_t; using intmax_t = int32_t; #elif defined(BOOST_HAS_INT16) using uintmax_t = uint16_t; using intmax_t = int16_t; #elif defined(BOOST_HAS_INT8) using uintmax_t = uint8_t; using intmax_t = int8_t; #else static_assert(false); #endif #if defined(BOOST_HAS_INT8) using uintmin_t = uint8_t; using intmin_t = int8_t; #elif defined(BOOST_HAS_INT16) using uintmin_t = uint16_t; using intmin_t = int16_t; #elif defined(BOOST_HAS_INT32) using uintmin_t = uint32_t; using intmin_t = int32_t; #elif defined(BOOST_HAS_INT64) using uintmin_t= uint64_t; using intmin_t = int64_t; #elif defined(BOOST_HAS_INT128) using uintmin_t = uint128_t; using intmin_t = int128_t; #else static_assert(false); #endif } // platform } // boost #endif // BOOST_CONFIG_INTEGER_HPP