105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copyright (C) 2001-2002, 2004-2012 Free Software Foundation, Inc.
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This file is part of gnulib.
505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is free software; you can redistribute it and/or modify
705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   it under the terms of the GNU General Public License as published by
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the Free Software Foundation; either version 3, or (at your option)
905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   any later version.
1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is distributed in the hope that it will be useful,
1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   but WITHOUT ANY WARRANTY; without even the implied warranty of
1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNU General Public License for more details.
1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   You should have received a copy of the GNU General Public License
1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*
2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * ISO C 99 <stdint.h> for platforms that lack it.
2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * <http://www.opengroup.org/susv3xbd/stdint.h.html>
2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_STDINT_H
2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if __GNUC__ >= 3
2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#pragma GCC system_header
2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* When including a system file that in turn includes <inttypes.h>,
3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   use the system <inttypes.h>, not our substitute.  This avoids
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   problems with (for example) VMS, whose <sys/bitypes.h> includes
3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <inttypes.h>.  */
3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* On Android (Bionic libc), <sys/types.h> includes this file before
3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   having defined 'time_t'.  Therefore in this case avoid including
3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   other system header files; just include the system's <stdint.h>.
4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Ideally we should test __BIONIC__ here, but it is only defined after
4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <sys/cdefs.h> has been included; hence test __ANDROID__ instead.  */
4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __ANDROID__ \
4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    && defined _SYS_TYPES_H_ && !defined _SSIZE_T_DEFINED_
4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include_next <stdint.h>
4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get those types that are already defined in other system include
4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   files, so that we can "#define int8_t signed char" below without
4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   worrying about a later system include file containing a "typedef
5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   signed char int8_t;" that will get messed up by our macro.  Our
5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   macros should all be consistent with the system versions, except
5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   for the "fast" types and macros, which we recommend against using
5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   in public interfaces due to compiler differences.  */
5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined __sgi && ! defined __c99
5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      with "This header file is to be used only for c99 mode compilations"
5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      diagnostics.  */
6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define __STDINT_H__
6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Some pre-C++11 <stdint.h> implementations need this.  */
6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef __cplusplus
6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  ifndef __STDC_CONSTANT_MACROS
6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define __STDC_CONSTANT_MACROS 1
6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  ifndef __STDC_LIMIT_MACROS
6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define __STDC_LIMIT_MACROS 1
7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Other systems may have an incomplete or buggy <stdint.h>.
7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     Include it before <inttypes.h>, since any "#include <stdint.h>"
7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     in <inttypes.h> would reinclude us, skipping our contents because
7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_STDINT_H is defined.
7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     The include_next requires a split double-inclusion guard.  */
7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include_next <stdint.h>
7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_STDINT_H
8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   AIX 5.2 <sys/types.h> isn't needed and causes troubles.
8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Mac OS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
8805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   relies on the system <stdint.h> definitions, so include
8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <sys/types.h> after <stdint.h>.  */
9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1 && ! defined _AIX
9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <sys/types.h>
9205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
9305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX,
9505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   LONG_MIN, LONG_MAX, ULONG_MAX.  */
9605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <limits.h>
9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
9805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
9905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
10005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     <inttypes.h> also defines intptr_t and uintptr_t.  */
10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <inttypes.h>
10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif 0
10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX.  */
10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <sys/inttypes.h>
10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0 && ! defined __BIT_TYPES_DEFINED__
11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     int{8,16,32,64}_t and __BIT_TYPES_DEFINED__.  In libc5 >= 5.2.2 it is
11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     included by <sys/types.h>.  */
11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <sys/bitypes.h>
11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Minimum and maximum values for an integer type under the usual assumption.
11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return an unspecified value if BITS == 0, adding a check to pacify
12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   picky compilers.  */
12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _STDINT_MIN(signed, bits, zero) \
12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero))
12405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _STDINT_MAX(signed, bits, zero) \
12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  ((signed) \
12705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   ? ~ _STDINT_MIN (signed, bits, zero) \
12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   : /* The expression for the unsigned case.  The subtraction of (signed) \
12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        is a nop in the unsigned case and avoids "signed integer overflow" \
13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        warnings in the signed case.  */ \
13105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !GNULIB_defined_stdint_types
13405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.1.1. Exact-width integer types */
13605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Here we assume a standard architecture where the hardware integer
13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   types have 8, 16, 32, optionally 64 bits.  */
13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef int8_t
14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef uint8_t
14205436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef signed char gl_int8_t;
14305436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned char gl_uint8_t;
14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define int8_t gl_int8_t
14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define uint8_t gl_uint8_t
14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef int16_t
14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef uint16_t
14905436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef short int gl_int16_t;
15005436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned short int gl_uint16_t;
15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define int16_t gl_int16_t
15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define uint16_t gl_uint16_t
15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef int32_t
15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef uint32_t
15605436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int gl_int32_t;
15705436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned int gl_uint32_t;
15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define int32_t gl_int32_t
15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define uint32_t gl_uint32_t
16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* If the system defines INT64_MAX, assume int64_t works.  That way,
16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   if the underlying platform defines int64_t to be a 64-bit long long
16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   int, the code below won't mistakenly define it to be a 64-bit long
16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   int, which would mess up C++ name mangling.  We must use #ifdef
16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   rather than #if, to avoid an error with HP-UX 10.20 cc.  */
16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef INT64_MAX
16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define GL_INT64_T
16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Do not undefine int64_t if gnulib is not being used with 64-bit
17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   types, since otherwise it breaks platforms like Tandem/NSK.  */
17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if LONG_MAX >> 31 >> 31 == 1
17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef int64_t
17405436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef long int gl_int64_t;
17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define int64_t gl_int64_t
17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GL_INT64_T
17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif defined _MSC_VER
17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef int64_t
17905436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef __int64 gl_int64_t;
18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define int64_t gl_int64_t
18105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GL_INT64_T
18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif 1
18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef int64_t
18405436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef long long int gl_int64_t;
18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define int64_t gl_int64_t
18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GL_INT64_T
18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef UINT64_MAX
19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define GL_UINT64_T
19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ULONG_MAX >> 31 >> 31 >> 1 == 1
19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef uint64_t
19505436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned long int gl_uint64_t;
19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define uint64_t gl_uint64_t
19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GL_UINT64_T
19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif defined _MSC_VER
19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef uint64_t
20005436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned __int64 gl_uint64_t;
20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define uint64_t gl_uint64_t
20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GL_UINT64_T
20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif 1
20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef uint64_t
20505436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned long long int gl_uint64_t;
20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define uint64_t gl_uint64_t
20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GL_UINT64_T
20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
21005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Avoid collision with Solaris 2.5.1 <pthread.h> etc.  */
21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _UINT8_T
21305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _UINT32_T
21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _UINT64_T
21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.1.2. Minimum-width integer types */
21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Here we assume a standard architecture where the hardware integer
22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   are the same as the corresponding N_t types.  */
22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef int_least8_t
22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef uint_least8_t
22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef int_least16_t
22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef uint_least16_t
22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef int_least32_t
22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef uint_least32_t
22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef int_least64_t
23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef uint_least64_t
23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define int_least8_t int8_t
23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define uint_least8_t uint8_t
23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define int_least16_t int16_t
23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define uint_least16_t uint16_t
23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define int_least32_t int32_t
23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define uint_least32_t uint32_t
23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef GL_INT64_T
23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define int_least64_t int64_t
23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef GL_UINT64_T
24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define uint_least64_t uint64_t
24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.1.3. Fastest minimum-width integer types */
24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Note: Other <stdint.h> substitutes may define these types differently.
24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   It is not recommended to use these types in public header files. */
24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Here we assume a standard architecture where the hardware integer
25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   are taken from the same list of types.  The following code normally
25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   uses types consistent with glibc, as that lessens the chance of
25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   incompatibility with older GNU hosts.  */
25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef int_fast8_t
25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef uint_fast8_t
25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef int_fast16_t
25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef uint_fast16_t
25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef int_fast32_t
26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef uint_fast32_t
26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef int_fast64_t
26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef uint_fast64_t
26305436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef signed char gl_int_fast8_t;
26405436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned char gl_uint_fast8_t;
26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef __sun
26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Define types compatible with SunOS 5.10, so that code compiled under
26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   earlier SunOS versions works with code compiled under SunOS 5.10.  */
26905436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int gl_int_fast32_t;
27005436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned int gl_uint_fast32_t;
27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
27205436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef long int gl_int_fast32_t;
27305436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned long int gl_uint_fast32_t;
27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
27505436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef gl_int_fast32_t gl_int_fast16_t;
27605436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef gl_uint_fast32_t gl_uint_fast16_t;
27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define int_fast8_t gl_int_fast8_t
27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define uint_fast8_t gl_uint_fast8_t
28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define int_fast16_t gl_int_fast16_t
28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define uint_fast16_t gl_uint_fast16_t
28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define int_fast32_t gl_int_fast32_t
28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define uint_fast32_t gl_uint_fast32_t
28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef GL_INT64_T
28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define int_fast64_t int64_t
28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
28705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef GL_UINT64_T
28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define uint_fast64_t uint64_t
28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.1.4. Integer types capable of holding object pointers */
29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef intptr_t
29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef uintptr_t
29505436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef long int gl_intptr_t;
29605436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned long int gl_uintptr_t;
29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define intptr_t gl_intptr_t
29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define uintptr_t gl_uintptr_t
29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.1.5. Greatest-width integer types */
30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Note: These types are compiler dependent. It may be unwise to use them in
30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   public header files. */
30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* If the system defines INTMAX_MAX, assume that intmax_t works, and
30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   similarly for UINTMAX_MAX and uintmax_t.  This avoids problems with
30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   assuming one type where another is used by the system.  */
30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INTMAX_MAX
31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef INTMAX_C
31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef intmax_t
31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1 && LONG_MAX >> 30 == 1
31305436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef long long int gl_intmax_t;
31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define intmax_t gl_intmax_t
31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif defined GL_INT64_T
31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define intmax_t int64_t
31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
31805436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef long int gl_intmax_t;
31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define intmax_t gl_intmax_t
32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef UINTMAX_MAX
32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef UINTMAX_C
32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef uintmax_t
32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1 && ULONG_MAX >> 31 == 1
32705436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned long long int gl_uintmax_t;
32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define uintmax_t gl_uintmax_t
32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif defined GL_UINT64_T
33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define uintmax_t uint64_t
33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
33205436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned long int gl_uintmax_t;
33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define uintmax_t gl_uintmax_t
33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Verify that intmax_t and uintmax_t have the same size.  Too much code
33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   breaks if this is not the case.  If this check fails, the reason is likely
33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   to be found in the autoconf macros.  */
34005436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                ? 1 : -1];
34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
34305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define GNULIB_defined_stdint_types 1
34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* !GNULIB_defined_stdint_types */
34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
34605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.2. Limits of specified-width integer types */
34705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
34805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.2.1. Limits of exact-width integer types */
34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Here we assume a standard architecture where the hardware integer
35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   types have 8, 16, 32, optionally 64 bits.  */
35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT8_MIN
35405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT8_MAX
35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT8_MAX
35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT8_MIN  (~ INT8_MAX)
35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT8_MAX  127
35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT8_MAX  255
35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT16_MIN
36105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT16_MAX
36205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT16_MAX
36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT16_MIN  (~ INT16_MAX)
36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT16_MAX  32767
36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT16_MAX  65535
36605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT32_MIN
36805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT32_MAX
36905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT32_MAX
37005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT32_MIN  (~ INT32_MAX)
37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT32_MAX  2147483647
37205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT32_MAX  4294967295U
37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
37405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined GL_INT64_T && ! defined INT64_MAX
37505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   evaluates the latter incorrectly in preprocessor expressions.  */
37705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define INT64_MIN  (- INTMAX_C (1) << 63)
37805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define INT64_MAX  INTMAX_C (9223372036854775807)
37905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
38005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined GL_UINT64_T && ! defined UINT64_MAX
38205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define UINT64_MAX  UINTMAX_C (18446744073709551615)
38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.2.2. Limits of minimum-width integer types */
38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Here we assume a standard architecture where the hardware integer
38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   are the same as the corresponding N_t types.  */
39005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_LEAST8_MIN
39205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_LEAST8_MAX
39305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT_LEAST8_MAX
39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT_LEAST8_MIN  INT8_MIN
39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT_LEAST8_MAX  INT8_MAX
39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT_LEAST8_MAX  UINT8_MAX
39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_LEAST16_MIN
39905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_LEAST16_MAX
40005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT_LEAST16_MAX
40105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT_LEAST16_MIN  INT16_MIN
40205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT_LEAST16_MAX  INT16_MAX
40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT_LEAST16_MAX  UINT16_MAX
40405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_LEAST32_MIN
40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_LEAST32_MAX
40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT_LEAST32_MAX
40805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT_LEAST32_MIN  INT32_MIN
40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT_LEAST32_MAX  INT32_MAX
41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT_LEAST32_MAX  UINT32_MAX
41105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_LEAST64_MIN
41305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_LEAST64_MAX
41405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef GL_INT64_T
41505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define INT_LEAST64_MIN  INT64_MIN
41605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define INT_LEAST64_MAX  INT64_MAX
41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
41805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT_LEAST64_MAX
42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef GL_UINT64_T
42105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define UINT_LEAST64_MAX  UINT64_MAX
42205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
42305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.2.3. Limits of fastest minimum-width integer types */
42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Here we assume a standard architecture where the hardware integer
42705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   are taken from the same list of types.  */
42905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_FAST8_MIN
43105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_FAST8_MAX
43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT_FAST8_MAX
43305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT_FAST8_MIN  SCHAR_MIN
43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT_FAST8_MAX  SCHAR_MAX
43505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT_FAST8_MAX  UCHAR_MAX
43605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_FAST16_MIN
43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_FAST16_MAX
43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT_FAST16_MAX
44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT_FAST16_MIN  INT_FAST32_MIN
44105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT_FAST16_MAX  INT_FAST32_MAX
44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT_FAST16_MAX  UINT_FAST32_MAX
44305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_FAST32_MIN
44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_FAST32_MAX
44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT_FAST32_MAX
44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef __sun
44805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define INT_FAST32_MIN  INT_MIN
44905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define INT_FAST32_MAX  INT_MAX
45005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define UINT_FAST32_MAX  UINT_MAX
45105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
45205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define INT_FAST32_MIN  LONG_MIN
45305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define INT_FAST32_MAX  LONG_MAX
45405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define UINT_FAST32_MAX  ULONG_MAX
45505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
45605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
45705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_FAST64_MIN
45805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT_FAST64_MAX
45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef GL_INT64_T
46005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define INT_FAST64_MIN  INT64_MIN
46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define INT_FAST64_MAX  INT64_MAX
46205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
46405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT_FAST64_MAX
46505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef GL_UINT64_T
46605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define UINT_FAST64_MAX  UINT64_MAX
46705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
46805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.2.4. Limits of integer types capable of holding object pointers */
47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INTPTR_MIN
47205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INTPTR_MAX
47305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINTPTR_MAX
47405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INTPTR_MIN  LONG_MIN
47505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INTPTR_MAX  LONG_MAX
47605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINTPTR_MAX  ULONG_MAX
47705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
47805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.2.5. Limits of greatest-width integer types */
47905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
48005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INTMAX_MAX
48105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef INTMAX_MIN
48205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef INT64_MAX
48305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define INTMAX_MIN  INT64_MIN
48405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define INTMAX_MAX  INT64_MAX
48505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
48605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define INTMAX_MIN  INT32_MIN
48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define INTMAX_MAX  INT32_MAX
48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef UINTMAX_MAX
49205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef UINT64_MAX
49305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define UINTMAX_MAX  UINT64_MAX
49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define UINTMAX_MAX  UINT32_MAX
49605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.3. Limits of other integer types */
50005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
50105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* ptrdiff_t limits */
50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef PTRDIFF_MIN
50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef PTRDIFF_MAX
50405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
50505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef _LP64
50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define PTRDIFF_MIN  _STDINT_MIN (1, 64, 0l)
50705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define PTRDIFF_MAX  _STDINT_MAX (1, 64, 0l)
50805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
50905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define PTRDIFF_MIN  _STDINT_MIN (1, 32, 0)
51005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define PTRDIFF_MAX  _STDINT_MAX (1, 32, 0)
51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
51305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define PTRDIFF_MIN  \
51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _STDINT_MIN (1, 64, 0l)
51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define PTRDIFF_MAX  \
51605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _STDINT_MAX (1, 64, 0l)
51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
51805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
51905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* sig_atomic_t limits */
52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef SIG_ATOMIC_MIN
52105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef SIG_ATOMIC_MAX
52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define SIG_ATOMIC_MIN  \
52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _STDINT_MIN (1, 32, \
52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                0)
52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define SIG_ATOMIC_MAX  \
52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _STDINT_MAX (1, 32, \
52705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                0)
52805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
52905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* size_t limit */
53105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef SIZE_MAX
53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
53305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef _LP64
53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define SIZE_MAX  _STDINT_MAX (0, 64, 0ul)
53505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
53605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define SIZE_MAX  _STDINT_MAX (0, 32, 0ul)
53705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
53805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define SIZE_MAX  _STDINT_MAX (0, 64, 0ul)
54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* wchar_t limits */
54305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get WCHAR_MIN, WCHAR_MAX.
54405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This include is not on the top, above, because on OSF/1 4.0 we have a
54505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   sequence of nested includes
54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <stdint.h> and assumes its types are already defined.  */
54805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1 && ! (defined WCHAR_MIN && defined WCHAR_MAX)
54905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
55005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     included before <wchar.h>.  */
55105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <stddef.h>
55205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <stdio.h>
55305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <time.h>
55405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
55505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <wchar.h>
55605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
55705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
55805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef WCHAR_MIN
55905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef WCHAR_MAX
56005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define WCHAR_MIN  \
56105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _STDINT_MIN (1, 32, 0)
56205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define WCHAR_MAX  \
56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _STDINT_MAX (1, 32, 0)
56405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* wint_t limits */
56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef WINT_MIN
56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef WINT_MAX
56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define WINT_MIN  \
56905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _STDINT_MIN (1, 32, 0)
57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define WINT_MAX  \
57105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _STDINT_MAX (1, 32, 0)
57205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.4. Macros for integer constants */
57405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.4.1. Macros for minimum-width integer constants */
57605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* According to ISO C 99 Technical Corrigendum 1 */
57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Here we assume a standard architecture where the hardware integer
57905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   types have 8, 16, 32, optionally 64 bits, and int is 32 bits.  */
58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT8_C
58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT8_C
58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT8_C(x) x
58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT8_C(x) x
58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT16_C
58705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT16_C
58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT16_C(x) x
58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT16_C(x) x
59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT32_C
59205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT32_C
59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT32_C(x) x
59405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT32_C(x) x ## U
59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef INT64_C
59705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef UINT64_C
59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if LONG_MAX >> 31 >> 31 == 1
59905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define INT64_C(x) x##L
60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined _MSC_VER
60105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define INT64_C(x) x##i64
60205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif 1
60305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define INT64_C(x) x##LL
60405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
60505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ULONG_MAX >> 31 >> 31 >> 1 == 1
60605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define UINT64_C(x) x##UL
60705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined _MSC_VER
60805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define UINT64_C(x) x##ui64
60905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif 1
61005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define UINT64_C(x) x##ULL
61105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
61205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 7.18.4.2. Macros for greatest-width integer constants */
61405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INTMAX_C
61605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1 && LONG_MAX >> 30 == 1
61705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define INTMAX_C(x)   x##LL
61805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif defined GL_INT64_T
61905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define INTMAX_C(x)   INT64_C(x)
62005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define INTMAX_C(x)   x##L
62205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
62305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
62405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef UINTMAX_C
62605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1 && ULONG_MAX >> 31 == 1
62705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define UINTMAX_C(x)  x##ULL
62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif defined GL_UINT64_T
62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define UINTMAX_C(x)  UINT64_C(x)
63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
63105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define UINTMAX_C(x)  x##UL
63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
63305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
63405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_STDINT_H */
63605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* !(defined __ANDROID__ && ...) */
63705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
638