Adjust for additional parameter to lr_token.
[kopensolaris-gnu/glibc.git] / locale / programs / localedef.h
1 /* General definitions for localedef(1).
2    Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
5
6    The GNU C Library is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Lesser General Public
8    License as published by the Free Software Foundation; either
9    version 2.1 of the License, or (at your option) any later version.
10
11    The GNU C Library is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Lesser General Public License for more details.
15
16    You should have received a copy of the GNU Lesser General Public
17    License along with the GNU C Library; if not, write to the Free
18    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19    02111-1307 USA.  */
20
21 #ifndef _LOCALEDEF_H
22 #define _LOCALEDEF_H    1
23
24 /* Get the basic locale definitions.  */
25 #include <locale.h>
26 #include <stddef.h>
27
28 #include "repertoire.h"
29
30
31 /* We need a bitmask for the locales.  */
32 enum
33 {
34   CTYPE_LOCALE = 1 << LC_CTYPE,
35   NUMERIC_LOCALE = 1 << LC_NUMERIC,
36   TIME_LOCALE = 1 << LC_TIME,
37   COLLATE_LOCALE = 1 << LC_COLLATE,
38   MONETARY_LOCALE = 1 << LC_MONETARY,
39   MESSAGES_LOCALE = 1 << LC_MESSAGES,
40   PAPER_LOCALE = 1 << LC_PAPER,
41   NAME_LOCALE = 1 << LC_NAME,
42   ADDRESS_LOCALE = 1 << LC_ADDRESS,
43   TELEPHONE_LOCALE = 1 << LC_TELEPHONE,
44   MEASUREMENT_LOCALE = 1 << LC_MEASUREMENT,
45   IDENTIFICATION_LOCALE = 1 << LC_IDENTIFICATION,
46   ALL_LOCALES = (1 << LC_CTYPE
47                  | 1 << LC_NUMERIC
48                  | 1 << LC_TIME
49                  | 1 << LC_COLLATE
50                  | 1 << LC_MONETARY
51                  | 1 << LC_MESSAGES
52                  | 1 << LC_PAPER
53                  | 1 << LC_NAME
54                  | 1 << LC_ADDRESS
55                  | 1 << LC_TELEPHONE
56                  | 1 << LC_MEASUREMENT
57                  | 1 << LC_IDENTIFICATION)
58 };
59
60
61 /* Opaque types for the different locales.  */
62 struct locale_ctype_t;
63 struct locale_collate_t;
64 struct locale_monetary_t;
65 struct locale_numeric_t;
66 struct locale_time_t;
67 struct locale_messages_t;
68 struct locale_paper_t;
69 struct locale_name_t;
70 struct locale_address_t;
71 struct locale_telephone_t;
72 struct locale_measurement_t;
73 struct locale_identification_t;
74
75
76 /* Definitions for the locale.  */
77 struct localedef_t
78 {
79   struct localedef_t *next;
80
81   const char *name;
82
83   int needed;
84   int avail;
85
86   union
87   {
88     void *generic;
89     struct locale_ctype_t *ctype;
90     struct locale_collate_t *collate;
91     struct locale_monetary_t *monetary;
92     struct locale_numeric_t *numeric;
93     struct locale_time_t *time;
94     struct locale_messages_t *messages;
95     struct locale_paper_t *paper;
96     struct locale_name_t *name;
97     struct locale_address_t *address;
98     struct locale_telephone_t *telephone;
99     struct locale_measurement_t *measurement;
100     struct locale_identification_t *identification;
101   } categories[__LC_LAST];
102
103   size_t len[__LC_LAST];
104
105   const char *copy_name[__LC_LAST];
106
107   const char *repertoire_name;
108 };
109
110
111 /* Global variables of the localedef program.  */
112 extern int verbose;
113 extern int be_quiet;
114 extern int oldstyle_tables;
115 extern const char *repertoire_global;
116
117
118 /* Prototypes for a few program-wide used functions.  */
119 extern void *xmalloc (size_t __n);
120 extern void *xcalloc (size_t __n, size_t __size);
121 extern void *xrealloc (void *__p, size_t __n);
122 extern char *xstrdup (const char *__str);
123
124
125 /* Mark given locale as to be read.  */
126 extern struct localedef_t *add_to_readlist (int locale, const char *name,
127                                             const char *repertoire_name,
128                                             int generate,
129                                             struct localedef_t *copy_locale);
130
131 /* Find the information for the locale NAME.  */
132 extern struct localedef_t *find_locale (int locale, const char *name,
133                                         const char *repertoire_name,
134                                         const struct charmap_t *charmap);
135
136 /* Load (if necessary) the information for the locale NAME.  */
137 extern struct localedef_t *load_locale (int locale, const char *name,
138                                         const char *repertoire_name,
139                                         const struct charmap_t *charmap,
140                                         struct localedef_t *copy_locale);
141
142 #endif /* localedef.h */