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