xref: /titanic_51/usr/src/cmd/ast/libast/amd64/lc.h (revision b4dd7d09880f14016feece03929a224eca1cf39a)
1*b4dd7d09SAndy Fiddaman /* : : generated by cmd/ast/tools/lcgen : : */
2*b4dd7d09SAndy Fiddaman #pragma prototyped
3*b4dd7d09SAndy Fiddaman 
4*b4dd7d09SAndy Fiddaman #ifndef _LC_H
5*b4dd7d09SAndy Fiddaman #define _LC_H			1
6*b4dd7d09SAndy Fiddaman 
7*b4dd7d09SAndy Fiddaman #include <ast.h>
8*b4dd7d09SAndy Fiddaman 
9*b4dd7d09SAndy Fiddaman #define LC_abbreviated		0x00001
10*b4dd7d09SAndy Fiddaman #define LC_checked		0x00002
11*b4dd7d09SAndy Fiddaman #define LC_debug		0x00004
12*b4dd7d09SAndy Fiddaman #define LC_default		0x00008
13*b4dd7d09SAndy Fiddaman #define LC_defined		0x00010
14*b4dd7d09SAndy Fiddaman #define LC_local		0x00020
15*b4dd7d09SAndy Fiddaman #define LC_primary		0x00040
16*b4dd7d09SAndy Fiddaman #define LC_qualified		0x00080
17*b4dd7d09SAndy Fiddaman #define LC_undefined		0x00100
18*b4dd7d09SAndy Fiddaman #define LC_utf8			0x00200
19*b4dd7d09SAndy Fiddaman #define LC_verbose		0x00400
20*b4dd7d09SAndy Fiddaman #define LC_setlocale		0x10000
21*b4dd7d09SAndy Fiddaman #define LC_setenv		0x20000
22*b4dd7d09SAndy Fiddaman #define LC_user			0x40000
23*b4dd7d09SAndy Fiddaman 
24*b4dd7d09SAndy Fiddaman #define LC_language_attribute_max	2
25*b4dd7d09SAndy Fiddaman #define LC_territory_language_max	4
26*b4dd7d09SAndy Fiddaman 
27*b4dd7d09SAndy Fiddaman struct Lc_s;
28*b4dd7d09SAndy Fiddaman 
29*b4dd7d09SAndy Fiddaman typedef struct Lc_info_s
30*b4dd7d09SAndy Fiddaman {
31*b4dd7d09SAndy Fiddaman 	const struct Lc_s*	lc;
32*b4dd7d09SAndy Fiddaman 	unsigned long		number;
33*b4dd7d09SAndy Fiddaman 	void*			data;
34*b4dd7d09SAndy Fiddaman } Lc_info_t;
35*b4dd7d09SAndy Fiddaman 
36*b4dd7d09SAndy Fiddaman typedef struct Lc_attribute_s
37*b4dd7d09SAndy Fiddaman {
38*b4dd7d09SAndy Fiddaman 	const char*		name;
39*b4dd7d09SAndy Fiddaman 	unsigned long		flags;
40*b4dd7d09SAndy Fiddaman 	unsigned long		index;
41*b4dd7d09SAndy Fiddaman } Lc_attribute_t;
42*b4dd7d09SAndy Fiddaman 
43*b4dd7d09SAndy Fiddaman typedef struct Lc_charset_s
44*b4dd7d09SAndy Fiddaman {
45*b4dd7d09SAndy Fiddaman 	const char*		code;
46*b4dd7d09SAndy Fiddaman 	const char*		alternates;
47*b4dd7d09SAndy Fiddaman 	const char*		ms;
48*b4dd7d09SAndy Fiddaman 	unsigned long		index;
49*b4dd7d09SAndy Fiddaman } Lc_charset_t;
50*b4dd7d09SAndy Fiddaman 
51*b4dd7d09SAndy Fiddaman typedef struct Lc_language_s
52*b4dd7d09SAndy Fiddaman {
53*b4dd7d09SAndy Fiddaman 	const char*		code;
54*b4dd7d09SAndy Fiddaman 	const char*		name;
55*b4dd7d09SAndy Fiddaman 	const char*		alternates;
56*b4dd7d09SAndy Fiddaman 	const Lc_charset_t*	charset;
57*b4dd7d09SAndy Fiddaman 	unsigned long		flags;
58*b4dd7d09SAndy Fiddaman 	unsigned long		index;
59*b4dd7d09SAndy Fiddaman 	const Lc_attribute_t*	attributes[LC_language_attribute_max];
60*b4dd7d09SAndy Fiddaman } Lc_language_t;
61*b4dd7d09SAndy Fiddaman 
62*b4dd7d09SAndy Fiddaman typedef struct Lc_territory_s
63*b4dd7d09SAndy Fiddaman {
64*b4dd7d09SAndy Fiddaman 	const char*		code;
65*b4dd7d09SAndy Fiddaman 	const char*		name;
66*b4dd7d09SAndy Fiddaman 	unsigned long		flags;
67*b4dd7d09SAndy Fiddaman 	unsigned long		index;
68*b4dd7d09SAndy Fiddaman 	const Lc_language_t*	languages[LC_territory_language_max];
69*b4dd7d09SAndy Fiddaman #ifdef _LC_TERRITORY_PRIVATE_
70*b4dd7d09SAndy Fiddaman 	_LC_TERRITORY_PRIVATE_
71*b4dd7d09SAndy Fiddaman #endif
72*b4dd7d09SAndy Fiddaman } Lc_territory_t;
73*b4dd7d09SAndy Fiddaman 
74*b4dd7d09SAndy Fiddaman typedef struct Lc_map_s
75*b4dd7d09SAndy Fiddaman {
76*b4dd7d09SAndy Fiddaman 	const char*		code;
77*b4dd7d09SAndy Fiddaman 	const Lc_language_t*	language;
78*b4dd7d09SAndy Fiddaman 	const Lc_territory_t*	territory;
79*b4dd7d09SAndy Fiddaman 	const Lc_charset_t*	charset;
80*b4dd7d09SAndy Fiddaman 	const Lc_attribute_t*	attribute;
81*b4dd7d09SAndy Fiddaman } Lc_map_t;
82*b4dd7d09SAndy Fiddaman 
83*b4dd7d09SAndy Fiddaman typedef struct Lc_attribute_list_s
84*b4dd7d09SAndy Fiddaman {
85*b4dd7d09SAndy Fiddaman 	struct Lc_attribute_list_s*	next;
86*b4dd7d09SAndy Fiddaman 	const Lc_attribute_t*		attribute;
87*b4dd7d09SAndy Fiddaman } Lc_attribute_list_t;
88*b4dd7d09SAndy Fiddaman 
89*b4dd7d09SAndy Fiddaman typedef struct Lc_s
90*b4dd7d09SAndy Fiddaman {
91*b4dd7d09SAndy Fiddaman 	const char*		name;
92*b4dd7d09SAndy Fiddaman 	const char*		code;
93*b4dd7d09SAndy Fiddaman 	const Lc_language_t*	language;
94*b4dd7d09SAndy Fiddaman 	const Lc_territory_t*	territory;
95*b4dd7d09SAndy Fiddaman 	const Lc_charset_t*	charset;
96*b4dd7d09SAndy Fiddaman 	const Lc_attribute_list_t*	attributes;
97*b4dd7d09SAndy Fiddaman 	unsigned long		flags;
98*b4dd7d09SAndy Fiddaman 	unsigned long		index;
99*b4dd7d09SAndy Fiddaman #ifdef _LC_PRIVATE_
100*b4dd7d09SAndy Fiddaman 	_LC_PRIVATE_
101*b4dd7d09SAndy Fiddaman #endif
102*b4dd7d09SAndy Fiddaman } Lc_t;
103*b4dd7d09SAndy Fiddaman 
104*b4dd7d09SAndy Fiddaman struct Lc_category_s;
105*b4dd7d09SAndy Fiddaman 
106*b4dd7d09SAndy Fiddaman typedef int (*Lc_category_set_f)(struct Lc_category_s*);
107*b4dd7d09SAndy Fiddaman 
108*b4dd7d09SAndy Fiddaman typedef struct Lc_category_s
109*b4dd7d09SAndy Fiddaman {
110*b4dd7d09SAndy Fiddaman 	const char*		name;
111*b4dd7d09SAndy Fiddaman 	int			external;
112*b4dd7d09SAndy Fiddaman 	int			internal;
113*b4dd7d09SAndy Fiddaman 	Lc_category_set_f	setf;
114*b4dd7d09SAndy Fiddaman 	Lc_t*			prev;
115*b4dd7d09SAndy Fiddaman 	unsigned int		flags;
116*b4dd7d09SAndy Fiddaman } Lc_category_t;
117*b4dd7d09SAndy Fiddaman 
118*b4dd7d09SAndy Fiddaman #if _BLD_ast && defined(__EXPORT__)
119*b4dd7d09SAndy Fiddaman #define extern		__EXPORT__
120*b4dd7d09SAndy Fiddaman #endif
121*b4dd7d09SAndy Fiddaman 
122*b4dd7d09SAndy Fiddaman extern size_t		lccanon(Lc_t*, unsigned long flags, char*, size_t);
123*b4dd7d09SAndy Fiddaman extern Lc_category_t*	lccategories(void);
124*b4dd7d09SAndy Fiddaman extern int		lcindex(int, int);
125*b4dd7d09SAndy Fiddaman extern Lc_info_t*	lcinfo(int);
126*b4dd7d09SAndy Fiddaman extern Lc_t*		lcmake(const char*);
127*b4dd7d09SAndy Fiddaman extern Lc_t*		lcscan(Lc_t*);
128*b4dd7d09SAndy Fiddaman 
129*b4dd7d09SAndy Fiddaman #undef	extern
130*b4dd7d09SAndy Fiddaman 
131*b4dd7d09SAndy Fiddaman #endif
132