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