1/* This file is automatically generated.  DO NOT EDIT! */
2/* Generated from: NetBSD: mknative-gdb,v 1.12 2020/09/17 16:54:31 christos Exp  */
3/* Generated from: NetBSD: mknative.common,v 1.16 2018/04/15 15:13:37 christos Exp  */
4
5/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
6/* Copyright (C) 2006-2020 Free Software Foundation, Inc.
7   Written by Paul Eggert, Bruno Haible, Derek Price.
8   This file is part of gnulib.
9
10   This program is free software: you can redistribute it and/or modify
11   it under the terms of the GNU General Public License as published by
12   the Free Software Foundation; either version 3 of the License, or
13   (at your option) any later version.
14
15   This program is distributed in the hope that it will be useful,
16   but WITHOUT ANY WARRANTY; without even the implied warranty of
17   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18   GNU General Public License for more details.
19
20   You should have received a copy of the GNU General Public License
21   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
22
23/*
24 * ISO C 99 <inttypes.h> for platforms that lack it.
25 * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/inttypes.h.html>
26 */
27
28#if __GNUC__ >= 3
29#pragma GCC system_header
30#endif
31
32
33/* Include the original <inttypes.h> if it exists, and if this file
34   has not been included yet or if this file includes gnulib stdint.h
35   which in turn includes this file.
36   The include_next requires a split double-inclusion guard.  */
37#if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
38# if 1
39
40   /* Some pre-C++11 <stdint.h> implementations need this.  */
41#  if defined __cplusplus && ! defined __STDC_FORMAT_MACROS
42#   define __STDC_FORMAT_MACROS 1
43#  endif
44
45#  include_next <inttypes.h>
46
47#  define _GL_FINISHED_INCLUDING_SYSTEM_INTTYPES_H
48# endif
49#endif
50
51#if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
52#define INTTYPES_H
53
54/* Include <stdint.h> or the gnulib replacement.
55   But avoid namespace pollution on glibc systems.  */
56#ifndef __GLIBC__
57# include <stdint.h>
58#endif
59/* Get CHAR_BIT, INT_MAX, LONG_MAX, etc.  */
60#include <limits.h>
61/* On mingw, __USE_MINGW_ANSI_STDIO only works if <stdio.h> is also included */
62#if defined _WIN32 && ! defined __CYGWIN__
63# include <stdio.h>
64#endif
65
66#if !(INT_MAX == 0x7fffffff && INT_MIN + INT_MAX == -1)
67# error "This file assumes that 'int' is 32-bit two's complement. Please report your platform and compiler to <bug-gnulib@gnu.org>."
68#endif
69
70/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
71/* C++ compatible function declaration macros.
72   Copyright (C) 2010-2020 Free Software Foundation, Inc.
73
74   This program is free software: you can redistribute it and/or modify it
75   under the terms of the GNU General Public License as published
76   by the Free Software Foundation; either version 3 of the License, or
77   (at your option) any later version.
78
79   This program is distributed in the hope that it will be useful,
80   but WITHOUT ANY WARRANTY; without even the implied warranty of
81   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
82   General Public License for more details.
83
84   You should have received a copy of the GNU General Public License
85   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
86
87#ifndef _GL_CXXDEFS_H
88#define _GL_CXXDEFS_H
89
90/* Begin/end the GNULIB_NAMESPACE namespace.  */
91#if defined __cplusplus && defined GNULIB_NAMESPACE
92# define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE {
93# define _GL_END_NAMESPACE }
94#else
95# define _GL_BEGIN_NAMESPACE
96# define _GL_END_NAMESPACE
97#endif
98
99/* The three most frequent use cases of these macros are:
100
101   * For providing a substitute for a function that is missing on some
102     platforms, but is declared and works fine on the platforms on which
103     it exists:
104
105       #if @GNULIB_FOO@
106       # if !@HAVE_FOO@
107       _GL_FUNCDECL_SYS (foo, ...);
108       # endif
109       _GL_CXXALIAS_SYS (foo, ...);
110       _GL_CXXALIASWARN (foo);
111       #elif defined GNULIB_POSIXCHECK
112       ...
113       #endif
114
115   * For providing a replacement for a function that exists on all platforms,
116     but is broken/insufficient and needs to be replaced on some platforms:
117
118       #if @GNULIB_FOO@
119       # if @REPLACE_FOO@
120       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
121       #   undef foo
122       #   define foo rpl_foo
123       #  endif
124       _GL_FUNCDECL_RPL (foo, ...);
125       _GL_CXXALIAS_RPL (foo, ...);
126       # else
127       _GL_CXXALIAS_SYS (foo, ...);
128       # endif
129       _GL_CXXALIASWARN (foo);
130       #elif defined GNULIB_POSIXCHECK
131       ...
132       #endif
133
134   * For providing a replacement for a function that exists on some platforms
135     but is broken/insufficient and needs to be replaced on some of them and
136     is additionally either missing or undeclared on some other platforms:
137
138       #if @GNULIB_FOO@
139       # if @REPLACE_FOO@
140       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
141       #   undef foo
142       #   define foo rpl_foo
143       #  endif
144       _GL_FUNCDECL_RPL (foo, ...);
145       _GL_CXXALIAS_RPL (foo, ...);
146       # else
147       #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
148       _GL_FUNCDECL_SYS (foo, ...);
149       #  endif
150       _GL_CXXALIAS_SYS (foo, ...);
151       # endif
152       _GL_CXXALIASWARN (foo);
153       #elif defined GNULIB_POSIXCHECK
154       ...
155       #endif
156*/
157
158/* _GL_EXTERN_C declaration;
159   performs the declaration with C linkage.  */
160#if defined __cplusplus
161# define _GL_EXTERN_C extern "C"
162#else
163# define _GL_EXTERN_C extern
164#endif
165
166/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
167   declares a replacement function, named rpl_func, with the given prototype,
168   consisting of return type, parameters, and attributes.
169   Example:
170     _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
171                                  _GL_ARG_NONNULL ((1)));
172 */
173#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
174  _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
175#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
176  _GL_EXTERN_C rettype rpl_func parameters_and_attributes
177
178/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
179   declares the system function, named func, with the given prototype,
180   consisting of return type, parameters, and attributes.
181   Example:
182     _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
183                                  _GL_ARG_NONNULL ((1)));
184 */
185#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
186  _GL_EXTERN_C rettype func parameters_and_attributes
187
188/* _GL_CXXALIAS_RPL (func, rettype, parameters);
189   declares a C++ alias called GNULIB_NAMESPACE::func
190   that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
191   Example:
192     _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
193
194   Wrapping rpl_func in an object with an inline conversion operator
195   avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is
196   actually used in the program.  */
197#define _GL_CXXALIAS_RPL(func,rettype,parameters) \
198  _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
199#if defined __cplusplus && defined GNULIB_NAMESPACE
200# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
201    namespace GNULIB_NAMESPACE                                \
202    {                                                         \
203      static const struct _gl_ ## func ## _wrapper            \
204      {                                                       \
205        typedef rettype (*type) parameters;                   \
206                                                              \
207        inline operator type () const                         \
208        {                                                     \
209          return ::rpl_func;                                  \
210        }                                                     \
211      } func = {};                                            \
212    }                                                         \
213    _GL_EXTERN_C int _gl_cxxalias_dummy
214#else
215# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
216    _GL_EXTERN_C int _gl_cxxalias_dummy
217#endif
218
219/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
220   is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
221   except that the C function rpl_func may have a slightly different
222   declaration.  A cast is used to silence the "invalid conversion" error
223   that would otherwise occur.  */
224#if defined __cplusplus && defined GNULIB_NAMESPACE
225# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
226    namespace GNULIB_NAMESPACE                                     \
227    {                                                              \
228      static const struct _gl_ ## func ## _wrapper                 \
229      {                                                            \
230        typedef rettype (*type) parameters;                        \
231                                                                   \
232        inline operator type () const                              \
233        {                                                          \
234          return reinterpret_cast<type>(::rpl_func);               \
235        }                                                          \
236      } func = {};                                                 \
237    }                                                              \
238    _GL_EXTERN_C int _gl_cxxalias_dummy
239#else
240# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
241    _GL_EXTERN_C int _gl_cxxalias_dummy
242#endif
243
244/* _GL_CXXALIAS_SYS (func, rettype, parameters);
245   declares a C++ alias called GNULIB_NAMESPACE::func
246   that redirects to the system provided function func, if GNULIB_NAMESPACE
247   is defined.
248   Example:
249     _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
250
251   Wrapping func in an object with an inline conversion operator
252   avoids a reference to func unless GNULIB_NAMESPACE::func is
253   actually used in the program.  */
254#if defined __cplusplus && defined GNULIB_NAMESPACE
255# define _GL_CXXALIAS_SYS(func,rettype,parameters)            \
256    namespace GNULIB_NAMESPACE                                \
257    {                                                         \
258      static const struct _gl_ ## func ## _wrapper            \
259      {                                                       \
260        typedef rettype (*type) parameters;                   \
261                                                              \
262        inline operator type () const                         \
263        {                                                     \
264          return ::func;                                      \
265        }                                                     \
266      } func = {};                                            \
267    }                                                         \
268    _GL_EXTERN_C int _gl_cxxalias_dummy
269#else
270# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
271    _GL_EXTERN_C int _gl_cxxalias_dummy
272#endif
273
274/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
275   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
276   except that the C function func may have a slightly different declaration.
277   A cast is used to silence the "invalid conversion" error that would
278   otherwise occur.  */
279#if defined __cplusplus && defined GNULIB_NAMESPACE
280# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
281    namespace GNULIB_NAMESPACE                          \
282    {                                                   \
283      static const struct _gl_ ## func ## _wrapper      \
284      {                                                 \
285        typedef rettype (*type) parameters;             \
286                                                        \
287        inline operator type () const                   \
288        {                                               \
289          return reinterpret_cast<type>(::func);        \
290        }                                               \
291      } func = {};                                      \
292    }                                                   \
293    _GL_EXTERN_C int _gl_cxxalias_dummy
294#else
295# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
296    _GL_EXTERN_C int _gl_cxxalias_dummy
297#endif
298
299/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
300   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
301   except that the C function is picked among a set of overloaded functions,
302   namely the one with rettype2 and parameters2.  Two consecutive casts
303   are used to silence the "cannot find a match" and "invalid conversion"
304   errors that would otherwise occur.  */
305#if defined __cplusplus && defined GNULIB_NAMESPACE
306  /* The outer cast must be a reinterpret_cast.
307     The inner cast: When the function is defined as a set of overloaded
308     functions, it works as a static_cast<>, choosing the designated variant.
309     When the function is defined as a single variant, it works as a
310     reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
311# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
312    namespace GNULIB_NAMESPACE                                                \
313    {                                                                         \
314      static const struct _gl_ ## func ## _wrapper                            \
315      {                                                                       \
316        typedef rettype (*type) parameters;                                   \
317                                                                              \
318        inline operator type () const                                         \
319        {                                                                     \
320          return reinterpret_cast<type>((rettype2 (*) parameters2)(::func));  \
321        }                                                                     \
322      } func = {};                                                            \
323    }                                                                         \
324    _GL_EXTERN_C int _gl_cxxalias_dummy
325#else
326# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
327    _GL_EXTERN_C int _gl_cxxalias_dummy
328#endif
329
330/* _GL_CXXALIASWARN (func);
331   causes a warning to be emitted when ::func is used but not when
332   GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
333   variants.  */
334#if defined __cplusplus && defined GNULIB_NAMESPACE
335# define _GL_CXXALIASWARN(func) \
336   _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
337# define _GL_CXXALIASWARN_1(func,namespace) \
338   _GL_CXXALIASWARN_2 (func, namespace)
339/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
340   we enable the warning only when not optimizing.  */
341# if !__OPTIMIZE__
342#  define _GL_CXXALIASWARN_2(func,namespace) \
343    _GL_WARN_ON_USE (func, \
344                     "The symbol ::" #func " refers to the system function. " \
345                     "Use " #namespace "::" #func " instead.")
346# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
347#  define _GL_CXXALIASWARN_2(func,namespace) \
348     extern __typeof__ (func) func
349# else
350#  define _GL_CXXALIASWARN_2(func,namespace) \
351     _GL_EXTERN_C int _gl_cxxalias_dummy
352# endif
353#else
354# define _GL_CXXALIASWARN(func) \
355    _GL_EXTERN_C int _gl_cxxalias_dummy
356#endif
357
358/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
359   causes a warning to be emitted when the given overloaded variant of ::func
360   is used but not when GNULIB_NAMESPACE::func is used.  */
361#if defined __cplusplus && defined GNULIB_NAMESPACE
362# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
363   _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
364                        GNULIB_NAMESPACE)
365# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
366   _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
367/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
368   we enable the warning only when not optimizing.  */
369# if !__OPTIMIZE__
370#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
371    _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
372                         "The symbol ::" #func " refers to the system function. " \
373                         "Use " #namespace "::" #func " instead.")
374# else
375#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
376     _GL_EXTERN_C int _gl_cxxalias_dummy
377# endif
378#else
379# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
380    _GL_EXTERN_C int _gl_cxxalias_dummy
381#endif
382
383#endif /* _GL_CXXDEFS_H */
384
385/* The definition of _GL_ARG_NONNULL is copied here.  */
386/* A C macro for declaring that specific arguments must not be NULL.
387   Copyright (C) 2009-2020 Free Software Foundation, Inc.
388
389   This program is free software: you can redistribute it and/or modify it
390   under the terms of the GNU General Public License as published
391   by the Free Software Foundation; either version 3 of the License, or
392   (at your option) any later version.
393
394   This program is distributed in the hope that it will be useful,
395   but WITHOUT ANY WARRANTY; without even the implied warranty of
396   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
397   General Public License for more details.
398
399   You should have received a copy of the GNU General Public License
400   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
401
402/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
403   that the values passed as arguments n, ..., m must be non-NULL pointers.
404   n = 1 stands for the first argument, n = 2 for the second argument etc.  */
405#ifndef _GL_ARG_NONNULL
406# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
407#  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
408# else
409#  define _GL_ARG_NONNULL(params)
410# endif
411#endif
412
413/* The definition of _GL_WARN_ON_USE is copied here.  */
414/* A C macro for emitting warnings if a function is used.
415   Copyright (C) 2010-2020 Free Software Foundation, Inc.
416
417   This program is free software: you can redistribute it and/or modify it
418   under the terms of the GNU General Public License as published
419   by the Free Software Foundation; either version 3 of the License, or
420   (at your option) any later version.
421
422   This program is distributed in the hope that it will be useful,
423   but WITHOUT ANY WARRANTY; without even the implied warranty of
424   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
425   General Public License for more details.
426
427   You should have received a copy of the GNU General Public License
428   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
429
430/* _GL_WARN_ON_USE (function, "literal string") issues a declaration
431   for FUNCTION which will then trigger a compiler warning containing
432   the text of "literal string" anywhere that function is called, if
433   supported by the compiler.  If the compiler does not support this
434   feature, the macro expands to an unused extern declaration.
435
436   _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the
437   attribute used in _GL_WARN_ON_USE.  If the compiler does not support
438   this feature, it expands to empty.
439
440   These macros are useful for marking a function as a potential
441   portability trap, with the intent that "literal string" include
442   instructions on the replacement function that should be used
443   instead.
444   _GL_WARN_ON_USE is for functions with 'extern' linkage.
445   _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline'
446   linkage.
447
448   However, one of the reasons that a function is a portability trap is
449   if it has the wrong signature.  Declaring FUNCTION with a different
450   signature in C is a compilation error, so this macro must use the
451   same type as any existing declaration so that programs that avoid
452   the problematic FUNCTION do not fail to compile merely because they
453   included a header that poisoned the function.  But this implies that
454   _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already
455   have a declaration.  Use of this macro implies that there must not
456   be any other macro hiding the declaration of FUNCTION; but
457   undefining FUNCTION first is part of the poisoning process anyway
458   (although for symbols that are provided only via a macro, the result
459   is a compilation error rather than a warning containing
460   "literal string").  Also note that in C++, it is only safe to use if
461   FUNCTION has no overloads.
462
463   For an example, it is possible to poison 'getline' by:
464   - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
465     [getline]) in configure.ac, which potentially defines
466     HAVE_RAW_DECL_GETLINE
467   - adding this code to a header that wraps the system <stdio.h>:
468     #undef getline
469     #if HAVE_RAW_DECL_GETLINE
470     _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but"
471       "not universally present; use the gnulib module getline");
472     #endif
473
474   It is not possible to directly poison global variables.  But it is
475   possible to write a wrapper accessor function, and poison that
476   (less common usage, like &environ, will cause a compilation error
477   rather than issue the nice warning, but the end result of informing
478   the developer about their portability problem is still achieved):
479     #if HAVE_RAW_DECL_ENVIRON
480     static char ***
481     rpl_environ (void) { return &environ; }
482     _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
483     # undef environ
484     # define environ (*rpl_environ ())
485     #endif
486   or better (avoiding contradictory use of 'static' and 'extern'):
487     #if HAVE_RAW_DECL_ENVIRON
488     static char ***
489     _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared")
490     rpl_environ (void) { return &environ; }
491     # undef environ
492     # define environ (*rpl_environ ())
493     #endif
494   */
495#ifndef _GL_WARN_ON_USE
496
497# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
498/* A compiler attribute is available in gcc versions 4.3.0 and later.  */
499#  define _GL_WARN_ON_USE(function, message) \
500extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
501#  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
502  __attribute__ ((__warning__ (message)))
503# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
504/* Verify the existence of the function.  */
505#  define _GL_WARN_ON_USE(function, message) \
506extern __typeof__ (function) function
507#  define _GL_WARN_ON_USE_ATTRIBUTE(message)
508# else /* Unsupported.  */
509#  define _GL_WARN_ON_USE(function, message) \
510_GL_WARN_EXTERN_C int _gl_warn_on_use
511#  define _GL_WARN_ON_USE_ATTRIBUTE(message)
512# endif
513#endif
514
515/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
516   is like _GL_WARN_ON_USE (function, "string"), except that in C++ mode the
517   function is declared with the given prototype, consisting of return type,
518   parameters, and attributes.
519   This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
520   not work in this case.  */
521#ifndef _GL_WARN_ON_USE_CXX
522# if !defined __cplusplus
523#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
524     _GL_WARN_ON_USE (function, msg)
525# else
526#  if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
527#   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
528extern rettype function parameters_and_attributes \
529     __attribute__ ((__warning__ (msg)))
530#  elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
531/* Verify the existence of the function.  */
532#   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
533extern rettype function parameters_and_attributes
534#  else /* Unsupported.  */
535#   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
536_GL_WARN_EXTERN_C int _gl_warn_on_use
537#  endif
538# endif
539#endif
540
541/* _GL_WARN_EXTERN_C declaration;
542   performs the declaration with C linkage.  */
543#ifndef _GL_WARN_EXTERN_C
544# if defined __cplusplus
545#  define _GL_WARN_EXTERN_C extern "C"
546# else
547#  define _GL_WARN_EXTERN_C extern
548# endif
549#endif
550
551/* 7.8.1 Macros for format specifiers */
552
553#if defined _TNS_R_TARGET
554   /* Tandem NonStop R series and compatible platforms released before
555      July 2005 support %Ld but not %lld.  */
556# define _LONG_LONG_FORMAT_PREFIX "L"
557#else
558# define _LONG_LONG_FORMAT_PREFIX "ll"
559#endif
560
561#if !defined PRId8 || 0
562# undef PRId8
563# ifdef INT8_MAX
564#  define PRId8 "d"
565# endif
566#endif
567#if !defined PRIi8 || 0
568# undef PRIi8
569# ifdef INT8_MAX
570#  define PRIi8 "i"
571# endif
572#endif
573#if !defined PRIo8 || 0
574# undef PRIo8
575# ifdef UINT8_MAX
576#  define PRIo8 "o"
577# endif
578#endif
579#if !defined PRIu8 || 0
580# undef PRIu8
581# ifdef UINT8_MAX
582#  define PRIu8 "u"
583# endif
584#endif
585#if !defined PRIx8 || 0
586# undef PRIx8
587# ifdef UINT8_MAX
588#  define PRIx8 "x"
589# endif
590#endif
591#if !defined PRIX8 || 0
592# undef PRIX8
593# ifdef UINT8_MAX
594#  define PRIX8 "X"
595# endif
596#endif
597#if !defined PRId16 || 0
598# undef PRId16
599# ifdef INT16_MAX
600#  define PRId16 "d"
601# endif
602#endif
603#if !defined PRIi16 || 0
604# undef PRIi16
605# ifdef INT16_MAX
606#  define PRIi16 "i"
607# endif
608#endif
609#if !defined PRIo16 || 0
610# undef PRIo16
611# ifdef UINT16_MAX
612#  define PRIo16 "o"
613# endif
614#endif
615#if !defined PRIu16 || 0
616# undef PRIu16
617# ifdef UINT16_MAX
618#  define PRIu16 "u"
619# endif
620#endif
621#if !defined PRIx16 || 0
622# undef PRIx16
623# ifdef UINT16_MAX
624#  define PRIx16 "x"
625# endif
626#endif
627#if !defined PRIX16 || 0
628# undef PRIX16
629# ifdef UINT16_MAX
630#  define PRIX16 "X"
631# endif
632#endif
633#if !defined PRId32 || 0
634# undef PRId32
635# ifdef INT32_MAX
636#  define PRId32 "d"
637# endif
638#endif
639#if !defined PRIi32 || 0
640# undef PRIi32
641# ifdef INT32_MAX
642#  define PRIi32 "i"
643# endif
644#endif
645#if !defined PRIo32 || 0
646# undef PRIo32
647# ifdef UINT32_MAX
648#  define PRIo32 "o"
649# endif
650#endif
651#if !defined PRIu32 || 0
652# undef PRIu32
653# ifdef UINT32_MAX
654#  define PRIu32 "u"
655# endif
656#endif
657#if !defined PRIx32 || 0
658# undef PRIx32
659# ifdef UINT32_MAX
660#  define PRIx32 "x"
661# endif
662#endif
663#if !defined PRIX32 || 0
664# undef PRIX32
665# ifdef UINT32_MAX
666#  define PRIX32 "X"
667# endif
668#endif
669#ifdef INT64_MAX
670# if (0 ? defined _LP64 : 0)
671#  define _PRI64_PREFIX "l"
672# elif defined _MSC_VER || defined __MINGW32__
673#  define _PRI64_PREFIX "I64"
674# elif LONG_MAX >> 30 == 1
675#  define _PRI64_PREFIX _LONG_LONG_FORMAT_PREFIX
676# endif
677# if !defined PRId64 || 0
678#  undef PRId64
679#  define PRId64 _PRI64_PREFIX "d"
680# endif
681# if !defined PRIi64 || 0
682#  undef PRIi64
683#  define PRIi64 _PRI64_PREFIX "i"
684# endif
685#endif
686#ifdef UINT64_MAX
687# if (0 ? defined _LP64 : 0)
688#  define _PRIu64_PREFIX "l"
689# elif defined _MSC_VER || defined __MINGW32__
690#  define _PRIu64_PREFIX "I64"
691# elif ULONG_MAX >> 31 == 1
692#  define _PRIu64_PREFIX _LONG_LONG_FORMAT_PREFIX
693# endif
694# if !defined PRIo64 || 0
695#  undef PRIo64
696#  define PRIo64 _PRIu64_PREFIX "o"
697# endif
698# if !defined PRIu64 || 0
699#  undef PRIu64
700#  define PRIu64 _PRIu64_PREFIX "u"
701# endif
702# if !defined PRIx64 || 0
703#  undef PRIx64
704#  define PRIx64 _PRIu64_PREFIX "x"
705# endif
706# if !defined PRIX64 || 0
707#  undef PRIX64
708#  define PRIX64 _PRIu64_PREFIX "X"
709# endif
710#endif
711
712#if !defined PRIdLEAST8 || 0
713# undef PRIdLEAST8
714# define PRIdLEAST8 "d"
715#endif
716#if !defined PRIiLEAST8 || 0
717# undef PRIiLEAST8
718# define PRIiLEAST8 "i"
719#endif
720#if !defined PRIoLEAST8 || 0
721# undef PRIoLEAST8
722# define PRIoLEAST8 "o"
723#endif
724#if !defined PRIuLEAST8 || 0
725# undef PRIuLEAST8
726# define PRIuLEAST8 "u"
727#endif
728#if !defined PRIxLEAST8 || 0
729# undef PRIxLEAST8
730# define PRIxLEAST8 "x"
731#endif
732#if !defined PRIXLEAST8 || 0
733# undef PRIXLEAST8
734# define PRIXLEAST8 "X"
735#endif
736#if !defined PRIdLEAST16 || 0
737# undef PRIdLEAST16
738# define PRIdLEAST16 "d"
739#endif
740#if !defined PRIiLEAST16 || 0
741# undef PRIiLEAST16
742# define PRIiLEAST16 "i"
743#endif
744#if !defined PRIoLEAST16 || 0
745# undef PRIoLEAST16
746# define PRIoLEAST16 "o"
747#endif
748#if !defined PRIuLEAST16 || 0
749# undef PRIuLEAST16
750# define PRIuLEAST16 "u"
751#endif
752#if !defined PRIxLEAST16 || 0
753# undef PRIxLEAST16
754# define PRIxLEAST16 "x"
755#endif
756#if !defined PRIXLEAST16 || 0
757# undef PRIXLEAST16
758# define PRIXLEAST16 "X"
759#endif
760#if !defined PRIdLEAST32 || 0
761# undef PRIdLEAST32
762# define PRIdLEAST32 "d"
763#endif
764#if !defined PRIiLEAST32 || 0
765# undef PRIiLEAST32
766# define PRIiLEAST32 "i"
767#endif
768#if !defined PRIoLEAST32 || 0
769# undef PRIoLEAST32
770# define PRIoLEAST32 "o"
771#endif
772#if !defined PRIuLEAST32 || 0
773# undef PRIuLEAST32
774# define PRIuLEAST32 "u"
775#endif
776#if !defined PRIxLEAST32 || 0
777# undef PRIxLEAST32
778# define PRIxLEAST32 "x"
779#endif
780#if !defined PRIXLEAST32 || 0
781# undef PRIXLEAST32
782# define PRIXLEAST32 "X"
783#endif
784#ifdef INT64_MAX
785# if !defined PRIdLEAST64 || 0
786#  undef PRIdLEAST64
787#  define PRIdLEAST64 PRId64
788# endif
789# if !defined PRIiLEAST64 || 0
790#  undef PRIiLEAST64
791#  define PRIiLEAST64 PRIi64
792# endif
793#endif
794#ifdef UINT64_MAX
795# if !defined PRIoLEAST64 || 0
796#  undef PRIoLEAST64
797#  define PRIoLEAST64 PRIo64
798# endif
799# if !defined PRIuLEAST64 || 0
800#  undef PRIuLEAST64
801#  define PRIuLEAST64 PRIu64
802# endif
803# if !defined PRIxLEAST64 || 0
804#  undef PRIxLEAST64
805#  define PRIxLEAST64 PRIx64
806# endif
807# if !defined PRIXLEAST64 || 0
808#  undef PRIXLEAST64
809#  define PRIXLEAST64 PRIX64
810# endif
811#endif
812
813#if !defined PRIdFAST8 || 0
814# undef PRIdFAST8
815# if INT_FAST8_MAX > INT32_MAX
816#  define PRIdFAST8 PRId64
817# else
818#  define PRIdFAST8 "d"
819# endif
820#endif
821#if !defined PRIiFAST8 || 0
822# undef PRIiFAST8
823# if INT_FAST8_MAX > INT32_MAX
824#  define PRIiFAST8 PRIi64
825# else
826#  define PRIiFAST8 "i"
827# endif
828#endif
829#if !defined PRIoFAST8 || 0
830# undef PRIoFAST8
831# if UINT_FAST8_MAX > UINT32_MAX
832#  define PRIoFAST8 PRIo64
833# else
834#  define PRIoFAST8 "o"
835# endif
836#endif
837#if !defined PRIuFAST8 || 0
838# undef PRIuFAST8
839# if UINT_FAST8_MAX > UINT32_MAX
840#  define PRIuFAST8 PRIu64
841# else
842#  define PRIuFAST8 "u"
843# endif
844#endif
845#if !defined PRIxFAST8 || 0
846# undef PRIxFAST8
847# if UINT_FAST8_MAX > UINT32_MAX
848#  define PRIxFAST8 PRIx64
849# else
850#  define PRIxFAST8 "x"
851# endif
852#endif
853#if !defined PRIXFAST8 || 0
854# undef PRIXFAST8
855# if UINT_FAST8_MAX > UINT32_MAX
856#  define PRIXFAST8 PRIX64
857# else
858#  define PRIXFAST8 "X"
859# endif
860#endif
861#if !defined PRIdFAST16 || 0
862# undef PRIdFAST16
863# if INT_FAST16_MAX > INT32_MAX
864#  define PRIdFAST16 PRId64
865# else
866#  define PRIdFAST16 "d"
867# endif
868#endif
869#if !defined PRIiFAST16 || 0
870# undef PRIiFAST16
871# if INT_FAST16_MAX > INT32_MAX
872#  define PRIiFAST16 PRIi64
873# else
874#  define PRIiFAST16 "i"
875# endif
876#endif
877#if !defined PRIoFAST16 || 0
878# undef PRIoFAST16
879# if UINT_FAST16_MAX > UINT32_MAX
880#  define PRIoFAST16 PRIo64
881# else
882#  define PRIoFAST16 "o"
883# endif
884#endif
885#if !defined PRIuFAST16 || 0
886# undef PRIuFAST16
887# if UINT_FAST16_MAX > UINT32_MAX
888#  define PRIuFAST16 PRIu64
889# else
890#  define PRIuFAST16 "u"
891# endif
892#endif
893#if !defined PRIxFAST16 || 0
894# undef PRIxFAST16
895# if UINT_FAST16_MAX > UINT32_MAX
896#  define PRIxFAST16 PRIx64
897# else
898#  define PRIxFAST16 "x"
899# endif
900#endif
901#if !defined PRIXFAST16 || 0
902# undef PRIXFAST16
903# if UINT_FAST16_MAX > UINT32_MAX
904#  define PRIXFAST16 PRIX64
905# else
906#  define PRIXFAST16 "X"
907# endif
908#endif
909#if !defined PRIdFAST32 || 0
910# undef PRIdFAST32
911# if INT_FAST32_MAX > INT32_MAX
912#  define PRIdFAST32 PRId64
913# else
914#  define PRIdFAST32 "d"
915# endif
916#endif
917#if !defined PRIiFAST32 || 0
918# undef PRIiFAST32
919# if INT_FAST32_MAX > INT32_MAX
920#  define PRIiFAST32 PRIi64
921# else
922#  define PRIiFAST32 "i"
923# endif
924#endif
925#if !defined PRIoFAST32 || 0
926# undef PRIoFAST32
927# if UINT_FAST32_MAX > UINT32_MAX
928#  define PRIoFAST32 PRIo64
929# else
930#  define PRIoFAST32 "o"
931# endif
932#endif
933#if !defined PRIuFAST32 || 0
934# undef PRIuFAST32
935# if UINT_FAST32_MAX > UINT32_MAX
936#  define PRIuFAST32 PRIu64
937# else
938#  define PRIuFAST32 "u"
939# endif
940#endif
941#if !defined PRIxFAST32 || 0
942# undef PRIxFAST32
943# if UINT_FAST32_MAX > UINT32_MAX
944#  define PRIxFAST32 PRIx64
945# else
946#  define PRIxFAST32 "x"
947# endif
948#endif
949#if !defined PRIXFAST32 || 0
950# undef PRIXFAST32
951# if UINT_FAST32_MAX > UINT32_MAX
952#  define PRIXFAST32 PRIX64
953# else
954#  define PRIXFAST32 "X"
955# endif
956#endif
957#ifdef INT64_MAX
958# if !defined PRIdFAST64 || 0
959#  undef PRIdFAST64
960#  define PRIdFAST64 PRId64
961# endif
962# if !defined PRIiFAST64 || 0
963#  undef PRIiFAST64
964#  define PRIiFAST64 PRIi64
965# endif
966#endif
967#ifdef UINT64_MAX
968# if !defined PRIoFAST64 || 0
969#  undef PRIoFAST64
970#  define PRIoFAST64 PRIo64
971# endif
972# if !defined PRIuFAST64 || 0
973#  undef PRIuFAST64
974#  define PRIuFAST64 PRIu64
975# endif
976# if !defined PRIxFAST64 || 0
977#  undef PRIxFAST64
978#  define PRIxFAST64 PRIx64
979# endif
980# if !defined PRIXFAST64 || 0
981#  undef PRIXFAST64
982#  define PRIXFAST64 PRIX64
983# endif
984#endif
985
986#if !defined PRIdMAX || 0
987# undef PRIdMAX
988# if 1
989#  define PRIdMAX PRId64
990# else
991#  define PRIdMAX "ld"
992# endif
993#endif
994#if !defined PRIiMAX || 0
995# undef PRIiMAX
996# if 1
997#  define PRIiMAX PRIi64
998# else
999#  define PRIiMAX "li"
1000# endif
1001#endif
1002#if !defined PRIoMAX || 0
1003# undef PRIoMAX
1004# if 1
1005#  define PRIoMAX PRIo64
1006# else
1007#  define PRIoMAX "lo"
1008# endif
1009#endif
1010#if !defined PRIuMAX || 0
1011# undef PRIuMAX
1012# if 1
1013#  define PRIuMAX PRIu64
1014# else
1015#  define PRIuMAX "lu"
1016# endif
1017#endif
1018#if !defined PRIxMAX || 0
1019# undef PRIxMAX
1020# if 1
1021#  define PRIxMAX PRIx64
1022# else
1023#  define PRIxMAX "lx"
1024# endif
1025#endif
1026#if !defined PRIXMAX || 0
1027# undef PRIXMAX
1028# if 1
1029#  define PRIXMAX PRIX64
1030# else
1031#  define PRIXMAX "lX"
1032# endif
1033#endif
1034
1035#if !defined PRIdPTR || 0
1036# undef PRIdPTR
1037# ifdef INTPTR_MAX
1038#  define PRIdPTR "l" "d"
1039# endif
1040#endif
1041#if !defined PRIiPTR || 0
1042# undef PRIiPTR
1043# ifdef INTPTR_MAX
1044#  define PRIiPTR "l" "i"
1045# endif
1046#endif
1047#if !defined PRIoPTR || 0
1048# undef PRIoPTR
1049# ifdef UINTPTR_MAX
1050#  define PRIoPTR "l" "o"
1051# endif
1052#endif
1053#if !defined PRIuPTR || 0
1054# undef PRIuPTR
1055# ifdef UINTPTR_MAX
1056#  define PRIuPTR "l" "u"
1057# endif
1058#endif
1059#if !defined PRIxPTR || 0
1060# undef PRIxPTR
1061# ifdef UINTPTR_MAX
1062#  define PRIxPTR "l" "x"
1063# endif
1064#endif
1065#if !defined PRIXPTR || 0
1066# undef PRIXPTR
1067# ifdef UINTPTR_MAX
1068#  define PRIXPTR "l" "X"
1069# endif
1070#endif
1071
1072#if !defined SCNd8 || 0
1073# undef SCNd8
1074# ifdef INT8_MAX
1075#  define SCNd8 "hhd"
1076# endif
1077#endif
1078#if !defined SCNi8 || 0
1079# undef SCNi8
1080# ifdef INT8_MAX
1081#  define SCNi8 "hhi"
1082# endif
1083#endif
1084#if !defined SCNo8 || 0
1085# undef SCNo8
1086# ifdef UINT8_MAX
1087#  define SCNo8 "hho"
1088# endif
1089#endif
1090#if !defined SCNu8 || 0
1091# undef SCNu8
1092# ifdef UINT8_MAX
1093#  define SCNu8 "hhu"
1094# endif
1095#endif
1096#if !defined SCNx8 || 0
1097# undef SCNx8
1098# ifdef UINT8_MAX
1099#  define SCNx8 "hhx"
1100# endif
1101#endif
1102#if !defined SCNd16 || 0
1103# undef SCNd16
1104# ifdef INT16_MAX
1105#  define SCNd16 "hd"
1106# endif
1107#endif
1108#if !defined SCNi16 || 0
1109# undef SCNi16
1110# ifdef INT16_MAX
1111#  define SCNi16 "hi"
1112# endif
1113#endif
1114#if !defined SCNo16 || 0
1115# undef SCNo16
1116# ifdef UINT16_MAX
1117#  define SCNo16 "ho"
1118# endif
1119#endif
1120#if !defined SCNu16 || 0
1121# undef SCNu16
1122# ifdef UINT16_MAX
1123#  define SCNu16 "hu"
1124# endif
1125#endif
1126#if !defined SCNx16 || 0
1127# undef SCNx16
1128# ifdef UINT16_MAX
1129#  define SCNx16 "hx"
1130# endif
1131#endif
1132#if !defined SCNd32 || 0
1133# undef SCNd32
1134# ifdef INT32_MAX
1135#  define SCNd32 "d"
1136# endif
1137#endif
1138#if !defined SCNi32 || 0
1139# undef SCNi32
1140# ifdef INT32_MAX
1141#  define SCNi32 "i"
1142# endif
1143#endif
1144#if !defined SCNo32 || 0
1145# undef SCNo32
1146# ifdef UINT32_MAX
1147#  define SCNo32 "o"
1148# endif
1149#endif
1150#if !defined SCNu32 || 0
1151# undef SCNu32
1152# ifdef UINT32_MAX
1153#  define SCNu32 "u"
1154# endif
1155#endif
1156#if !defined SCNx32 || 0
1157# undef SCNx32
1158# ifdef UINT32_MAX
1159#  define SCNx32 "x"
1160# endif
1161#endif
1162#ifdef INT64_MAX
1163# if (0 ? defined _LP64 : 0)
1164#  define _SCN64_PREFIX "l"
1165# elif defined _MSC_VER || defined __MINGW32__
1166#  define _SCN64_PREFIX "I64"
1167# elif LONG_MAX >> 30 == 1
1168#  define _SCN64_PREFIX _LONG_LONG_FORMAT_PREFIX
1169# endif
1170# if !defined SCNd64 || 0
1171#  undef SCNd64
1172#  define SCNd64 _SCN64_PREFIX "d"
1173# endif
1174# if !defined SCNi64 || 0
1175#  undef SCNi64
1176#  define SCNi64 _SCN64_PREFIX "i"
1177# endif
1178#endif
1179#ifdef UINT64_MAX
1180# if (0 ? defined _LP64 : 0)
1181#  define _SCNu64_PREFIX "l"
1182# elif defined _MSC_VER || defined __MINGW32__
1183#  define _SCNu64_PREFIX "I64"
1184# elif ULONG_MAX >> 31 == 1
1185#  define _SCNu64_PREFIX _LONG_LONG_FORMAT_PREFIX
1186# endif
1187# if !defined SCNo64 || 0
1188#  undef SCNo64
1189#  define SCNo64 _SCNu64_PREFIX "o"
1190# endif
1191# if !defined SCNu64 || 0
1192#  undef SCNu64
1193#  define SCNu64 _SCNu64_PREFIX "u"
1194# endif
1195# if !defined SCNx64 || 0
1196#  undef SCNx64
1197#  define SCNx64 _SCNu64_PREFIX "x"
1198# endif
1199#endif
1200
1201#if !defined SCNdLEAST8 || 0
1202# undef SCNdLEAST8
1203# define SCNdLEAST8 "hhd"
1204#endif
1205#if !defined SCNiLEAST8 || 0
1206# undef SCNiLEAST8
1207# define SCNiLEAST8 "hhi"
1208#endif
1209#if !defined SCNoLEAST8 || 0
1210# undef SCNoLEAST8
1211# define SCNoLEAST8 "hho"
1212#endif
1213#if !defined SCNuLEAST8 || 0
1214# undef SCNuLEAST8
1215# define SCNuLEAST8 "hhu"
1216#endif
1217#if !defined SCNxLEAST8 || 0
1218# undef SCNxLEAST8
1219# define SCNxLEAST8 "hhx"
1220#endif
1221#if !defined SCNdLEAST16 || 0
1222# undef SCNdLEAST16
1223# define SCNdLEAST16 "hd"
1224#endif
1225#if !defined SCNiLEAST16 || 0
1226# undef SCNiLEAST16
1227# define SCNiLEAST16 "hi"
1228#endif
1229#if !defined SCNoLEAST16 || 0
1230# undef SCNoLEAST16
1231# define SCNoLEAST16 "ho"
1232#endif
1233#if !defined SCNuLEAST16 || 0
1234# undef SCNuLEAST16
1235# define SCNuLEAST16 "hu"
1236#endif
1237#if !defined SCNxLEAST16 || 0
1238# undef SCNxLEAST16
1239# define SCNxLEAST16 "hx"
1240#endif
1241#if !defined SCNdLEAST32 || 0
1242# undef SCNdLEAST32
1243# define SCNdLEAST32 "d"
1244#endif
1245#if !defined SCNiLEAST32 || 0
1246# undef SCNiLEAST32
1247# define SCNiLEAST32 "i"
1248#endif
1249#if !defined SCNoLEAST32 || 0
1250# undef SCNoLEAST32
1251# define SCNoLEAST32 "o"
1252#endif
1253#if !defined SCNuLEAST32 || 0
1254# undef SCNuLEAST32
1255# define SCNuLEAST32 "u"
1256#endif
1257#if !defined SCNxLEAST32 || 0
1258# undef SCNxLEAST32
1259# define SCNxLEAST32 "x"
1260#endif
1261#ifdef INT64_MAX
1262# if !defined SCNdLEAST64 || 0
1263#  undef SCNdLEAST64
1264#  define SCNdLEAST64 SCNd64
1265# endif
1266# if !defined SCNiLEAST64 || 0
1267#  undef SCNiLEAST64
1268#  define SCNiLEAST64 SCNi64
1269# endif
1270#endif
1271#ifdef UINT64_MAX
1272# if !defined SCNoLEAST64 || 0
1273#  undef SCNoLEAST64
1274#  define SCNoLEAST64 SCNo64
1275# endif
1276# if !defined SCNuLEAST64 || 0
1277#  undef SCNuLEAST64
1278#  define SCNuLEAST64 SCNu64
1279# endif
1280# if !defined SCNxLEAST64 || 0
1281#  undef SCNxLEAST64
1282#  define SCNxLEAST64 SCNx64
1283# endif
1284#endif
1285
1286#if !defined SCNdFAST8 || 0
1287# undef SCNdFAST8
1288# if INT_FAST8_MAX > INT32_MAX
1289#  define SCNdFAST8 SCNd64
1290# elif INT_FAST8_MAX == 0x7fff
1291#  define SCNdFAST8 "hd"
1292# elif INT_FAST8_MAX == 0x7f
1293#  define SCNdFAST8 "hhd"
1294# else
1295#  define SCNdFAST8 "d"
1296# endif
1297#endif
1298#if !defined SCNiFAST8 || 0
1299# undef SCNiFAST8
1300# if INT_FAST8_MAX > INT32_MAX
1301#  define SCNiFAST8 SCNi64
1302# elif INT_FAST8_MAX == 0x7fff
1303#  define SCNiFAST8 "hi"
1304# elif INT_FAST8_MAX == 0x7f
1305#  define SCNiFAST8 "hhi"
1306# else
1307#  define SCNiFAST8 "i"
1308# endif
1309#endif
1310#if !defined SCNoFAST8 || 0
1311# undef SCNoFAST8
1312# if UINT_FAST8_MAX > UINT32_MAX
1313#  define SCNoFAST8 SCNo64
1314# elif UINT_FAST8_MAX == 0xffff
1315#  define SCNoFAST8 "ho"
1316# elif UINT_FAST8_MAX == 0xff
1317#  define SCNoFAST8 "hho"
1318# else
1319#  define SCNoFAST8 "o"
1320# endif
1321#endif
1322#if !defined SCNuFAST8 || 0
1323# undef SCNuFAST8
1324# if UINT_FAST8_MAX > UINT32_MAX
1325#  define SCNuFAST8 SCNu64
1326# elif UINT_FAST8_MAX == 0xffff
1327#  define SCNuFAST8 "hu"
1328# elif UINT_FAST8_MAX == 0xff
1329#  define SCNuFAST8 "hhu"
1330# else
1331#  define SCNuFAST8 "u"
1332# endif
1333#endif
1334#if !defined SCNxFAST8 || 0
1335# undef SCNxFAST8
1336# if UINT_FAST8_MAX > UINT32_MAX
1337#  define SCNxFAST8 SCNx64
1338# elif UINT_FAST8_MAX == 0xffff
1339#  define SCNxFAST8 "hx"
1340# elif UINT_FAST8_MAX == 0xff
1341#  define SCNxFAST8 "hhx"
1342# else
1343#  define SCNxFAST8 "x"
1344# endif
1345#endif
1346#if !defined SCNdFAST16 || 0
1347# undef SCNdFAST16
1348# if INT_FAST16_MAX > INT32_MAX
1349#  define SCNdFAST16 SCNd64
1350# elif INT_FAST16_MAX == 0x7fff
1351#  define SCNdFAST16 "hd"
1352# else
1353#  define SCNdFAST16 "d"
1354# endif
1355#endif
1356#if !defined SCNiFAST16 || 0
1357# undef SCNiFAST16
1358# if INT_FAST16_MAX > INT32_MAX
1359#  define SCNiFAST16 SCNi64
1360# elif INT_FAST16_MAX == 0x7fff
1361#  define SCNiFAST16 "hi"
1362# else
1363#  define SCNiFAST16 "i"
1364# endif
1365#endif
1366#if !defined SCNoFAST16 || 0
1367# undef SCNoFAST16
1368# if UINT_FAST16_MAX > UINT32_MAX
1369#  define SCNoFAST16 SCNo64
1370# elif UINT_FAST16_MAX == 0xffff
1371#  define SCNoFAST16 "ho"
1372# else
1373#  define SCNoFAST16 "o"
1374# endif
1375#endif
1376#if !defined SCNuFAST16 || 0
1377# undef SCNuFAST16
1378# if UINT_FAST16_MAX > UINT32_MAX
1379#  define SCNuFAST16 SCNu64
1380# elif UINT_FAST16_MAX == 0xffff
1381#  define SCNuFAST16 "hu"
1382# else
1383#  define SCNuFAST16 "u"
1384# endif
1385#endif
1386#if !defined SCNxFAST16 || 0
1387# undef SCNxFAST16
1388# if UINT_FAST16_MAX > UINT32_MAX
1389#  define SCNxFAST16 SCNx64
1390# elif UINT_FAST16_MAX == 0xffff
1391#  define SCNxFAST16 "hx"
1392# else
1393#  define SCNxFAST16 "x"
1394# endif
1395#endif
1396#if !defined SCNdFAST32 || 0
1397# undef SCNdFAST32
1398# if INT_FAST32_MAX > INT32_MAX
1399#  define SCNdFAST32 SCNd64
1400# else
1401#  define SCNdFAST32 "d"
1402# endif
1403#endif
1404#if !defined SCNiFAST32 || 0
1405# undef SCNiFAST32
1406# if INT_FAST32_MAX > INT32_MAX
1407#  define SCNiFAST32 SCNi64
1408# else
1409#  define SCNiFAST32 "i"
1410# endif
1411#endif
1412#if !defined SCNoFAST32 || 0
1413# undef SCNoFAST32
1414# if UINT_FAST32_MAX > UINT32_MAX
1415#  define SCNoFAST32 SCNo64
1416# else
1417#  define SCNoFAST32 "o"
1418# endif
1419#endif
1420#if !defined SCNuFAST32 || 0
1421# undef SCNuFAST32
1422# if UINT_FAST32_MAX > UINT32_MAX
1423#  define SCNuFAST32 SCNu64
1424# else
1425#  define SCNuFAST32 "u"
1426# endif
1427#endif
1428#if !defined SCNxFAST32 || 0
1429# undef SCNxFAST32
1430# if UINT_FAST32_MAX > UINT32_MAX
1431#  define SCNxFAST32 SCNx64
1432# else
1433#  define SCNxFAST32 "x"
1434# endif
1435#endif
1436#ifdef INT64_MAX
1437# if !defined SCNdFAST64 || 0
1438#  undef SCNdFAST64
1439#  define SCNdFAST64 SCNd64
1440# endif
1441# if !defined SCNiFAST64 || 0
1442#  undef SCNiFAST64
1443#  define SCNiFAST64 SCNi64
1444# endif
1445#endif
1446#ifdef UINT64_MAX
1447# if !defined SCNoFAST64 || 0
1448#  undef SCNoFAST64
1449#  define SCNoFAST64 SCNo64
1450# endif
1451# if !defined SCNuFAST64 || 0
1452#  undef SCNuFAST64
1453#  define SCNuFAST64 SCNu64
1454# endif
1455# if !defined SCNxFAST64 || 0
1456#  undef SCNxFAST64
1457#  define SCNxFAST64 SCNx64
1458# endif
1459#endif
1460
1461#if !defined SCNdMAX || 0
1462# undef SCNdMAX
1463# if 1
1464#  define SCNdMAX SCNd64
1465# else
1466#  define SCNdMAX "ld"
1467# endif
1468#endif
1469#if !defined SCNiMAX || 0
1470# undef SCNiMAX
1471# if 1
1472#  define SCNiMAX SCNi64
1473# else
1474#  define SCNiMAX "li"
1475# endif
1476#endif
1477#if !defined SCNoMAX || 0
1478# undef SCNoMAX
1479# if 1
1480#  define SCNoMAX SCNo64
1481# else
1482#  define SCNoMAX "lo"
1483# endif
1484#endif
1485#if !defined SCNuMAX || 0
1486# undef SCNuMAX
1487# if 1
1488#  define SCNuMAX SCNu64
1489# else
1490#  define SCNuMAX "lu"
1491# endif
1492#endif
1493#if !defined SCNxMAX || 0
1494# undef SCNxMAX
1495# if 1
1496#  define SCNxMAX SCNx64
1497# else
1498#  define SCNxMAX "lx"
1499# endif
1500#endif
1501
1502#if !defined SCNdPTR || 0
1503# undef SCNdPTR
1504# ifdef INTPTR_MAX
1505#  define SCNdPTR "l" "d"
1506# endif
1507#endif
1508#if !defined SCNiPTR || 0
1509# undef SCNiPTR
1510# ifdef INTPTR_MAX
1511#  define SCNiPTR "l" "i"
1512# endif
1513#endif
1514#if !defined SCNoPTR || 0
1515# undef SCNoPTR
1516# ifdef UINTPTR_MAX
1517#  define SCNoPTR "l" "o"
1518# endif
1519#endif
1520#if !defined SCNuPTR || 0
1521# undef SCNuPTR
1522# ifdef UINTPTR_MAX
1523#  define SCNuPTR "l" "u"
1524# endif
1525#endif
1526#if !defined SCNxPTR || 0
1527# undef SCNxPTR
1528# ifdef UINTPTR_MAX
1529#  define SCNxPTR "l" "x"
1530# endif
1531#endif
1532
1533/* 7.8.2 Functions for greatest-width integer types */
1534
1535#ifdef __cplusplus
1536extern "C" {
1537#endif
1538
1539#if 0
1540# if !1
1541extern intmax_t imaxabs (intmax_t);
1542# endif
1543#elif defined GNULIB_POSIXCHECK
1544# undef imaxabs
1545# if HAVE_RAW_DECL_IMAXABS
1546_GL_WARN_ON_USE (imaxabs, "imaxabs is unportable - "
1547                 "use gnulib module imaxabs for portability");
1548# endif
1549#endif
1550
1551#if 0
1552# if !1
1553#  if !GNULIB_defined_imaxdiv_t
1554typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t;
1555#   define GNULIB_defined_imaxdiv_t 1
1556#  endif
1557# endif
1558# if !1
1559extern imaxdiv_t imaxdiv (intmax_t, intmax_t);
1560# endif
1561#elif defined GNULIB_POSIXCHECK
1562# undef imaxdiv
1563# if HAVE_RAW_DECL_IMAXDIV
1564_GL_WARN_ON_USE (imaxdiv, "imaxdiv is unportable - "
1565                 "use gnulib module imaxdiv for portability");
1566# endif
1567#endif
1568
1569#if 0
1570# if 0
1571#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1572#   undef strtoimax
1573#   define strtoimax rpl_strtoimax
1574#  endif
1575_GL_FUNCDECL_RPL (strtoimax, intmax_t,
1576                  (const char *restrict, char **restrict, int)
1577                  _GL_ARG_NONNULL ((1)));
1578_GL_CXXALIAS_RPL (strtoimax, intmax_t,
1579                  (const char *restrict, char **restrict, int));
1580# else
1581#  if !1
1582#   undef strtoimax
1583_GL_FUNCDECL_SYS (strtoimax, intmax_t,
1584                  (const char *restrict, char **restrict, int)
1585                  _GL_ARG_NONNULL ((1)));
1586#  endif
1587_GL_CXXALIAS_SYS (strtoimax, intmax_t,
1588                  (const char *restrict, char **restrict, int));
1589# endif
1590_GL_CXXALIASWARN (strtoimax);
1591#elif defined GNULIB_POSIXCHECK
1592# undef strtoimax
1593# if HAVE_RAW_DECL_STRTOIMAX
1594_GL_WARN_ON_USE (strtoimax, "strtoimax is unportable - "
1595                 "use gnulib module strtoimax for portability");
1596# endif
1597#endif
1598
1599#if 0
1600# if 0
1601#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1602#   undef strtoumax
1603#   define strtoumax rpl_strtoumax
1604#  endif
1605_GL_FUNCDECL_RPL (strtoumax, uintmax_t,
1606                  (const char *restrict, char **restrict, int)
1607                  _GL_ARG_NONNULL ((1)));
1608_GL_CXXALIAS_RPL (strtoumax, uintmax_t,
1609                  (const char *restrict, char **restrict, int));
1610# else
1611#  if !1
1612#   undef strtoumax
1613_GL_FUNCDECL_SYS (strtoumax, uintmax_t,
1614                  (const char *restrict, char **restrict, int)
1615                  _GL_ARG_NONNULL ((1)));
1616#  endif
1617_GL_CXXALIAS_SYS (strtoumax, uintmax_t,
1618                  (const char *restrict, char **restrict, int));
1619# endif
1620_GL_CXXALIASWARN (strtoumax);
1621#elif defined GNULIB_POSIXCHECK
1622# undef strtoumax
1623# if HAVE_RAW_DECL_STRTOUMAX
1624_GL_WARN_ON_USE (strtoumax, "strtoumax is unportable - "
1625                 "use gnulib module strtoumax for portability");
1626# endif
1627#endif
1628
1629/* Don't bother defining or declaring wcstoimax and wcstoumax, since
1630   wide-character functions like this are hardly ever useful.  */
1631
1632#ifdef __cplusplus
1633}
1634#endif
1635
1636#endif /* !defined INTTYPES_H && !defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H */
1637