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