1/* Access to locale-dependent parameters. 2 Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, write to the Free 17 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 18 02111-1307 USA. */ 19 20#ifndef _LANGINFO_H 21#define _LANGINFO_H 1 22 23/* Get the type definition. */ 24#include <nl_types.h> 25 26#include <bits/locale.h> /* Define the __LC_* category names. */ 27 28 29__BEGIN_DECLS 30 31/* Construct an `nl_item' value for `nl_langinfo' from a locale category 32 (LC_*) and an item index within the category. Some code may depend on 33 the item values within a category increasing monotonically with the 34 indices. */ 35#define _NL_ITEM(category, index) (((category) << 16) | (index)) 36 37/* Extract the category and item index from a constructed `nl_item' value. */ 38#define _NL_ITEM_CATEGORY(item) ((int) (item) >> 16) 39#define _NL_ITEM_INDEX(item) ((int) (item) & 0xffff) 40 41 42/* Enumeration of locale items that can be queried with `nl_langinfo'. */ 43enum 44{ 45 /* LC_TIME category: date and time formatting. */ 46 47 /* Abbreviated days of the week. */ 48 ABDAY_1 = _NL_ITEM (__LC_TIME, 0), /* Sun */ 49#define ABDAY_1 ABDAY_1 50 ABDAY_2, 51#define ABDAY_2 ABDAY_2 52 ABDAY_3, 53#define ABDAY_3 ABDAY_3 54 ABDAY_4, 55#define ABDAY_4 ABDAY_4 56 ABDAY_5, 57#define ABDAY_5 ABDAY_5 58 ABDAY_6, 59#define ABDAY_6 ABDAY_6 60 ABDAY_7, 61#define ABDAY_7 ABDAY_7 62 63 /* Long-named days of the week. */ 64 DAY_1, /* Sunday */ 65#define DAY_1 DAY_1 66 DAY_2, /* Monday */ 67#define DAY_2 DAY_2 68 DAY_3, /* Tuesday */ 69#define DAY_3 DAY_3 70 DAY_4, /* Wednesday */ 71#define DAY_4 DAY_4 72 DAY_5, /* Thursday */ 73#define DAY_5 DAY_5 74 DAY_6, /* Friday */ 75#define DAY_6 DAY_6 76 DAY_7, /* Saturday */ 77#define DAY_7 DAY_7 78 79 /* Abbreviated month names. */ 80 ABMON_1, /* Jan */ 81#define ABMON_1 ABMON_1 82 ABMON_2, 83#define ABMON_2 ABMON_2 84 ABMON_3, 85#define ABMON_3 ABMON_3 86 ABMON_4, 87#define ABMON_4 ABMON_4 88 ABMON_5, 89#define ABMON_5 ABMON_5 90 ABMON_6, 91#define ABMON_6 ABMON_6 92 ABMON_7, 93#define ABMON_7 ABMON_7 94 ABMON_8, 95#define ABMON_8 ABMON_8 96 ABMON_9, 97#define ABMON_9 ABMON_9 98 ABMON_10, 99#define ABMON_10 ABMON_10 100 ABMON_11, 101#define ABMON_11 ABMON_11 102 ABMON_12, 103#define ABMON_12 ABMON_12 104 105 /* Long month names. */ 106 MON_1, /* January */ 107#define MON_1 MON_1 108 MON_2, 109#define MON_2 MON_2 110 MON_3, 111#define MON_3 MON_3 112 MON_4, 113#define MON_4 MON_4 114 MON_5, 115#define MON_5 MON_5 116 MON_6, 117#define MON_6 MON_6 118 MON_7, 119#define MON_7 MON_7 120 MON_8, 121#define MON_8 MON_8 122 MON_9, 123#define MON_9 MON_9 124 MON_10, 125#define MON_10 MON_10 126 MON_11, 127#define MON_11 MON_11 128 MON_12, 129#define MON_12 MON_12 130 131 AM_STR, /* Ante meridian string. */ 132#define AM_STR AM_STR 133 PM_STR, /* Post meridian string. */ 134#define PM_STR PM_STR 135 136 D_T_FMT, /* Date and time format for strftime. */ 137#define D_T_FMT D_T_FMT 138 D_FMT, /* Date format for strftime. */ 139#define D_FMT D_FMT 140 T_FMT, /* Time format for strftime. */ 141#define T_FMT T_FMT 142 T_FMT_AMPM, /* 12-hour time format for strftime. */ 143#define T_FMT_AMPM T_FMT_AMPM 144 145 ERA, /* Alternate era. */ 146#define ERA ERA 147 __ERA_YEAR, /* Year in alternate era format. */ 148#ifdef __USE_GNU 149# define ERA_YEAR __ERA_YEAR 150#endif 151 ERA_D_FMT, /* Date in alternate era format. */ 152#define ERA_D_FMT ERA_D_FMT 153 ALT_DIGITS, /* Alternate symbols for digits. */ 154#define ALT_DIGITS ALT_DIGITS 155 ERA_D_T_FMT, /* Date and time in alternate era format. */ 156#define ERA_D_T_FMT ERA_D_T_FMT 157 ERA_T_FMT, /* Time in alternate era format. */ 158#define ERA_T_FMT ERA_T_FMT 159 160 _NL_TIME_ERA_NUM_ENTRIES, /* Number entries in the era arrays. */ 161 _NL_TIME_ERA_ENTRIES, /* Structure with era entries in usable form.*/ 162 163 _NL_WABDAY_1, /* Sun */ 164 _NL_WABDAY_2, 165 _NL_WABDAY_3, 166 _NL_WABDAY_4, 167 _NL_WABDAY_5, 168 _NL_WABDAY_6, 169 _NL_WABDAY_7, 170 171 /* Long-named days of the week. */ 172 _NL_WDAY_1, /* Sunday */ 173 _NL_WDAY_2, /* Monday */ 174 _NL_WDAY_3, /* Tuesday */ 175 _NL_WDAY_4, /* Wednesday */ 176 _NL_WDAY_5, /* Thursday */ 177 _NL_WDAY_6, /* Friday */ 178 _NL_WDAY_7, /* Saturday */ 179 180 /* Abbreviated month names. */ 181 _NL_WABMON_1, /* Jan */ 182 _NL_WABMON_2, 183 _NL_WABMON_3, 184 _NL_WABMON_4, 185 _NL_WABMON_5, 186 _NL_WABMON_6, 187 _NL_WABMON_7, 188 _NL_WABMON_8, 189 _NL_WABMON_9, 190 _NL_WABMON_10, 191 _NL_WABMON_11, 192 _NL_WABMON_12, 193 194 /* Long month names. */ 195 _NL_WMON_1, /* January */ 196 _NL_WMON_2, 197 _NL_WMON_3, 198 _NL_WMON_4, 199 _NL_WMON_5, 200 _NL_WMON_6, 201 _NL_WMON_7, 202 _NL_WMON_8, 203 _NL_WMON_9, 204 _NL_WMON_10, 205 _NL_WMON_11, 206 _NL_WMON_12, 207 208 _NL_WAM_STR, /* Ante meridian string. */ 209 _NL_WPM_STR, /* Post meridian string. */ 210 211 _NL_WD_T_FMT, /* Date and time format for strftime. */ 212 _NL_WD_FMT, /* Date format for strftime. */ 213 _NL_WT_FMT, /* Time format for strftime. */ 214 _NL_WT_FMT_AMPM, /* 12-hour time format for strftime. */ 215 216 _NL_WERA_YEAR, /* Year in alternate era format. */ 217 _NL_WERA_D_FMT, /* Date in alternate era format. */ 218 _NL_WALT_DIGITS, /* Alternate symbols for digits. */ 219 _NL_WERA_D_T_FMT, /* Date and time in alternate era format. */ 220 _NL_WERA_T_FMT, /* Time in alternate era format. */ 221 222 _NL_TIME_WEEK_NDAYS, 223 _NL_TIME_WEEK_1STDAY, 224 _NL_TIME_WEEK_1STWEEK, 225 _NL_TIME_FIRST_WEEKDAY, 226 _NL_TIME_FIRST_WORKDAY, 227 _NL_TIME_CAL_DIRECTION, 228 _NL_TIME_TIMEZONE, 229 230 _DATE_FMT, /* strftime format for date. */ 231#define _DATE_FMT _DATE_FMT 232 _NL_W_DATE_FMT, 233 234 _NL_TIME_CODESET, 235 236 _NL_NUM_LC_TIME, /* Number of indices in LC_TIME category. */ 237 238 /* LC_COLLATE category: text sorting. 239 This information is accessed by the strcoll and strxfrm functions. 240 These `nl_langinfo' names are used only internally. */ 241 _NL_COLLATE_NRULES = _NL_ITEM (__LC_COLLATE, 0), 242 _NL_COLLATE_RULESETS, 243 _NL_COLLATE_TABLEMB, 244 _NL_COLLATE_WEIGHTMB, 245 _NL_COLLATE_EXTRAMB, 246 _NL_COLLATE_INDIRECTMB, 247 _NL_COLLATE_GAP1, 248 _NL_COLLATE_GAP2, 249 _NL_COLLATE_GAP3, 250 _NL_COLLATE_TABLEWC, 251 _NL_COLLATE_WEIGHTWC, 252 _NL_COLLATE_EXTRAWC, 253 _NL_COLLATE_INDIRECTWC, 254 _NL_COLLATE_SYMB_HASH_SIZEMB, 255 _NL_COLLATE_SYMB_TABLEMB, 256 _NL_COLLATE_SYMB_EXTRAMB, 257 _NL_COLLATE_COLLSEQMB, 258 _NL_COLLATE_COLLSEQWC, 259 _NL_COLLATE_CODESET, 260 _NL_NUM_LC_COLLATE, 261 262 /* LC_CTYPE category: character classification. 263 This information is accessed by the functions in <ctype.h>. 264 These `nl_langinfo' names are used only internally. */ 265 _NL_CTYPE_CLASS = _NL_ITEM (__LC_CTYPE, 0), 266 _NL_CTYPE_TOUPPER, 267 _NL_CTYPE_GAP1, 268 _NL_CTYPE_TOLOWER, 269 _NL_CTYPE_GAP2, 270 _NL_CTYPE_CLASS32, 271 _NL_CTYPE_GAP3, 272 _NL_CTYPE_GAP4, 273 _NL_CTYPE_GAP5, 274 _NL_CTYPE_GAP6, 275 _NL_CTYPE_CLASS_NAMES, 276 _NL_CTYPE_MAP_NAMES, 277 _NL_CTYPE_WIDTH, 278 _NL_CTYPE_MB_CUR_MAX, 279 _NL_CTYPE_CODESET_NAME, 280 CODESET = _NL_CTYPE_CODESET_NAME, 281#define CODESET CODESET 282 _NL_CTYPE_TOUPPER32, 283 _NL_CTYPE_TOLOWER32, 284 _NL_CTYPE_CLASS_OFFSET, 285 _NL_CTYPE_MAP_OFFSET, 286 _NL_CTYPE_INDIGITS_MB_LEN, 287 _NL_CTYPE_INDIGITS0_MB, 288 _NL_CTYPE_INDIGITS1_MB, 289 _NL_CTYPE_INDIGITS2_MB, 290 _NL_CTYPE_INDIGITS3_MB, 291 _NL_CTYPE_INDIGITS4_MB, 292 _NL_CTYPE_INDIGITS5_MB, 293 _NL_CTYPE_INDIGITS6_MB, 294 _NL_CTYPE_INDIGITS7_MB, 295 _NL_CTYPE_INDIGITS8_MB, 296 _NL_CTYPE_INDIGITS9_MB, 297 _NL_CTYPE_INDIGITS_WC_LEN, 298 _NL_CTYPE_INDIGITS0_WC, 299 _NL_CTYPE_INDIGITS1_WC, 300 _NL_CTYPE_INDIGITS2_WC, 301 _NL_CTYPE_INDIGITS3_WC, 302 _NL_CTYPE_INDIGITS4_WC, 303 _NL_CTYPE_INDIGITS5_WC, 304 _NL_CTYPE_INDIGITS6_WC, 305 _NL_CTYPE_INDIGITS7_WC, 306 _NL_CTYPE_INDIGITS8_WC, 307 _NL_CTYPE_INDIGITS9_WC, 308 _NL_CTYPE_OUTDIGIT0_MB, 309 _NL_CTYPE_OUTDIGIT1_MB, 310 _NL_CTYPE_OUTDIGIT2_MB, 311 _NL_CTYPE_OUTDIGIT3_MB, 312 _NL_CTYPE_OUTDIGIT4_MB, 313 _NL_CTYPE_OUTDIGIT5_MB, 314 _NL_CTYPE_OUTDIGIT6_MB, 315 _NL_CTYPE_OUTDIGIT7_MB, 316 _NL_CTYPE_OUTDIGIT8_MB, 317 _NL_CTYPE_OUTDIGIT9_MB, 318 _NL_CTYPE_OUTDIGIT0_WC, 319 _NL_CTYPE_OUTDIGIT1_WC, 320 _NL_CTYPE_OUTDIGIT2_WC, 321 _NL_CTYPE_OUTDIGIT3_WC, 322 _NL_CTYPE_OUTDIGIT4_WC, 323 _NL_CTYPE_OUTDIGIT5_WC, 324 _NL_CTYPE_OUTDIGIT6_WC, 325 _NL_CTYPE_OUTDIGIT7_WC, 326 _NL_CTYPE_OUTDIGIT8_WC, 327 _NL_CTYPE_OUTDIGIT9_WC, 328 _NL_CTYPE_TRANSLIT_TAB_SIZE, 329 _NL_CTYPE_TRANSLIT_FROM_IDX, 330 _NL_CTYPE_TRANSLIT_FROM_TBL, 331 _NL_CTYPE_TRANSLIT_TO_IDX, 332 _NL_CTYPE_TRANSLIT_TO_TBL, 333 _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN, 334 _NL_CTYPE_TRANSLIT_DEFAULT_MISSING, 335 _NL_CTYPE_TRANSLIT_IGNORE_LEN, 336 _NL_CTYPE_TRANSLIT_IGNORE, 337 _NL_CTYPE_EXTRA_MAP_1, 338 _NL_CTYPE_EXTRA_MAP_2, 339 _NL_CTYPE_EXTRA_MAP_3, 340 _NL_CTYPE_EXTRA_MAP_4, 341 _NL_CTYPE_EXTRA_MAP_5, 342 _NL_CTYPE_EXTRA_MAP_6, 343 _NL_CTYPE_EXTRA_MAP_7, 344 _NL_CTYPE_EXTRA_MAP_8, 345 _NL_CTYPE_EXTRA_MAP_9, 346 _NL_CTYPE_EXTRA_MAP_10, 347 _NL_CTYPE_EXTRA_MAP_11, 348 _NL_CTYPE_EXTRA_MAP_12, 349 _NL_CTYPE_EXTRA_MAP_13, 350 _NL_CTYPE_EXTRA_MAP_14, 351 _NL_NUM_LC_CTYPE, 352 353 /* LC_MONETARY category: formatting of monetary quantities. 354 These items each correspond to a member of `struct lconv', 355 defined in <locale.h>. */ 356 __INT_CURR_SYMBOL = _NL_ITEM (__LC_MONETARY, 0), 357#ifdef __USE_GNU 358# define INT_CURR_SYMBOL __INT_CURR_SYMBOL 359#endif 360 __CURRENCY_SYMBOL, 361#ifdef __USE_GNU 362# define CURRENCY_SYMBOL __CURRENCY_SYMBOL 363#endif 364 __MON_DECIMAL_POINT, 365#ifdef __USE_GNU 366# define MON_DECIMAL_POINT __MON_DECIMAL_POINT 367#endif 368 __MON_THOUSANDS_SEP, 369#ifdef __USE_GNU 370# define MON_THOUSANDS_SEP __MON_THOUSANDS_SEP 371#endif 372 __MON_GROUPING, 373#ifdef __USE_GNU 374# define MON_GROUPING __MON_GROUPING 375#endif 376 __POSITIVE_SIGN, 377#ifdef __USE_GNU 378# define POSITIVE_SIGN __POSITIVE_SIGN 379#endif 380 __NEGATIVE_SIGN, 381#ifdef __USE_GNU 382# define NEGATIVE_SIGN __NEGATIVE_SIGN 383#endif 384 __INT_FRAC_DIGITS, 385#ifdef __USE_GNU 386# define INT_FRAC_DIGITS __INT_FRAC_DIGITS 387#endif 388 __FRAC_DIGITS, 389#ifdef __USE_GNU 390# define FRAC_DIGITS __FRAC_DIGITS 391#endif 392 __P_CS_PRECEDES, 393#ifdef __USE_GNU 394# define P_CS_PRECEDES __P_CS_PRECEDES 395#endif 396 __P_SEP_BY_SPACE, 397#ifdef __USE_GNU 398# define P_SEP_BY_SPACE __P_SEP_BY_SPACE 399#endif 400 __N_CS_PRECEDES, 401#ifdef __USE_GNU 402# define N_CS_PRECEDES __N_CS_PRECEDES 403#endif 404 __N_SEP_BY_SPACE, 405#ifdef __USE_GNU 406# define N_SEP_BY_SPACE __N_SEP_BY_SPACE 407#endif 408 __P_SIGN_POSN, 409#ifdef __USE_GNU 410# define P_SIGN_POSN __P_SIGN_POSN 411#endif 412 __N_SIGN_POSN, 413#ifdef __USE_GNU 414# define N_SIGN_POSN __N_SIGN_POSN 415#endif 416 _NL_MONETARY_CRNCYSTR, 417#define CRNCYSTR _NL_MONETARY_CRNCYSTR 418 __INT_P_CS_PRECEDES, 419#ifdef __USE_GNU 420# define INT_P_CS_PRECEDES __INT_P_CS_PRECEDES 421#endif 422 __INT_P_SEP_BY_SPACE, 423#ifdef __USE_GNU 424# define INT_P_SEP_BY_SPACE __INT_P_SEP_BY_SPACE 425#endif 426 __INT_N_CS_PRECEDES, 427#ifdef __USE_GNU 428# define INT_N_CS_PRECEDES __INT_N_CS_PRECEDES 429#endif 430 __INT_N_SEP_BY_SPACE, 431#ifdef __USE_GNU 432# define INT_N_SEP_BY_SPACE __INT_N_SEP_BY_SPACE 433#endif 434 __INT_P_SIGN_POSN, 435#ifdef __USE_GNU 436# define INT_P_SIGN_POSN __INT_P_SIGN_POSN 437#endif 438 __INT_N_SIGN_POSN, 439#ifdef __USE_GNU 440# define INT_N_SIGN_POSN __INT_N_SIGN_POSN 441#endif 442 _NL_MONETARY_DUO_INT_CURR_SYMBOL, 443 _NL_MONETARY_DUO_CURRENCY_SYMBOL, 444 _NL_MONETARY_DUO_INT_FRAC_DIGITS, 445 _NL_MONETARY_DUO_FRAC_DIGITS, 446 _NL_MONETARY_DUO_P_CS_PRECEDES, 447 _NL_MONETARY_DUO_P_SEP_BY_SPACE, 448 _NL_MONETARY_DUO_N_CS_PRECEDES, 449 _NL_MONETARY_DUO_N_SEP_BY_SPACE, 450 _NL_MONETARY_DUO_INT_P_CS_PRECEDES, 451 _NL_MONETARY_DUO_INT_P_SEP_BY_SPACE, 452 _NL_MONETARY_DUO_INT_N_CS_PRECEDES, 453 _NL_MONETARY_DUO_INT_N_SEP_BY_SPACE, 454 _NL_MONETARY_DUO_P_SIGN_POSN, 455 _NL_MONETARY_DUO_N_SIGN_POSN, 456 _NL_MONETARY_DUO_INT_P_SIGN_POSN, 457 _NL_MONETARY_DUO_INT_N_SIGN_POSN, 458 _NL_MONETARY_UNO_VALID_FROM, 459 _NL_MONETARY_UNO_VALID_TO, 460 _NL_MONETARY_DUO_VALID_FROM, 461 _NL_MONETARY_DUO_VALID_TO, 462 _NL_MONETARY_CONVERSION_RATE, 463 _NL_MONETARY_DECIMAL_POINT_WC, 464 _NL_MONETARY_THOUSANDS_SEP_WC, 465 _NL_MONETARY_CODESET, 466 _NL_NUM_LC_MONETARY, 467 468 /* LC_NUMERIC category: formatting of numbers. 469 These also correspond to members of `struct lconv'; see <locale.h>. */ 470 __DECIMAL_POINT = _NL_ITEM (__LC_NUMERIC, 0), 471#ifdef __USE_GNU 472# define DECIMAL_POINT __DECIMAL_POINT 473#endif 474 RADIXCHAR = __DECIMAL_POINT, 475#define RADIXCHAR RADIXCHAR 476 __THOUSANDS_SEP, 477#ifdef __USE_GNU 478# define THOUSANDS_SEP __THOUSANDS_SEP 479#endif 480 THOUSEP = __THOUSANDS_SEP, 481#define THOUSEP THOUSEP 482 __GROUPING, 483#ifdef __USE_GNU 484# define GROUPING __GROUPING 485#endif 486 _NL_NUMERIC_DECIMAL_POINT_WC, 487 _NL_NUMERIC_THOUSANDS_SEP_WC, 488 _NL_NUMERIC_CODESET, 489 _NL_NUM_LC_NUMERIC, 490 491 __YESEXPR = _NL_ITEM (__LC_MESSAGES, 0), /* Regex matching ``yes'' input. */ 492#define YESEXPR __YESEXPR 493 __NOEXPR, /* Regex matching ``no'' input. */ 494#define NOEXPR __NOEXPR 495 __YESSTR, /* Output string for ``yes''. */ 496#if defined __USE_GNU || (defined __USE_XOPEN && !defined __USE_XOPEN2K) 497# define YESSTR __YESSTR 498#endif 499 __NOSTR, /* Output string for ``no''. */ 500#if defined __USE_GNU || (defined __USE_XOPEN && !defined __USE_XOPEN2K) 501# define NOSTR __NOSTR 502#endif 503 _NL_MESSAGES_CODESET, 504 _NL_NUM_LC_MESSAGES, 505 506 507 /* This marks the highest value used. */ 508 _NL_NUM 509}; 510 511 512#ifdef __USE_GNU 513/* This interface is for the extended locale model. See <locale.h> for 514 more information. */ 515 516/* Get locale datatype definition. */ 517# include <xlocale.h> 518#endif 519 520__END_DECLS 521 522#endif /* langinfo.h */ 523