1292407Sbr/*- 2292407Sbr * Copyright (c) 2001, 2002 Mike Barcroft <mike@FreeBSD.org> 3292407Sbr * Copyright (c) 2001 The NetBSD Foundation, Inc. 4292407Sbr * All rights reserved. 5292407Sbr * 6292407Sbr * This code is derived from software contributed to The NetBSD Foundation 7292407Sbr * by Klaus Klein. 8292407Sbr * 9292407Sbr * Redistribution and use in source and binary forms, with or without 10292407Sbr * modification, are permitted provided that the following conditions 11292407Sbr * are met: 12292407Sbr * 1. Redistributions of source code must retain the above copyright 13292407Sbr * notice, this list of conditions and the following disclaimer. 14292407Sbr * 2. Redistributions in binary form must reproduce the above copyright 15292407Sbr * notice, this list of conditions and the following disclaimer in the 16292407Sbr * documentation and/or other materials provided with the distribution. 17292407Sbr * 18292407Sbr * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 19292407Sbr * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20292407Sbr * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21292407Sbr * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22292407Sbr * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23292407Sbr * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24292407Sbr * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25292407Sbr * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26292407Sbr * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27292407Sbr * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28292407Sbr * POSSIBILITY OF SUCH DAMAGE. 29292407Sbr * 30292407Sbr * $FreeBSD$ 31292407Sbr */ 32292407Sbr 33292407Sbr#ifndef _MACHINE__STDINT_H_ 34292407Sbr#define _MACHINE__STDINT_H_ 35292407Sbr 36292407Sbr#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) 37292407Sbr 38292407Sbr#define INT8_C(c) (c) 39292407Sbr#define INT16_C(c) (c) 40292407Sbr#define INT32_C(c) (c) 41292407Sbr#define INT64_C(c) (c ## L) 42292407Sbr 43292407Sbr#define UINT8_C(c) (c) 44292407Sbr#define UINT16_C(c) (c) 45292407Sbr#define UINT32_C(c) (c ## U) 46292407Sbr#define UINT64_C(c) (c ## UL) 47292407Sbr 48292407Sbr#define INTMAX_C(c) INT64_C(c) 49292407Sbr#define UINTMAX_C(c) UINT64_C(c) 50292407Sbr 51292407Sbr#endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */ 52292407Sbr 53292407Sbr#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) 54292407Sbr 55292407Sbr/* 56292407Sbr * ISO/IEC 9899:1999 57292407Sbr * 7.18.2.1 Limits of exact-width integer types 58292407Sbr */ 59292407Sbr/* Minimum values of exact-width signed integer types. */ 60292407Sbr#define INT8_MIN (-0x7f-1) 61292407Sbr#define INT16_MIN (-0x7fff-1) 62292407Sbr#define INT32_MIN (-0x7fffffff-1) 63292407Sbr#define INT64_MIN (-0x7fffffffffffffffL-1) 64292407Sbr 65292407Sbr/* Maximum values of exact-width signed integer types. */ 66292407Sbr#define INT8_MAX 0x7f 67292407Sbr#define INT16_MAX 0x7fff 68292407Sbr#define INT32_MAX 0x7fffffff 69292407Sbr#define INT64_MAX 0x7fffffffffffffffL 70292407Sbr 71292407Sbr/* Maximum values of exact-width unsigned integer types. */ 72292407Sbr#define UINT8_MAX 0xff 73292407Sbr#define UINT16_MAX 0xffff 74292407Sbr#define UINT32_MAX 0xffffffffU 75292407Sbr#define UINT64_MAX 0xffffffffffffffffUL 76292407Sbr 77292407Sbr/* 78292407Sbr * ISO/IEC 9899:1999 79292407Sbr * 7.18.2.2 Limits of minimum-width integer types 80292407Sbr */ 81292407Sbr/* Minimum values of minimum-width signed integer types. */ 82292407Sbr#define INT_LEAST8_MIN INT8_MIN 83292407Sbr#define INT_LEAST16_MIN INT16_MIN 84292407Sbr#define INT_LEAST32_MIN INT32_MIN 85292407Sbr#define INT_LEAST64_MIN INT64_MIN 86292407Sbr 87292407Sbr/* Maximum values of minimum-width signed integer types. */ 88292407Sbr#define INT_LEAST8_MAX INT8_MAX 89292407Sbr#define INT_LEAST16_MAX INT16_MAX 90292407Sbr#define INT_LEAST32_MAX INT32_MAX 91292407Sbr#define INT_LEAST64_MAX INT64_MAX 92292407Sbr 93292407Sbr/* Maximum values of minimum-width unsigned integer types. */ 94292407Sbr#define UINT_LEAST8_MAX UINT8_MAX 95292407Sbr#define UINT_LEAST16_MAX UINT16_MAX 96292407Sbr#define UINT_LEAST32_MAX UINT32_MAX 97292407Sbr#define UINT_LEAST64_MAX UINT64_MAX 98292407Sbr 99292407Sbr/* 100292407Sbr * ISO/IEC 9899:1999 101292407Sbr * 7.18.2.3 Limits of fastest minimum-width integer types 102292407Sbr */ 103292407Sbr/* Minimum values of fastest minimum-width signed integer types. */ 104292407Sbr#define INT_FAST8_MIN INT32_MIN 105292407Sbr#define INT_FAST16_MIN INT32_MIN 106292407Sbr#define INT_FAST32_MIN INT32_MIN 107292407Sbr#define INT_FAST64_MIN INT64_MIN 108292407Sbr 109292407Sbr/* Maximum values of fastest minimum-width signed integer types. */ 110292407Sbr#define INT_FAST8_MAX INT32_MAX 111292407Sbr#define INT_FAST16_MAX INT32_MAX 112292407Sbr#define INT_FAST32_MAX INT32_MAX 113292407Sbr#define INT_FAST64_MAX INT64_MAX 114292407Sbr 115292407Sbr/* Maximum values of fastest minimum-width unsigned integer types. */ 116292407Sbr#define UINT_FAST8_MAX UINT32_MAX 117292407Sbr#define UINT_FAST16_MAX UINT32_MAX 118292407Sbr#define UINT_FAST32_MAX UINT32_MAX 119292407Sbr#define UINT_FAST64_MAX UINT64_MAX 120292407Sbr 121292407Sbr/* 122292407Sbr * ISO/IEC 9899:1999 123292407Sbr * 7.18.2.4 Limits of integer types capable of holding object pointers 124292407Sbr */ 125292407Sbr#define INTPTR_MIN INT64_MIN 126292407Sbr#define INTPTR_MAX INT64_MAX 127292407Sbr#define UINTPTR_MAX UINT64_MAX 128292407Sbr 129292407Sbr/* 130292407Sbr * ISO/IEC 9899:1999 131292407Sbr * 7.18.2.5 Limits of greatest-width integer types 132292407Sbr */ 133292407Sbr#define INTMAX_MIN INT64_MIN 134292407Sbr#define INTMAX_MAX INT64_MAX 135292407Sbr#define UINTMAX_MAX UINT64_MAX 136292407Sbr 137292407Sbr/* 138292407Sbr * ISO/IEC 9899:1999 139292407Sbr * 7.18.3 Limits of other integer types 140292407Sbr */ 141292407Sbr/* Limits of ptrdiff_t. */ 142292407Sbr#define PTRDIFF_MIN INT64_MIN 143292407Sbr#define PTRDIFF_MAX INT64_MAX 144292407Sbr 145292407Sbr/* Limits of sig_atomic_t. */ 146292407Sbr#define SIG_ATOMIC_MIN INT32_MIN 147292407Sbr#define SIG_ATOMIC_MAX INT32_MAX 148292407Sbr 149292407Sbr/* Limit of size_t. */ 150292407Sbr#define SIZE_MAX UINT64_MAX 151292407Sbr 152292407Sbr/* Limits of wint_t. */ 153292407Sbr#define WINT_MIN INT32_MIN 154292407Sbr#define WINT_MAX INT32_MAX 155292407Sbr 156292407Sbr#endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ 157292407Sbr 158292407Sbr#endif /* !_MACHINE__STDINT_H_ */ 159