18d7e7a98SRuslan Bukin /*- 28d7e7a98SRuslan Bukin * Copyright (c) 2001, 2002 Mike Barcroft <mike@FreeBSD.org> 38d7e7a98SRuslan Bukin * Copyright (c) 2001 The NetBSD Foundation, Inc. 48d7e7a98SRuslan Bukin * All rights reserved. 58d7e7a98SRuslan Bukin * 68d7e7a98SRuslan Bukin * This code is derived from software contributed to The NetBSD Foundation 78d7e7a98SRuslan Bukin * by Klaus Klein. 88d7e7a98SRuslan Bukin * 98d7e7a98SRuslan Bukin * Redistribution and use in source and binary forms, with or without 108d7e7a98SRuslan Bukin * modification, are permitted provided that the following conditions 118d7e7a98SRuslan Bukin * are met: 128d7e7a98SRuslan Bukin * 1. Redistributions of source code must retain the above copyright 138d7e7a98SRuslan Bukin * notice, this list of conditions and the following disclaimer. 148d7e7a98SRuslan Bukin * 2. Redistributions in binary form must reproduce the above copyright 158d7e7a98SRuslan Bukin * notice, this list of conditions and the following disclaimer in the 168d7e7a98SRuslan Bukin * documentation and/or other materials provided with the distribution. 178d7e7a98SRuslan Bukin * 188d7e7a98SRuslan Bukin * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 198d7e7a98SRuslan Bukin * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 208d7e7a98SRuslan Bukin * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 218d7e7a98SRuslan Bukin * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 228d7e7a98SRuslan Bukin * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 238d7e7a98SRuslan Bukin * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 248d7e7a98SRuslan Bukin * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 258d7e7a98SRuslan Bukin * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 268d7e7a98SRuslan Bukin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 278d7e7a98SRuslan Bukin * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 288d7e7a98SRuslan Bukin * POSSIBILITY OF SUCH DAMAGE. 298d7e7a98SRuslan Bukin */ 308d7e7a98SRuslan Bukin 318d7e7a98SRuslan Bukin #ifndef _MACHINE__STDINT_H_ 328d7e7a98SRuslan Bukin #define _MACHINE__STDINT_H_ 338d7e7a98SRuslan Bukin 348d7e7a98SRuslan Bukin #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) 358d7e7a98SRuslan Bukin 368d7e7a98SRuslan Bukin #define INT8_C(c) (c) 378d7e7a98SRuslan Bukin #define INT16_C(c) (c) 388d7e7a98SRuslan Bukin #define INT32_C(c) (c) 398d7e7a98SRuslan Bukin #define INT64_C(c) (c ## L) 408d7e7a98SRuslan Bukin 418d7e7a98SRuslan Bukin #define UINT8_C(c) (c) 428d7e7a98SRuslan Bukin #define UINT16_C(c) (c) 438d7e7a98SRuslan Bukin #define UINT32_C(c) (c ## U) 448d7e7a98SRuslan Bukin #define UINT64_C(c) (c ## UL) 458d7e7a98SRuslan Bukin 468d7e7a98SRuslan Bukin #define INTMAX_C(c) INT64_C(c) 478d7e7a98SRuslan Bukin #define UINTMAX_C(c) UINT64_C(c) 488d7e7a98SRuslan Bukin 498d7e7a98SRuslan Bukin #endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */ 508d7e7a98SRuslan Bukin 518d7e7a98SRuslan Bukin #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) 528d7e7a98SRuslan Bukin 538d7e7a98SRuslan Bukin /* 548d7e7a98SRuslan Bukin * ISO/IEC 9899:1999 558d7e7a98SRuslan Bukin * 7.18.2.1 Limits of exact-width integer types 568d7e7a98SRuslan Bukin */ 578d7e7a98SRuslan Bukin /* Minimum values of exact-width signed integer types. */ 588d7e7a98SRuslan Bukin #define INT8_MIN (-0x7f-1) 598d7e7a98SRuslan Bukin #define INT16_MIN (-0x7fff-1) 608d7e7a98SRuslan Bukin #define INT32_MIN (-0x7fffffff-1) 618d7e7a98SRuslan Bukin #define INT64_MIN (-0x7fffffffffffffffL-1) 628d7e7a98SRuslan Bukin 638d7e7a98SRuslan Bukin /* Maximum values of exact-width signed integer types. */ 648d7e7a98SRuslan Bukin #define INT8_MAX 0x7f 658d7e7a98SRuslan Bukin #define INT16_MAX 0x7fff 668d7e7a98SRuslan Bukin #define INT32_MAX 0x7fffffff 678d7e7a98SRuslan Bukin #define INT64_MAX 0x7fffffffffffffffL 688d7e7a98SRuslan Bukin 698d7e7a98SRuslan Bukin /* Maximum values of exact-width unsigned integer types. */ 708d7e7a98SRuslan Bukin #define UINT8_MAX 0xff 718d7e7a98SRuslan Bukin #define UINT16_MAX 0xffff 728d7e7a98SRuslan Bukin #define UINT32_MAX 0xffffffffU 738d7e7a98SRuslan Bukin #define UINT64_MAX 0xffffffffffffffffUL 748d7e7a98SRuslan Bukin 758d7e7a98SRuslan Bukin /* 768d7e7a98SRuslan Bukin * ISO/IEC 9899:1999 778d7e7a98SRuslan Bukin * 7.18.2.2 Limits of minimum-width integer types 788d7e7a98SRuslan Bukin */ 798d7e7a98SRuslan Bukin /* Minimum values of minimum-width signed integer types. */ 808d7e7a98SRuslan Bukin #define INT_LEAST8_MIN INT8_MIN 818d7e7a98SRuslan Bukin #define INT_LEAST16_MIN INT16_MIN 828d7e7a98SRuslan Bukin #define INT_LEAST32_MIN INT32_MIN 838d7e7a98SRuslan Bukin #define INT_LEAST64_MIN INT64_MIN 848d7e7a98SRuslan Bukin 858d7e7a98SRuslan Bukin /* Maximum values of minimum-width signed integer types. */ 868d7e7a98SRuslan Bukin #define INT_LEAST8_MAX INT8_MAX 878d7e7a98SRuslan Bukin #define INT_LEAST16_MAX INT16_MAX 888d7e7a98SRuslan Bukin #define INT_LEAST32_MAX INT32_MAX 898d7e7a98SRuslan Bukin #define INT_LEAST64_MAX INT64_MAX 908d7e7a98SRuslan Bukin 918d7e7a98SRuslan Bukin /* Maximum values of minimum-width unsigned integer types. */ 928d7e7a98SRuslan Bukin #define UINT_LEAST8_MAX UINT8_MAX 938d7e7a98SRuslan Bukin #define UINT_LEAST16_MAX UINT16_MAX 948d7e7a98SRuslan Bukin #define UINT_LEAST32_MAX UINT32_MAX 958d7e7a98SRuslan Bukin #define UINT_LEAST64_MAX UINT64_MAX 968d7e7a98SRuslan Bukin 978d7e7a98SRuslan Bukin /* 988d7e7a98SRuslan Bukin * ISO/IEC 9899:1999 998d7e7a98SRuslan Bukin * 7.18.2.3 Limits of fastest minimum-width integer types 1008d7e7a98SRuslan Bukin */ 1018d7e7a98SRuslan Bukin /* Minimum values of fastest minimum-width signed integer types. */ 1028d7e7a98SRuslan Bukin #define INT_FAST8_MIN INT32_MIN 1038d7e7a98SRuslan Bukin #define INT_FAST16_MIN INT32_MIN 1048d7e7a98SRuslan Bukin #define INT_FAST32_MIN INT32_MIN 1058d7e7a98SRuslan Bukin #define INT_FAST64_MIN INT64_MIN 1068d7e7a98SRuslan Bukin 1078d7e7a98SRuslan Bukin /* Maximum values of fastest minimum-width signed integer types. */ 1088d7e7a98SRuslan Bukin #define INT_FAST8_MAX INT32_MAX 1098d7e7a98SRuslan Bukin #define INT_FAST16_MAX INT32_MAX 1108d7e7a98SRuslan Bukin #define INT_FAST32_MAX INT32_MAX 1118d7e7a98SRuslan Bukin #define INT_FAST64_MAX INT64_MAX 1128d7e7a98SRuslan Bukin 1138d7e7a98SRuslan Bukin /* Maximum values of fastest minimum-width unsigned integer types. */ 1148d7e7a98SRuslan Bukin #define UINT_FAST8_MAX UINT32_MAX 1158d7e7a98SRuslan Bukin #define UINT_FAST16_MAX UINT32_MAX 1168d7e7a98SRuslan Bukin #define UINT_FAST32_MAX UINT32_MAX 1178d7e7a98SRuslan Bukin #define UINT_FAST64_MAX UINT64_MAX 1188d7e7a98SRuslan Bukin 1198d7e7a98SRuslan Bukin /* 1208d7e7a98SRuslan Bukin * ISO/IEC 9899:1999 1218d7e7a98SRuslan Bukin * 7.18.2.4 Limits of integer types capable of holding object pointers 1228d7e7a98SRuslan Bukin */ 1238d7e7a98SRuslan Bukin #define INTPTR_MIN INT64_MIN 1248d7e7a98SRuslan Bukin #define INTPTR_MAX INT64_MAX 1258d7e7a98SRuslan Bukin #define UINTPTR_MAX UINT64_MAX 1268d7e7a98SRuslan Bukin 1278d7e7a98SRuslan Bukin /* 1288d7e7a98SRuslan Bukin * ISO/IEC 9899:1999 1298d7e7a98SRuslan Bukin * 7.18.2.5 Limits of greatest-width integer types 1308d7e7a98SRuslan Bukin */ 1318d7e7a98SRuslan Bukin #define INTMAX_MIN INT64_MIN 1328d7e7a98SRuslan Bukin #define INTMAX_MAX INT64_MAX 1338d7e7a98SRuslan Bukin #define UINTMAX_MAX UINT64_MAX 1348d7e7a98SRuslan Bukin 1358d7e7a98SRuslan Bukin /* 1368d7e7a98SRuslan Bukin * ISO/IEC 9899:1999 1378d7e7a98SRuslan Bukin * 7.18.3 Limits of other integer types 1388d7e7a98SRuslan Bukin */ 1398d7e7a98SRuslan Bukin /* Limits of ptrdiff_t. */ 1408d7e7a98SRuslan Bukin #define PTRDIFF_MIN INT64_MIN 1418d7e7a98SRuslan Bukin #define PTRDIFF_MAX INT64_MAX 1428d7e7a98SRuslan Bukin 1438d7e7a98SRuslan Bukin /* Limits of sig_atomic_t. */ 144de761318SBrooks Davis #define SIG_ATOMIC_MIN INT64_MIN 145de761318SBrooks Davis #define SIG_ATOMIC_MAX INT64_MAX 1468d7e7a98SRuslan Bukin 1478d7e7a98SRuslan Bukin /* Limit of size_t. */ 1488d7e7a98SRuslan Bukin #define SIZE_MAX UINT64_MAX 1498d7e7a98SRuslan Bukin 1508d7e7a98SRuslan Bukin /* Limits of wint_t. */ 1518d7e7a98SRuslan Bukin #define WINT_MIN INT32_MIN 1528d7e7a98SRuslan Bukin #define WINT_MAX INT32_MAX 1538d7e7a98SRuslan Bukin 1548d7e7a98SRuslan Bukin #endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ 1558d7e7a98SRuslan Bukin 1568d7e7a98SRuslan Bukin #endif /* !_MACHINE__STDINT_H_ */ 157