Initial import of the CDE 2.1.30 sources from the Open Group.
[oweals/cde.git] / cde / lib / DtSvc / DtUtil2 / Setlocale.h
1 /* $XConsortium: Setlocale.h /main/3 1995/10/26 15:27:34 rswiston $ */
2 /*
3  * (c) Copyright 1993, 1994 Hewlett-Packard Company                     *
4  * (c) Copyright 1993, 1994 International Business Machines Corp.       *
5  * (c) Copyright 1993, 1994 Sun Microsystems, Inc.                      *
6  * (c) Copyright 1993, 1994 Novell, Inc.                                *
7  */
8 /* Hp DT's version of an 8.0 include file; needed for Fnmatch */
9
10 #ifndef DtSETLOCALE_INCLUDED /* allow multiple inclusions */
11 #define DtSETLOCALE_INCLUDED
12
13 #ifdef _NAMESPACE_CLEAN
14 #define _1kanji __1kanji
15 #define _2kanji __2kanji
16 #define _downshift __downshift
17 #define _upshift __upshift
18 #endif /* _NAMESPACE_CLEAN */
19
20 #include        <locale.h>
21 #include        <limits.h>
22 #include        <nl_types.h>
23 #include        <langinfo.h>
24 #include        <Dt/Collate.h>
25
26 #ifdef sco /* XPG4isms comming soon */
27 #ifndef _NL_DIRECT
28 #define _NL_DIRECT
29 typedef int nl_direct;
30 #endif
31 #ifndef _NL_ORDER
32 #define _NL_ORDER
33 typedef int nl_order;
34 #endif
35 #ifndef _NL_MODE
36 #define _NL_MODE
37 typedef int nl_mode;
38 #endif
39 #ifndef _NL_OUTDGT
40 #define _NL_OUTDGT
41 typedef int nl_outdgt;
42 #endif
43 #ifndef MAXLNAMELEN
44 #define MAXLNAMELEN 14
45 #endif
46 #endif
47
48 struct _era_data {                      /* defines an Emperor/Era time period */
49         short start_year;               /* starting date of era */
50         unsigned short start_month;
51         unsigned short start_day;
52         short end_year;                 /* ending date of era */
53         unsigned short end_month;
54         unsigned short end_day;
55         short origin_year;              /* time axis origin for era (one of start_year or end_year) */
56         short offset;                   /* offset from 0 for 1st year of era */
57         short signflag;                 /* adjusts sign of (year - origin_year) value */
58         unsigned short reserved;
59         unsigned char *name;            /* name of era */
60         unsigned char *format;          /* instead of nl_langinfo(ERA_FMT) */
61 };
62
63 extern  int             __nl_langid[];  /* langid of currently loaded language  */
64 extern  unsigned char   *__ctype;       /* pointer to ctype table       */
65 extern  unsigned char   *_1kanji;       /* pointer to 1st of 2 kanji table */
66 extern  unsigned char   *_2kanji;       /* pointer to 2nd of 2 kanji table */
67 extern  unsigned char   *_upshift;      /* pointer to up shift table */
68 extern  unsigned char   *_downshift;    /* pointer to down shift table */
69 #ifdef EUC
70 extern  unsigned char   *__e_cset;      /* pointer to expanded char set table */
71 extern  unsigned char   *__ein_csize;   /* pointer to expanded in_csize table */
72 extern  unsigned char   *__eout_csize;  /* pointer to expanded out_csize table*/
73 #endif /* EUC */
74 extern struct _era_data *_nl_era[];     /* array of era info str pointer */
75 extern  int             _nl_radix;      /* radix character */
76 extern  int             _sh_low;        /* lowest char in shift table domain */
77 extern  int             _sh_high;       /* highest char in shift table domain */
78 extern  int             __nl_char_size; /* size of characters */
79 #ifdef EUC
80 extern  int             __nl_code_scheme;/* flag for char code scheme */
81 extern  int             __cs_SBYTE;     /* flag for 1 byte char code scheme */
82 extern  int             __cs_HP15;      /* flag for HP15 char code scheme */
83 extern  int             __cs_EUC;       /* flag for EUC char code scheme */
84 extern  unsigned char   __in_csize[];   /* input char size */
85 extern  unsigned char   __out_csize[];  /* output char size */
86 extern  unsigned int    __euc_template[]; /* euc process code template */
87 #endif /* EUC */
88 extern  nl_direct       _nl_direct;     /* direction flag */
89 extern  int             _nl_context;    /* directionality context flag */
90 extern  nl_order        _nl_order;      /* order flag */
91 extern  nl_mode         _nl_mode;       /* mode flag; Latin or non-Latin */
92 extern  nl_outdgt       _nl_outdigit;   /* digit output : ascii or alt digit */
93
94 extern  int             _nl_space_alt;  /* value of alternative space */
95 extern  unsigned char   *_nl_dgt_alt;   /* buffer for alt digit string */
96 extern  unsigned char   *_nl_punct_alt; /* buffer for alt punctuation string */
97 extern  unsigned char   *_nl_pascii;    /* buffer for ascii punctuation string */
98 extern  unsigned char   *_nl_dascii;    /* buffer for ascii digits string */
99 extern  int             _nl_map21;      /* non-zero if 2-to-1 mappings */
100 extern  int             _nl_onlyseq;    /* true if only 1-to-1 char w no pri */
101 extern  int             _nl_collate_on; /* true if collation table loaded */
102 extern  int             _nl_mb_collate; /* true if collation is multibyte */
103
104 extern  unsigned char    *_seqtab;      /* dictionary sequence number table */
105 extern  unsigned char    *_pritab;      /* 1to2/2to1 flag + priority table */
106 extern  struct col_21tab *_tab21;       /* 2-to-1 mapping table */
107 extern  struct col_12tab *_tab12;       /* 1-to-2 mapping table */
108
109 extern unsigned char    *__errptr;      /* pointer to an area _errlocale() can use as a buffer */
110
111 extern struct lconv     *_lconv;
112 extern unsigned char    *__category_name[];
113
114 extern unsigned char    **__nl_info;    /* pointers to locale langinfo strings */
115 extern unsigned char    *__C_langinfo[];/* default langinfo strings for the C locale */
116 #define _NL_MAX_MSG     ERA_FMT         /* last nl_langinfo item */
117
118 /***************************************************************************
119
120     The remainder of this file includes structures for the language files.
121     The files are built by buildlang(1M).
122
123     The structure of the files is as follows :
124
125         ----------------------------------
126         |  Table Header (A)              |
127         ----------------------------------
128         | Category/Modifier Structures(B)|
129         ==================================
130         |  LC_ALL Table Header  (C)      |
131         -   -   -   -   -   -   -   -    -
132         |  LC_ALL Data                   |
133         ----------------------------------
134         |  LC_COLLATE Table Header (D)   |
135         -   -   -   -   -   -   -   -    -
136         |  LC_COLLATE Data               |
137         ----------------------------------
138         |  LC_CTYPE  Table Header (E)    |
139         -   -   -   -   -   -   -   -    -
140         |  LC_CTYPE  Data                |
141         ----------------------------------
142         |  LC_MONETARY Table Header (F)
143         -   -   -   -   -   -   -   -    -
144         |  LC_MONETARY  Data             |
145         ----------------------------------
146         |  LC_NUMERIC  Table Header (G)  |
147         -   -   -   -   -   -   -   -    -
148         |  LC_NUMERIC  Data              |
149         ----------------------------------
150         |  LC_TIME  Table Header (H)     |
151         -   -   -   -   -   -   -   -    -
152         |  LC_TIME  Data                 |
153         ----------------------------------
154
155 *****************************************************************************/
156
157
158 /* Category Id's */
159
160
161 /* Table Header (A) */
162
163 struct table_header {
164         unsigned int size;              /* size of table header and category
165                                            structure. (A) + (B)  */
166         unsigned short nl_langid;       /* _nl_langid */
167         unsigned char lang[3*MAXLNAMELEN+2+1];  /* language name */
168         unsigned short cat_no;          /* number of categories defined */
169         unsigned short mod_no;          /* number of modifiers defined */
170         unsigned short rev_flag;        /* true if HP defined */
171         unsigned char rev_str[36];      /* Revision String */
172         unsigned short codeset;         /* 0 if 1 byte, 1 if 2 byte */
173         unsigned int    reserved1;
174         unsigned int    reserved2;
175         unsigned int    reserved3;
176 };
177
178 /* Category/Modifier Structure (B)
179
180    Catinfotype structure describes a category/modifier table
181    There is one structure for each category and modifier defined.
182    These entries follow the table header */
183
184
185 struct catinfotype
186 {
187         int size;                               /* size of category table */
188         int address;                            /* address of category table -
189                                                    offset from the beginning of
190                                                    the category tables () */
191         short catid;                            /* category id */
192         unsigned char mod_name[MAXLNAMELEN+1];  /* name of modifier */
193         short mod_addr;                         /* address of category table
194                                                    for modifier - offset from
195                                                    beginning of file */
196 };
197
198
199 /* Below are the category headers for each of the defined categories
200    All addresses are offset from the beginning of the category information */
201
202 /* LC_ALL Table  (C) */
203
204 struct all_header {
205         unsigned short yes_addr;                /* msg_index[YESSTR] */
206         unsigned short no_addr;         /* msg_index[NOSTR] */
207         unsigned short direct_addr;     /* msg_index[DIRECTION] */
208                                         /* _nl_direct */
209         unsigned short context_addr;    /* _nl_context */
210 };
211
212 /* LC_COLLATE Tables (D) */
213
214 struct col_header {
215         unsigned int seqtab_addr;       /* _seqtab */
216         unsigned int pritab_addr;       /* _pritab */
217         unsigned short nl_map21;        /* not an address */
218         unsigned short nl_onlyseq;      /* not an address */
219         unsigned int tab21_addr;
220         unsigned int tab12_addr;
221 };
222
223
224 /* LC_CTYPE Tables (E) */
225
226 struct ctype_header {
227         unsigned int _sh_high;          /* _sh_high */
228         int _sh_low;                    /* _sh_low */
229         unsigned int _ctype_addr;       /* __ctype */
230         unsigned int kanji1_addr;       /* _1kanji */
231         unsigned int kanji2_addr;       /* _2kanji */
232         unsigned int upshift_addr;      /* _upshift */
233         unsigned int downshift_addr;    /* _downshift */
234         unsigned short byte_char_addr;  /* msg_index[BYTES_CHAR] */
235         unsigned short alt_punct_addr;  /* msg_index[ALT_PUNCT] */
236                                         /* _nl_punct_alt[] */
237                                         /* _nl_space_alt   */
238 #ifdef EUC
239         unsigned int io_csize_addr;     /* __io_csize[] */
240         unsigned int e_cset_addr;       /* __e_cset */
241         unsigned int ein_csize_addr;    /* __ein_csize */
242         unsigned int eout_csize_addr;   /* __eout_csize */
243 #endif /* EUC */
244 };
245
246
247
248 /* LC_MONETARY Tables (F) */
249
250
251 struct monetary_header {
252         unsigned short int_frac_digits;         /* _lconv->short_frac_digits */
253         unsigned short frac_digits;             /* _lconv->frac_digits */
254         unsigned short p_cs_precedes;           /* _lconv->p_cs_precedes */
255         unsigned short p_sep_by_space;          /* _lconv->p_sep_by_space */
256         unsigned short n_cs_precedes;           /* _lconv->n_cs_precedes */
257         unsigned short n_sep_by_space;          /* _lconv->n_sep_by_space */
258         unsigned short p_sign_posn;             /* _lconv->p_sign_posn */
259         unsigned short n_sign_posn;             /* _lconv->n_sign_posn */
260         unsigned short curr_symbol_lconv;               /* _lconv->currency_symbol */
261         unsigned short curr_symbol_li;          /* msg_index[CRNCYSTR] */
262         unsigned short mon_decimal_point;               /* _lconv->mon_decimal_point */
263         unsigned short int_curr_symbol;         /* _lconv->short_curr_symbol */
264         unsigned short mon_thousands_sep;               /* _lconv->mon_thousands_sep */
265         unsigned short mon_grouping;            /* _lconv->mon_grouping */
266         unsigned short positive_sign;           /* _lconv->positive_sign */
267         unsigned short negative_sign;           /* _lconv->negative_sign */
268 };
269
270
271
272 /* LC_NUMERIC Tables (G) */
273
274
275 struct numeric_header {
276         unsigned short grouping;                        /* _lconv->grouping */
277         unsigned short decimal_point;           /* _lconv->decimal_point */
278                                                 /* msg_index[RADIXCHAR] */
279                                                 /* _nl_radix */
280         unsigned short thousands_sep;           /* _lconv->thousands_sep */
281                                                 /* msg_index[THOUSEP] */
282         unsigned short alt_digit_addr;          /* msg_index[ALT_DIGIT] */
283 };
284
285
286
287 /* LC_TIME Tables (H) */
288
289 struct time_header {
290         unsigned short d_t_fmt;                 /* msg_index[D_T_FMT] */
291         unsigned short d_fmt;                   /* msg_index[D_FMT] */
292         unsigned short t_fmt;                   /* msg_index[T_FMT] */
293         unsigned short day_1;                   /* msg_index[DAY_1] */
294         unsigned short day_2;                   /* msg_index[DAY_2] */
295         unsigned short day_3;                   /* msg_index[DAY_3] */
296         unsigned short day_4;                   /* msg_index[DAY_4] */
297         unsigned short day_5;                   /* msg_index[DAY_5] */
298         unsigned short day_6;                   /* msg_index[DAY_6] */
299         unsigned short day_7;                   /* msg_index[DAY_7] */
300         unsigned short abday_1;                 /* msg_index[ABDAY_1] */
301         unsigned short abday_2;                 /* msg_index[ABDAY_2] */
302         unsigned short abday_3;                 /* msg_index[ABDAY_3] */
303         unsigned short abday_4;                 /* msg_index[ABDAY_4] */
304         unsigned short abday_5;                 /* msg_index[ABDAY_5] */
305         unsigned short abday_6;                 /* msg_index[ABDAY_6] */
306         unsigned short abday_7;                 /* msg_index[ABDAY_7] */
307         unsigned short mon_1;                   /* msg_index[MON_1] */
308         unsigned short mon_2;                   /* msg_index[MON_2] */
309         unsigned short mon_3;                   /* msg_index[MON_3] */
310         unsigned short mon_4;                   /* msg_index[MON_4] */
311         unsigned short mon_5;                   /* msg_index[MON_5] */
312         unsigned short mon_6;                   /* msg_index[MON_6] */
313         unsigned short mon_7;                   /* msg_index[MON_7] */
314         unsigned short mon_8;                   /* msg_index[MON_8] */
315         unsigned short mon_9;                   /* msg_index[MON_9] */
316         unsigned short mon_10;                  /* msg_index[MON_10] */
317         unsigned short mon_11;                  /* msg_index[MON_11] */
318         unsigned short mon_12;                  /* msg_index[MON_12] */
319         unsigned short abmon_1;                 /* msg_index[ABMON_1] */
320         unsigned short abmon_2;                 /* msg_index[ABMON_2] */
321         unsigned short abmon_3;                 /* msg_index[ABMON_3] */
322         unsigned short abmon_4;                 /* msg_index[ABMON_4] */
323         unsigned short abmon_5;                 /* msg_index[ABMON_5] */
324         unsigned short abmon_6;                 /* msg_index[ABMON_6] */
325         unsigned short abmon_7;                 /* msg_index[ABMON_7] */
326         unsigned short abmon_8;                 /* msg_index[ABMON_8] */
327         unsigned short abmon_9;                 /* msg_index[ABMON_9] */
328         unsigned short abmon_10;                /* msg_index[ABMON_10] */
329         unsigned short abmon_11;                /* msg_index[ABMON_11] */
330         unsigned short abmon_12;                /* msg_index[ABMON_12] */
331         unsigned short am_str;                  /* msg_index[AM_STR] */
332         unsigned short pm_str;                  /* msg_index[PM_STR] */
333         unsigned short year_unit;               /* msg_index[YEAR_UNIT] */
334         unsigned short mon_unit;                /* msg_index[MON_UNIT] */
335         unsigned short day_unit;                /* msg_index[DAY_UNIT] */
336         unsigned short hour_unit;               /* msg_index[HOUR_UNIT] */
337         unsigned short min_unit;                /* msg_index[MIN_UNIT] */
338         unsigned short sec_unit;                /* msg_index[SEC_UNIT] */
339         unsigned short era_fmt;                 /* msg_index[ERA_FMT] */
340         unsigned short era_count;               /* number of era entries */
341         unsigned short era_names;               /* address of era name and format strings */
342         unsigned short era_addr;                /* address of era data structure entries */
343         unsigned short reserved;                /* address of era data structure entries */
344 };
345
346 #endif /* DtSETLOCALE_INCLUDED */