diff options
Diffstat (limited to 'gl/stdint.in.h')
-rw-r--r-- | gl/stdint.in.h | 286 |
1 files changed, 177 insertions, 109 deletions
diff --git a/gl/stdint.in.h b/gl/stdint.in.h index 5da5f17..2db8b2e 100644 --- a/gl/stdint.in.h +++ b/gl/stdint.in.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* Copyright (C) 2001-2002, 2004-2010 Free Software Foundation, Inc. | 1 | /* Copyright (C) 2001-2002, 2004-2013 Free Software Foundation, Inc. |
2 | Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood. | 2 | Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood. |
3 | This file is part of gnulib. | 3 | This file is part of gnulib. |
4 | 4 | ||
@@ -13,19 +13,19 @@ | |||
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software Foundation, | 16 | along with this program; if not, see <http://www.gnu.org/licenses/>. */ |
17 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | ||
18 | 17 | ||
19 | /* | 18 | /* |
20 | * ISO C 99 <stdint.h> for platforms that lack it. | 19 | * ISO C 99 <stdint.h> for platforms that lack it. |
21 | * <http://www.opengroup.org/susv3xbd/stdint.h.html> | 20 | * <http://www.opengroup.org/susv3xbd/stdint.h.html> |
22 | */ | 21 | */ |
23 | 22 | ||
24 | #ifndef _GL_STDINT_H | 23 | #ifndef _@GUARD_PREFIX@_STDINT_H |
25 | 24 | ||
26 | #if __GNUC__ >= 3 | 25 | #if __GNUC__ >= 3 |
27 | @PRAGMA_SYSTEM_HEADER@ | 26 | @PRAGMA_SYSTEM_HEADER@ |
28 | #endif | 27 | #endif |
28 | @PRAGMA_COLUMNS@ | ||
29 | 29 | ||
30 | /* When including a system file that in turn includes <inttypes.h>, | 30 | /* When including a system file that in turn includes <inttypes.h>, |
31 | use the system <inttypes.h>, not our substitute. This avoids | 31 | use the system <inttypes.h>, not our substitute. This avoids |
@@ -33,6 +33,16 @@ | |||
33 | <inttypes.h>. */ | 33 | <inttypes.h>. */ |
34 | #define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H | 34 | #define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H |
35 | 35 | ||
36 | /* On Android (Bionic libc), <sys/types.h> includes this file before | ||
37 | having defined 'time_t'. Therefore in this case avoid including | ||
38 | other system header files; just include the system's <stdint.h>. | ||
39 | Ideally we should test __BIONIC__ here, but it is only defined after | ||
40 | <sys/cdefs.h> has been included; hence test __ANDROID__ instead. */ | ||
41 | #if defined __ANDROID__ \ | ||
42 | && defined _SYS_TYPES_H_ && !defined __need_size_t | ||
43 | # @INCLUDE_NEXT@ @NEXT_STDINT_H@ | ||
44 | #else | ||
45 | |||
36 | /* Get those types that are already defined in other system include | 46 | /* Get those types that are already defined in other system include |
37 | files, so that we can "#define int8_t signed char" below without | 47 | files, so that we can "#define int8_t signed char" below without |
38 | worrying about a later system include file containing a "typedef | 48 | worrying about a later system include file containing a "typedef |
@@ -48,28 +58,40 @@ | |||
48 | diagnostics. */ | 58 | diagnostics. */ |
49 | # define __STDINT_H__ | 59 | # define __STDINT_H__ |
50 | # endif | 60 | # endif |
61 | |||
62 | /* Some pre-C++11 <stdint.h> implementations need this. */ | ||
63 | # ifdef __cplusplus | ||
64 | # ifndef __STDC_CONSTANT_MACROS | ||
65 | # define __STDC_CONSTANT_MACROS 1 | ||
66 | # endif | ||
67 | # ifndef __STDC_LIMIT_MACROS | ||
68 | # define __STDC_LIMIT_MACROS 1 | ||
69 | # endif | ||
70 | # endif | ||
71 | |||
51 | /* Other systems may have an incomplete or buggy <stdint.h>. | 72 | /* Other systems may have an incomplete or buggy <stdint.h>. |
52 | Include it before <inttypes.h>, since any "#include <stdint.h>" | 73 | Include it before <inttypes.h>, since any "#include <stdint.h>" |
53 | in <inttypes.h> would reinclude us, skipping our contents because | 74 | in <inttypes.h> would reinclude us, skipping our contents because |
54 | _GL_STDINT_H is defined. | 75 | _@GUARD_PREFIX@_STDINT_H is defined. |
55 | The include_next requires a split double-inclusion guard. */ | 76 | The include_next requires a split double-inclusion guard. */ |
56 | # @INCLUDE_NEXT@ @NEXT_STDINT_H@ | 77 | # @INCLUDE_NEXT@ @NEXT_STDINT_H@ |
57 | #endif | 78 | #endif |
58 | 79 | ||
59 | #if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H | 80 | #if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H |
60 | #define _GL_STDINT_H | 81 | #define _@GUARD_PREFIX@_STDINT_H |
61 | 82 | ||
62 | /* <sys/types.h> defines some of the stdint.h types as well, on glibc, | 83 | /* <sys/types.h> defines some of the stdint.h types as well, on glibc, |
63 | IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>). | 84 | IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>). |
64 | AIX 5.2 <sys/types.h> isn't needed and causes troubles. | 85 | AIX 5.2 <sys/types.h> isn't needed and causes troubles. |
65 | MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but | 86 | Mac OS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but |
66 | relies on the system <stdint.h> definitions, so include | 87 | relies on the system <stdint.h> definitions, so include |
67 | <sys/types.h> after @NEXT_STDINT_H@. */ | 88 | <sys/types.h> after @NEXT_STDINT_H@. */ |
68 | #if @HAVE_SYS_TYPES_H@ && ! defined _AIX | 89 | #if @HAVE_SYS_TYPES_H@ && ! defined _AIX |
69 | # include <sys/types.h> | 90 | # include <sys/types.h> |
70 | #endif | 91 | #endif |
71 | 92 | ||
72 | /* Get LONG_MIN, LONG_MAX, ULONG_MAX. */ | 93 | /* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX, |
94 | LONG_MIN, LONG_MAX, ULONG_MAX. */ | ||
73 | #include <limits.h> | 95 | #include <limits.h> |
74 | 96 | ||
75 | #if @HAVE_INTTYPES_H@ | 97 | #if @HAVE_INTTYPES_H@ |
@@ -92,7 +114,7 @@ | |||
92 | 114 | ||
93 | #undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H | 115 | #undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H |
94 | 116 | ||
95 | /* Minimum and maximum values for a integer type under the usual assumption. | 117 | /* Minimum and maximum values for an integer type under the usual assumption. |
96 | Return an unspecified value if BITS == 0, adding a check to pacify | 118 | Return an unspecified value if BITS == 0, adding a check to pacify |
97 | picky compilers. */ | 119 | picky compilers. */ |
98 | 120 | ||
@@ -107,6 +129,8 @@ | |||
107 | warnings in the signed case. */ \ | 129 | warnings in the signed case. */ \ |
108 | ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1) | 130 | ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1) |
109 | 131 | ||
132 | #if !GNULIB_defined_stdint_types | ||
133 | |||
110 | /* 7.18.1.1. Exact-width integer types */ | 134 | /* 7.18.1.1. Exact-width integer types */ |
111 | 135 | ||
112 | /* Here we assume a standard architecture where the hardware integer | 136 | /* Here we assume a standard architecture where the hardware integer |
@@ -133,40 +157,54 @@ typedef unsigned int gl_uint32_t; | |||
133 | #define int32_t gl_int32_t | 157 | #define int32_t gl_int32_t |
134 | #define uint32_t gl_uint32_t | 158 | #define uint32_t gl_uint32_t |
135 | 159 | ||
160 | /* If the system defines INT64_MAX, assume int64_t works. That way, | ||
161 | if the underlying platform defines int64_t to be a 64-bit long long | ||
162 | int, the code below won't mistakenly define it to be a 64-bit long | ||
163 | int, which would mess up C++ name mangling. We must use #ifdef | ||
164 | rather than #if, to avoid an error with HP-UX 10.20 cc. */ | ||
165 | |||
166 | #ifdef INT64_MAX | ||
167 | # define GL_INT64_T | ||
168 | #else | ||
136 | /* Do not undefine int64_t if gnulib is not being used with 64-bit | 169 | /* Do not undefine int64_t if gnulib is not being used with 64-bit |
137 | types, since otherwise it breaks platforms like Tandem/NSK. */ | 170 | types, since otherwise it breaks platforms like Tandem/NSK. */ |
138 | #if LONG_MAX >> 31 >> 31 == 1 | 171 | # if LONG_MAX >> 31 >> 31 == 1 |
139 | # undef int64_t | 172 | # undef int64_t |
140 | typedef long int gl_int64_t; | 173 | typedef long int gl_int64_t; |
141 | # define int64_t gl_int64_t | 174 | # define int64_t gl_int64_t |
142 | # define GL_INT64_T | 175 | # define GL_INT64_T |
143 | #elif defined _MSC_VER | 176 | # elif defined _MSC_VER |
144 | # undef int64_t | 177 | # undef int64_t |
145 | typedef __int64 gl_int64_t; | 178 | typedef __int64 gl_int64_t; |
146 | # define int64_t gl_int64_t | 179 | # define int64_t gl_int64_t |
147 | # define GL_INT64_T | 180 | # define GL_INT64_T |
148 | #elif @HAVE_LONG_LONG_INT@ | 181 | # elif @HAVE_LONG_LONG_INT@ |
149 | # undef int64_t | 182 | # undef int64_t |
150 | typedef long long int gl_int64_t; | 183 | typedef long long int gl_int64_t; |
151 | # define int64_t gl_int64_t | 184 | # define int64_t gl_int64_t |
152 | # define GL_INT64_T | 185 | # define GL_INT64_T |
186 | # endif | ||
153 | #endif | 187 | #endif |
154 | 188 | ||
155 | #if ULONG_MAX >> 31 >> 31 >> 1 == 1 | 189 | #ifdef UINT64_MAX |
156 | # undef uint64_t | ||
157 | typedef unsigned long int gl_uint64_t; | ||
158 | # define uint64_t gl_uint64_t | ||
159 | # define GL_UINT64_T | 190 | # define GL_UINT64_T |
160 | #elif defined _MSC_VER | 191 | #else |
161 | # undef uint64_t | 192 | # if ULONG_MAX >> 31 >> 31 >> 1 == 1 |
193 | # undef uint64_t | ||
194 | typedef unsigned long int gl_uint64_t; | ||
195 | # define uint64_t gl_uint64_t | ||
196 | # define GL_UINT64_T | ||
197 | # elif defined _MSC_VER | ||
198 | # undef uint64_t | ||
162 | typedef unsigned __int64 gl_uint64_t; | 199 | typedef unsigned __int64 gl_uint64_t; |
163 | # define uint64_t gl_uint64_t | 200 | # define uint64_t gl_uint64_t |
164 | # define GL_UINT64_T | 201 | # define GL_UINT64_T |
165 | #elif @HAVE_UNSIGNED_LONG_LONG_INT@ | 202 | # elif @HAVE_UNSIGNED_LONG_LONG_INT@ |
166 | # undef uint64_t | 203 | # undef uint64_t |
167 | typedef unsigned long long int gl_uint64_t; | 204 | typedef unsigned long long int gl_uint64_t; |
168 | # define uint64_t gl_uint64_t | 205 | # define uint64_t gl_uint64_t |
169 | # define GL_UINT64_T | 206 | # define GL_UINT64_T |
207 | # endif | ||
170 | #endif | 208 | #endif |
171 | 209 | ||
172 | /* Avoid collision with Solaris 2.5.1 <pthread.h> etc. */ | 210 | /* Avoid collision with Solaris 2.5.1 <pthread.h> etc. */ |
@@ -209,8 +247,9 @@ typedef unsigned long long int gl_uint64_t; | |||
209 | 247 | ||
210 | /* Here we assume a standard architecture where the hardware integer | 248 | /* Here we assume a standard architecture where the hardware integer |
211 | types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types | 249 | types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types |
212 | are taken from the same list of types. Assume that 'long int' | 250 | are taken from the same list of types. The following code normally |
213 | is fast enough for all narrower integers. */ | 251 | uses types consistent with glibc, as that lessens the chance of |
252 | incompatibility with older GNU hosts. */ | ||
214 | 253 | ||
215 | #undef int_fast8_t | 254 | #undef int_fast8_t |
216 | #undef uint_fast8_t | 255 | #undef uint_fast8_t |
@@ -220,12 +259,21 @@ typedef unsigned long long int gl_uint64_t; | |||
220 | #undef uint_fast32_t | 259 | #undef uint_fast32_t |
221 | #undef int_fast64_t | 260 | #undef int_fast64_t |
222 | #undef uint_fast64_t | 261 | #undef uint_fast64_t |
223 | typedef long int gl_int_fast8_t; | 262 | typedef signed char gl_int_fast8_t; |
224 | typedef unsigned long int gl_uint_fast8_t; | 263 | typedef unsigned char gl_uint_fast8_t; |
225 | typedef long int gl_int_fast16_t; | 264 | |
226 | typedef unsigned long int gl_uint_fast16_t; | 265 | #ifdef __sun |
266 | /* Define types compatible with SunOS 5.10, so that code compiled under | ||
267 | earlier SunOS versions works with code compiled under SunOS 5.10. */ | ||
268 | typedef int gl_int_fast32_t; | ||
269 | typedef unsigned int gl_uint_fast32_t; | ||
270 | #else | ||
227 | typedef long int gl_int_fast32_t; | 271 | typedef long int gl_int_fast32_t; |
228 | typedef unsigned long int gl_uint_fast32_t; | 272 | typedef unsigned long int gl_uint_fast32_t; |
273 | #endif | ||
274 | typedef gl_int_fast32_t gl_int_fast16_t; | ||
275 | typedef gl_uint_fast32_t gl_uint_fast16_t; | ||
276 | |||
229 | #define int_fast8_t gl_int_fast8_t | 277 | #define int_fast8_t gl_int_fast8_t |
230 | #define uint_fast8_t gl_uint_fast8_t | 278 | #define uint_fast8_t gl_uint_fast8_t |
231 | #define int_fast16_t gl_int_fast16_t | 279 | #define int_fast16_t gl_int_fast16_t |
@@ -253,36 +301,48 @@ typedef unsigned long int gl_uintptr_t; | |||
253 | /* Note: These types are compiler dependent. It may be unwise to use them in | 301 | /* Note: These types are compiler dependent. It may be unwise to use them in |
254 | public header files. */ | 302 | public header files. */ |
255 | 303 | ||
256 | #undef intmax_t | 304 | /* If the system defines INTMAX_MAX, assume that intmax_t works, and |
257 | #if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 | 305 | similarly for UINTMAX_MAX and uintmax_t. This avoids problems with |
306 | assuming one type where another is used by the system. */ | ||
307 | |||
308 | #ifndef INTMAX_MAX | ||
309 | # undef INTMAX_C | ||
310 | # undef intmax_t | ||
311 | # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 | ||
258 | typedef long long int gl_intmax_t; | 312 | typedef long long int gl_intmax_t; |
259 | # define intmax_t gl_intmax_t | 313 | # define intmax_t gl_intmax_t |
260 | #elif defined GL_INT64_T | 314 | # elif defined GL_INT64_T |
261 | # define intmax_t int64_t | 315 | # define intmax_t int64_t |
262 | #else | 316 | # else |
263 | typedef long int gl_intmax_t; | 317 | typedef long int gl_intmax_t; |
264 | # define intmax_t gl_intmax_t | 318 | # define intmax_t gl_intmax_t |
319 | # endif | ||
265 | #endif | 320 | #endif |
266 | 321 | ||
267 | #undef uintmax_t | 322 | #ifndef UINTMAX_MAX |
268 | #if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 | 323 | # undef UINTMAX_C |
324 | # undef uintmax_t | ||
325 | # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 | ||
269 | typedef unsigned long long int gl_uintmax_t; | 326 | typedef unsigned long long int gl_uintmax_t; |
270 | # define uintmax_t gl_uintmax_t | 327 | # define uintmax_t gl_uintmax_t |
271 | #elif defined GL_UINT64_T | 328 | # elif defined GL_UINT64_T |
272 | # define uintmax_t uint64_t | 329 | # define uintmax_t uint64_t |
273 | #else | 330 | # else |
274 | typedef unsigned long int gl_uintmax_t; | 331 | typedef unsigned long int gl_uintmax_t; |
275 | # define uintmax_t gl_uintmax_t | 332 | # define uintmax_t gl_uintmax_t |
333 | # endif | ||
276 | #endif | 334 | #endif |
277 | 335 | ||
278 | /* Verify that intmax_t and uintmax_t have the same size. Too much code | 336 | /* Verify that intmax_t and uintmax_t have the same size. Too much code |
279 | breaks if this is not the case. If this check fails, the reason is likely | 337 | breaks if this is not the case. If this check fails, the reason is likely |
280 | to be found in the autoconf macros. */ | 338 | to be found in the autoconf macros. */ |
281 | typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - 1]; | 339 | typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t) |
340 | ? 1 : -1]; | ||
282 | 341 | ||
283 | /* 7.18.2. Limits of specified-width integer types */ | 342 | #define GNULIB_defined_stdint_types 1 |
343 | #endif /* !GNULIB_defined_stdint_types */ | ||
284 | 344 | ||
285 | #if ! defined __cplusplus || defined __STDC_LIMIT_MACROS | 345 | /* 7.18.2. Limits of specified-width integer types */ |
286 | 346 | ||
287 | /* 7.18.2.1. Limits of exact-width integer types */ | 347 | /* 7.18.2.1. Limits of exact-width integer types */ |
288 | 348 | ||
@@ -310,17 +370,14 @@ typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - | |||
310 | #define INT32_MAX 2147483647 | 370 | #define INT32_MAX 2147483647 |
311 | #define UINT32_MAX 4294967295U | 371 | #define UINT32_MAX 4294967295U |
312 | 372 | ||
313 | #undef INT64_MIN | 373 | #if defined GL_INT64_T && ! defined INT64_MAX |
314 | #undef INT64_MAX | ||
315 | #ifdef GL_INT64_T | ||
316 | /* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0 | 374 | /* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0 |
317 | evaluates the latter incorrectly in preprocessor expressions. */ | 375 | evaluates the latter incorrectly in preprocessor expressions. */ |
318 | # define INT64_MIN (- INTMAX_C (1) << 63) | 376 | # define INT64_MIN (- INTMAX_C (1) << 63) |
319 | # define INT64_MAX INTMAX_C (9223372036854775807) | 377 | # define INT64_MAX INTMAX_C (9223372036854775807) |
320 | #endif | 378 | #endif |
321 | 379 | ||
322 | #undef UINT64_MAX | 380 | #if defined GL_UINT64_T && ! defined UINT64_MAX |
323 | #ifdef GL_UINT64_T | ||
324 | # define UINT64_MAX UINTMAX_C (18446744073709551615) | 381 | # define UINT64_MAX UINTMAX_C (18446744073709551615) |
325 | #endif | 382 | #endif |
326 | 383 | ||
@@ -372,23 +429,29 @@ typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - | |||
372 | #undef INT_FAST8_MIN | 429 | #undef INT_FAST8_MIN |
373 | #undef INT_FAST8_MAX | 430 | #undef INT_FAST8_MAX |
374 | #undef UINT_FAST8_MAX | 431 | #undef UINT_FAST8_MAX |
375 | #define INT_FAST8_MIN LONG_MIN | 432 | #define INT_FAST8_MIN SCHAR_MIN |
376 | #define INT_FAST8_MAX LONG_MAX | 433 | #define INT_FAST8_MAX SCHAR_MAX |
377 | #define UINT_FAST8_MAX ULONG_MAX | 434 | #define UINT_FAST8_MAX UCHAR_MAX |
378 | 435 | ||
379 | #undef INT_FAST16_MIN | 436 | #undef INT_FAST16_MIN |
380 | #undef INT_FAST16_MAX | 437 | #undef INT_FAST16_MAX |
381 | #undef UINT_FAST16_MAX | 438 | #undef UINT_FAST16_MAX |
382 | #define INT_FAST16_MIN LONG_MIN | 439 | #define INT_FAST16_MIN INT_FAST32_MIN |
383 | #define INT_FAST16_MAX LONG_MAX | 440 | #define INT_FAST16_MAX INT_FAST32_MAX |
384 | #define UINT_FAST16_MAX ULONG_MAX | 441 | #define UINT_FAST16_MAX UINT_FAST32_MAX |
385 | 442 | ||
386 | #undef INT_FAST32_MIN | 443 | #undef INT_FAST32_MIN |
387 | #undef INT_FAST32_MAX | 444 | #undef INT_FAST32_MAX |
388 | #undef UINT_FAST32_MAX | 445 | #undef UINT_FAST32_MAX |
389 | #define INT_FAST32_MIN LONG_MIN | 446 | #ifdef __sun |
390 | #define INT_FAST32_MAX LONG_MAX | 447 | # define INT_FAST32_MIN INT_MIN |
391 | #define UINT_FAST32_MAX ULONG_MAX | 448 | # define INT_FAST32_MAX INT_MAX |
449 | # define UINT_FAST32_MAX UINT_MAX | ||
450 | #else | ||
451 | # define INT_FAST32_MIN LONG_MIN | ||
452 | # define INT_FAST32_MAX LONG_MAX | ||
453 | # define UINT_FAST32_MAX ULONG_MAX | ||
454 | #endif | ||
392 | 455 | ||
393 | #undef INT_FAST64_MIN | 456 | #undef INT_FAST64_MIN |
394 | #undef INT_FAST64_MAX | 457 | #undef INT_FAST64_MAX |
@@ -413,21 +476,23 @@ typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - | |||
413 | 476 | ||
414 | /* 7.18.2.5. Limits of greatest-width integer types */ | 477 | /* 7.18.2.5. Limits of greatest-width integer types */ |
415 | 478 | ||
416 | #undef INTMAX_MIN | 479 | #ifndef INTMAX_MAX |
417 | #undef INTMAX_MAX | 480 | # undef INTMAX_MIN |
418 | #ifdef INT64_MAX | 481 | # ifdef INT64_MAX |
419 | # define INTMAX_MIN INT64_MIN | 482 | # define INTMAX_MIN INT64_MIN |
420 | # define INTMAX_MAX INT64_MAX | 483 | # define INTMAX_MAX INT64_MAX |
421 | #else | 484 | # else |
422 | # define INTMAX_MIN INT32_MIN | 485 | # define INTMAX_MIN INT32_MIN |
423 | # define INTMAX_MAX INT32_MAX | 486 | # define INTMAX_MAX INT32_MAX |
487 | # endif | ||
424 | #endif | 488 | #endif |
425 | 489 | ||
426 | #undef UINTMAX_MAX | 490 | #ifndef UINTMAX_MAX |
427 | #ifdef UINT64_MAX | 491 | # ifdef UINT64_MAX |
428 | # define UINTMAX_MAX UINT64_MAX | 492 | # define UINTMAX_MAX UINT64_MAX |
429 | #else | 493 | # else |
430 | # define UINTMAX_MAX UINT32_MAX | 494 | # define UINTMAX_MAX UINT32_MAX |
495 | # endif | ||
431 | #endif | 496 | #endif |
432 | 497 | ||
433 | /* 7.18.3. Limits of other integer types */ | 498 | /* 7.18.3. Limits of other integer types */ |
@@ -475,10 +540,16 @@ typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - | |||
475 | 540 | ||
476 | /* wchar_t limits */ | 541 | /* wchar_t limits */ |
477 | /* Get WCHAR_MIN, WCHAR_MAX. | 542 | /* Get WCHAR_MIN, WCHAR_MAX. |
478 | This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested | 543 | This include is not on the top, above, because on OSF/1 4.0 we have a |
479 | includes <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes | 544 | sequence of nested includes |
545 | <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes | ||
480 | <stdint.h> and assumes its types are already defined. */ | 546 | <stdint.h> and assumes its types are already defined. */ |
481 | #if ! (defined WCHAR_MIN && defined WCHAR_MAX) | 547 | #if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX) |
548 | /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
549 | included before <wchar.h>. */ | ||
550 | # include <stddef.h> | ||
551 | # include <stdio.h> | ||
552 | # include <time.h> | ||
482 | # define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H | 553 | # define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H |
483 | # include <wchar.h> | 554 | # include <wchar.h> |
484 | # undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H | 555 | # undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H |
@@ -498,12 +569,8 @@ typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - | |||
498 | #define WINT_MAX \ | 569 | #define WINT_MAX \ |
499 | _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) | 570 | _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) |
500 | 571 | ||
501 | #endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */ | ||
502 | |||
503 | /* 7.18.4. Macros for integer constants */ | 572 | /* 7.18.4. Macros for integer constants */ |
504 | 573 | ||
505 | #if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS | ||
506 | |||
507 | /* 7.18.4.1. Macros for minimum-width integer constants */ | 574 | /* 7.18.4.1. Macros for minimum-width integer constants */ |
508 | /* According to ISO C 99 Technical Corrigendum 1 */ | 575 | /* According to ISO C 99 Technical Corrigendum 1 */ |
509 | 576 | ||
@@ -544,25 +611,26 @@ typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - | |||
544 | 611 | ||
545 | /* 7.18.4.2. Macros for greatest-width integer constants */ | 612 | /* 7.18.4.2. Macros for greatest-width integer constants */ |
546 | 613 | ||
547 | #undef INTMAX_C | 614 | #ifndef INTMAX_C |
548 | #if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 | 615 | # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 |
549 | # define INTMAX_C(x) x##LL | 616 | # define INTMAX_C(x) x##LL |
550 | #elif defined GL_INT64_T | 617 | # elif defined GL_INT64_T |
551 | # define INTMAX_C(x) INT64_C(x) | 618 | # define INTMAX_C(x) INT64_C(x) |
552 | #else | 619 | # else |
553 | # define INTMAX_C(x) x##L | 620 | # define INTMAX_C(x) x##L |
621 | # endif | ||
554 | #endif | 622 | #endif |
555 | 623 | ||
556 | #undef UINTMAX_C | 624 | #ifndef UINTMAX_C |
557 | #if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 | 625 | # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 |
558 | # define UINTMAX_C(x) x##ULL | 626 | # define UINTMAX_C(x) x##ULL |
559 | #elif defined GL_UINT64_T | 627 | # elif defined GL_UINT64_T |
560 | # define UINTMAX_C(x) UINT64_C(x) | 628 | # define UINTMAX_C(x) UINT64_C(x) |
561 | #else | 629 | # else |
562 | # define UINTMAX_C(x) x##UL | 630 | # define UINTMAX_C(x) x##UL |
631 | # endif | ||
563 | #endif | 632 | #endif |
564 | 633 | ||
565 | #endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */ | 634 | #endif /* _@GUARD_PREFIX@_STDINT_H */ |
566 | 635 | #endif /* !(defined __ANDROID__ && ...) */ | |
567 | #endif /* _GL_STDINT_H */ | 636 | #endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */ |
568 | #endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */ | ||