Home | History | Annotate | Download | only in cstdint.syn
      1 //===----------------------------------------------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 // test <cstdint>
     11 
     12 #include <cstdint>
     13 #include <cstddef>
     14 #include <cwchar>
     15 #include <csignal>
     16 #include <cwctype>
     17 #include <climits>
     18 #include <type_traits>
     19 #include <limits>
     20 #include <cassert>
     21 
     22 int main()
     23 {
     24     // typedef std::int8_t
     25     static_assert(sizeof(std::int8_t)*CHAR_BIT == 8,
     26                  "sizeof(std::int8_t)*CHAR_BIT == 8");
     27     static_assert(std::is_signed<std::int8_t>::value,
     28                  "std::is_signed<std::int8_t>::value");
     29     // typedef std::int16_t
     30     static_assert(sizeof(std::int16_t)*CHAR_BIT == 16,
     31                  "sizeof(std::int16_t)*CHAR_BIT == 16");
     32     static_assert(std::is_signed<std::int16_t>::value,
     33                  "std::is_signed<std::int16_t>::value");
     34     // typedef std::int32_t
     35     static_assert(sizeof(std::int32_t)*CHAR_BIT == 32,
     36                  "sizeof(std::int32_t)*CHAR_BIT == 32");
     37     static_assert(std::is_signed<std::int32_t>::value,
     38                  "std::is_signed<std::int32_t>::value");
     39     // typedef std::int64_t
     40     static_assert(sizeof(std::int64_t)*CHAR_BIT == 64,
     41                  "sizeof(std::int64_t)*CHAR_BIT == 64");
     42     static_assert(std::is_signed<std::int64_t>::value,
     43                  "std::is_signed<std::int64_t>::value");
     44 
     45     // typedef std::uint8_t
     46     static_assert(sizeof(std::uint8_t)*CHAR_BIT == 8,
     47                  "sizeof(std::uint8_t)*CHAR_BIT == 8");
     48     static_assert(std::is_unsigned<std::uint8_t>::value,
     49                  "std::is_unsigned<std::uint8_t>::value");
     50     // typedef std::uint16_t
     51     static_assert(sizeof(std::uint16_t)*CHAR_BIT == 16,
     52                  "sizeof(std::uint16_t)*CHAR_BIT == 16");
     53     static_assert(std::is_unsigned<std::uint16_t>::value,
     54                  "std::is_unsigned<std::uint16_t>::value");
     55     // typedef std::uint32_t
     56     static_assert(sizeof(std::uint32_t)*CHAR_BIT == 32,
     57                  "sizeof(std::uint32_t)*CHAR_BIT == 32");
     58     static_assert(std::is_unsigned<std::uint32_t>::value,
     59                  "std::is_unsigned<std::uint32_t>::value");
     60     // typedef std::uint64_t
     61     static_assert(sizeof(std::uint64_t)*CHAR_BIT == 64,
     62                  "sizeof(std::uint64_t)*CHAR_BIT == 64");
     63     static_assert(std::is_unsigned<std::uint64_t>::value,
     64                  "std::is_unsigned<std::uint64_t>::value");
     65 
     66     // typedef std::int_least8_t
     67     static_assert(sizeof(std::int_least8_t)*CHAR_BIT >= 8,
     68                  "sizeof(std::int_least8_t)*CHAR_BIT >= 8");
     69     static_assert(std::is_signed<std::int_least8_t>::value,
     70                  "std::is_signed<std::int_least8_t>::value");
     71     // typedef std::int_least16_t
     72     static_assert(sizeof(std::int_least16_t)*CHAR_BIT >= 16,
     73                  "sizeof(std::int_least16_t)*CHAR_BIT >= 16");
     74     static_assert(std::is_signed<std::int_least16_t>::value,
     75                  "std::is_signed<std::int_least16_t>::value");
     76     // typedef std::int_least32_t
     77     static_assert(sizeof(std::int_least32_t)*CHAR_BIT >= 32,
     78                  "sizeof(std::int_least32_t)*CHAR_BIT >= 32");
     79     static_assert(std::is_signed<std::int_least32_t>::value,
     80                  "std::is_signed<std::int_least32_t>::value");
     81     // typedef std::int_least64_t
     82     static_assert(sizeof(std::int_least64_t)*CHAR_BIT >= 64,
     83                  "sizeof(std::int_least64_t)*CHAR_BIT >= 64");
     84     static_assert(std::is_signed<std::int_least64_t>::value,
     85                  "std::is_signed<std::int_least64_t>::value");
     86 
     87     // typedef std::uint_least8_t
     88     static_assert(sizeof(std::uint_least8_t)*CHAR_BIT >= 8,
     89                  "sizeof(std::uint_least8_t)*CHAR_BIT >= 8");
     90     static_assert(std::is_unsigned<std::uint_least8_t>::value,
     91                  "std::is_unsigned<std::uint_least8_t>::value");
     92     // typedef std::uint_least16_t
     93     static_assert(sizeof(std::uint_least16_t)*CHAR_BIT >= 16,
     94                  "sizeof(std::uint_least16_t)*CHAR_BIT >= 16");
     95     static_assert(std::is_unsigned<std::uint_least16_t>::value,
     96                  "std::is_unsigned<std::uint_least16_t>::value");
     97     // typedef std::uint_least32_t
     98     static_assert(sizeof(std::uint_least32_t)*CHAR_BIT >= 32,
     99                  "sizeof(std::uint_least32_t)*CHAR_BIT >= 32");
    100     static_assert(std::is_unsigned<std::uint_least32_t>::value,
    101                  "std::is_unsigned<std::uint_least32_t>::value");
    102     // typedef std::uint_least64_t
    103     static_assert(sizeof(std::uint_least64_t)*CHAR_BIT >= 64,
    104                  "sizeof(std::uint_least64_t)*CHAR_BIT >= 64");
    105     static_assert(std::is_unsigned<std::uint_least64_t>::value,
    106                  "std::is_unsigned<std::uint_least64_t>::value");
    107 
    108     // typedef std::int_fast8_t
    109     static_assert(sizeof(std::int_fast8_t)*CHAR_BIT >= 8,
    110                  "sizeof(std::int_fast8_t)*CHAR_BIT >= 8");
    111     static_assert(std::is_signed<std::int_fast8_t>::value,
    112                  "std::is_signed<std::int_fast8_t>::value");
    113     // typedef std::int_fast16_t
    114     static_assert(sizeof(std::int_fast16_t)*CHAR_BIT >= 16,
    115                  "sizeof(std::int_fast16_t)*CHAR_BIT >= 16");
    116     static_assert(std::is_signed<std::int_fast16_t>::value,
    117                  "std::is_signed<std::int_fast16_t>::value");
    118     // typedef std::int_fast32_t
    119     static_assert(sizeof(std::int_fast32_t)*CHAR_BIT >= 32,
    120                  "sizeof(std::int_fast32_t)*CHAR_BIT >= 32");
    121     static_assert(std::is_signed<std::int_fast32_t>::value,
    122                  "std::is_signed<std::int_fast32_t>::value");
    123     // typedef std::int_fast64_t
    124     static_assert(sizeof(std::int_fast64_t)*CHAR_BIT >= 64,
    125                  "sizeof(std::int_fast64_t)*CHAR_BIT >= 64");
    126     static_assert(std::is_signed<std::int_fast64_t>::value,
    127                  "std::is_signed<std::int_fast64_t>::value");
    128 
    129     // typedef std::uint_fast8_t
    130     static_assert(sizeof(std::uint_fast8_t)*CHAR_BIT >= 8,
    131                  "sizeof(std::uint_fast8_t)*CHAR_BIT >= 8");
    132     static_assert(std::is_unsigned<std::uint_fast8_t>::value,
    133                  "std::is_unsigned<std::uint_fast8_t>::value");
    134     // typedef std::uint_fast16_t
    135     static_assert(sizeof(std::uint_fast16_t)*CHAR_BIT >= 16,
    136                  "sizeof(std::uint_fast16_t)*CHAR_BIT >= 16");
    137     static_assert(std::is_unsigned<std::uint_fast16_t>::value,
    138                  "std::is_unsigned<std::uint_fast16_t>::value");
    139     // typedef std::uint_fast32_t
    140     static_assert(sizeof(std::uint_fast32_t)*CHAR_BIT >= 32,
    141                  "sizeof(std::uint_fast32_t)*CHAR_BIT >= 32");
    142     static_assert(std::is_unsigned<std::uint_fast32_t>::value,
    143                  "std::is_unsigned<std::uint_fast32_t>::value");
    144     // typedef std::uint_fast64_t
    145     static_assert(sizeof(std::uint_fast64_t)*CHAR_BIT >= 64,
    146                  "sizeof(std::uint_fast64_t)*CHAR_BIT >= 64");
    147     static_assert(std::is_unsigned<std::uint_fast64_t>::value,
    148                  "std::is_unsigned<std::uint_fast64_t>::value");
    149 
    150     // typedef std::intptr_t
    151     static_assert(sizeof(std::intptr_t) >= sizeof(void*),
    152                  "sizeof(std::intptr_t) >= sizeof(void*)");
    153     static_assert(std::is_signed<std::intptr_t>::value,
    154                  "std::is_signed<std::intptr_t>::value");
    155     // typedef std::uintptr_t
    156     static_assert(sizeof(std::uintptr_t) >= sizeof(void*),
    157                  "sizeof(std::uintptr_t) >= sizeof(void*)");
    158     static_assert(std::is_unsigned<std::uintptr_t>::value,
    159                  "std::is_unsigned<std::uintptr_t>::value");
    160 
    161     // typedef std::intmax_t
    162     static_assert(sizeof(std::intmax_t) >= sizeof(long long),
    163                  "sizeof(std::intmax_t) >= sizeof(long long)");
    164     static_assert(std::is_signed<std::intmax_t>::value,
    165                  "std::is_signed<std::intmax_t>::value");
    166     // typedef std::uintmax_t
    167     static_assert(sizeof(std::uintmax_t) >= sizeof(unsigned long long),
    168                  "sizeof(std::uintmax_t) >= sizeof(unsigned long long)");
    169     static_assert(std::is_unsigned<std::uintmax_t>::value,
    170                  "std::is_unsigned<std::uintmax_t>::value");
    171 
    172     // INTN_MIN
    173     static_assert(INT8_MIN == -128, "INT8_MIN == -128");
    174     static_assert(INT16_MIN == -32768, "INT16_MIN == -32768");
    175     static_assert(INT32_MIN == -2147483647 - 1, "INT32_MIN == -2147483648");
    176     static_assert(INT64_MIN == -9223372036854775807LL - 1, "INT64_MIN == -9223372036854775808LL");
    177 
    178     // INTN_MAX
    179     static_assert(INT8_MAX == 127, "INT8_MAX == 127");
    180     static_assert(INT16_MAX == 32767, "INT16_MAX == 32767");
    181     static_assert(INT32_MAX == 2147483647, "INT32_MAX == 2147483647");
    182     static_assert(INT64_MAX == 9223372036854775807LL, "INT64_MAX == 9223372036854775807LL");
    183 
    184     // UINTN_MAX
    185     static_assert(UINT8_MAX == 255, "UINT8_MAX == 255");
    186     static_assert(UINT16_MAX == 65535, "UINT16_MAX == 65535");
    187     static_assert(UINT32_MAX == 4294967295U, "UINT32_MAX == 4294967295");
    188     static_assert(UINT64_MAX == 18446744073709551615ULL, "UINT64_MAX == 18446744073709551615ULL");
    189 
    190     // INT_FASTN_MIN
    191     static_assert(INT_FAST8_MIN <= -128, "INT_FAST8_MIN <= -128");
    192     static_assert(INT_FAST16_MIN <= -32768, "INT_FAST16_MIN <= -32768");
    193     static_assert(INT_FAST32_MIN <= -2147483647 - 1, "INT_FAST32_MIN <= -2147483648");
    194     static_assert(INT_FAST64_MIN <= -9223372036854775807LL - 1, "INT_FAST64_MIN <= -9223372036854775808LL");
    195 
    196     // INT_FASTN_MAX
    197     static_assert(INT_FAST8_MAX >= 127, "INT_FAST8_MAX >= 127");
    198     static_assert(INT_FAST16_MAX >= 32767, "INT_FAST16_MAX >= 32767");
    199     static_assert(INT_FAST32_MAX >= 2147483647, "INT_FAST32_MAX >= 2147483647");
    200     static_assert(INT_FAST64_MAX >= 9223372036854775807LL, "INT_FAST64_MAX >= 9223372036854775807LL");
    201 
    202     // UINT_FASTN_MAX
    203     static_assert(UINT_FAST8_MAX >= 255, "UINT_FAST8_MAX >= 255");
    204     static_assert(UINT_FAST16_MAX >= 65535, "UINT_FAST16_MAX >= 65535");
    205     static_assert(UINT_FAST32_MAX >= 4294967295U, "UINT_FAST32_MAX >= 4294967295");
    206     static_assert(UINT_FAST64_MAX >= 18446744073709551615ULL, "UINT_FAST64_MAX >= 18446744073709551615ULL");
    207 
    208     // INTPTR_MIN
    209     assert(INTPTR_MIN == std::numeric_limits<std::intptr_t>::min());
    210 
    211     // INTPTR_MAX
    212     assert(INTPTR_MAX == std::numeric_limits<std::intptr_t>::max());
    213 
    214     // UINTPTR_MAX
    215     assert(UINTPTR_MAX == std::numeric_limits<std::uintptr_t>::max());
    216 
    217     // INTMAX_MIN
    218     assert(INTMAX_MIN == std::numeric_limits<std::intmax_t>::min());
    219 
    220     // INTMAX_MAX
    221     assert(INTMAX_MAX == std::numeric_limits<std::intmax_t>::max());
    222 
    223     // UINTMAX_MAX
    224     assert(UINTMAX_MAX == std::numeric_limits<std::uintmax_t>::max());
    225 
    226     // PTRDIFF_MIN
    227     assert(PTRDIFF_MIN == std::numeric_limits<std::ptrdiff_t>::min());
    228 
    229     // PTRDIFF_MAX
    230     assert(PTRDIFF_MAX == std::numeric_limits<std::ptrdiff_t>::max());
    231 
    232     // SIG_ATOMIC_MIN
    233     assert(SIG_ATOMIC_MIN == std::numeric_limits<std::sig_atomic_t>::min());
    234 
    235     // SIG_ATOMIC_MAX
    236     assert(SIG_ATOMIC_MAX == std::numeric_limits<std::sig_atomic_t>::max());
    237 
    238     // SIZE_MAX
    239     assert(SIZE_MAX == std::numeric_limits<std::size_t>::max());
    240 
    241     // WCHAR_MIN
    242     assert(WCHAR_MIN == std::numeric_limits<wchar_t>::min());
    243 
    244     // WCHAR_MAX
    245     assert(WCHAR_MAX == std::numeric_limits<wchar_t>::max());
    246 
    247     // WINT_MIN
    248     assert(WINT_MIN == std::numeric_limits<std::wint_t>::min());
    249 
    250     // WINT_MAX
    251     assert(WINT_MAX == std::numeric_limits<std::wint_t>::max());
    252 
    253 #ifndef INT8_C
    254 #error INT8_C not defined
    255 #endif
    256 
    257 #ifndef INT16_C
    258 #error INT16_C not defined
    259 #endif
    260 
    261 #ifndef INT32_C
    262 #error INT32_C not defined
    263 #endif
    264 
    265 #ifndef INT64_C
    266 #error INT64_C not defined
    267 #endif
    268 
    269 #ifndef UINT8_C
    270 #error UINT8_C not defined
    271 #endif
    272 
    273 #ifndef UINT16_C
    274 #error UINT16_C not defined
    275 #endif
    276 
    277 #ifndef UINT32_C
    278 #error UINT32_C not defined
    279 #endif
    280 
    281 #ifndef UINT64_C
    282 #error UINT64_C not defined
    283 #endif
    284 
    285 #ifndef INTMAX_C
    286 #error INTMAX_C not defined
    287 #endif
    288 
    289 #ifndef UINTMAX_C
    290 #error UINTMAX_C not defined
    291 #endif
    292 }
    293