1 /* A POSIX <locale.h>. 2 Copyright (C) 2007-2014 Free Software Foundation, Inc. 3 4 This program is free software: you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation; either version 3 of the License, or 7 (at your option) any later version. 8 9 This program 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 General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 16 17 #if __GNUC__ >= 3 18 @PRAGMA_SYSTEM_HEADER@ 19 #endif 20 @PRAGMA_COLUMNS@ 21 22 #ifdef _GL_ALREADY_INCLUDING_LOCALE_H 23 24 /* Special invocation conventions to handle Solaris header files 25 (through Solaris 10) when combined with gettext's libintl.h. */ 26 27 #@INCLUDE_NEXT@ @NEXT_LOCALE_H@ 28 29 #else 30 /* Normal invocation convention. */ 31 32 #ifndef _@GUARD_PREFIX@_LOCALE_H 33 34 #define _GL_ALREADY_INCLUDING_LOCALE_H 35 36 /* The include_next requires a split double-inclusion guard. */ 37 #@INCLUDE_NEXT@ @NEXT_LOCALE_H@ 38 39 #undef _GL_ALREADY_INCLUDING_LOCALE_H 40 41 #ifndef _@GUARD_PREFIX@_LOCALE_H 42 #define _@GUARD_PREFIX@_LOCALE_H 43 44 /* NetBSD 5.0 mis-defines NULL. */ 45 #include <stddef.h> 46 47 /* Mac OS X 10.5 defines the locale_t type in <xlocale.h>. */ 48 #if @HAVE_XLOCALE_H@ 49 # include <xlocale.h> 50 #endif 51 52 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ 53 54 /* The definition of _GL_ARG_NONNULL is copied here. */ 55 56 /* The definition of _GL_WARN_ON_USE is copied here. */ 57 58 /* The LC_MESSAGES locale category is specified in POSIX, but not in ISO C. 59 On systems that don't define it, use the same value as GNU libintl. */ 60 #if !defined LC_MESSAGES 61 # define LC_MESSAGES 1729 62 #endif 63 64 /* Bionic libc's 'struct lconv' is just a dummy. */ 65 #if @REPLACE_STRUCT_LCONV@ 66 # define lconv rpl_lconv 67 struct lconv 68 { 69 /* All 'char *' are actually 'const char *'. */ 70 71 /* Members that depend on the LC_NUMERIC category of the locale. See 72 <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_04> */ 73 74 /* Symbol used as decimal point. */ 75 char *decimal_point; 76 /* Symbol used to separate groups of digits to the left of the decimal 77 point. */ 78 char *thousands_sep; 79 /* Definition of the size of groups of digits to the left of the decimal 80 point. */ 81 char *grouping; 82 83 /* Members that depend on the LC_MONETARY category of the locale. See 84 <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_03> */ 85 86 /* Symbol used as decimal point. */ 87 char *mon_decimal_point; 88 /* Symbol used to separate groups of digits to the left of the decimal 89 point. */ 90 char *mon_thousands_sep; 91 /* Definition of the size of groups of digits to the left of the decimal 92 point. */ 93 char *mon_grouping; 94 /* Sign used to indicate a value >= 0. */ 95 char *positive_sign; 96 /* Sign used to indicate a value < 0. */ 97 char *negative_sign; 98 99 /* For formatting local currency. */ 100 /* Currency symbol (3 characters) followed by separator (1 character). */ 101 char *currency_symbol; 102 /* Number of digits after the decimal point. */ 103 char frac_digits; 104 /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it 105 comes after the number. */ 106 char p_cs_precedes; 107 /* For values >= 0: Position of the sign. */ 108 char p_sign_posn; 109 /* For values >= 0: Placement of spaces between currency symbol, sign, and 110 number. */ 111 char p_sep_by_space; 112 /* For values < 0: 1 if the currency symbol precedes the number, 0 if it 113 comes after the number. */ 114 char n_cs_precedes; 115 /* For values < 0: Position of the sign. */ 116 char n_sign_posn; 117 /* For values < 0: Placement of spaces between currency symbol, sign, and 118 number. */ 119 char n_sep_by_space; 120 121 /* For formatting international currency. */ 122 /* Currency symbol (3 characters) followed by separator (1 character). */ 123 char *int_curr_symbol; 124 /* Number of digits after the decimal point. */ 125 char int_frac_digits; 126 /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it 127 comes after the number. */ 128 char int_p_cs_precedes; 129 /* For values >= 0: Position of the sign. */ 130 char int_p_sign_posn; 131 /* For values >= 0: Placement of spaces between currency symbol, sign, and 132 number. */ 133 char int_p_sep_by_space; 134 /* For values < 0: 1 if the currency symbol precedes the number, 0 if it 135 comes after the number. */ 136 char int_n_cs_precedes; 137 /* For values < 0: Position of the sign. */ 138 char int_n_sign_posn; 139 /* For values < 0: Placement of spaces between currency symbol, sign, and 140 number. */ 141 char int_n_sep_by_space; 142 }; 143 #endif 144 145 #if @GNULIB_LOCALECONV@ 146 # if @REPLACE_LOCALECONV@ 147 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 148 # undef localeconv 149 # define localeconv rpl_localeconv 150 # endif 151 _GL_FUNCDECL_RPL (localeconv, struct lconv *, (void)); 152 _GL_CXXALIAS_RPL (localeconv, struct lconv *, (void)); 153 # else 154 _GL_CXXALIAS_SYS (localeconv, struct lconv *, (void)); 155 # endif 156 _GL_CXXALIASWARN (localeconv); 157 #elif @REPLACE_STRUCT_LCONV@ 158 # undef localeconv 159 # define localeconv localeconv_used_without_requesting_gnulib_module_localeconv 160 #elif defined GNULIB_POSIXCHECK 161 # undef localeconv 162 # if HAVE_RAW_DECL_LOCALECONV 163 _GL_WARN_ON_USE (localeconv, 164 "localeconv returns too few information on some platforms - " 165 "use gnulib module localeconv for portability"); 166 # endif 167 #endif 168 169 #if @GNULIB_SETLOCALE@ 170 # if @REPLACE_SETLOCALE@ 171 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 172 # undef setlocale 173 # define setlocale rpl_setlocale 174 # define GNULIB_defined_setlocale 1 175 # endif 176 _GL_FUNCDECL_RPL (setlocale, char *, (int category, const char *locale)); 177 _GL_CXXALIAS_RPL (setlocale, char *, (int category, const char *locale)); 178 # else 179 _GL_CXXALIAS_SYS (setlocale, char *, (int category, const char *locale)); 180 # endif 181 _GL_CXXALIASWARN (setlocale); 182 #elif defined GNULIB_POSIXCHECK 183 # undef setlocale 184 # if HAVE_RAW_DECL_SETLOCALE 185 _GL_WARN_ON_USE (setlocale, "setlocale works differently on native Windows - " 186 "use gnulib module setlocale for portability"); 187 # endif 188 #endif 189 190 #if @GNULIB_DUPLOCALE@ 191 # if @REPLACE_DUPLOCALE@ 192 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 193 # undef duplocale 194 # define duplocale rpl_duplocale 195 # endif 196 _GL_FUNCDECL_RPL (duplocale, locale_t, (locale_t locale) _GL_ARG_NONNULL ((1))); 197 _GL_CXXALIAS_RPL (duplocale, locale_t, (locale_t locale)); 198 # else 199 # if @HAVE_DUPLOCALE@ 200 _GL_CXXALIAS_SYS (duplocale, locale_t, (locale_t locale)); 201 # endif 202 # endif 203 # if @HAVE_DUPLOCALE@ 204 _GL_CXXALIASWARN (duplocale); 205 # endif 206 #elif defined GNULIB_POSIXCHECK 207 # undef duplocale 208 # if HAVE_RAW_DECL_DUPLOCALE 209 _GL_WARN_ON_USE (duplocale, "duplocale is buggy on some glibc systems - " 210 "use gnulib module duplocale for portability"); 211 # endif 212 #endif 213 214 #endif /* _@GUARD_PREFIX@_LOCALE_H */ 215 #endif /* ! _GL_ALREADY_INCLUDING_LOCALE_H */ 216 #endif /* _@GUARD_PREFIX@_LOCALE_H */ 217