_stdint.h revision 100882
189051Sjake/*- 289051Sjake * Copyright (c) 2001, 2002 Mike Barcroft <mike@FreeBSD.org> 389051Sjake * Copyright (c) 2001 The NetBSD Foundation, Inc. 489051Sjake * All rights reserved. 589051Sjake * 689051Sjake * This code is derived from software contributed to The NetBSD Foundation 789051Sjake * by Klaus Klein. 889051Sjake * 989051Sjake * Redistribution and use in source and binary forms, with or without 1089051Sjake * modification, are permitted provided that the following conditions 1189051Sjake * are met: 1289051Sjake * 1. Redistributions of source code must retain the above copyright 1389051Sjake * notice, this list of conditions and the following disclaimer. 1489051Sjake * 2. Redistributions in binary form must reproduce the above copyright 1589051Sjake * notice, this list of conditions and the following disclaimer in the 1689051Sjake * documentation and/or other materials provided with the distribution. 1789051Sjake * 3. All advertising materials mentioning features or use of this software 1889051Sjake * must display the following acknowledgement: 1989051Sjake * This product includes software developed by the NetBSD 2089051Sjake * Foundation, Inc. and its contributors. 2189051Sjake * 4. Neither the name of The NetBSD Foundation nor the names of its 2289051Sjake * contributors may be used to endorse or promote products derived 2389051Sjake * from this software without specific prior written permission. 2489051Sjake * 2589051Sjake * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 2689051Sjake * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 2789051Sjake * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 2889051Sjake * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 2989051Sjake * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 3089051Sjake * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 3189051Sjake * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 3289051Sjake * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 3391617Sjake * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 3489051Sjake * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 3589051Sjake * POSSIBILITY OF SUCH DAMAGE. 3689051Sjake * 3789051Sjake * $FreeBSD: head/sys/i386/include/_stdint.h 100882 2002-07-29 17:41:23Z mike $ 3889051Sjake */ 3989051Sjake 4091617Sjake#ifndef _MACHINE__STDINT_H_ 4191617Sjake#define _MACHINE__STDINT_H_ 4291617Sjake 4391617Sjake#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) 4491617Sjake 4591617Sjake#define INT8_C(c) (c) 4691617Sjake#define INT16_C(c) (c) 4791617Sjake#define INT32_C(c) (c) 4891617Sjake#define INT64_C(c) (c ## LL) 4991617Sjake 5091617Sjake#define UINT8_C(c) (c) 5191617Sjake#define UINT16_C(c) (c) 5291617Sjake#define UINT32_C(c) (c ## U) 5391617Sjake#define UINT64_C(c) (c ## ULL) 5491617Sjake 5591617Sjake#define INTMAX_C(c) (c ## LL) 5691617Sjake#define UINTMAX_C(c) (c ## ULL) 5791617Sjake 5891617Sjake#endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */ 5991617Sjake 6091617Sjake#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) 6191617Sjake 6291617Sjake/* 6391617Sjake * ISO/IEC 9899:1999 6491617Sjake * 7.18.2.1 Limits of exact-width integer types 6591617Sjake */ 6691617Sjake/* Minimum values of exact-width signed integer types. */ 6791617Sjake#define INT8_MIN (-0x7f-1) 6891617Sjake#define INT16_MIN (-0x7fff-1) 6991617Sjake#define INT32_MIN (-0x7fffffff-1) 7091617Sjake#define INT64_MIN (-0x7fffffffffffffffLL-1) 7191617Sjake 7291617Sjake/* Maximum values of exact-width signed integer types. */ 7391617Sjake#define INT8_MAX 0x7f 7491617Sjake#define INT16_MAX 0x7fff 7591617Sjake#define INT32_MAX 0x7fffffff 7691617Sjake#define INT64_MAX 0x7fffffffffffffffLL 7791617Sjake 7891617Sjake/* Maximum values of exact-width unsigned integer types. */ 7991617Sjake#define UINT8_MAX 0xff 8091617Sjake#define UINT16_MAX 0xffff 8189051Sjake#define UINT32_MAX 0xffffffffU 8291617Sjake#define UINT64_MAX 0xffffffffffffffffULL 8389051Sjake 8491617Sjake/* 8591617Sjake * ISO/IEC 9899:1999 8691617Sjake * 7.18.2.2 Limits of minimum-width integer types 8791617Sjake */ 8891617Sjake/* Minimum values of minimum-width signed integer types. */ 8989051Sjake#define INT_LEAST8_MIN INT8_MIN 9091617Sjake#define INT_LEAST16_MIN INT16_MIN 9191617Sjake#define INT_LEAST32_MIN INT32_MIN 9291617Sjake#define INT_LEAST64_MIN INT64_MIN 9389051Sjake 9491617Sjake/* Maximum values of minimum-width signed integer types. */ 9589051Sjake#define INT_LEAST8_MAX INT8_MAX 9691617Sjake#define INT_LEAST16_MAX INT16_MAX 9791617Sjake#define INT_LEAST32_MAX INT32_MAX 9891617Sjake#define INT_LEAST64_MAX INT64_MAX 9991617Sjake 10091617Sjake/* Maximum values of minimum-width unsigned integer types. */ 10191617Sjake#define UINT_LEAST8_MAX UINT8_MAX 10291617Sjake#define UINT_LEAST16_MAX UINT16_MAX 10389051Sjake#define UINT_LEAST32_MAX UINT32_MAX 10491617Sjake#define UINT_LEAST64_MAX UINT64_MAX 10589051Sjake 10691617Sjake/* 10789051Sjake * ISO/IEC 9899:1999 10889051Sjake * 7.18.2.3 Limits of fastest minimum-width integer types 10989051Sjake */ 11091617Sjake/* Minimum values of fastest minimum-width signed integer types. */ 11191617Sjake#define INT_FAST8_MIN INT32_MIN 11289051Sjake#define INT_FAST16_MIN INT32_MIN 11389051Sjake#define INT_FAST32_MIN INT32_MIN 11491617Sjake#define INT_FAST64_MIN INT64_MIN 11589051Sjake 11691617Sjake/* Maximum values of fastest minimum-width signed integer types. */ 11791617Sjake#define INT_FAST8_MAX INT32_MAX 11891617Sjake#define INT_FAST16_MAX INT32_MAX 11991617Sjake#define INT_FAST32_MAX INT32_MAX 12091617Sjake#define INT_FAST64_MAX INT64_MAX 12191617Sjake 12291617Sjake/* Maximum values of fastest minimum-width unsigned integer types. */ 12391617Sjake#define UINT_FAST8_MAX UINT32_MAX 12491617Sjake#define UINT_FAST16_MAX UINT32_MAX 12589051Sjake#define UINT_FAST32_MAX UINT32_MAX 12689051Sjake#define UINT_FAST64_MAX UINT64_MAX 12789051Sjake 12889051Sjake/* 12989051Sjake * ISO/IEC 9899:1999 13089051Sjake * 7.18.2.4 Limits of integer types capable of holding object pointers 13191617Sjake */ 13289051Sjake#define INTPTR_MIN INT32_MIN 13389051Sjake#define INTPTR_MAX INT32_MAX 13489051Sjake#define UINTPTR_MAX UINT32_MAX 13589051Sjake 13689051Sjake/* 13789051Sjake * ISO/IEC 9899:1999 13891617Sjake * 7.18.2.5 Limits of greatest-width integer types 13991617Sjake */ 14089051Sjake#define INTMAX_MIN INT64_MIN 14189051Sjake#define INTMAX_MAX INT64_MAX 14289051Sjake#define UINTMAX_MAX UINT64_MAX 14389051Sjake 14489051Sjake/* 14591617Sjake * ISO/IEC 9899:1999 14691617Sjake * 7.18.3 Limits of other integer types 14791617Sjake */ 14889051Sjake/* Limits of ptrdiff_t. */ 14989051Sjake#define PTRDIFF_MIN INT32_MIN 15089051Sjake#define PTRDIFF_MAX INT32_MAX 15189051Sjake 15289051Sjake/* Limits of sig_atomic_t. */ 15389051Sjake#define SIG_ATOMIC_MIN INT32_MIN 15491617Sjake#define SIG_ATOMIC_MAX INT32_MAX 15591617Sjake 15691617Sjake/* Limit of size_t. */ 15789051Sjake#define SIZE_MAX UINT32_MAX 15889051Sjake 15989051Sjake#ifndef WCHAR_MIN /* Also possibly defined in <wchar.h> */ 16089051Sjake/* Limits of wchar_t. */ 16189051Sjake#define WCHAR_MIN INT32_MIN 16289051Sjake#define WCHAR_MAX INT32_MAX 16389051Sjake 16489051Sjake/* Limits of wint_t. */ 16589051Sjake#define WINT_MIN INT32_MIN 16689051Sjake#define WINT_MAX INT32_MAX 16789051Sjake#endif 16889051Sjake 16989051Sjake#endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ 17089051Sjake 17189051Sjake#endif /* !_MACHINE__STDINT_H_ */ 17289051Sjake