stdint.h revision f894bd03546b2f9aa70c5a7a50a90d333c4753dc
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 */ 7325d69b57ccef6e598d6a4cd8823ee24d56b2c9f7Chris Lattner#if (1LL << (__POINTER_WIDTH__-1))-1 == __LONG_MAX__ 7425d69b57ccef6e598d6a4cd8823ee24d56b2c9f7Chris Lattner/* If the pointer size is equal to long, use long. This is for compatibility 7525d69b57ccef6e598d6a4cd8823ee24d56b2c9f7Chris Lattner * with many systems which just use long and expect it to work in 32-bit and 7625d69b57ccef6e598d6a4cd8823ee24d56b2c9f7Chris Lattner * 64-bit mode. If long is not suitable, we use a fixed size type below. 7725d69b57ccef6e598d6a4cd8823ee24d56b2c9f7Chris Lattner */ 7825d69b57ccef6e598d6a4cd8823ee24d56b2c9f7Chris Lattnertypedef long intptr_t; 7925d69b57ccef6e598d6a4cd8823ee24d56b2c9f7Chris Lattnertypedef unsigned long uintptr_t; 8025d69b57ccef6e598d6a4cd8823ee24d56b2c9f7Chris Lattner#elif __POINTER_WIDTH__ == 64 812a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int64_t intptr_t; 822a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint64_t uintptr_t; 8363b4fe6c118c14707d297f6f879e5e7973b8e6ffSebastian Redl#elif __POINTER_WIDTH__ == 32 842a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int32_t intptr_t; 852a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint32_t uintptr_t; 8663b4fe6c118c14707d297f6f879e5e7973b8e6ffSebastian Redl#elif __POINTER_WIDTH__ == 16 872a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int16_t intptr_t; 882a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint16_t uintptr_t; 892a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#else 902a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#error "unknown or unset pointer width!" 912a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif 922a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 932a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.1.5 Greatest-width integer types. 942a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */ 952a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef __INTMAX_TYPE__ intmax_t; 962a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef __UINTMAX_TYPE__ uintmax_t; 972a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 982a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.2.1 Limits of exact-width integer types. 992a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * Fixed sized values have fixed size max/min. 1002a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * C99 7.18.2.2 Limits of minimum-width integer types. 1012a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * Since we map these directly onto fixed-sized types, these values the same. 1022a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * C99 7.18.2.3 Limits of fastest minimum-width integer types. 1032a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */ 1042a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1052a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) 1062a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 107f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define INT8_MAX 127 108f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define INT8_MIN -128 109f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define UINT8_MAX 255U 1102a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST8_MIN INT8_MIN 1112a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST8_MAX INT8_MAX 1122a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_LEAST8_MAX UINT8_MAX 1132a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST8_MIN INT8_MIN 1142a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST8_MAX INT8_MAX 1152a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_FAST8_MAX UINT8_MAX 1162a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 117f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define INT16_MAX 32767 118f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define INT16_MIN -32768 119f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define UINT16_MAX 65535U 1202a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST16_MIN INT16_MIN 1212a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST16_MAX INT16_MAX 1222a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_LEAST16_MAX UINT16_MAX 1232a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST16_MIN INT16_MIN 1242a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST16_MAX INT16_MAX 1252a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_FAST16_MAX UINT16_MAX 1262a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 127f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define INT32_MAX 2147483647 128f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define INT32_MIN -2147483647-1 129f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define UINT32_MAX 4294967295U 1302a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST32_MIN INT32_MIN 1312a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST32_MAX INT32_MAX 1322a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_LEAST32_MAX UINT32_MAX 1332a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST32_MIN INT32_MIN 1342a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST32_MAX INT32_MAX 1352a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_FAST32_MAX UINT32_MAX 1362a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1372a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* If we do not have 64-bit support, don't define the 64-bit size macros. */ 1382a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#ifndef __INT64_TYPE__ 139f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define INT64_MAX 9223372036854775807LL 140f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define INT64_MIN (-9223372036854775807LL-1) 141f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define UINT64_MAX (18446744073709551615ULL) 1422a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST64_MIN INT64_MIN 1432a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST64_MAX INT64_MAX 1442a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_LEAST64_MAX UINT64_MAX 1452a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST64_MIN INT64_MIN 1462a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST64_MAX INT64_MAX 1472a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_FAST64_MAX UINT64_MAX 1482a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif 1492a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1502a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.2.4 Limits of integer types capable of holding object pointers. */ 1512a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.3 Limits of other integer types. */ 1522a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1532a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#if __POINTER_WIDTH__ == 64 1542a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1552a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTPTR_MIN INT64_MIN 1562a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTPTR_MAX INT64_MAX 1572a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINTPTR_MAX UINT64_MAX 1582a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MIN INT64_MIN 1592a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MAX INT64_MAX 1602a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIZE_MAX UINT64_MAX 1612a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 16263b4fe6c118c14707d297f6f879e5e7973b8e6ffSebastian Redl#elif __POINTER_WIDTH__ == 32 1632a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1642a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTPTR_MIN INT32_MIN 1652a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTPTR_MAX INT32_MAX 1662a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINTPTR_MAX UINT32_MAX 1672a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MIN INT32_MIN 1682a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MAX INT32_MAX 1692a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIZE_MAX UINT32_MAX 1702a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 17163b4fe6c118c14707d297f6f879e5e7973b8e6ffSebastian Redl#elif __POINTER_WIDTH__ == 16 1722a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1732a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTPTR_MIN INT16_MIN 1742a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTPTR_MAX INT16_MAX 1752a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINTPTR_MAX UINT16_MAX 1762a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MIN INT16_MIN 1772a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MAX INT16_MAX 1782a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIZE_MAX UINT16_MAX 1792a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1802a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#else 1812a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#error "unknown or unset pointer width!" 1822a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif 1832a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1842a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.2.5 Limits of greatest-width integer types. */ 1852a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTMAX_MIN (-__INTMAX_MAX__-1) 1862a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTMAX_MAX __INTMAX_MAX__ 1872a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINTMAX_MAX (__INTMAX_MAX__*2+1) 1882a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1892a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.3 Limits of other integer types. */ 1902a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIG_ATOMIC_MIN INT32_MIN 1912a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIG_ATOMIC_MAX INT32_MAX 1922a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define WINT_MIN INT32_MIN 1932a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define WINT_MAX INT32_MAX 1942a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1952a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* FIXME: if we ever support a target with unsigned wchar_t, this should be 1962a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * 0 .. Max. 1972a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */ 1982a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#ifndef WCHAR_MAX 1992a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define WCHAR_MAX __WCHAR_MAX__ 2002a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif 2012a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#ifndef WCHAR_MIN 2022a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define WCHAR_MIN (-__WCHAR_MAX__-1) 2032a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif 2042a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2052a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif /* C++ needs __STDC_LIMIT_MACROS. */ 2062a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2072a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.4 Macros for minimum-width integer constants. */ 2082a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2092a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 Footnote 220: C++ requires __STDC_CONSTANT_MACROS. */ 2102a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) 2112a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2122a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT8_C(v) (v) 2132a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT8_C(v) (v##U) 2142a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT16_C(v) (v) 2152a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT16_C(v) (v##U) 2162a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT32_C(v) (v) 2172a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT32_C(v) (v##U) 2182a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2192a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* If we do not have 64-bit support, don't define the 64-bit size macros. */ 2202a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#ifndef __INT64_TYPE__ 2212a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT64_C(v) (v##LL) 2222a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT64_C(v) (v##ULL) 2232a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif 2242a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2252a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* 7.18.4.2 Macros for greatest-width integer constants. */ 2262a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTMAX_C(v) (v ## LL) 2272a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINTMAX_C(v) (v ## ULL) 2282a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2292a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif /* C++ requires __STDC_CONSTANT_MACROS */ 2302a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2312a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif /* __STDINT_H */ 232