1199767f8SToomas Soome /*- 2199767f8SToomas Soome * Copyright (c) 2001, 2002 Mike Barcroft <mike@FreeBSD.org> 3199767f8SToomas Soome * Copyright (c) 2001 The NetBSD Foundation, Inc. 4199767f8SToomas Soome * All rights reserved. 5199767f8SToomas Soome * 6199767f8SToomas Soome * This code is derived from software contributed to The NetBSD Foundation 7199767f8SToomas Soome * by Klaus Klein. 8199767f8SToomas Soome * 9199767f8SToomas Soome * Redistribution and use in source and binary forms, with or without 10199767f8SToomas Soome * modification, are permitted provided that the following conditions 11199767f8SToomas Soome * are met: 12199767f8SToomas Soome * 1. Redistributions of source code must retain the above copyright 13199767f8SToomas Soome * notice, this list of conditions and the following disclaimer. 14199767f8SToomas Soome * 2. Redistributions in binary form must reproduce the above copyright 15199767f8SToomas Soome * notice, this list of conditions and the following disclaimer in the 16199767f8SToomas Soome * documentation and/or other materials provided with the distribution. 17199767f8SToomas Soome * 3. All advertising materials mentioning features or use of this software 18199767f8SToomas Soome * must display the following acknowledgement: 19199767f8SToomas Soome * This product includes software developed by the NetBSD 20199767f8SToomas Soome * Foundation, Inc. and its contributors. 21199767f8SToomas Soome * 4. Neither the name of The NetBSD Foundation nor the names of its 22199767f8SToomas Soome * contributors may be used to endorse or promote products derived 23199767f8SToomas Soome * from this software without specific prior written permission. 24199767f8SToomas Soome * 25199767f8SToomas Soome * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 26199767f8SToomas Soome * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 27199767f8SToomas Soome * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 28199767f8SToomas Soome * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 29199767f8SToomas Soome * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 30199767f8SToomas Soome * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 31199767f8SToomas Soome * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32199767f8SToomas Soome * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 33199767f8SToomas Soome * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 34199767f8SToomas Soome * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35199767f8SToomas Soome * POSSIBILITY OF SUCH DAMAGE. 36199767f8SToomas Soome * 37199767f8SToomas Soome * $FreeBSD$ 38199767f8SToomas Soome */ 39199767f8SToomas Soome 40199767f8SToomas Soome #ifndef _MACHINE__STDINT_H_ 41199767f8SToomas Soome #define _MACHINE__STDINT_H_ 42199767f8SToomas Soome 43199767f8SToomas Soome #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) 44199767f8SToomas Soome 45199767f8SToomas Soome #define INT8_C(c) (c) 46199767f8SToomas Soome #define INT16_C(c) (c) 47199767f8SToomas Soome #define INT32_C(c) (c) 48199767f8SToomas Soome 49199767f8SToomas Soome #define UINT8_C(c) (c) 50199767f8SToomas Soome #define UINT16_C(c) (c) 51199767f8SToomas Soome #define UINT32_C(c) (c ## U) 52199767f8SToomas Soome 53199767f8SToomas Soome #ifdef __LP64__ 54199767f8SToomas Soome #define INT64_C(c) (c ## L) 55199767f8SToomas Soome #define UINT64_C(c) (c ## UL) 56199767f8SToomas Soome #else 57199767f8SToomas Soome #define INT64_C(c) (c ## LL) 58199767f8SToomas Soome #define UINT64_C(c) (c ## ULL) 59199767f8SToomas Soome #endif 60199767f8SToomas Soome 61199767f8SToomas Soome #define INTMAX_C(c) INT64_C(c) 62199767f8SToomas Soome #define UINTMAX_C(c) UINT64_C(c) 63199767f8SToomas Soome 64199767f8SToomas Soome #endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */ 65199767f8SToomas Soome 66199767f8SToomas Soome #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) 67199767f8SToomas Soome 68199767f8SToomas Soome /* 69199767f8SToomas Soome * ISO/IEC 9899:1999 70199767f8SToomas Soome * 7.18.2.1 Limits of exact-width integer types 71199767f8SToomas Soome */ 72199767f8SToomas Soome #define INT8_MIN (-0x7f-1) 73199767f8SToomas Soome #define INT16_MIN (-0x7fff-1) 74199767f8SToomas Soome #define INT32_MIN (-0x7fffffff-1) 75199767f8SToomas Soome 76199767f8SToomas Soome #define INT8_MAX 0x7f 77199767f8SToomas Soome #define INT16_MAX 0x7fff 78199767f8SToomas Soome #define INT32_MAX 0x7fffffff 79199767f8SToomas Soome 80199767f8SToomas Soome #define UINT8_MAX 0xff 81199767f8SToomas Soome #define UINT16_MAX 0xffff 82199767f8SToomas Soome #define UINT32_MAX 0xffffffffU 83199767f8SToomas Soome 84199767f8SToomas Soome #ifdef __LP64__ 85199767f8SToomas Soome #define INT64_MIN (-0x7fffffffffffffff-1) 86199767f8SToomas Soome #define INT64_MAX 0x7fffffffffffffff 87199767f8SToomas Soome #define UINT64_MAX 0xffffffffffffffff 88199767f8SToomas Soome #else 89199767f8SToomas Soome #define INT64_MIN (-0x7fffffffffffffffLL-1) 90199767f8SToomas Soome #define INT64_MAX 0x7fffffffffffffffLL 91199767f8SToomas Soome #define UINT64_MAX 0xffffffffffffffffULL 92199767f8SToomas Soome #endif 93199767f8SToomas Soome 94199767f8SToomas Soome /* 95199767f8SToomas Soome * ISO/IEC 9899:1999 96199767f8SToomas Soome * 7.18.2.2 Limits of minimum-width integer types 97199767f8SToomas Soome */ 98199767f8SToomas Soome /* Minimum values of minimum-width signed integer types. */ 99199767f8SToomas Soome #define INT_LEAST8_MIN INT8_MIN 100199767f8SToomas Soome #define INT_LEAST16_MIN INT16_MIN 101199767f8SToomas Soome #define INT_LEAST32_MIN INT32_MIN 102199767f8SToomas Soome #define INT_LEAST64_MIN INT64_MIN 103199767f8SToomas Soome 104199767f8SToomas Soome /* Maximum values of minimum-width signed integer types. */ 105199767f8SToomas Soome #define INT_LEAST8_MAX INT8_MAX 106199767f8SToomas Soome #define INT_LEAST16_MAX INT16_MAX 107199767f8SToomas Soome #define INT_LEAST32_MAX INT32_MAX 108199767f8SToomas Soome #define INT_LEAST64_MAX INT64_MAX 109199767f8SToomas Soome 110199767f8SToomas Soome /* Maximum values of minimum-width unsigned integer types. */ 111199767f8SToomas Soome #define UINT_LEAST8_MAX UINT8_MAX 112199767f8SToomas Soome #define UINT_LEAST16_MAX UINT16_MAX 113199767f8SToomas Soome #define UINT_LEAST32_MAX UINT32_MAX 114199767f8SToomas Soome #define UINT_LEAST64_MAX UINT64_MAX 115199767f8SToomas Soome 116199767f8SToomas Soome /* 117199767f8SToomas Soome * ISO/IEC 9899:1999 118199767f8SToomas Soome * 7.18.2.3 Limits of fastest minimum-width integer types 119199767f8SToomas Soome */ 120199767f8SToomas Soome /* Minimum values of fastest minimum-width signed integer types. */ 121199767f8SToomas Soome #define INT_FAST8_MIN INT32_MIN 122199767f8SToomas Soome #define INT_FAST16_MIN INT32_MIN 123199767f8SToomas Soome #define INT_FAST32_MIN INT32_MIN 124199767f8SToomas Soome #define INT_FAST64_MIN INT64_MIN 125199767f8SToomas Soome 126199767f8SToomas Soome /* Maximum values of fastest minimum-width signed integer types. */ 127199767f8SToomas Soome #define INT_FAST8_MAX INT32_MAX 128199767f8SToomas Soome #define INT_FAST16_MAX INT32_MAX 129199767f8SToomas Soome #define INT_FAST32_MAX INT32_MAX 130199767f8SToomas Soome #define INT_FAST64_MAX INT64_MAX 131199767f8SToomas Soome 132199767f8SToomas Soome /* Maximum values of fastest minimum-width unsigned integer types. */ 133199767f8SToomas Soome #define UINT_FAST8_MAX UINT32_MAX 134199767f8SToomas Soome #define UINT_FAST16_MAX UINT32_MAX 135199767f8SToomas Soome #define UINT_FAST32_MAX UINT32_MAX 136199767f8SToomas Soome #define UINT_FAST64_MAX UINT64_MAX 137199767f8SToomas Soome 138199767f8SToomas Soome /* 139199767f8SToomas Soome * ISO/IEC 9899:1999 140199767f8SToomas Soome * 7.18.2.4 Limits of integer types capable of holding object pointers 141199767f8SToomas Soome */ 142199767f8SToomas Soome #ifdef __LP64__ 143199767f8SToomas Soome #define INTPTR_MIN INT64_MIN 144199767f8SToomas Soome #define INTPTR_MAX INT64_MAX 145199767f8SToomas Soome #define UINTPTR_MAX UINT64_MAX 146199767f8SToomas Soome #else 147199767f8SToomas Soome #define INTPTR_MIN INT32_MIN 148199767f8SToomas Soome #define INTPTR_MAX INT32_MAX 149199767f8SToomas Soome #define UINTPTR_MAX UINT32_MAX 150199767f8SToomas Soome #endif 151199767f8SToomas Soome 152199767f8SToomas Soome /* 153199767f8SToomas Soome * ISO/IEC 9899:1999 154199767f8SToomas Soome * 7.18.2.5 Limits of greatest-width integer types 155199767f8SToomas Soome */ 156199767f8SToomas Soome #define INTMAX_MIN INT64_MIN 157199767f8SToomas Soome #define INTMAX_MAX INT64_MAX 158199767f8SToomas Soome #define UINTMAX_MAX UINT64_MAX 159199767f8SToomas Soome 160199767f8SToomas Soome /* 161199767f8SToomas Soome * ISO/IEC 9899:1999 162199767f8SToomas Soome * 7.18.3 Limits of other integer types 163199767f8SToomas Soome */ 164199767f8SToomas Soome #ifdef __LP64__ 165199767f8SToomas Soome /* Limits of ptrdiff_t. */ 166*55fea89dSDan Cross #define PTRDIFF_MIN INT64_MIN 167199767f8SToomas Soome #define PTRDIFF_MAX INT64_MAX 168199767f8SToomas Soome 169199767f8SToomas Soome /* Limits of sig_atomic_t. */ 170199767f8SToomas Soome #define SIG_ATOMIC_MIN LONG_MIN 171199767f8SToomas Soome #define SIG_ATOMIC_MAX LONG_MAX 172199767f8SToomas Soome 173199767f8SToomas Soome /* Limit of size_t. */ 174199767f8SToomas Soome #define SIZE_MAX UINT64_MAX 175199767f8SToomas Soome #else 176199767f8SToomas Soome #define PTRDIFF_MIN INT32_MIN 177199767f8SToomas Soome #define PTRDIFF_MAX INT32_MAX 178199767f8SToomas Soome #define SIG_ATOMIC_MIN INT32_MIN 179199767f8SToomas Soome #define SIG_ATOMIC_MAX INT32_MAX 180199767f8SToomas Soome #define SIZE_MAX UINT32_MAX 181199767f8SToomas Soome #endif 182199767f8SToomas Soome 183199767f8SToomas Soome /* Limits of wint_t. */ 184199767f8SToomas Soome #define WINT_MIN INT32_MIN 185199767f8SToomas Soome #define WINT_MAX INT32_MAX 186199767f8SToomas Soome 187199767f8SToomas Soome #endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ 188199767f8SToomas Soome 189199767f8SToomas Soome #endif /* !_MACHINE__STDINT_H_ */ 190