stdint.h revision 63b4fe6c118c14707d297f6f879e5e7973b8e6ff
12a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/*===---- stdint.h - Standard header for sized integer types --------------===*\
22a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner *
32a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * Copyright (c) 2009 Chris Lattner
42a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner *
52a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * Permission is hereby granted, free of charge, to any person obtaining a copy
62a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * of this software and associated documentation files (the "Software"), to deal
72a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * in the Software without restriction, including without limitation the rights
82a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
92a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * copies of the Software, and to permit persons to whom the Software is
102a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * furnished to do so, subject to the following conditions:
112a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner *
122a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * The above copyright notice and this permission notice shall be included in
132a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * all copies or substantial portions of the Software.
142a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner *
152a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
162a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
172a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
182a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
192a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
202a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
212a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * THE SOFTWARE.
222a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner *
232a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner\*===----------------------------------------------------------------------===*/
242a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
252a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#ifndef __STDINT_H
262a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define __STDINT_H
272a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
282a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* We currently only support targets with power of two, 2s complement integers.
292a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */
302a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
312a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.1.1 Exact-width integer types.
322a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * C99 7.18.1.2 Minimum-width integer types.
332a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * C99 7.18.1.3 Fastest minimum-width integer types.
342a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * Since we only support pow-2 targets, these map directly to exact width types.
352a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */
362a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
372a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef signed __INT8_TYPE__ int8_t;
3863b4fe6c118c14707d297f6f879e5e7973b8e6ffSebastian Redltypedef unsigned __INT8_TYPE__ uint8_t;
392a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int8_t     int_least8_t;
402a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint8_t   uint_least8_t;
412a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int8_t     int_fast8_t;
422a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint8_t   uint_fast8_t;
432a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
442a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef __INT16_TYPE__ int16_t;
452a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef unsigned __INT16_TYPE__ uint16_t;
462a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int16_t   int_least16_t;
472a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint16_t uint_least16_t;
482a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int16_t   int_fast16_t;
492a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint16_t uint_fast16_t;
502a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
512a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef __INT32_TYPE__ int32_t;
522a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef unsigned __INT32_TYPE__ uint32_t;
532a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int32_t   int_least32_t;
542a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint32_t uint_least32_t;
552a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int32_t   int_fast32_t;
562a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint32_t uint_fast32_t;
572a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
582a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* Some 16-bit targets do not have a 64-bit datatype.  Only define the 64-bit
592a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * typedefs if there is something to typedef them to.
602a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */
612a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#ifdef __INT64_TYPE__
622a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef __INT64_TYPE__ int64_t;
632a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef unsigned __INT64_TYPE__ uint64_t;
642a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int64_t   int_least64_t;
652a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint64_t uint_least64_t;
662a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int64_t   int_fast64_t;
672a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint64_t uint_fast64_t;
682a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif
692a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
702a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
712a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.1.4 Integer types capable of holding object pointers.
722a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */
732a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#if __POINTER_WIDTH__ == 64
742a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int64_t  intptr_t;
752a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint64_t uintptr_t;
7663b4fe6c118c14707d297f6f879e5e7973b8e6ffSebastian Redl#elif __POINTER_WIDTH__ == 32
772a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int32_t  intptr_t;
782a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint32_t uintptr_t;
7963b4fe6c118c14707d297f6f879e5e7973b8e6ffSebastian Redl#elif __POINTER_WIDTH__ == 16
802a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int16_t  intptr_t;
812a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint16_t uintptr_t;
822a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#else
832a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#error "unknown or unset pointer width!"
842a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif
852a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
862a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.1.5 Greatest-width integer types.
872a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */
882a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef __INTMAX_TYPE__   intmax_t;
892a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef __UINTMAX_TYPE__ uintmax_t;
902a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
912a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.2.1 Limits of exact-width integer types.
922a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * Fixed sized values have fixed size max/min.
932a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * C99 7.18.2.2 Limits of minimum-width integer types.
942a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * Since we map these directly onto fixed-sized types, these values the same.
952a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * C99 7.18.2.3 Limits of fastest minimum-width integer types.
962a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */
972a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
982a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS)
992a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1002a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT8_MAX    ((int8_t)127)
1012a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT8_MIN   ((int8_t)-128)
1022a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT8_MAX  ((uint8_t)255)
1032a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST8_MIN   INT8_MIN
1042a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST8_MAX   INT8_MAX
1052a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_LEAST8_MAX UINT8_MAX
1062a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST8_MIN    INT8_MIN
1072a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST8_MAX    INT8_MAX
1082a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_FAST8_MAX  UINT8_MAX
1092a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1102a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT16_MAX    ((int16_t)32767)
1112a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT16_MIN   ((int16_t)-32768)
1122a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT16_MAX ((uint16_t)(65535))
1132a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST16_MIN   INT16_MIN
1142a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST16_MAX   INT16_MAX
1152a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_LEAST16_MAX UINT16_MAX
1162a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST16_MIN    INT16_MIN
1172a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST16_MAX    INT16_MAX
1182a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_FAST16_MAX  UINT16_MAX
1192a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1202a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT32_MAX         ((int32_t)2147483647LL)
1212a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT32_MIN    ((int32_t)(-2147483647LL-1))
1222a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT32_MAX      ((uint32_t)4294967295ULL)
1232a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST32_MIN  INT32_MIN
1242a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST32_MAX  INT32_MAX
1252a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_LEAST32_MAX UINT32_MAX
1262a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST32_MIN   INT32_MIN
1272a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST32_MAX   INT32_MAX
1282a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_FAST32_MAX  UINT32_MAX
1292a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1302a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* If we do not have 64-bit support, don't define the 64-bit size macros. */
1312a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#ifndef __INT64_TYPE__
1322a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT64_MAX      ((int64_t)9223372036854775807LL)
1332a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT64_MIN ((int64_t)(-9223372036854775807LL-1))
1342a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT64_MAX  ((uint64_t)18446744073709551615ULL)
1352a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST64_MIN  INT64_MIN
1362a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST64_MAX  INT64_MAX
1372a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_LEAST64_MAX UINT64_MAX
1382a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST64_MIN    INT64_MIN
1392a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST64_MAX    INT64_MAX
1402a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_FAST64_MAX  UINT64_MAX
1412a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif
1422a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1432a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.2.4 Limits of integer types capable of holding object pointers. */
1442a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.3 Limits of other integer types. */
1452a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1462a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#if __POINTER_WIDTH__ == 64
1472a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1482a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define  INTPTR_MIN  INT64_MIN
1492a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define  INTPTR_MAX  INT64_MAX
1502a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINTPTR_MAX UINT64_MAX
1512a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MIN  INT64_MIN
1522a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MAX  INT64_MAX
1532a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIZE_MAX    UINT64_MAX
1542a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
15563b4fe6c118c14707d297f6f879e5e7973b8e6ffSebastian Redl#elif __POINTER_WIDTH__ == 32
1562a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1572a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define  INTPTR_MIN  INT32_MIN
1582a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define  INTPTR_MAX  INT32_MAX
1592a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINTPTR_MAX UINT32_MAX
1602a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MIN  INT32_MIN
1612a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MAX  INT32_MAX
1622a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIZE_MAX    UINT32_MAX
1632a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
16463b4fe6c118c14707d297f6f879e5e7973b8e6ffSebastian Redl#elif __POINTER_WIDTH__ == 16
1652a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1662a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define  INTPTR_MIN  INT16_MIN
1672a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define  INTPTR_MAX  INT16_MAX
1682a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINTPTR_MAX UINT16_MAX
1692a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MIN  INT16_MIN
1702a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MAX  INT16_MAX
1712a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIZE_MAX    UINT16_MAX
1722a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1732a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#else
1742a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#error "unknown or unset pointer width!"
1752a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif
1762a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1772a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.2.5 Limits of greatest-width integer types. */
1782a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTMAX_MIN  (-__INTMAX_MAX__-1)
1792a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTMAX_MAX   __INTMAX_MAX__
1802a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINTMAX_MAX (__INTMAX_MAX__*2+1)
1812a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1822a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.3 Limits of other integer types. */
1832a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIG_ATOMIC_MIN INT32_MIN
1842a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIG_ATOMIC_MAX INT32_MAX
1852a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define WINT_MIN       INT32_MIN
1862a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define WINT_MAX       INT32_MAX
1872a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1882a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* FIXME: if we ever support a target with unsigned wchar_t, this should be
1892a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * 0 .. Max.
1902a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */
1912a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#ifndef WCHAR_MAX
1922a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define WCHAR_MAX __WCHAR_MAX__
1932a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif
1942a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#ifndef WCHAR_MIN
1952a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define WCHAR_MIN (-__WCHAR_MAX__-1)
1962a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif
1972a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
1982a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif /* C++ needs __STDC_LIMIT_MACROS. */
1992a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
2002a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.4 Macros for minimum-width integer constants. */
2012a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
2022a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 Footnote 220: C++ requires __STDC_CONSTANT_MACROS. */
2032a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS)
2042a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
2052a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT8_C(v)   (v)
2062a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT8_C(v)  (v##U)
2072a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT16_C(v)  (v)
2082a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT16_C(v) (v##U)
2092a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT32_C(v)  (v)
2102a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT32_C(v) (v##U)
2112a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
2122a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* If we do not have 64-bit support, don't define the 64-bit size macros. */
2132a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#ifndef __INT64_TYPE__
2142a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT64_C(v)  (v##LL)
2152a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT64_C(v) (v##ULL)
2162a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif
2172a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
2182a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* 7.18.4.2 Macros for greatest-width integer constants. */
2192a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTMAX_C(v)  (v ## LL)
2202a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINTMAX_C(v) (v ## ULL)
2212a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
2222a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif  /* C++ requires __STDC_CONSTANT_MACROS */
2232a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner
2242a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif /* __STDINT_H */
225