stdint.h revision 06dcf6b09257ac2382a969fc8c7b954adbc4a344
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 256fdca0e1f8352a102f4f0cea0dc29c2209182b15Eli Friedman#ifndef __CLANG_STDINT_H 266fdca0e1f8352a102f4f0cea0dc29c2209182b15Eli Friedman#define __CLANG_STDINT_H 276fdca0e1f8352a102f4f0cea0dc29c2209182b15Eli Friedman 286fdca0e1f8352a102f4f0cea0dc29c2209182b15Eli Friedman/* If we're hosted, fall back to the system's stdint.h, which might have 296fdca0e1f8352a102f4f0cea0dc29c2209182b15Eli Friedman * additional definitions. 306fdca0e1f8352a102f4f0cea0dc29c2209182b15Eli Friedman */ 3192bd8c70a6837b647a6c55964f8d0a50bf561dbcJohn Thompson#if __STDC_HOSTED__ && \ 3292bd8c70a6837b647a6c55964f8d0a50bf561dbcJohn Thompson defined(__has_include_next) && __has_include_next(<stdint.h>) 336fdca0e1f8352a102f4f0cea0dc29c2209182b15Eli Friedman# include_next <stdint.h> 346fdca0e1f8352a102f4f0cea0dc29c2209182b15Eli Friedman#else 352a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 362a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* We currently only support targets with power of two, 2s complement integers. 372a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */ 382a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 392a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.1.1 Exact-width integer types. 402a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * C99 7.18.1.2 Minimum-width integer types. 412a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * C99 7.18.1.3 Fastest minimum-width integer types. 422a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * Since we only support pow-2 targets, these map directly to exact width types. 432a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */ 442a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 4506dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner/* Some 16-bit targets do not have a 64-bit datatype. Only define the 64-bit 4606dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner * typedefs if there is something to typedef them to. 4706dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner */ 48ca93195baf1076ee6232a722f5ea5e580fc67a4fChris Lattner#ifdef __INT64_TYPE__ 4906dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#ifndef __int8_t_defined /* glibc does weird things with sys/types.h */ 50ca93195baf1076ee6232a722f5ea5e580fc67a4fChris Lattnertypedef __INT64_TYPE__ int64_t; 51ca93195baf1076ee6232a722f5ea5e580fc67a4fChris Lattner#endif 5206dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef unsigned __INT64_TYPE__ uint64_t; 5306dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef int64_t int_least64_t; 5406dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef uint64_t uint_least64_t; 5506dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef int64_t int_fast64_t; 5606dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef uint64_t uint_fast64_t; 57ca93195baf1076ee6232a722f5ea5e580fc67a4fChris Lattner#endif 58ca93195baf1076ee6232a722f5ea5e580fc67a4fChris Lattner 5906dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#ifndef __int8_t_defined /* glibc does weird things with sys/types.h */ 6006dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef __INT32_TYPE__ int32_t; 6106dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#endif 62ca93195baf1076ee6232a722f5ea5e580fc67a4fChris Lattner#ifndef __uint32_t_defined /* more glibc compatibility */ 63ca93195baf1076ee6232a722f5ea5e580fc67a4fChris Lattner#define __uint32_t_defined 642a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef unsigned __INT32_TYPE__ uint32_t; 65ca93195baf1076ee6232a722f5ea5e580fc67a4fChris Lattner#endif 662a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int32_t int_least32_t; 672a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint32_t uint_least32_t; 682a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef int32_t int_fast32_t; 692a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef uint32_t uint_fast32_t; 702a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 7106dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner 7206dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#ifndef __int8_t_defined /* glibc does weird things with sys/types.h */ 7306dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef __INT16_TYPE__ int16_t; 742a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif 7506dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef unsigned __INT16_TYPE__ uint16_t; 7606dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef int16_t int_least16_t; 7706dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef uint16_t uint_least16_t; 7806dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef int16_t int_fast16_t; 7906dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef uint16_t uint_fast16_t; 802a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 812a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 8206dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#ifndef __int8_t_defined /* glibc does weird things with sys/types.h */ 8306dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef signed __INT8_TYPE__ int8_t; 8406dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#endif 8506dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef unsigned __INT8_TYPE__ uint8_t; 8606dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef int8_t int_least8_t; 8706dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef uint8_t uint_least8_t; 8806dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef int8_t int_fast8_t; 8906dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattnertypedef uint8_t uint_fast8_t; 9006dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner 9106dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner/* prevent glibc sys/types.h from defining conflicting types */ 9206dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#ifndef __int8_t_defined 9306dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner# define __int8_t_defined 9406dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#endif /* __int8_t_defined */ 9506dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner 962a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.1.4 Integer types capable of holding object pointers. 972a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */ 9840e60c27d09d0561cd3ab41c332e3b0838e899ddChris Lattner#ifndef __intptr_t_defined 996ad474f82f0cf32e13128d89fa5ad3a37ae73530Chris Lattnertypedef __INTPTR_TYPE__ intptr_t; 10040e60c27d09d0561cd3ab41c332e3b0838e899ddChris Lattner#define __intptr_t_defined 10140e60c27d09d0561cd3ab41c332e3b0838e899ddChris Lattner#endif 102cf117d367ee75d44dfeaf588e00ad0bfbad64ef7Daniel Dunbartypedef unsigned __INTPTR_TYPE__ uintptr_t; 1032a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1042a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.1.5 Greatest-width integer types. 1052a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */ 1062a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef __INTMAX_TYPE__ intmax_t; 1072a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattnertypedef __UINTMAX_TYPE__ uintmax_t; 1082a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 10906dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner/* C99 7.18.4 Macros for minimum-width integer constants. 11006dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner * 11106dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner * Note that C++ should not check __STDC_CONSTANT_MACROS here, contrary to the 11206dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner * claims of the C standard (see C++ 18.3.1p2, [cstdint.syn]). 11306dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner */ 11406dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner 11506dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner/* Only define the 64-bit size macros if we have 64-bit support. */ 11606dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#ifdef __INT64_TYPE__ 11706dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT64_C(v) (v##LL) 11806dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define UINT64_C(v) (v##ULL) 11906dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#endif 12006dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner 12106dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT32_C(v) (v) 12206dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define UINT32_C(v) (v##U) 12306dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT16_C(v) (v) 12406dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define UINT16_C(v) (v##U) 12506dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT8_C(v) (v) 12606dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define UINT8_C(v) (v##U) 12706dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner 1282a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.2.1 Limits of exact-width integer types. 1292a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * Fixed sized values have fixed size max/min. 1302a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * C99 7.18.2.2 Limits of minimum-width integer types. 1312a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * Since we map these directly onto fixed-sized types, these values the same. 1322a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * C99 7.18.2.3 Limits of fastest minimum-width integer types. 133614842802476068c08bced367fa97de4963fd6afChris Lattner * 134614842802476068c08bced367fa97de4963fd6afChris Lattner * Note that C++ should not check __STDC_LIMIT_MACROS here, contrary to the 135614842802476068c08bced367fa97de4963fd6afChris Lattner * claims of the C standard (see C++ 18.3.1p2, [cstdint.syn]). 1362a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */ 1372a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1382a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* If we do not have 64-bit support, don't define the 64-bit size macros. */ 139ab775f62eab83f06ed972e573599031719ae2a9fChris Lattner#ifdef __INT64_TYPE__ 140f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define INT64_MAX 9223372036854775807LL 141f894bd03546b2f9aa70c5a7a50a90d333c4753dcChris Lattner#define INT64_MIN (-9223372036854775807LL-1) 1427ed4f39518e7ae1069d820d2b8bd462d6ee3fd9aChris Lattner#define UINT64_MAX 18446744073709551615ULL 1432a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST64_MIN INT64_MIN 1442a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_LEAST64_MAX INT64_MAX 1452a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_LEAST64_MAX UINT64_MAX 1462a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST64_MIN INT64_MIN 1472a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INT_FAST64_MAX INT64_MAX 1482a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINT_FAST64_MAX UINT64_MAX 1492a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif 1502a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 15106dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT32_MAX 2147483647 15206dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT32_MIN (-2147483647-1) 15306dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define UINT32_MAX 4294967295U 15406dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT_LEAST32_MIN INT32_MIN 15506dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT_LEAST32_MAX INT32_MAX 15606dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define UINT_LEAST32_MAX UINT32_MAX 15706dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT_FAST32_MIN INT32_MIN 15806dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT_FAST32_MAX INT32_MAX 15906dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define UINT_FAST32_MAX UINT32_MAX 16006dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner 16106dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT16_MAX 32767 16206dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT16_MIN (-32768) 16306dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define UINT16_MAX 65535 16406dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT_LEAST16_MIN INT16_MIN 16506dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT_LEAST16_MAX INT16_MAX 16606dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define UINT_LEAST16_MAX UINT16_MAX 16706dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT_FAST16_MIN INT16_MIN 16806dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT_FAST16_MAX INT16_MAX 16906dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define UINT_FAST16_MAX UINT16_MAX 17006dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner 17106dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT8_MAX 127 17206dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT8_MIN (-128) 17306dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define UINT8_MAX 255 17406dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT_LEAST8_MIN INT8_MIN 17506dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT_LEAST8_MAX INT8_MAX 17606dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define UINT_LEAST8_MAX UINT8_MAX 17706dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT_FAST8_MIN INT8_MIN 17806dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define INT_FAST8_MAX INT8_MAX 17906dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner#define UINT_FAST8_MAX UINT8_MAX 18006dcf6b09257ac2382a969fc8c7b954adbc4a344Chris Lattner 1812a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.2.4 Limits of integer types capable of holding object pointers. */ 1822a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.3 Limits of other integer types. */ 1832a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1842a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#if __POINTER_WIDTH__ == 64 1852a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1862a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTPTR_MIN INT64_MIN 1872a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTPTR_MAX INT64_MAX 1882a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINTPTR_MAX UINT64_MAX 1892a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MIN INT64_MIN 1902a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MAX INT64_MAX 1912a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIZE_MAX UINT64_MAX 1922a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 19363b4fe6c118c14707d297f6f879e5e7973b8e6ffSebastian Redl#elif __POINTER_WIDTH__ == 32 1942a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 1952a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTPTR_MIN INT32_MIN 1962a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTPTR_MAX INT32_MAX 1972a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINTPTR_MAX UINT32_MAX 1982a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MIN INT32_MIN 1992a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MAX INT32_MAX 2002a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIZE_MAX UINT32_MAX 2012a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 20263b4fe6c118c14707d297f6f879e5e7973b8e6ffSebastian Redl#elif __POINTER_WIDTH__ == 16 2032a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2042a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTPTR_MIN INT16_MIN 2052a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTPTR_MAX INT16_MAX 2062a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define UINTPTR_MAX UINT16_MAX 2072a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MIN INT16_MIN 2082a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define PTRDIFF_MAX INT16_MAX 2092a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIZE_MAX UINT16_MAX 2102a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2112a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#else 2122a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#error "unknown or unset pointer width!" 2132a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif 2142a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2152a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.2.5 Limits of greatest-width integer types. */ 2162a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTMAX_MIN (-__INTMAX_MAX__-1) 2172a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define INTMAX_MAX __INTMAX_MAX__ 218c865f7ae8be99de29c9f2ab68573c11e90b636d1Chris Lattner#define UINTMAX_MAX (__INTMAX_MAX__*2ULL+1ULL) 2192a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2202a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* C99 7.18.3 Limits of other integer types. */ 2212a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIG_ATOMIC_MIN INT32_MIN 2222a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define SIG_ATOMIC_MAX INT32_MAX 2232a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define WINT_MIN INT32_MIN 2242a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define WINT_MAX INT32_MAX 2252a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2262a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* FIXME: if we ever support a target with unsigned wchar_t, this should be 2272a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner * 0 .. Max. 2282a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner */ 2292a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#ifndef WCHAR_MAX 2302a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define WCHAR_MAX __WCHAR_MAX__ 2312a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif 2322a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#ifndef WCHAR_MIN 2332a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#define WCHAR_MIN (-__WCHAR_MAX__-1) 2342a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner#endif 2352a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2362a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner/* 7.18.4.2 Macros for greatest-width integer constants. */ 2377ed4f39518e7ae1069d820d2b8bd462d6ee3fd9aChris Lattner#define INTMAX_C(v) (v##LL) 2387ed4f39518e7ae1069d820d2b8bd462d6ee3fd9aChris Lattner#define UINTMAX_C(v) (v##ULL) 2392a67f7bd99d004f78a961a16b6525f61313dd974Chris Lattner 2406fdca0e1f8352a102f4f0cea0dc29c2209182b15Eli Friedman#endif /* __STDC_HOSTED__ */ 2416fdca0e1f8352a102f4f0cea0dc29c2209182b15Eli Friedman#endif /* __CLANG_STDINT_H */ 242