Global definitions for localedef.c.
[kopensolaris-gnu/glibc.git] / locale / programs / localedef.h
1 /* General definitions for localedef(1).
2    Copyright (C) 1998, 1999 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 Library General Public License as
8    published by the Free Software Foundation; either version 2 of the
9    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    Library General Public License for more details.
15
16    You should have received a copy of the GNU Library General Public
17    License along with the GNU C Library; see the file COPYING.LIB.  If not,
18    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19    Boston, MA 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[12];
102
103   size_t len[12];
104
105   const char *repertoire_name;
106 };
107
108
109 /* Global variables of the localedef program.  */
110 extern int verbose;
111 extern int be_quiet;
112 extern const char *repertoire_global;
113
114
115 /* Prototypes for a few program-wide used functions.  */
116 extern void *xmalloc (size_t __n);
117 extern void *xcalloc (size_t __n, size_t __size);
118 extern void *xrealloc (void *__p, size_t __n);
119 extern char *xstrdup (const char *__str);
120
121
122 /* Mark given locale as to be read.  */
123 extern struct localedef_t *add_to_readlist (int locale, const char *name,
124                                             const char *repertoire_name);
125
126 /* Find the information for the locale NAME.  */
127 extern struct localedef_t *find_locale (int locale, const char *name,
128                                         const char *repertoire_name,
129                                         struct charmap_t *charmap);
130
131 #endif /* localedef.h */