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