1*a9643ea8Slogwang /*- 2*a9643ea8Slogwang * Copyright (c) 2001, 2002 Mike Barcroft <[email protected]> 3*a9643ea8Slogwang * Copyright (c) 2001 The NetBSD Foundation, Inc. 4*a9643ea8Slogwang * All rights reserved. 5*a9643ea8Slogwang * 6*a9643ea8Slogwang * This code is derived from software contributed to The NetBSD Foundation 7*a9643ea8Slogwang * by Klaus Klein. 8*a9643ea8Slogwang * 9*a9643ea8Slogwang * Redistribution and use in source and binary forms, with or without 10*a9643ea8Slogwang * modification, are permitted provided that the following conditions 11*a9643ea8Slogwang * are met: 12*a9643ea8Slogwang * 1. Redistributions of source code must retain the above copyright 13*a9643ea8Slogwang * notice, this list of conditions and the following disclaimer. 14*a9643ea8Slogwang * 2. Redistributions in binary form must reproduce the above copyright 15*a9643ea8Slogwang * notice, this list of conditions and the following disclaimer in the 16*a9643ea8Slogwang * documentation and/or other materials provided with the distribution. 17*a9643ea8Slogwang * 18*a9643ea8Slogwang * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 19*a9643ea8Slogwang * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20*a9643ea8Slogwang * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21*a9643ea8Slogwang * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22*a9643ea8Slogwang * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23*a9643ea8Slogwang * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24*a9643ea8Slogwang * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25*a9643ea8Slogwang * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26*a9643ea8Slogwang * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27*a9643ea8Slogwang * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28*a9643ea8Slogwang * POSSIBILITY OF SUCH DAMAGE. 29*a9643ea8Slogwang * 30*a9643ea8Slogwang * $FreeBSD$ 31*a9643ea8Slogwang */ 32*a9643ea8Slogwang 33*a9643ea8Slogwang #ifndef _MACHINE__STDINT_H_ 34*a9643ea8Slogwang #define _MACHINE__STDINT_H_ 35*a9643ea8Slogwang 36*a9643ea8Slogwang #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) 37*a9643ea8Slogwang 38*a9643ea8Slogwang #define INT8_C(c) (c) 39*a9643ea8Slogwang #define INT16_C(c) (c) 40*a9643ea8Slogwang #define INT32_C(c) (c) 41*a9643ea8Slogwang #define INT64_C(c) (c ## L) 42*a9643ea8Slogwang 43*a9643ea8Slogwang #define UINT8_C(c) (c) 44*a9643ea8Slogwang #define UINT16_C(c) (c) 45*a9643ea8Slogwang #define UINT32_C(c) (c ## U) 46*a9643ea8Slogwang #define UINT64_C(c) (c ## UL) 47*a9643ea8Slogwang 48*a9643ea8Slogwang #define INTMAX_C(c) INT64_C(c) 49*a9643ea8Slogwang #define UINTMAX_C(c) UINT64_C(c) 50*a9643ea8Slogwang 51*a9643ea8Slogwang #endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */ 52*a9643ea8Slogwang 53*a9643ea8Slogwang #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) 54*a9643ea8Slogwang 55*a9643ea8Slogwang /* 56*a9643ea8Slogwang * ISO/IEC 9899:1999 57*a9643ea8Slogwang * 7.18.2.1 Limits of exact-width integer types 58*a9643ea8Slogwang */ 59*a9643ea8Slogwang /* Minimum values of exact-width signed integer types. */ 60*a9643ea8Slogwang #define INT8_MIN (-0x7f-1) 61*a9643ea8Slogwang #define INT16_MIN (-0x7fff-1) 62*a9643ea8Slogwang #define INT32_MIN (-0x7fffffff-1) 63*a9643ea8Slogwang #define INT64_MIN (-0x7fffffffffffffffL-1) 64*a9643ea8Slogwang 65*a9643ea8Slogwang /* Maximum values of exact-width signed integer types. */ 66*a9643ea8Slogwang #define INT8_MAX 0x7f 67*a9643ea8Slogwang #define INT16_MAX 0x7fff 68*a9643ea8Slogwang #define INT32_MAX 0x7fffffff 69*a9643ea8Slogwang #define INT64_MAX 0x7fffffffffffffffL 70*a9643ea8Slogwang 71*a9643ea8Slogwang /* Maximum values of exact-width unsigned integer types. */ 72*a9643ea8Slogwang #define UINT8_MAX 0xff 73*a9643ea8Slogwang #define UINT16_MAX 0xffff 74*a9643ea8Slogwang #define UINT32_MAX 0xffffffffU 75*a9643ea8Slogwang #define UINT64_MAX 0xffffffffffffffffUL 76*a9643ea8Slogwang 77*a9643ea8Slogwang /* 78*a9643ea8Slogwang * ISO/IEC 9899:1999 79*a9643ea8Slogwang * 7.18.2.2 Limits of minimum-width integer types 80*a9643ea8Slogwang */ 81*a9643ea8Slogwang /* Minimum values of minimum-width signed integer types. */ 82*a9643ea8Slogwang #define INT_LEAST8_MIN INT8_MIN 83*a9643ea8Slogwang #define INT_LEAST16_MIN INT16_MIN 84*a9643ea8Slogwang #define INT_LEAST32_MIN INT32_MIN 85*a9643ea8Slogwang #define INT_LEAST64_MIN INT64_MIN 86*a9643ea8Slogwang 87*a9643ea8Slogwang /* Maximum values of minimum-width signed integer types. */ 88*a9643ea8Slogwang #define INT_LEAST8_MAX INT8_MAX 89*a9643ea8Slogwang #define INT_LEAST16_MAX INT16_MAX 90*a9643ea8Slogwang #define INT_LEAST32_MAX INT32_MAX 91*a9643ea8Slogwang #define INT_LEAST64_MAX INT64_MAX 92*a9643ea8Slogwang 93*a9643ea8Slogwang /* Maximum values of minimum-width unsigned integer types. */ 94*a9643ea8Slogwang #define UINT_LEAST8_MAX UINT8_MAX 95*a9643ea8Slogwang #define UINT_LEAST16_MAX UINT16_MAX 96*a9643ea8Slogwang #define UINT_LEAST32_MAX UINT32_MAX 97*a9643ea8Slogwang #define UINT_LEAST64_MAX UINT64_MAX 98*a9643ea8Slogwang 99*a9643ea8Slogwang /* 100*a9643ea8Slogwang * ISO/IEC 9899:1999 101*a9643ea8Slogwang * 7.18.2.3 Limits of fastest minimum-width integer types 102*a9643ea8Slogwang */ 103*a9643ea8Slogwang /* Minimum values of fastest minimum-width signed integer types. */ 104*a9643ea8Slogwang #define INT_FAST8_MIN INT32_MIN 105*a9643ea8Slogwang #define INT_FAST16_MIN INT32_MIN 106*a9643ea8Slogwang #define INT_FAST32_MIN INT32_MIN 107*a9643ea8Slogwang #define INT_FAST64_MIN INT64_MIN 108*a9643ea8Slogwang 109*a9643ea8Slogwang /* Maximum values of fastest minimum-width signed integer types. */ 110*a9643ea8Slogwang #define INT_FAST8_MAX INT32_MAX 111*a9643ea8Slogwang #define INT_FAST16_MAX INT32_MAX 112*a9643ea8Slogwang #define INT_FAST32_MAX INT32_MAX 113*a9643ea8Slogwang #define INT_FAST64_MAX INT64_MAX 114*a9643ea8Slogwang 115*a9643ea8Slogwang /* Maximum values of fastest minimum-width unsigned integer types. */ 116*a9643ea8Slogwang #define UINT_FAST8_MAX UINT32_MAX 117*a9643ea8Slogwang #define UINT_FAST16_MAX UINT32_MAX 118*a9643ea8Slogwang #define UINT_FAST32_MAX UINT32_MAX 119*a9643ea8Slogwang #define UINT_FAST64_MAX UINT64_MAX 120*a9643ea8Slogwang 121*a9643ea8Slogwang /* 122*a9643ea8Slogwang * ISO/IEC 9899:1999 123*a9643ea8Slogwang * 7.18.2.4 Limits of integer types capable of holding object pointers 124*a9643ea8Slogwang */ 125*a9643ea8Slogwang #define INTPTR_MIN INT64_MIN 126*a9643ea8Slogwang #define INTPTR_MAX INT64_MAX 127*a9643ea8Slogwang #define UINTPTR_MAX UINT64_MAX 128*a9643ea8Slogwang 129*a9643ea8Slogwang /* 130*a9643ea8Slogwang * ISO/IEC 9899:1999 131*a9643ea8Slogwang * 7.18.2.5 Limits of greatest-width integer types 132*a9643ea8Slogwang */ 133*a9643ea8Slogwang #define INTMAX_MIN INT64_MIN 134*a9643ea8Slogwang #define INTMAX_MAX INT64_MAX 135*a9643ea8Slogwang #define UINTMAX_MAX UINT64_MAX 136*a9643ea8Slogwang 137*a9643ea8Slogwang /* 138*a9643ea8Slogwang * ISO/IEC 9899:1999 139*a9643ea8Slogwang * 7.18.3 Limits of other integer types 140*a9643ea8Slogwang */ 141*a9643ea8Slogwang /* Limits of ptrdiff_t. */ 142*a9643ea8Slogwang #define PTRDIFF_MIN INT64_MIN 143*a9643ea8Slogwang #define PTRDIFF_MAX INT64_MAX 144*a9643ea8Slogwang 145*a9643ea8Slogwang /* Limits of sig_atomic_t. */ 146*a9643ea8Slogwang #define SIG_ATOMIC_MIN INT32_MIN 147*a9643ea8Slogwang #define SIG_ATOMIC_MAX INT32_MAX 148*a9643ea8Slogwang 149*a9643ea8Slogwang /* Limit of size_t. */ 150*a9643ea8Slogwang #define SIZE_MAX UINT64_MAX 151*a9643ea8Slogwang 152*a9643ea8Slogwang /* Limits of wint_t. */ 153*a9643ea8Slogwang #define WINT_MIN INT32_MIN 154*a9643ea8Slogwang #define WINT_MAX INT32_MAX 155*a9643ea8Slogwang 156*a9643ea8Slogwang #endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ 157*a9643ea8Slogwang 158*a9643ea8Slogwang #endif /* !_MACHINE__STDINT_H_ */ 159