xref: /netbsd-src/external/gpl3/gdb/lib/libgnulib/arch/sparc/gnulib/import/locale.h (revision 865c57e0098351fba0d2d2a97b33e7e0270e62c6)
1 /* This file is automatically generated.  DO NOT EDIT! */
2 /* Generated from: NetBSD: mknative-gdb,v 1.16 2023/07/31 17:09:59 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 /* A POSIX <locale.h>.
7    Copyright (C) 2007-2022 Free Software Foundation, Inc.
8 
9    This file is free software: you can redistribute it and/or modify
10    it under the terms of the GNU Lesser General Public License as
11    published by the Free Software Foundation; either version 2.1 of the
12    License, or (at your option) any later version.
13 
14    This file is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU Lesser General Public License for more details.
18 
19    You should have received a copy of the GNU Lesser General Public License
20    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
21 
22 #if __GNUC__ >= 3
23 #pragma GCC system_header
24 #endif
25 
26 
27 #if (defined _WIN32 && !defined __CYGWIN__ && defined __need_locale_t) \
28     || defined _GL_ALREADY_INCLUDING_LOCALE_H
29 
30 /* Special invocation convention:
31    - Inside mingw header files,
32    - To handle Solaris header files (through Solaris 10) when combined
33      with gettext's libintl.h.  */
34 
35 #include_next <locale.h>
36 
37 #else
38 /* Normal invocation convention.  */
39 
40 #ifndef _GL_LOCALE_H
41 
42 #define _GL_ALREADY_INCLUDING_LOCALE_H
43 
44 /* The include_next requires a split double-inclusion guard.  */
45 #include_next <locale.h>
46 
47 #undef _GL_ALREADY_INCLUDING_LOCALE_H
48 
49 #ifndef _GL_LOCALE_H
50 #define _GL_LOCALE_H
51 
52 /* NetBSD 5.0 mis-defines NULL.  */
53 #include <stddef.h>
54 
55 /* Mac OS X 10.5 defines the locale_t type in <xlocale.h>.  */
56 #if 0
57 # include <xlocale.h>
58 #endif
59 
60 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
61 /* C++ compatible function declaration macros.
62    Copyright (C) 2010-2022 Free Software Foundation, Inc.
63 
64    This program is free software: you can redistribute it and/or modify it
65    under the terms of the GNU Lesser General Public License as published
66    by the Free Software Foundation; either version 2 of the License, or
67    (at your option) any later version.
68 
69    This program is distributed in the hope that it will be useful,
70    but WITHOUT ANY WARRANTY; without even the implied warranty of
71    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
72    Lesser General Public License for more details.
73 
74    You should have received a copy of the GNU Lesser General Public License
75    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
76 
77 #ifndef _GL_CXXDEFS_H
78 #define _GL_CXXDEFS_H
79 
80 /* Begin/end the GNULIB_NAMESPACE namespace.  */
81 #if defined __cplusplus && defined GNULIB_NAMESPACE
82 # define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE {
83 # define _GL_END_NAMESPACE }
84 #else
85 # define _GL_BEGIN_NAMESPACE
86 # define _GL_END_NAMESPACE
87 #endif
88 
89 /* The three most frequent use cases of these macros are:
90 
91    * For providing a substitute for a function that is missing on some
92      platforms, but is declared and works fine on the platforms on which
93      it exists:
94 
95        #if @GNULIB_FOO@
96        # if !@HAVE_FOO@
97        _GL_FUNCDECL_SYS (foo, ...);
98        # endif
99        _GL_CXXALIAS_SYS (foo, ...);
100        _GL_CXXALIASWARN (foo);
101        #elif defined GNULIB_POSIXCHECK
102        ...
103        #endif
104 
105    * For providing a replacement for a function that exists on all platforms,
106      but is broken/insufficient and needs to be replaced on some platforms:
107 
108        #if @GNULIB_FOO@
109        # if @REPLACE_FOO@
110        #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
111        #   undef foo
112        #   define foo rpl_foo
113        #  endif
114        _GL_FUNCDECL_RPL (foo, ...);
115        _GL_CXXALIAS_RPL (foo, ...);
116        # else
117        _GL_CXXALIAS_SYS (foo, ...);
118        # endif
119        _GL_CXXALIASWARN (foo);
120        #elif defined GNULIB_POSIXCHECK
121        ...
122        #endif
123 
124    * For providing a replacement for a function that exists on some platforms
125      but is broken/insufficient and needs to be replaced on some of them and
126      is additionally either missing or undeclared on some other platforms:
127 
128        #if @GNULIB_FOO@
129        # if @REPLACE_FOO@
130        #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
131        #   undef foo
132        #   define foo rpl_foo
133        #  endif
134        _GL_FUNCDECL_RPL (foo, ...);
135        _GL_CXXALIAS_RPL (foo, ...);
136        # else
137        #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
138        _GL_FUNCDECL_SYS (foo, ...);
139        #  endif
140        _GL_CXXALIAS_SYS (foo, ...);
141        # endif
142        _GL_CXXALIASWARN (foo);
143        #elif defined GNULIB_POSIXCHECK
144        ...
145        #endif
146 */
147 
148 /* _GL_EXTERN_C declaration;
149    performs the declaration with C linkage.  */
150 #if defined __cplusplus
151 # define _GL_EXTERN_C extern "C"
152 #else
153 # define _GL_EXTERN_C extern
154 #endif
155 
156 /* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
157    declares a replacement function, named rpl_func, with the given prototype,
158    consisting of return type, parameters, and attributes.
159    Example:
160      _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
161                                   _GL_ARG_NONNULL ((1)));
162  */
163 #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
164   _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
165 #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
166   _GL_EXTERN_C rettype rpl_func parameters_and_attributes
167 
168 /* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
169    declares the system function, named func, with the given prototype,
170    consisting of return type, parameters, and attributes.
171    Example:
172      _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
173                                   _GL_ARG_NONNULL ((1)));
174  */
175 #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
176   _GL_EXTERN_C rettype func parameters_and_attributes
177 
178 /* _GL_CXXALIAS_RPL (func, rettype, parameters);
179    declares a C++ alias called GNULIB_NAMESPACE::func
180    that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
181    Example:
182      _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
183 
184    Wrapping rpl_func in an object with an inline conversion operator
185    avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is
186    actually used in the program.  */
187 #define _GL_CXXALIAS_RPL(func,rettype,parameters) \
188   _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
189 #if defined __cplusplus && defined GNULIB_NAMESPACE
190 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
191     namespace GNULIB_NAMESPACE                                \
192     {                                                         \
193       static const struct _gl_ ## func ## _wrapper            \
194       {                                                       \
195         typedef rettype (*type) parameters;                   \
196                                                               \
197         inline operator type () const                         \
198         {                                                     \
199           return ::rpl_func;                                  \
200         }                                                     \
201       } func = {};                                            \
202     }                                                         \
203     _GL_EXTERN_C int _gl_cxxalias_dummy
204 #else
205 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
206     _GL_EXTERN_C int _gl_cxxalias_dummy
207 #endif
208 
209 /* _GL_CXXALIAS_MDA (func, rettype, parameters);
210    is to be used when func is a Microsoft deprecated alias, on native Windows.
211    It declares a C++ alias called GNULIB_NAMESPACE::func
212    that redirects to _func, if GNULIB_NAMESPACE is defined.
213    Example:
214      _GL_CXXALIAS_MDA (open, int, (const char *filename, int flags, ...));
215  */
216 #define _GL_CXXALIAS_MDA(func,rettype,parameters) \
217   _GL_CXXALIAS_RPL_1 (func, _##func, rettype, parameters)
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_MDA_CAST (func, rettype, parameters);
245    is like  _GL_CXXALIAS_MDA (func, rettype, parameters);
246    except that the C function func may have a slightly different declaration.
247    A cast is used to silence the "invalid conversion" error that would
248    otherwise occur.  */
249 #define _GL_CXXALIAS_MDA_CAST(func,rettype,parameters) \
250   _GL_CXXALIAS_RPL_CAST_1 (func, _##func, rettype, parameters)
251 
252 /* _GL_CXXALIAS_SYS (func, rettype, parameters);
253    declares a C++ alias called GNULIB_NAMESPACE::func
254    that redirects to the system provided function func, if GNULIB_NAMESPACE
255    is defined.
256    Example:
257      _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
258 
259    Wrapping func in an object with an inline conversion operator
260    avoids a reference to func unless GNULIB_NAMESPACE::func is
261    actually used in the program.  */
262 #if defined __cplusplus && defined GNULIB_NAMESPACE
263 # define _GL_CXXALIAS_SYS(func,rettype,parameters)            \
264     namespace GNULIB_NAMESPACE                                \
265     {                                                         \
266       static const struct _gl_ ## func ## _wrapper            \
267       {                                                       \
268         typedef rettype (*type) parameters;                   \
269                                                               \
270         inline operator type () const                         \
271         {                                                     \
272           return ::func;                                      \
273         }                                                     \
274       } func = {};                                            \
275     }                                                         \
276     _GL_EXTERN_C int _gl_cxxalias_dummy
277 #else
278 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
279     _GL_EXTERN_C int _gl_cxxalias_dummy
280 #endif
281 
282 /* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
283    is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
284    except that the C function func may have a slightly different declaration.
285    A cast is used to silence the "invalid conversion" error that would
286    otherwise occur.  */
287 #if defined __cplusplus && defined GNULIB_NAMESPACE
288 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
289     namespace GNULIB_NAMESPACE                          \
290     {                                                   \
291       static const struct _gl_ ## func ## _wrapper      \
292       {                                                 \
293         typedef rettype (*type) parameters;             \
294                                                         \
295         inline operator type () const                   \
296         {                                               \
297           return reinterpret_cast<type>(::func);        \
298         }                                               \
299       } func = {};                                      \
300     }                                                   \
301     _GL_EXTERN_C int _gl_cxxalias_dummy
302 #else
303 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
304     _GL_EXTERN_C int _gl_cxxalias_dummy
305 #endif
306 
307 /* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
308    is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
309    except that the C function is picked among a set of overloaded functions,
310    namely the one with rettype2 and parameters2.  Two consecutive casts
311    are used to silence the "cannot find a match" and "invalid conversion"
312    errors that would otherwise occur.  */
313 #if defined __cplusplus && defined GNULIB_NAMESPACE
314   /* The outer cast must be a reinterpret_cast.
315      The inner cast: When the function is defined as a set of overloaded
316      functions, it works as a static_cast<>, choosing the designated variant.
317      When the function is defined as a single variant, it works as a
318      reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
319 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
320     namespace GNULIB_NAMESPACE                                                \
321     {                                                                         \
322       static const struct _gl_ ## func ## _wrapper                            \
323       {                                                                       \
324         typedef rettype (*type) parameters;                                   \
325                                                                               \
326         inline operator type () const                                         \
327         {                                                                     \
328           return reinterpret_cast<type>((rettype2 (*) parameters2)(::func));  \
329         }                                                                     \
330       } func = {};                                                            \
331     }                                                                         \
332     _GL_EXTERN_C int _gl_cxxalias_dummy
333 #else
334 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
335     _GL_EXTERN_C int _gl_cxxalias_dummy
336 #endif
337 
338 /* _GL_CXXALIASWARN (func);
339    causes a warning to be emitted when ::func is used but not when
340    GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
341    variants.  */
342 #if defined __cplusplus && defined GNULIB_NAMESPACE
343 # define _GL_CXXALIASWARN(func) \
344    _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
345 # define _GL_CXXALIASWARN_1(func,namespace) \
346    _GL_CXXALIASWARN_2 (func, namespace)
347 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
348    we enable the warning only when not optimizing.  */
349 # if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
350 #  define _GL_CXXALIASWARN_2(func,namespace) \
351     _GL_WARN_ON_USE (func, \
352                      "The symbol ::" #func " refers to the system function. " \
353                      "Use " #namespace "::" #func " instead.")
354 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
355 #  define _GL_CXXALIASWARN_2(func,namespace) \
356      extern __typeof__ (func) func
357 # else
358 #  define _GL_CXXALIASWARN_2(func,namespace) \
359      _GL_EXTERN_C int _gl_cxxalias_dummy
360 # endif
361 #else
362 # define _GL_CXXALIASWARN(func) \
363     _GL_EXTERN_C int _gl_cxxalias_dummy
364 #endif
365 
366 /* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
367    causes a warning to be emitted when the given overloaded variant of ::func
368    is used but not when GNULIB_NAMESPACE::func is used.  */
369 #if defined __cplusplus && defined GNULIB_NAMESPACE
370 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
371    _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
372                         GNULIB_NAMESPACE)
373 # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
374    _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
375 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
376    we enable the warning only when not optimizing.  */
377 # if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
378 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
379     _GL_WARN_ON_USE_CXX (func, rettype, rettype, parameters_and_attributes, \
380                          "The symbol ::" #func " refers to the system function. " \
381                          "Use " #namespace "::" #func " instead.")
382 # else
383 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
384      _GL_EXTERN_C int _gl_cxxalias_dummy
385 # endif
386 #else
387 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
388     _GL_EXTERN_C int _gl_cxxalias_dummy
389 #endif
390 
391 #endif /* _GL_CXXDEFS_H */
392 
393 /* The definition of _GL_ARG_NONNULL is copied here.  */
394 /* A C macro for declaring that specific arguments must not be NULL.
395    Copyright (C) 2009-2022 Free Software Foundation, Inc.
396 
397    This program is free software: you can redistribute it and/or modify it
398    under the terms of the GNU Lesser General Public License as published
399    by the Free Software Foundation; either version 2 of the License, or
400    (at your option) any later version.
401 
402    This program is distributed in the hope that it will be useful,
403    but WITHOUT ANY WARRANTY; without even the implied warranty of
404    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
405    Lesser General Public License for more details.
406 
407    You should have received a copy of the GNU Lesser General Public License
408    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
409 
410 /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
411    that the values passed as arguments n, ..., m must be non-NULL pointers.
412    n = 1 stands for the first argument, n = 2 for the second argument etc.  */
413 #ifndef _GL_ARG_NONNULL
414 # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || defined __clang__
415 #  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
416 # else
417 #  define _GL_ARG_NONNULL(params)
418 # endif
419 #endif
420 
421 /* The definition of _GL_WARN_ON_USE is copied here.  */
422 /* A C macro for emitting warnings if a function is used.
423    Copyright (C) 2010-2022 Free Software Foundation, Inc.
424 
425    This program is free software: you can redistribute it and/or modify it
426    under the terms of the GNU Lesser General Public License as published
427    by the Free Software Foundation; either version 2 of the License, or
428    (at your option) any later version.
429 
430    This program is distributed in the hope that it will be useful,
431    but WITHOUT ANY WARRANTY; without even the implied warranty of
432    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
433    Lesser General Public License for more details.
434 
435    You should have received a copy of the GNU Lesser General Public License
436    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
437 
438 /* _GL_WARN_ON_USE (function, "literal string") issues a declaration
439    for FUNCTION which will then trigger a compiler warning containing
440    the text of "literal string" anywhere that function is called, if
441    supported by the compiler.  If the compiler does not support this
442    feature, the macro expands to an unused extern declaration.
443 
444    _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the
445    attribute used in _GL_WARN_ON_USE.  If the compiler does not support
446    this feature, it expands to empty.
447 
448    These macros are useful for marking a function as a potential
449    portability trap, with the intent that "literal string" include
450    instructions on the replacement function that should be used
451    instead.
452    _GL_WARN_ON_USE is for functions with 'extern' linkage.
453    _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline'
454    linkage.
455 
456    However, one of the reasons that a function is a portability trap is
457    if it has the wrong signature.  Declaring FUNCTION with a different
458    signature in C is a compilation error, so this macro must use the
459    same type as any existing declaration so that programs that avoid
460    the problematic FUNCTION do not fail to compile merely because they
461    included a header that poisoned the function.  But this implies that
462    _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already
463    have a declaration.  Use of this macro implies that there must not
464    be any other macro hiding the declaration of FUNCTION; but
465    undefining FUNCTION first is part of the poisoning process anyway
466    (although for symbols that are provided only via a macro, the result
467    is a compilation error rather than a warning containing
468    "literal string").  Also note that in C++, it is only safe to use if
469    FUNCTION has no overloads.
470 
471    For an example, it is possible to poison 'getline' by:
472    - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
473      [getline]) in configure.ac, which potentially defines
474      HAVE_RAW_DECL_GETLINE
475    - adding this code to a header that wraps the system <stdio.h>:
476      #undef getline
477      #if HAVE_RAW_DECL_GETLINE
478      _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but"
479        "not universally present; use the gnulib module getline");
480      #endif
481 
482    It is not possible to directly poison global variables.  But it is
483    possible to write a wrapper accessor function, and poison that
484    (less common usage, like &environ, will cause a compilation error
485    rather than issue the nice warning, but the end result of informing
486    the developer about their portability problem is still achieved):
487      #if HAVE_RAW_DECL_ENVIRON
488      static char ***
489      rpl_environ (void) { return &environ; }
490      _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
491      # undef environ
492      # define environ (*rpl_environ ())
493      #endif
494    or better (avoiding contradictory use of 'static' and 'extern'):
495      #if HAVE_RAW_DECL_ENVIRON
496      static char ***
497      _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared")
498      rpl_environ (void) { return &environ; }
499      # undef environ
500      # define environ (*rpl_environ ())
501      #endif
502    */
503 #ifndef _GL_WARN_ON_USE
504 
505 # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
506 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
507 #  define _GL_WARN_ON_USE(function, message) \
508 _GL_WARN_EXTERN_C __typeof__ (function) function __attribute__ ((__warning__ (message)))
509 #  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
510   __attribute__ ((__warning__ (message)))
511 # elif __clang_major__ >= 4
512 /* Another compiler attribute is available in clang.  */
513 #  define _GL_WARN_ON_USE(function, message) \
514 _GL_WARN_EXTERN_C __typeof__ (function) function \
515   __attribute__ ((__diagnose_if__ (1, message, "warning")))
516 #  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
517   __attribute__ ((__diagnose_if__ (1, message, "warning")))
518 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
519 /* Verify the existence of the function.  */
520 #  define _GL_WARN_ON_USE(function, message) \
521 _GL_WARN_EXTERN_C __typeof__ (function) function
522 #  define _GL_WARN_ON_USE_ATTRIBUTE(message)
523 # else /* Unsupported.  */
524 #  define _GL_WARN_ON_USE(function, message) \
525 _GL_WARN_EXTERN_C int _gl_warn_on_use
526 #  define _GL_WARN_ON_USE_ATTRIBUTE(message)
527 # endif
528 #endif
529 
530 /* _GL_WARN_ON_USE_CXX (function, rettype_gcc, rettype_clang, parameters_and_attributes, "message")
531    is like _GL_WARN_ON_USE (function, "message"), except that in C++ mode the
532    function is declared with the given prototype, consisting of return type,
533    parameters, and attributes.
534    This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
535    not work in this case.  */
536 #ifndef _GL_WARN_ON_USE_CXX
537 # if !defined __cplusplus
538 #  define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
539      _GL_WARN_ON_USE (function, msg)
540 # else
541 #  if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
542 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
543 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
544 extern rettype_gcc function parameters_and_attributes \
545   __attribute__ ((__warning__ (msg)))
546 #  elif __clang_major__ >= 4
547 /* Another compiler attribute is available in clang.  */
548 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
549 extern rettype_clang function parameters_and_attributes \
550   __attribute__ ((__diagnose_if__ (1, msg, "warning")))
551 #  elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
552 /* Verify the existence of the function.  */
553 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
554 extern rettype_gcc function parameters_and_attributes
555 #  else /* Unsupported.  */
556 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
557 _GL_WARN_EXTERN_C int _gl_warn_on_use
558 #  endif
559 # endif
560 #endif
561 
562 /* _GL_WARN_EXTERN_C declaration;
563    performs the declaration with C linkage.  */
564 #ifndef _GL_WARN_EXTERN_C
565 # if defined __cplusplus
566 #  define _GL_WARN_EXTERN_C extern "C"
567 # else
568 #  define _GL_WARN_EXTERN_C extern
569 # endif
570 #endif
571 
572 /* The LC_MESSAGES locale category is specified in POSIX, but not in ISO C.
573    On systems that don't define it, use the same value as GNU libintl.  */
574 #if !defined LC_MESSAGES
575 # define LC_MESSAGES 1729
576 #endif
577 
578 /* On native Windows with MSVC, 'struct lconv' lacks the members int_p_* and
579    int_n_*.  Instead of overriding 'struct lconv', merely define these member
580    names as macros.  This avoids trouble in C++ mode.  */
581 #if defined _MSC_VER
582 # define int_p_cs_precedes   p_cs_precedes
583 # define int_p_sign_posn     p_sign_posn
584 # define int_p_sep_by_space  p_sep_by_space
585 # define int_n_cs_precedes   n_cs_precedes
586 # define int_n_sign_posn     n_sign_posn
587 # define int_n_sep_by_space  n_sep_by_space
588 #endif
589 
590 /* Bionic libc's 'struct lconv' is just a dummy.  */
591 #if 0
592 # define lconv rpl_lconv
593 struct lconv
594 {
595   /* All 'char *' are actually 'const char *'.  */
596 
597   /* Members that depend on the LC_NUMERIC category of the locale.  See
598      <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_04> */
599 
600   /* Symbol used as decimal point.  */
601   char *decimal_point;
602   /* Symbol used to separate groups of digits to the left of the decimal
603      point.  */
604   char *thousands_sep;
605   /* Definition of the size of groups of digits to the left of the decimal
606      point.  */
607   char *grouping;
608 
609   /* Members that depend on the LC_MONETARY category of the locale.  See
610      <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_03> */
611 
612   /* Symbol used as decimal point.  */
613   char *mon_decimal_point;
614   /* Symbol used to separate groups of digits to the left of the decimal
615      point.  */
616   char *mon_thousands_sep;
617   /* Definition of the size of groups of digits to the left of the decimal
618      point.  */
619   char *mon_grouping;
620   /* Sign used to indicate a value >= 0.  */
621   char *positive_sign;
622   /* Sign used to indicate a value < 0.  */
623   char *negative_sign;
624 
625   /* For formatting local currency.  */
626   /* Currency symbol (3 characters) followed by separator (1 character).  */
627   char *currency_symbol;
628   /* Number of digits after the decimal point.  */
629   char frac_digits;
630   /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it
631      comes after the number.  */
632   char p_cs_precedes;
633   /* For values >= 0: Position of the sign.  */
634   char p_sign_posn;
635   /* For values >= 0: Placement of spaces between currency symbol, sign, and
636      number.  */
637   char p_sep_by_space;
638   /* For values < 0: 1 if the currency symbol precedes the number, 0 if it
639      comes after the number.  */
640   char n_cs_precedes;
641   /* For values < 0: Position of the sign.  */
642   char n_sign_posn;
643   /* For values < 0: Placement of spaces between currency symbol, sign, and
644      number.  */
645   char n_sep_by_space;
646 
647   /* For formatting international currency.  */
648   /* Currency symbol (3 characters) followed by separator (1 character).  */
649   char *int_curr_symbol;
650   /* Number of digits after the decimal point.  */
651   char int_frac_digits;
652   /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it
653      comes after the number.  */
654   char int_p_cs_precedes;
655   /* For values >= 0: Position of the sign.  */
656   char int_p_sign_posn;
657   /* For values >= 0: Placement of spaces between currency symbol, sign, and
658      number.  */
659   char int_p_sep_by_space;
660   /* For values < 0: 1 if the currency symbol precedes the number, 0 if it
661      comes after the number.  */
662   char int_n_cs_precedes;
663   /* For values < 0: Position of the sign.  */
664   char int_n_sign_posn;
665   /* For values < 0: Placement of spaces between currency symbol, sign, and
666      number.  */
667   char int_n_sep_by_space;
668 };
669 #endif
670 
671 #if 0
672 # if 0
673 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
674 #   undef localeconv
675 #   define localeconv rpl_localeconv
676 #  endif
677 _GL_FUNCDECL_RPL (localeconv, struct lconv *, (void));
678 _GL_CXXALIAS_RPL (localeconv, struct lconv *, (void));
679 # else
680 _GL_CXXALIAS_SYS (localeconv, struct lconv *, (void));
681 # endif
682 # if __GLIBC__ >= 2
683 _GL_CXXALIASWARN (localeconv);
684 # endif
685 #elif 0
686 # undef localeconv
687 # define localeconv localeconv_used_without_requesting_gnulib_module_localeconv
688 #elif defined GNULIB_POSIXCHECK
689 # undef localeconv
690 # if HAVE_RAW_DECL_LOCALECONV
691 _GL_WARN_ON_USE (localeconv,
692                  "localeconv returns too few information on some platforms - "
693                  "use gnulib module localeconv for portability");
694 # endif
695 #endif
696 
697 #if 0
698 # if 0
699 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
700 #   undef setlocale
701 #   define setlocale rpl_setlocale
702 #   define GNULIB_defined_setlocale 1
703 #  endif
704 _GL_FUNCDECL_RPL (setlocale, char *, (int category, const char *locale));
705 _GL_CXXALIAS_RPL (setlocale, char *, (int category, const char *locale));
706 # else
707 _GL_CXXALIAS_SYS (setlocale, char *, (int category, const char *locale));
708 # endif
709 # if __GLIBC__ >= 2
710 _GL_CXXALIASWARN (setlocale);
711 # endif
712 #elif defined GNULIB_POSIXCHECK
713 # undef setlocale
714 # if HAVE_RAW_DECL_SETLOCALE
715 _GL_WARN_ON_USE (setlocale, "setlocale works differently on native Windows - "
716                  "use gnulib module setlocale for portability");
717 # endif
718 #endif
719 
720 #if 1
721 /* Included here for convenience.  */
722 # include "setlocale_null.h"
723 #endif
724 
725 #if /*@GNULIB_NEWLOCALE@ ||*/ (0 && 0 && 1)
726 # if 0
727 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
728 #   undef newlocale
729 #   define newlocale rpl_newlocale
730 #   define GNULIB_defined_newlocale 1
731 #  endif
732 _GL_FUNCDECL_RPL (newlocale, locale_t,
733                   (int category_mask, const char *name, locale_t base)
734                   _GL_ARG_NONNULL ((2)));
735 _GL_CXXALIAS_RPL (newlocale, locale_t,
736                   (int category_mask, const char *name, locale_t base));
737 # else
738 #  if 1
739 _GL_CXXALIAS_SYS (newlocale, locale_t,
740                   (int category_mask, const char *name, locale_t base));
741 #  endif
742 # endif
743 # if 1
744 _GL_CXXALIASWARN (newlocale);
745 # endif
746 # if 1 || 0
747 #  ifndef HAVE_WORKING_NEWLOCALE
748 #   define HAVE_WORKING_NEWLOCALE 1
749 #  endif
750 # endif
751 #elif defined GNULIB_POSIXCHECK
752 # undef newlocale
753 # if HAVE_RAW_DECL_NEWLOCALE
754 _GL_WARN_ON_USE (newlocale, "newlocale is not portable");
755 # endif
756 #endif
757 
758 #if 0 || (0 && 0 && 1)
759 # if 0
760 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
761 #   undef duplocale
762 #   define duplocale rpl_duplocale
763 #   define GNULIB_defined_duplocale 1
764 #  endif
765 _GL_FUNCDECL_RPL (duplocale, locale_t, (locale_t locale) _GL_ARG_NONNULL ((1)));
766 _GL_CXXALIAS_RPL (duplocale, locale_t, (locale_t locale));
767 # else
768 #  if 1
769 _GL_CXXALIAS_SYS (duplocale, locale_t, (locale_t locale));
770 #  endif
771 # endif
772 # if 1
773 _GL_CXXALIASWARN (duplocale);
774 # endif
775 # if 1 || 0
776 #  ifndef HAVE_WORKING_DUPLOCALE
777 #   define HAVE_WORKING_DUPLOCALE 1
778 #  endif
779 # endif
780 #elif defined GNULIB_POSIXCHECK
781 # undef duplocale
782 # if HAVE_RAW_DECL_DUPLOCALE
783 _GL_WARN_ON_USE (duplocale, "duplocale is buggy on some glibc systems - "
784                  "use gnulib module duplocale for portability");
785 # endif
786 #endif
787 
788 #if /*@GNULIB_FREELOCALE@ ||*/ (0 && 0 && 1)
789 # if 0
790 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
791 #   undef freelocale
792 #   define freelocale rpl_freelocale
793 #   define GNULIB_defined_freelocale 1
794 #  endif
795 _GL_FUNCDECL_RPL (freelocale, void, (locale_t locale) _GL_ARG_NONNULL ((1)));
796 _GL_CXXALIAS_RPL (freelocale, void, (locale_t locale));
797 # else
798 #  if 1
799 /* Need to cast, because on FreeBSD and Mac OS X 10.13, the return type is
800                                    int.  */
801 _GL_CXXALIAS_SYS_CAST (freelocale, void, (locale_t locale));
802 #  endif
803 # endif
804 # if 1
805 _GL_CXXALIASWARN (freelocale);
806 # endif
807 #elif defined GNULIB_POSIXCHECK
808 # undef freelocale
809 # if HAVE_RAW_DECL_FREELOCALE
810 _GL_WARN_ON_USE (freelocale, "freelocale is not portable");
811 # endif
812 #endif
813 
814 #endif /* _GL_LOCALE_H */
815 #endif /* _GL_LOCALE_H */
816 #endif /* !(__need_locale_t || _GL_ALREADY_INCLUDING_LOCALE_H) */
817