root/maint/gnulib/lib/locale.in.h

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

/* [previous][next][first][last][top][bottom][index][help] */