xref: /onnv-gate/usr/src/lib/libast/sparcv9/include/ast/lc.h (revision 4887:feebf9260c2e)
1*4887Schin /***********************************************************************
2*4887Schin *                                                                      *
3*4887Schin *               This software is part of the ast package               *
4*4887Schin *           Copyright (c) 1985-2007 AT&T Knowledge Ventures            *
5*4887Schin *                      and is licensed under the                       *
6*4887Schin *                  Common Public License, Version 1.0                  *
7*4887Schin *                      by AT&T Knowledge Ventures                      *
8*4887Schin *                                                                      *
9*4887Schin *                A copy of the License is available at                 *
10*4887Schin *            http://www.opensource.org/licenses/cpl1.0.txt             *
11*4887Schin *         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
12*4887Schin *                                                                      *
13*4887Schin *              Information and Software Systems Research               *
14*4887Schin *                            AT&T Research                             *
15*4887Schin *                           Florham Park NJ                            *
16*4887Schin *                                                                      *
17*4887Schin *                 Glenn Fowler <gsf@research.att.com>                  *
18*4887Schin *                  David Korn <dgk@research.att.com>                   *
19*4887Schin *                   Phong Vo <kpv@research.att.com>                    *
20*4887Schin *                                                                      *
21*4887Schin ***********************************************************************/
22*4887Schin 
23*4887Schin /* : : generated by proto : : */
24*4887Schin /* : : generated by ./lcgen : : */
25*4887Schin 
26*4887Schin 
27*4887Schin #ifndef _LC_H
28*4887Schin #if !defined(__PROTO__)
29*4887Schin #include <prototyped.h>
30*4887Schin #endif
31*4887Schin #if !defined(__LINKAGE__)
32*4887Schin #define __LINKAGE__		/* 2004-08-11 transition */
33*4887Schin #endif
34*4887Schin 
35*4887Schin #define _LC_H			1
36*4887Schin 
37*4887Schin #include <ast.h>
38*4887Schin 
39*4887Schin #define LC_abbreviated		0x00001
40*4887Schin #define LC_checked		0x00002
41*4887Schin #define LC_default		0x00004
42*4887Schin #define LC_defined		0x00008
43*4887Schin #define LC_debug		0x00010
44*4887Schin #define LC_local		0x00020
45*4887Schin #define LC_primary		0x00040
46*4887Schin #define LC_qualified		0x00080
47*4887Schin #define LC_undefined		0x00100
48*4887Schin #define LC_verbose		0x00200
49*4887Schin #define LC_user			0x10000
50*4887Schin #define LC_language_attribute_max		2
51*4887Schin #define LC_territory_language_max		4
52*4887Schin 
53*4887Schin struct Lc_s;
54*4887Schin 
55*4887Schin typedef struct Lc_info_s
56*4887Schin {
57*4887Schin 	const struct Lc_s*	lc;
58*4887Schin 	unsigned long		number;
59*4887Schin 	__V_*			data;
60*4887Schin } Lc_info_t;
61*4887Schin 
62*4887Schin typedef struct Lc_attribute_s
63*4887Schin {
64*4887Schin 	const char*		name;
65*4887Schin 	unsigned long		flags;
66*4887Schin 	unsigned long		index;
67*4887Schin } Lc_attribute_t;
68*4887Schin 
69*4887Schin typedef struct Lc_charset_s
70*4887Schin {
71*4887Schin 	const char*		code;
72*4887Schin 	const char*		alternates;
73*4887Schin 	const char*		ms;
74*4887Schin 	unsigned long		index;
75*4887Schin } Lc_charset_t;
76*4887Schin 
77*4887Schin typedef struct Lc_language_s
78*4887Schin {
79*4887Schin 	const char*		code;
80*4887Schin 	const char*		name;
81*4887Schin 	const char*		alternates;
82*4887Schin 	const Lc_charset_t*	charset;
83*4887Schin 	unsigned long		flags;
84*4887Schin 	unsigned long		index;
85*4887Schin 	const Lc_attribute_t*	attributes[LC_language_attribute_max];
86*4887Schin } Lc_language_t;
87*4887Schin 
88*4887Schin typedef struct Lc_territory_s
89*4887Schin {
90*4887Schin 	const char*		code;
91*4887Schin 	const char*		name;
92*4887Schin 	unsigned long		flags;
93*4887Schin 	unsigned long		index;
94*4887Schin 	const Lc_language_t*	languages[LC_territory_language_max];
95*4887Schin #ifdef _LC_TERRITORY_PRIVATE_
96*4887Schin 	_LC_TERRITORY_PRIVATE_
97*4887Schin #endif
98*4887Schin } Lc_territory_t;
99*4887Schin 
100*4887Schin typedef struct Lc_map_s
101*4887Schin {
102*4887Schin 	const char*		code;
103*4887Schin 	const Lc_language_t*	language;
104*4887Schin 	const Lc_territory_t*	territory;
105*4887Schin 	const Lc_charset_t*	charset;
106*4887Schin 	const Lc_attribute_t*	attribute;
107*4887Schin } Lc_map_t;
108*4887Schin 
109*4887Schin typedef struct Lc_attribute_list_s
110*4887Schin {
111*4887Schin 	struct Lc_attribute_list_s*	next;
112*4887Schin 	const Lc_attribute_t*		attribute;
113*4887Schin } Lc_attribute_list_t;
114*4887Schin 
115*4887Schin typedef struct Lc_s
116*4887Schin {
117*4887Schin 	const char*		name;
118*4887Schin 	const char*		code;
119*4887Schin 	const Lc_language_t*	language;
120*4887Schin 	const Lc_territory_t*	territory;
121*4887Schin 	const Lc_charset_t*	charset;
122*4887Schin 	const Lc_attribute_list_t*	attributes;
123*4887Schin 	unsigned long		flags;
124*4887Schin 	unsigned long		index;
125*4887Schin #ifdef _LC_PRIVATE_
126*4887Schin 	_LC_PRIVATE_
127*4887Schin #endif
128*4887Schin } Lc_t;
129*4887Schin 
130*4887Schin struct Lc_category_s;
131*4887Schin 
132*4887Schin typedef int (*Lc_category_set_f) __PROTO__((struct Lc_category_s*));
133*4887Schin 
134*4887Schin typedef struct Lc_category_s
135*4887Schin {
136*4887Schin 	const char*		name;
137*4887Schin 	int			external;
138*4887Schin 	int			internal;
139*4887Schin 	Lc_category_set_f	setf;
140*4887Schin 	Lc_t*			prev;
141*4887Schin } Lc_category_t;
142*4887Schin 
143*4887Schin #if _BLD_ast && defined(__EXPORT__)
144*4887Schin #undef __MANGLE__
145*4887Schin #define __MANGLE__ __LINKAGE__		__EXPORT__
146*4887Schin #endif
147*4887Schin 
148*4887Schin extern __MANGLE__ size_t		lccanon __PROTO__((Lc_t*, unsigned long flags, char*, size_t));
149*4887Schin extern __MANGLE__ Lc_category_t*	lccategories __PROTO__((void));
150*4887Schin extern __MANGLE__ int		lcindex __PROTO__((int, int));
151*4887Schin extern __MANGLE__ Lc_info_t*	lcinfo __PROTO__((int));
152*4887Schin extern __MANGLE__ Lc_t*		lcmake __PROTO__((const char*));
153*4887Schin extern __MANGLE__ Lc_t*		lcscan __PROTO__((Lc_t*));
154*4887Schin 
155*4887Schin #undef __MANGLE__
156*4887Schin #define __MANGLE__ __LINKAGE__
157*4887Schin 
158*4887Schin #endif
159