diff options
Diffstat (limited to 'locale/localeinfo.h')
-rw-r--r-- | locale/localeinfo.h | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/locale/localeinfo.h b/locale/localeinfo.h new file mode 100644 index 0000000000..5ba5fefa05 --- /dev/null +++ b/locale/localeinfo.h @@ -0,0 +1,208 @@ +/* Copyright (C) 1991, 1992 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +/* Locale-specific information. */ + +#ifndef _LOCALEINFO_H + +#define _LOCALEINFO_H 1 + +#define __need_size_t +#define __need_wchar_t +#include <stddef.h> +#include <limits.h> + + +/* Change these if the `wchar_t' type is changed. */ +#define WCHAR_MAX ((wchar_t) UCHAR_MAX) + + +/* Used by multibyte char functions. */ +typedef struct +{ + char *string; /* Bytes. */ + size_t len; /* # of bytes. */ + long int shift; /* # of mb_char's to shift. */ +} mb_char; + +struct ctype_mbchar_info +{ + size_t mb_max; /* Max MB char length. */ + mb_char *mb_chars; /* MB chars. */ +}; + +struct ctype_ctype_info +{ + unsigned short int *ctype_b; /* Characteristics. */ + short int *ctype_tolower; /* Case mappings. */ + short int *ctype_toupper; /* Case mappings. */ +}; + +struct ctype_info +{ + struct ctype_ctype_info *ctype; + struct ctype_mbchar_info *mbchar; +}; + +extern __const struct ctype_info *_ctype_info; + +/* These are necessary because they are used in a header file. */ +extern __const unsigned short int *__ctype_b; +extern __const short int *__ctype_tolower; +extern __const short int *__ctype_toupper; + + +/* Used by strcoll and strxfrm. */ +typedef struct +{ + unsigned char *values; + size_t nvalues; +} literal_value; + +typedef struct +{ + union + { + literal_value literal; + /* %%% This may become a regex_t in the future. */ + char *regexp; + } replace, with; + unsigned int regexp:1; +} subst; + +struct collate_info +{ + size_t nsubsts; + subst *substs; + + unsigned char *values; + unsigned char *offsets; +}; + +extern __const struct collate_info *_collate_info; + + +/* Used by strtod, atof. */ +struct numeric_info +{ + char *decimal_point; + char *thousands_sep; + char *grouping; +}; + +extern __const struct numeric_info *_numeric_info; + + +/* Used in the return value of localeconv. */ +struct monetary_info +{ + char *int_curr_symbol; + char *currency_symbol; + char *mon_decimal_point; + char *mon_thousands_sep; + char *mon_grouping; + char *positive_sign; + char *negative_sign; + char int_frac_digits; + char frac_digits; + char p_cs_precedes; + char p_sep_by_space; + char n_cs_precedes; + char n_sep_by_space; + char p_sign_posn; + char n_sign_posn; +}; + +extern __const struct monetary_info *_monetary_info; + + +/* Used by strftime, asctime. */ +struct time_info +{ + char *abbrev_wkday[7]; /* Short weekday names. */ + char *full_wkday[7]; /* Full weekday names. */ + char *abbrev_month[12]; /* Short month names. */ + char *full_month[12]; /* Full month names. */ + char *ampm[2]; /* "AM" and "PM" strings. */ + + char *date_time; /* Appropriate date and time format. */ + char *date; /* Appropriate date format. */ + char *time; /* Appropriate time format. */ + + char *ut0; /* Name for GMT. */ + char *tz; /* Default TZ value. */ +}; + +extern __const struct time_info *_time_info; + +struct response_info +{ + /* Regexp for affirmative answers. */ + char *yesexpr; + + /* Regexp for negative answers. */ + char *noexpr; +}; + +extern __const struct response_info *_response_info; + +/* Locale structure. */ +typedef struct +{ + char *name; + int categories; + + unsigned int allocated:1; + + int subcategories; + size_t num_sublocales; + struct sub_locale *sublocales; + + __ptr_t *info; +} locale; + +typedef struct sub_locale +{ + unsigned int pointer:1; + + int categories; + char *name; + + locale *locale; +} sublocale; + + +/* This is the magic number that localeinfo object files begin with. + In case you're wondering why I chose the value 0x051472CA, it's + because I was born on 05-14-72 in Oakland, CA. */ +#define LIMAGIC 0x051472CA +/* This is the magic number that precedes each category-specific section + of a localeinfo object file. It's the arbitrary magic number above, + but modified by the category so that it's different from the per-file + magic number and unique for each category. */ +#define CATEGORY_MAGIC(x) (LIMAGIC ^ (x)) + +extern __const char *__lidir, *__lidefault; + +extern locale *__find_locale __P ((int categories, __const char *name)); +extern locale *__new_locale __P ((locale *)); +extern locale *__localefile __P ((__const char *file)); +extern void __free_locale __P ((locale *)); + + +#endif /* localeinfo.h */ |