xref: /Universal-ctags/gnulib/locale.in.h (revision 820c1a8d46849a90376d8eb15b319ac05439f656)
1*820c1a8dSHiroo HAYASHI /* A POSIX <locale.h>.
2*820c1a8dSHiroo HAYASHI    Copyright (C) 2007-2021 Free Software Foundation, Inc.
3*820c1a8dSHiroo HAYASHI 
4*820c1a8dSHiroo HAYASHI    This file is free software: you can redistribute it and/or modify
5*820c1a8dSHiroo HAYASHI    it under the terms of the GNU Lesser General Public License as
6*820c1a8dSHiroo HAYASHI    published by the Free Software Foundation; either version 2.1 of the
7*820c1a8dSHiroo HAYASHI    License, or (at your option) any later version.
8*820c1a8dSHiroo HAYASHI 
9*820c1a8dSHiroo HAYASHI    This file is distributed in the hope that it will be useful,
10*820c1a8dSHiroo HAYASHI    but WITHOUT ANY WARRANTY; without even the implied warranty of
11*820c1a8dSHiroo HAYASHI    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12*820c1a8dSHiroo HAYASHI    GNU Lesser General Public License for more details.
13*820c1a8dSHiroo HAYASHI 
14*820c1a8dSHiroo HAYASHI    You should have received a copy of the GNU Lesser General Public License
15*820c1a8dSHiroo HAYASHI    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
16*820c1a8dSHiroo HAYASHI 
17*820c1a8dSHiroo HAYASHI #if __GNUC__ >= 3
18*820c1a8dSHiroo HAYASHI @PRAGMA_SYSTEM_HEADER@
19*820c1a8dSHiroo HAYASHI #endif
20*820c1a8dSHiroo HAYASHI @PRAGMA_COLUMNS@
21*820c1a8dSHiroo HAYASHI 
22*820c1a8dSHiroo HAYASHI #if (defined _WIN32 && !defined __CYGWIN__ && defined __need_locale_t) \
23*820c1a8dSHiroo HAYASHI     || defined _GL_ALREADY_INCLUDING_LOCALE_H
24*820c1a8dSHiroo HAYASHI 
25*820c1a8dSHiroo HAYASHI /* Special invocation convention:
26*820c1a8dSHiroo HAYASHI    - Inside mingw header files,
27*820c1a8dSHiroo HAYASHI    - To handle Solaris header files (through Solaris 10) when combined
28*820c1a8dSHiroo HAYASHI      with gettext's libintl.h.  */
29*820c1a8dSHiroo HAYASHI 
30*820c1a8dSHiroo HAYASHI #@INCLUDE_NEXT@ @NEXT_LOCALE_H@
31*820c1a8dSHiroo HAYASHI 
32*820c1a8dSHiroo HAYASHI #else
33*820c1a8dSHiroo HAYASHI /* Normal invocation convention.  */
34*820c1a8dSHiroo HAYASHI 
35*820c1a8dSHiroo HAYASHI #ifndef _@GUARD_PREFIX@_LOCALE_H
36*820c1a8dSHiroo HAYASHI 
37*820c1a8dSHiroo HAYASHI #define _GL_ALREADY_INCLUDING_LOCALE_H
38*820c1a8dSHiroo HAYASHI 
39*820c1a8dSHiroo HAYASHI /* The include_next requires a split double-inclusion guard.  */
40*820c1a8dSHiroo HAYASHI #@INCLUDE_NEXT@ @NEXT_LOCALE_H@
41*820c1a8dSHiroo HAYASHI 
42*820c1a8dSHiroo HAYASHI #undef _GL_ALREADY_INCLUDING_LOCALE_H
43*820c1a8dSHiroo HAYASHI 
44*820c1a8dSHiroo HAYASHI #ifndef _@GUARD_PREFIX@_LOCALE_H
45*820c1a8dSHiroo HAYASHI #define _@GUARD_PREFIX@_LOCALE_H
46*820c1a8dSHiroo HAYASHI 
47*820c1a8dSHiroo HAYASHI /* NetBSD 5.0 mis-defines NULL.  */
48*820c1a8dSHiroo HAYASHI #include <stddef.h>
49*820c1a8dSHiroo HAYASHI 
50*820c1a8dSHiroo HAYASHI /* Mac OS X 10.5 defines the locale_t type in <xlocale.h>.  */
51*820c1a8dSHiroo HAYASHI #if @HAVE_XLOCALE_H@
52*820c1a8dSHiroo HAYASHI # include <xlocale.h>
53*820c1a8dSHiroo HAYASHI #endif
54*820c1a8dSHiroo HAYASHI 
55*820c1a8dSHiroo HAYASHI /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
56*820c1a8dSHiroo HAYASHI 
57*820c1a8dSHiroo HAYASHI /* The definition of _GL_ARG_NONNULL is copied here.  */
58*820c1a8dSHiroo HAYASHI 
59*820c1a8dSHiroo HAYASHI /* The definition of _GL_WARN_ON_USE is copied here.  */
60*820c1a8dSHiroo HAYASHI 
61*820c1a8dSHiroo HAYASHI /* The LC_MESSAGES locale category is specified in POSIX, but not in ISO C.
62*820c1a8dSHiroo HAYASHI    On systems that don't define it, use the same value as GNU libintl.  */
63*820c1a8dSHiroo HAYASHI #if !defined LC_MESSAGES
64*820c1a8dSHiroo HAYASHI # define LC_MESSAGES 1729
65*820c1a8dSHiroo HAYASHI #endif
66*820c1a8dSHiroo HAYASHI 
67*820c1a8dSHiroo HAYASHI /* On native Windows with MSVC, 'struct lconv' lacks the members int_p_* and
68*820c1a8dSHiroo HAYASHI    int_n_*.  Instead of overriding 'struct lconv', merely define these member
69*820c1a8dSHiroo HAYASHI    names as macros.  This avoids trouble in C++ mode.  */
70*820c1a8dSHiroo HAYASHI #if defined _MSC_VER
71*820c1a8dSHiroo HAYASHI # define int_p_cs_precedes   p_cs_precedes
72*820c1a8dSHiroo HAYASHI # define int_p_sign_posn     p_sign_posn
73*820c1a8dSHiroo HAYASHI # define int_p_sep_by_space  p_sep_by_space
74*820c1a8dSHiroo HAYASHI # define int_n_cs_precedes   n_cs_precedes
75*820c1a8dSHiroo HAYASHI # define int_n_sign_posn     n_sign_posn
76*820c1a8dSHiroo HAYASHI # define int_n_sep_by_space  n_sep_by_space
77*820c1a8dSHiroo HAYASHI #endif
78*820c1a8dSHiroo HAYASHI 
79*820c1a8dSHiroo HAYASHI /* Bionic libc's 'struct lconv' is just a dummy.  */
80*820c1a8dSHiroo HAYASHI #if @REPLACE_STRUCT_LCONV@
81*820c1a8dSHiroo HAYASHI # define lconv rpl_lconv
82*820c1a8dSHiroo HAYASHI struct lconv
83*820c1a8dSHiroo HAYASHI {
84*820c1a8dSHiroo HAYASHI   /* All 'char *' are actually 'const char *'.  */
85*820c1a8dSHiroo HAYASHI 
86*820c1a8dSHiroo HAYASHI   /* Members that depend on the LC_NUMERIC category of the locale.  See
87*820c1a8dSHiroo HAYASHI      <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_04> */
88*820c1a8dSHiroo HAYASHI 
89*820c1a8dSHiroo HAYASHI   /* Symbol used as decimal point.  */
90*820c1a8dSHiroo HAYASHI   char *decimal_point;
91*820c1a8dSHiroo HAYASHI   /* Symbol used to separate groups of digits to the left of the decimal
92*820c1a8dSHiroo HAYASHI      point.  */
93*820c1a8dSHiroo HAYASHI   char *thousands_sep;
94*820c1a8dSHiroo HAYASHI   /* Definition of the size of groups of digits to the left of the decimal
95*820c1a8dSHiroo HAYASHI      point.  */
96*820c1a8dSHiroo HAYASHI   char *grouping;
97*820c1a8dSHiroo HAYASHI 
98*820c1a8dSHiroo HAYASHI   /* Members that depend on the LC_MONETARY category of the locale.  See
99*820c1a8dSHiroo HAYASHI      <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_03> */
100*820c1a8dSHiroo HAYASHI 
101*820c1a8dSHiroo HAYASHI   /* Symbol used as decimal point.  */
102*820c1a8dSHiroo HAYASHI   char *mon_decimal_point;
103*820c1a8dSHiroo HAYASHI   /* Symbol used to separate groups of digits to the left of the decimal
104*820c1a8dSHiroo HAYASHI      point.  */
105*820c1a8dSHiroo HAYASHI   char *mon_thousands_sep;
106*820c1a8dSHiroo HAYASHI   /* Definition of the size of groups of digits to the left of the decimal
107*820c1a8dSHiroo HAYASHI      point.  */
108*820c1a8dSHiroo HAYASHI   char *mon_grouping;
109*820c1a8dSHiroo HAYASHI   /* Sign used to indicate a value >= 0.  */
110*820c1a8dSHiroo HAYASHI   char *positive_sign;
111*820c1a8dSHiroo HAYASHI   /* Sign used to indicate a value < 0.  */
112*820c1a8dSHiroo HAYASHI   char *negative_sign;
113*820c1a8dSHiroo HAYASHI 
114*820c1a8dSHiroo HAYASHI   /* For formatting local currency.  */
115*820c1a8dSHiroo HAYASHI   /* Currency symbol (3 characters) followed by separator (1 character).  */
116*820c1a8dSHiroo HAYASHI   char *currency_symbol;
117*820c1a8dSHiroo HAYASHI   /* Number of digits after the decimal point.  */
118*820c1a8dSHiroo HAYASHI   char frac_digits;
119*820c1a8dSHiroo HAYASHI   /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it
120*820c1a8dSHiroo HAYASHI      comes after the number.  */
121*820c1a8dSHiroo HAYASHI   char p_cs_precedes;
122*820c1a8dSHiroo HAYASHI   /* For values >= 0: Position of the sign.  */
123*820c1a8dSHiroo HAYASHI   char p_sign_posn;
124*820c1a8dSHiroo HAYASHI   /* For values >= 0: Placement of spaces between currency symbol, sign, and
125*820c1a8dSHiroo HAYASHI      number.  */
126*820c1a8dSHiroo HAYASHI   char p_sep_by_space;
127*820c1a8dSHiroo HAYASHI   /* For values < 0: 1 if the currency symbol precedes the number, 0 if it
128*820c1a8dSHiroo HAYASHI      comes after the number.  */
129*820c1a8dSHiroo HAYASHI   char n_cs_precedes;
130*820c1a8dSHiroo HAYASHI   /* For values < 0: Position of the sign.  */
131*820c1a8dSHiroo HAYASHI   char n_sign_posn;
132*820c1a8dSHiroo HAYASHI   /* For values < 0: Placement of spaces between currency symbol, sign, and
133*820c1a8dSHiroo HAYASHI      number.  */
134*820c1a8dSHiroo HAYASHI   char n_sep_by_space;
135*820c1a8dSHiroo HAYASHI 
136*820c1a8dSHiroo HAYASHI   /* For formatting international currency.  */
137*820c1a8dSHiroo HAYASHI   /* Currency symbol (3 characters) followed by separator (1 character).  */
138*820c1a8dSHiroo HAYASHI   char *int_curr_symbol;
139*820c1a8dSHiroo HAYASHI   /* Number of digits after the decimal point.  */
140*820c1a8dSHiroo HAYASHI   char int_frac_digits;
141*820c1a8dSHiroo HAYASHI   /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it
142*820c1a8dSHiroo HAYASHI      comes after the number.  */
143*820c1a8dSHiroo HAYASHI   char int_p_cs_precedes;
144*820c1a8dSHiroo HAYASHI   /* For values >= 0: Position of the sign.  */
145*820c1a8dSHiroo HAYASHI   char int_p_sign_posn;
146*820c1a8dSHiroo HAYASHI   /* For values >= 0: Placement of spaces between currency symbol, sign, and
147*820c1a8dSHiroo HAYASHI      number.  */
148*820c1a8dSHiroo HAYASHI   char int_p_sep_by_space;
149*820c1a8dSHiroo HAYASHI   /* For values < 0: 1 if the currency symbol precedes the number, 0 if it
150*820c1a8dSHiroo HAYASHI      comes after the number.  */
151*820c1a8dSHiroo HAYASHI   char int_n_cs_precedes;
152*820c1a8dSHiroo HAYASHI   /* For values < 0: Position of the sign.  */
153*820c1a8dSHiroo HAYASHI   char int_n_sign_posn;
154*820c1a8dSHiroo HAYASHI   /* For values < 0: Placement of spaces between currency symbol, sign, and
155*820c1a8dSHiroo HAYASHI      number.  */
156*820c1a8dSHiroo HAYASHI   char int_n_sep_by_space;
157*820c1a8dSHiroo HAYASHI };
158*820c1a8dSHiroo HAYASHI #endif
159*820c1a8dSHiroo HAYASHI 
160*820c1a8dSHiroo HAYASHI #if @GNULIB_LOCALECONV@
161*820c1a8dSHiroo HAYASHI # if @REPLACE_LOCALECONV@
162*820c1a8dSHiroo HAYASHI #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
163*820c1a8dSHiroo HAYASHI #   undef localeconv
164*820c1a8dSHiroo HAYASHI #   define localeconv rpl_localeconv
165*820c1a8dSHiroo HAYASHI #  endif
166*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (localeconv, struct lconv *, (void));
167*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (localeconv, struct lconv *, (void));
168*820c1a8dSHiroo HAYASHI # else
169*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (localeconv, struct lconv *, (void));
170*820c1a8dSHiroo HAYASHI # endif
171*820c1a8dSHiroo HAYASHI # if __GLIBC__ >= 2
172*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (localeconv);
173*820c1a8dSHiroo HAYASHI # endif
174*820c1a8dSHiroo HAYASHI #elif @REPLACE_STRUCT_LCONV@
175*820c1a8dSHiroo HAYASHI # undef localeconv
176*820c1a8dSHiroo HAYASHI # define localeconv localeconv_used_without_requesting_gnulib_module_localeconv
177*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK
178*820c1a8dSHiroo HAYASHI # undef localeconv
179*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_LOCALECONV
180*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (localeconv,
181*820c1a8dSHiroo HAYASHI                  "localeconv returns too few information on some platforms - "
182*820c1a8dSHiroo HAYASHI                  "use gnulib module localeconv for portability");
183*820c1a8dSHiroo HAYASHI # endif
184*820c1a8dSHiroo HAYASHI #endif
185*820c1a8dSHiroo HAYASHI 
186*820c1a8dSHiroo HAYASHI #if @GNULIB_SETLOCALE@
187*820c1a8dSHiroo HAYASHI # if @REPLACE_SETLOCALE@
188*820c1a8dSHiroo HAYASHI #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
189*820c1a8dSHiroo HAYASHI #   undef setlocale
190*820c1a8dSHiroo HAYASHI #   define setlocale rpl_setlocale
191*820c1a8dSHiroo HAYASHI #   define GNULIB_defined_setlocale 1
192*820c1a8dSHiroo HAYASHI #  endif
193*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (setlocale, char *, (int category, const char *locale));
194*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (setlocale, char *, (int category, const char *locale));
195*820c1a8dSHiroo HAYASHI # else
196*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (setlocale, char *, (int category, const char *locale));
197*820c1a8dSHiroo HAYASHI # endif
198*820c1a8dSHiroo HAYASHI # if __GLIBC__ >= 2
199*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (setlocale);
200*820c1a8dSHiroo HAYASHI # endif
201*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK
202*820c1a8dSHiroo HAYASHI # undef setlocale
203*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_SETLOCALE
204*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (setlocale, "setlocale works differently on native Windows - "
205*820c1a8dSHiroo HAYASHI                  "use gnulib module setlocale for portability");
206*820c1a8dSHiroo HAYASHI # endif
207*820c1a8dSHiroo HAYASHI #endif
208*820c1a8dSHiroo HAYASHI 
209*820c1a8dSHiroo HAYASHI #if @GNULIB_SETLOCALE_NULL@
210*820c1a8dSHiroo HAYASHI /* Included here for convenience.  */
211*820c1a8dSHiroo HAYASHI # include "setlocale_null.h"
212*820c1a8dSHiroo HAYASHI #endif
213*820c1a8dSHiroo HAYASHI 
214*820c1a8dSHiroo HAYASHI #if /*@GNULIB_NEWLOCALE@ ||*/ (@GNULIB_LOCALENAME@ && @LOCALENAME_ENHANCE_LOCALE_FUNCS@ && @HAVE_NEWLOCALE@)
215*820c1a8dSHiroo HAYASHI # if @REPLACE_NEWLOCALE@
216*820c1a8dSHiroo HAYASHI #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
217*820c1a8dSHiroo HAYASHI #   undef newlocale
218*820c1a8dSHiroo HAYASHI #   define newlocale rpl_newlocale
219*820c1a8dSHiroo HAYASHI #   define GNULIB_defined_newlocale 1
220*820c1a8dSHiroo HAYASHI #  endif
221*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (newlocale, locale_t,
222*820c1a8dSHiroo HAYASHI                   (int category_mask, const char *name, locale_t base)
223*820c1a8dSHiroo HAYASHI                   _GL_ARG_NONNULL ((2)));
224*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (newlocale, locale_t,
225*820c1a8dSHiroo HAYASHI                   (int category_mask, const char *name, locale_t base));
226*820c1a8dSHiroo HAYASHI # else
227*820c1a8dSHiroo HAYASHI #  if @HAVE_NEWLOCALE@
228*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (newlocale, locale_t,
229*820c1a8dSHiroo HAYASHI                   (int category_mask, const char *name, locale_t base));
230*820c1a8dSHiroo HAYASHI #  endif
231*820c1a8dSHiroo HAYASHI # endif
232*820c1a8dSHiroo HAYASHI # if @HAVE_NEWLOCALE@
233*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (newlocale);
234*820c1a8dSHiroo HAYASHI # endif
235*820c1a8dSHiroo HAYASHI # if @HAVE_NEWLOCALE@ || @REPLACE_NEWLOCALE@
236*820c1a8dSHiroo HAYASHI #  ifndef HAVE_WORKING_NEWLOCALE
237*820c1a8dSHiroo HAYASHI #   define HAVE_WORKING_NEWLOCALE 1
238*820c1a8dSHiroo HAYASHI #  endif
239*820c1a8dSHiroo HAYASHI # endif
240*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK
241*820c1a8dSHiroo HAYASHI # undef newlocale
242*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_NEWLOCALE
243*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (newlocale, "newlocale is not portable");
244*820c1a8dSHiroo HAYASHI # endif
245*820c1a8dSHiroo HAYASHI #endif
246*820c1a8dSHiroo HAYASHI 
247*820c1a8dSHiroo HAYASHI #if @GNULIB_DUPLOCALE@ || (@GNULIB_LOCALENAME@ && @LOCALENAME_ENHANCE_LOCALE_FUNCS@ && @HAVE_DUPLOCALE@)
248*820c1a8dSHiroo HAYASHI # if @REPLACE_DUPLOCALE@
249*820c1a8dSHiroo HAYASHI #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
250*820c1a8dSHiroo HAYASHI #   undef duplocale
251*820c1a8dSHiroo HAYASHI #   define duplocale rpl_duplocale
252*820c1a8dSHiroo HAYASHI #   define GNULIB_defined_duplocale 1
253*820c1a8dSHiroo HAYASHI #  endif
254*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (duplocale, locale_t, (locale_t locale) _GL_ARG_NONNULL ((1)));
255*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (duplocale, locale_t, (locale_t locale));
256*820c1a8dSHiroo HAYASHI # else
257*820c1a8dSHiroo HAYASHI #  if @HAVE_DUPLOCALE@
258*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (duplocale, locale_t, (locale_t locale));
259*820c1a8dSHiroo HAYASHI #  endif
260*820c1a8dSHiroo HAYASHI # endif
261*820c1a8dSHiroo HAYASHI # if @HAVE_DUPLOCALE@
262*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (duplocale);
263*820c1a8dSHiroo HAYASHI # endif
264*820c1a8dSHiroo HAYASHI # if @HAVE_DUPLOCALE@ || @REPLACE_DUPLOCALE@
265*820c1a8dSHiroo HAYASHI #  ifndef HAVE_WORKING_DUPLOCALE
266*820c1a8dSHiroo HAYASHI #   define HAVE_WORKING_DUPLOCALE 1
267*820c1a8dSHiroo HAYASHI #  endif
268*820c1a8dSHiroo HAYASHI # endif
269*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK
270*820c1a8dSHiroo HAYASHI # undef duplocale
271*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_DUPLOCALE
272*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (duplocale, "duplocale is buggy on some glibc systems - "
273*820c1a8dSHiroo HAYASHI                  "use gnulib module duplocale for portability");
274*820c1a8dSHiroo HAYASHI # endif
275*820c1a8dSHiroo HAYASHI #endif
276*820c1a8dSHiroo HAYASHI 
277*820c1a8dSHiroo HAYASHI #if /*@GNULIB_FREELOCALE@ ||*/ (@GNULIB_LOCALENAME@ && @LOCALENAME_ENHANCE_LOCALE_FUNCS@ && @HAVE_FREELOCALE@)
278*820c1a8dSHiroo HAYASHI # if @REPLACE_FREELOCALE@
279*820c1a8dSHiroo HAYASHI #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
280*820c1a8dSHiroo HAYASHI #   undef freelocale
281*820c1a8dSHiroo HAYASHI #   define freelocale rpl_freelocale
282*820c1a8dSHiroo HAYASHI #   define GNULIB_defined_freelocale 1
283*820c1a8dSHiroo HAYASHI #  endif
284*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (freelocale, void, (locale_t locale) _GL_ARG_NONNULL ((1)));
285*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (freelocale, void, (locale_t locale));
286*820c1a8dSHiroo HAYASHI # else
287*820c1a8dSHiroo HAYASHI #  if @HAVE_FREELOCALE@
288*820c1a8dSHiroo HAYASHI /* Need to cast, because on FreeBSD and Mac OS X 10.13, the return type is
289*820c1a8dSHiroo HAYASHI                                    int.  */
290*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS_CAST (freelocale, void, (locale_t locale));
291*820c1a8dSHiroo HAYASHI #  endif
292*820c1a8dSHiroo HAYASHI # endif
293*820c1a8dSHiroo HAYASHI # if @HAVE_FREELOCALE@
294*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (freelocale);
295*820c1a8dSHiroo HAYASHI # endif
296*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK
297*820c1a8dSHiroo HAYASHI # undef freelocale
298*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_FREELOCALE
299*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (freelocale, "freelocale is not portable");
300*820c1a8dSHiroo HAYASHI # endif
301*820c1a8dSHiroo HAYASHI #endif
302*820c1a8dSHiroo HAYASHI 
303*820c1a8dSHiroo HAYASHI #endif /* _@GUARD_PREFIX@_LOCALE_H */
304*820c1a8dSHiroo HAYASHI #endif /* _@GUARD_PREFIX@_LOCALE_H */
305*820c1a8dSHiroo HAYASHI #endif /* !(__need_locale_t || _GL_ALREADY_INCLUDING_LOCALE_H) */
306