Annotation of embedaddon/libiconv/srclib/stdint.in.h, revision 1.1.1.2
1.1.1.2 ! misho 1: /* Copyright (C) 2001-2002, 2004-2011 Free Software Foundation, Inc.
1.1 misho 2: Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
3: This file is part of gnulib.
4:
5: This program is free software; you can redistribute it and/or modify
6: it under the terms of the GNU General Public License as published by
7: the Free Software Foundation; either version 3, or (at your option)
8: any later version.
9:
10: This program is distributed in the hope that it will be useful,
11: but WITHOUT ANY WARRANTY; without even the implied warranty of
12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13: GNU General Public License for more details.
14:
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,
17: Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
18:
19: /*
20: * ISO C 99 <stdint.h> for platforms that lack it.
21: * <http://www.opengroup.org/susv3xbd/stdint.h.html>
22: */
23:
1.1.1.2 ! misho 24: #ifndef _@GUARD_PREFIX@_STDINT_H
! 25:
! 26: #if __GNUC__ >= 3
! 27: @PRAGMA_SYSTEM_HEADER@
! 28: #endif
! 29: @PRAGMA_COLUMNS@
1.1 misho 30:
31: /* When including a system file that in turn includes <inttypes.h>,
32: use the system <inttypes.h>, not our substitute. This avoids
33: problems with (for example) VMS, whose <sys/bitypes.h> includes
34: <inttypes.h>. */
35: #define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
36:
37: /* Get those types that are already defined in other system include
38: files, so that we can "#define int8_t signed char" below without
39: worrying about a later system include file containing a "typedef
40: signed char int8_t;" that will get messed up by our macro. Our
41: macros should all be consistent with the system versions, except
42: for the "fast" types and macros, which we recommend against using
43: in public interfaces due to compiler differences. */
44:
45: #if @HAVE_STDINT_H@
46: # if defined __sgi && ! defined __c99
47: /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
48: with "This header file is to be used only for c99 mode compilations"
49: diagnostics. */
50: # define __STDINT_H__
51: # endif
52: /* Other systems may have an incomplete or buggy <stdint.h>.
53: Include it before <inttypes.h>, since any "#include <stdint.h>"
54: in <inttypes.h> would reinclude us, skipping our contents because
1.1.1.2 ! misho 55: _@GUARD_PREFIX@_STDINT_H is defined.
1.1 misho 56: The include_next requires a split double-inclusion guard. */
57: # @INCLUDE_NEXT@ @NEXT_STDINT_H@
58: #endif
59:
1.1.1.2 ! misho 60: #if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
! 61: #define _@GUARD_PREFIX@_STDINT_H
1.1 misho 62:
63: /* <sys/types.h> defines some of the stdint.h types as well, on glibc,
64: IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
65: AIX 5.2 <sys/types.h> isn't needed and causes troubles.
66: MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
67: relies on the system <stdint.h> definitions, so include
68: <sys/types.h> after @NEXT_STDINT_H@. */
69: #if @HAVE_SYS_TYPES_H@ && ! defined _AIX
70: # include <sys/types.h>
71: #endif
72:
73: /* Get LONG_MIN, LONG_MAX, ULONG_MAX. */
74: #include <limits.h>
75:
76: #if @HAVE_INTTYPES_H@
77: /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
78: int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
79: <inttypes.h> also defines intptr_t and uintptr_t. */
80: # include <inttypes.h>
81: #elif @HAVE_SYS_INTTYPES_H@
82: /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
83: the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */
84: # include <sys/inttypes.h>
85: #endif
86:
87: #if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
88: /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
89: int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is
90: included by <sys/types.h>. */
91: # include <sys/bitypes.h>
92: #endif
93:
94: #undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
95:
1.1.1.2 ! misho 96: /* Minimum and maximum values for an integer type under the usual assumption.
1.1 misho 97: Return an unspecified value if BITS == 0, adding a check to pacify
98: picky compilers. */
99:
100: #define _STDINT_MIN(signed, bits, zero) \
101: ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero))
102:
103: #define _STDINT_MAX(signed, bits, zero) \
104: ((signed) \
105: ? ~ _STDINT_MIN (signed, bits, zero) \
106: : /* The expression for the unsigned case. The subtraction of (signed) \
1.1.1.2 ! misho 107: is a nop in the unsigned case and avoids "signed integer overflow" \
! 108: warnings in the signed case. */ \
1.1 misho 109: ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
110:
1.1.1.2 ! misho 111: #if !GNULIB_defined_stdint_types
! 112:
1.1 misho 113: /* 7.18.1.1. Exact-width integer types */
114:
115: /* Here we assume a standard architecture where the hardware integer
116: types have 8, 16, 32, optionally 64 bits. */
117:
118: #undef int8_t
119: #undef uint8_t
120: typedef signed char gl_int8_t;
121: typedef unsigned char gl_uint8_t;
122: #define int8_t gl_int8_t
123: #define uint8_t gl_uint8_t
124:
125: #undef int16_t
126: #undef uint16_t
127: typedef short int gl_int16_t;
128: typedef unsigned short int gl_uint16_t;
129: #define int16_t gl_int16_t
130: #define uint16_t gl_uint16_t
131:
132: #undef int32_t
133: #undef uint32_t
134: typedef int gl_int32_t;
135: typedef unsigned int gl_uint32_t;
136: #define int32_t gl_int32_t
137: #define uint32_t gl_uint32_t
138:
1.1.1.2 ! misho 139: /* If the system defines INT64_MAX, assume int64_t works. That way,
! 140: if the underlying platform defines int64_t to be a 64-bit long long
! 141: int, the code below won't mistakenly define it to be a 64-bit long
! 142: int, which would mess up C++ name mangling. We must use #ifdef
! 143: rather than #if, to avoid an error with HP-UX 10.20 cc. */
! 144:
! 145: #ifdef INT64_MAX
! 146: # define GL_INT64_T
! 147: #else
1.1 misho 148: /* Do not undefine int64_t if gnulib is not being used with 64-bit
149: types, since otherwise it breaks platforms like Tandem/NSK. */
1.1.1.2 ! misho 150: # if LONG_MAX >> 31 >> 31 == 1
! 151: # undef int64_t
1.1 misho 152: typedef long int gl_int64_t;
1.1.1.2 ! misho 153: # define int64_t gl_int64_t
! 154: # define GL_INT64_T
! 155: # elif defined _MSC_VER
! 156: # undef int64_t
1.1 misho 157: typedef __int64 gl_int64_t;
1.1.1.2 ! misho 158: # define int64_t gl_int64_t
! 159: # define GL_INT64_T
! 160: # elif @HAVE_LONG_LONG_INT@
! 161: # undef int64_t
1.1 misho 162: typedef long long int gl_int64_t;
1.1.1.2 ! misho 163: # define int64_t gl_int64_t
! 164: # define GL_INT64_T
! 165: # endif
1.1 misho 166: #endif
167:
1.1.1.2 ! misho 168: #ifdef UINT64_MAX
1.1 misho 169: # define GL_UINT64_T
1.1.1.2 ! misho 170: #else
! 171: # if ULONG_MAX >> 31 >> 31 >> 1 == 1
! 172: # undef uint64_t
! 173: typedef unsigned long int gl_uint64_t;
! 174: # define uint64_t gl_uint64_t
! 175: # define GL_UINT64_T
! 176: # elif defined _MSC_VER
! 177: # undef uint64_t
1.1 misho 178: typedef unsigned __int64 gl_uint64_t;
1.1.1.2 ! misho 179: # define uint64_t gl_uint64_t
! 180: # define GL_UINT64_T
! 181: # elif @HAVE_UNSIGNED_LONG_LONG_INT@
! 182: # undef uint64_t
1.1 misho 183: typedef unsigned long long int gl_uint64_t;
1.1.1.2 ! misho 184: # define uint64_t gl_uint64_t
! 185: # define GL_UINT64_T
! 186: # endif
1.1 misho 187: #endif
188:
189: /* Avoid collision with Solaris 2.5.1 <pthread.h> etc. */
190: #define _UINT8_T
191: #define _UINT32_T
192: #define _UINT64_T
193:
194:
195: /* 7.18.1.2. Minimum-width integer types */
196:
197: /* Here we assume a standard architecture where the hardware integer
198: types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
199: are the same as the corresponding N_t types. */
200:
201: #undef int_least8_t
202: #undef uint_least8_t
203: #undef int_least16_t
204: #undef uint_least16_t
205: #undef int_least32_t
206: #undef uint_least32_t
207: #undef int_least64_t
208: #undef uint_least64_t
209: #define int_least8_t int8_t
210: #define uint_least8_t uint8_t
211: #define int_least16_t int16_t
212: #define uint_least16_t uint16_t
213: #define int_least32_t int32_t
214: #define uint_least32_t uint32_t
215: #ifdef GL_INT64_T
216: # define int_least64_t int64_t
217: #endif
218: #ifdef GL_UINT64_T
219: # define uint_least64_t uint64_t
220: #endif
221:
222: /* 7.18.1.3. Fastest minimum-width integer types */
223:
224: /* Note: Other <stdint.h> substitutes may define these types differently.
225: It is not recommended to use these types in public header files. */
226:
227: /* Here we assume a standard architecture where the hardware integer
228: types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
229: are taken from the same list of types. Assume that 'long int'
230: is fast enough for all narrower integers. */
231:
232: #undef int_fast8_t
233: #undef uint_fast8_t
234: #undef int_fast16_t
235: #undef uint_fast16_t
236: #undef int_fast32_t
237: #undef uint_fast32_t
238: #undef int_fast64_t
239: #undef uint_fast64_t
240: typedef long int gl_int_fast8_t;
241: typedef unsigned long int gl_uint_fast8_t;
242: typedef long int gl_int_fast16_t;
243: typedef unsigned long int gl_uint_fast16_t;
244: typedef long int gl_int_fast32_t;
245: typedef unsigned long int gl_uint_fast32_t;
246: #define int_fast8_t gl_int_fast8_t
247: #define uint_fast8_t gl_uint_fast8_t
248: #define int_fast16_t gl_int_fast16_t
249: #define uint_fast16_t gl_uint_fast16_t
250: #define int_fast32_t gl_int_fast32_t
251: #define uint_fast32_t gl_uint_fast32_t
252: #ifdef GL_INT64_T
253: # define int_fast64_t int64_t
254: #endif
255: #ifdef GL_UINT64_T
256: # define uint_fast64_t uint64_t
257: #endif
258:
259: /* 7.18.1.4. Integer types capable of holding object pointers */
260:
261: #undef intptr_t
262: #undef uintptr_t
263: typedef long int gl_intptr_t;
264: typedef unsigned long int gl_uintptr_t;
265: #define intptr_t gl_intptr_t
266: #define uintptr_t gl_uintptr_t
267:
268: /* 7.18.1.5. Greatest-width integer types */
269:
270: /* Note: These types are compiler dependent. It may be unwise to use them in
271: public header files. */
272:
1.1.1.2 ! misho 273: /* If the system defines INTMAX_MAX, assume that intmax_t works, and
! 274: similarly for UINTMAX_MAX and uintmax_t. This avoids problems with
! 275: assuming one type where another is used by the system. */
! 276:
! 277: #ifndef INTMAX_MAX
! 278: # undef INTMAX_C
! 279: # undef intmax_t
! 280: # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
1.1 misho 281: typedef long long int gl_intmax_t;
1.1.1.2 ! misho 282: # define intmax_t gl_intmax_t
! 283: # elif defined GL_INT64_T
! 284: # define intmax_t int64_t
! 285: # else
1.1 misho 286: typedef long int gl_intmax_t;
1.1.1.2 ! misho 287: # define intmax_t gl_intmax_t
! 288: # endif
1.1 misho 289: #endif
290:
1.1.1.2 ! misho 291: #ifndef UINTMAX_MAX
! 292: # undef UINTMAX_C
! 293: # undef uintmax_t
! 294: # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
1.1 misho 295: typedef unsigned long long int gl_uintmax_t;
1.1.1.2 ! misho 296: # define uintmax_t gl_uintmax_t
! 297: # elif defined GL_UINT64_T
! 298: # define uintmax_t uint64_t
! 299: # else
1.1 misho 300: typedef unsigned long int gl_uintmax_t;
1.1.1.2 ! misho 301: # define uintmax_t gl_uintmax_t
! 302: # endif
1.1 misho 303: #endif
304:
305: /* Verify that intmax_t and uintmax_t have the same size. Too much code
306: breaks if this is not the case. If this check fails, the reason is likely
307: to be found in the autoconf macros. */
1.1.1.2 ! misho 308: typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
! 309: ? 1 : -1];
! 310:
! 311: #define GNULIB_defined_stdint_types 1
! 312: #endif /* !GNULIB_defined_stdint_types */
1.1 misho 313:
314: /* 7.18.2. Limits of specified-width integer types */
315:
316: #if ! defined __cplusplus || defined __STDC_LIMIT_MACROS
317:
318: /* 7.18.2.1. Limits of exact-width integer types */
319:
320: /* Here we assume a standard architecture where the hardware integer
321: types have 8, 16, 32, optionally 64 bits. */
322:
323: #undef INT8_MIN
324: #undef INT8_MAX
325: #undef UINT8_MAX
326: #define INT8_MIN (~ INT8_MAX)
327: #define INT8_MAX 127
328: #define UINT8_MAX 255
329:
330: #undef INT16_MIN
331: #undef INT16_MAX
332: #undef UINT16_MAX
333: #define INT16_MIN (~ INT16_MAX)
334: #define INT16_MAX 32767
335: #define UINT16_MAX 65535
336:
337: #undef INT32_MIN
338: #undef INT32_MAX
339: #undef UINT32_MAX
340: #define INT32_MIN (~ INT32_MAX)
341: #define INT32_MAX 2147483647
342: #define UINT32_MAX 4294967295U
343:
1.1.1.2 ! misho 344: #if defined GL_INT64_T && ! defined INT64_MAX
1.1 misho 345: /* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
346: evaluates the latter incorrectly in preprocessor expressions. */
347: # define INT64_MIN (- INTMAX_C (1) << 63)
348: # define INT64_MAX INTMAX_C (9223372036854775807)
349: #endif
350:
1.1.1.2 ! misho 351: #if defined GL_UINT64_T && ! defined UINT64_MAX
1.1 misho 352: # define UINT64_MAX UINTMAX_C (18446744073709551615)
353: #endif
354:
355: /* 7.18.2.2. Limits of minimum-width integer types */
356:
357: /* Here we assume a standard architecture where the hardware integer
358: types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
359: are the same as the corresponding N_t types. */
360:
361: #undef INT_LEAST8_MIN
362: #undef INT_LEAST8_MAX
363: #undef UINT_LEAST8_MAX
364: #define INT_LEAST8_MIN INT8_MIN
365: #define INT_LEAST8_MAX INT8_MAX
366: #define UINT_LEAST8_MAX UINT8_MAX
367:
368: #undef INT_LEAST16_MIN
369: #undef INT_LEAST16_MAX
370: #undef UINT_LEAST16_MAX
371: #define INT_LEAST16_MIN INT16_MIN
372: #define INT_LEAST16_MAX INT16_MAX
373: #define UINT_LEAST16_MAX UINT16_MAX
374:
375: #undef INT_LEAST32_MIN
376: #undef INT_LEAST32_MAX
377: #undef UINT_LEAST32_MAX
378: #define INT_LEAST32_MIN INT32_MIN
379: #define INT_LEAST32_MAX INT32_MAX
380: #define UINT_LEAST32_MAX UINT32_MAX
381:
382: #undef INT_LEAST64_MIN
383: #undef INT_LEAST64_MAX
384: #ifdef GL_INT64_T
385: # define INT_LEAST64_MIN INT64_MIN
386: # define INT_LEAST64_MAX INT64_MAX
387: #endif
388:
389: #undef UINT_LEAST64_MAX
390: #ifdef GL_UINT64_T
391: # define UINT_LEAST64_MAX UINT64_MAX
392: #endif
393:
394: /* 7.18.2.3. Limits of fastest minimum-width integer types */
395:
396: /* Here we assume a standard architecture where the hardware integer
397: types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
398: are taken from the same list of types. */
399:
400: #undef INT_FAST8_MIN
401: #undef INT_FAST8_MAX
402: #undef UINT_FAST8_MAX
403: #define INT_FAST8_MIN LONG_MIN
404: #define INT_FAST8_MAX LONG_MAX
405: #define UINT_FAST8_MAX ULONG_MAX
406:
407: #undef INT_FAST16_MIN
408: #undef INT_FAST16_MAX
409: #undef UINT_FAST16_MAX
410: #define INT_FAST16_MIN LONG_MIN
411: #define INT_FAST16_MAX LONG_MAX
412: #define UINT_FAST16_MAX ULONG_MAX
413:
414: #undef INT_FAST32_MIN
415: #undef INT_FAST32_MAX
416: #undef UINT_FAST32_MAX
417: #define INT_FAST32_MIN LONG_MIN
418: #define INT_FAST32_MAX LONG_MAX
419: #define UINT_FAST32_MAX ULONG_MAX
420:
421: #undef INT_FAST64_MIN
422: #undef INT_FAST64_MAX
423: #ifdef GL_INT64_T
424: # define INT_FAST64_MIN INT64_MIN
425: # define INT_FAST64_MAX INT64_MAX
426: #endif
427:
428: #undef UINT_FAST64_MAX
429: #ifdef GL_UINT64_T
430: # define UINT_FAST64_MAX UINT64_MAX
431: #endif
432:
433: /* 7.18.2.4. Limits of integer types capable of holding object pointers */
434:
435: #undef INTPTR_MIN
436: #undef INTPTR_MAX
437: #undef UINTPTR_MAX
438: #define INTPTR_MIN LONG_MIN
439: #define INTPTR_MAX LONG_MAX
440: #define UINTPTR_MAX ULONG_MAX
441:
442: /* 7.18.2.5. Limits of greatest-width integer types */
443:
1.1.1.2 ! misho 444: #ifndef INTMAX_MAX
! 445: # undef INTMAX_MIN
! 446: # ifdef INT64_MAX
! 447: # define INTMAX_MIN INT64_MIN
! 448: # define INTMAX_MAX INT64_MAX
! 449: # else
! 450: # define INTMAX_MIN INT32_MIN
! 451: # define INTMAX_MAX INT32_MAX
! 452: # endif
1.1 misho 453: #endif
454:
1.1.1.2 ! misho 455: #ifndef UINTMAX_MAX
! 456: # ifdef UINT64_MAX
! 457: # define UINTMAX_MAX UINT64_MAX
! 458: # else
! 459: # define UINTMAX_MAX UINT32_MAX
! 460: # endif
1.1 misho 461: #endif
462:
463: /* 7.18.3. Limits of other integer types */
464:
465: /* ptrdiff_t limits */
466: #undef PTRDIFF_MIN
467: #undef PTRDIFF_MAX
468: #if @APPLE_UNIVERSAL_BUILD@
469: # ifdef _LP64
470: # define PTRDIFF_MIN _STDINT_MIN (1, 64, 0l)
471: # define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l)
472: # else
473: # define PTRDIFF_MIN _STDINT_MIN (1, 32, 0)
474: # define PTRDIFF_MAX _STDINT_MAX (1, 32, 0)
475: # endif
476: #else
477: # define PTRDIFF_MIN \
478: _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
479: # define PTRDIFF_MAX \
480: _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
481: #endif
482:
483: /* sig_atomic_t limits */
484: #undef SIG_ATOMIC_MIN
485: #undef SIG_ATOMIC_MAX
486: #define SIG_ATOMIC_MIN \
487: _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
1.1.1.2 ! misho 488: 0@SIG_ATOMIC_T_SUFFIX@)
1.1 misho 489: #define SIG_ATOMIC_MAX \
490: _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
1.1.1.2 ! misho 491: 0@SIG_ATOMIC_T_SUFFIX@)
1.1 misho 492:
493:
494: /* size_t limit */
495: #undef SIZE_MAX
496: #if @APPLE_UNIVERSAL_BUILD@
497: # ifdef _LP64
498: # define SIZE_MAX _STDINT_MAX (0, 64, 0ul)
499: # else
500: # define SIZE_MAX _STDINT_MAX (0, 32, 0ul)
501: # endif
502: #else
503: # define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
504: #endif
505:
506: /* wchar_t limits */
507: /* Get WCHAR_MIN, WCHAR_MAX.
1.1.1.2 ! misho 508: This include is not on the top, above, because on OSF/1 4.0 we have a
! 509: sequence of nested includes
! 510: <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
1.1 misho 511: <stdint.h> and assumes its types are already defined. */
1.1.1.2 ! misho 512: #if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX)
! 513: /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
! 514: included before <wchar.h>. */
! 515: # include <stddef.h>
! 516: # include <stdio.h>
! 517: # include <time.h>
1.1 misho 518: # define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
519: # include <wchar.h>
520: # undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
521: #endif
522: #undef WCHAR_MIN
523: #undef WCHAR_MAX
524: #define WCHAR_MIN \
525: _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
526: #define WCHAR_MAX \
527: _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
528:
529: /* wint_t limits */
530: #undef WINT_MIN
531: #undef WINT_MAX
532: #define WINT_MIN \
533: _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
534: #define WINT_MAX \
535: _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
536:
537: #endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
538:
539: /* 7.18.4. Macros for integer constants */
540:
541: #if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
542:
543: /* 7.18.4.1. Macros for minimum-width integer constants */
544: /* According to ISO C 99 Technical Corrigendum 1 */
545:
546: /* Here we assume a standard architecture where the hardware integer
547: types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */
548:
549: #undef INT8_C
550: #undef UINT8_C
551: #define INT8_C(x) x
552: #define UINT8_C(x) x
553:
554: #undef INT16_C
555: #undef UINT16_C
556: #define INT16_C(x) x
557: #define UINT16_C(x) x
558:
559: #undef INT32_C
560: #undef UINT32_C
561: #define INT32_C(x) x
562: #define UINT32_C(x) x ## U
563:
564: #undef INT64_C
565: #undef UINT64_C
566: #if LONG_MAX >> 31 >> 31 == 1
567: # define INT64_C(x) x##L
568: #elif defined _MSC_VER
569: # define INT64_C(x) x##i64
570: #elif @HAVE_LONG_LONG_INT@
571: # define INT64_C(x) x##LL
572: #endif
573: #if ULONG_MAX >> 31 >> 31 >> 1 == 1
574: # define UINT64_C(x) x##UL
575: #elif defined _MSC_VER
576: # define UINT64_C(x) x##ui64
577: #elif @HAVE_UNSIGNED_LONG_LONG_INT@
578: # define UINT64_C(x) x##ULL
579: #endif
580:
581: /* 7.18.4.2. Macros for greatest-width integer constants */
582:
1.1.1.2 ! misho 583: #ifndef INTMAX_C
! 584: # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
! 585: # define INTMAX_C(x) x##LL
! 586: # elif defined GL_INT64_T
! 587: # define INTMAX_C(x) INT64_C(x)
! 588: # else
! 589: # define INTMAX_C(x) x##L
! 590: # endif
1.1 misho 591: #endif
592:
1.1.1.2 ! misho 593: #ifndef UINTMAX_C
! 594: # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
! 595: # define UINTMAX_C(x) x##ULL
! 596: # elif defined GL_UINT64_T
! 597: # define UINTMAX_C(x) UINT64_C(x)
! 598: # else
! 599: # define UINTMAX_C(x) x##UL
! 600: # endif
1.1 misho 601: #endif
602:
603: #endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
604:
1.1.1.2 ! misho 605: #endif /* _@GUARD_PREFIX@_STDINT_H */
! 606: #endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>