summaryrefslogtreecommitdiff
path: root/usr/src/lib/libast/amd64/include/ast/lc.h
blob: 65fdab45abc0e454b4b6298f9bad8f46ee4d88ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/***********************************************************************
*                                                                      *
*               This software is part of the ast package               *
*          Copyright (c) 1985-2010 AT&T Intellectual Property          *
*                      and is licensed under the                       *
*                  Common Public License, Version 1.0                  *
*                    by AT&T Intellectual Property                     *
*                                                                      *
*                A copy of the License is available at                 *
*            http://www.opensource.org/licenses/cpl1.0.txt             *
*         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
*                                                                      *
*              Information and Software Systems Research               *
*                            AT&T Research                             *
*                           Florham Park NJ                            *
*                                                                      *
*                 Glenn Fowler <gsf@research.att.com>                  *
*                  David Korn <dgk@research.att.com>                   *
*                   Phong Vo <kpv@research.att.com>                    *
*                                                                      *
***********************************************************************/

/* : : generated by proto : : */
/* : : generated by ./lcgen : : */
                  

#ifndef _LC_H
#if !defined(__PROTO__)
#include <prototyped.h>
#endif
#if !defined(__LINKAGE__)
#define __LINKAGE__		/* 2004-08-11 transition */
#endif

#define _LC_H			1

#include <ast.h>

#define LC_abbreviated		0x00001
#define LC_checked		0x00002
#define LC_debug		0x00004
#define LC_default		0x00008
#define LC_defined		0x00010
#define LC_local		0x00020
#define LC_primary		0x00040
#define LC_qualified		0x00080
#define LC_undefined		0x00100
#define LC_utf8			0x00200
#define LC_verbose		0x00400
#define LC_setlocale			0x10000
#define LC_setenv			0x20000
#define LC_user			0x40000
#define LC_language_attribute_max		2
#define LC_territory_language_max		4

struct Lc_s;

typedef struct Lc_info_s
{
	const struct Lc_s*	lc;
	unsigned long		number;
	__V_*			data;
} Lc_info_t;

typedef struct Lc_attribute_s
{
	const char*		name;
	unsigned long		flags;
	unsigned long		index;
} Lc_attribute_t;

typedef struct Lc_charset_s
{
	const char*		code;
	const char*		alternates;
	const char*		ms;
	unsigned long		index;
} Lc_charset_t;

typedef struct Lc_language_s
{
	const char*		code;
	const char*		name;
	const char*		alternates;
	const Lc_charset_t*	charset;
	unsigned long		flags;
	unsigned long		index;
	const Lc_attribute_t*	attributes[LC_language_attribute_max];
} Lc_language_t;

typedef struct Lc_territory_s
{
	const char*		code;
	const char*		name;
	unsigned long		flags;
	unsigned long		index;
	const Lc_language_t*	languages[LC_territory_language_max];
#ifdef _LC_TERRITORY_PRIVATE_
	_LC_TERRITORY_PRIVATE_
#endif
} Lc_territory_t;

typedef struct Lc_map_s
{
	const char*		code;
	const Lc_language_t*	language;
	const Lc_territory_t*	territory;
	const Lc_charset_t*	charset;
	const Lc_attribute_t*	attribute;
} Lc_map_t;

typedef struct Lc_attribute_list_s
{
	struct Lc_attribute_list_s*	next;
	const Lc_attribute_t*		attribute;
} Lc_attribute_list_t;

typedef struct Lc_s
{
	const char*		name;
	const char*		code;
	const Lc_language_t*	language;
	const Lc_territory_t*	territory;
	const Lc_charset_t*	charset;
	const Lc_attribute_list_t*	attributes;
	unsigned long		flags;
	unsigned long		index;
#ifdef _LC_PRIVATE_
	_LC_PRIVATE_
#endif
} Lc_t;

struct Lc_category_s;

typedef int (*Lc_category_set_f) __PROTO__((struct Lc_category_s*));

typedef struct Lc_category_s
{
	const char*		name;
	int			external;
	int			internal;
	Lc_category_set_f	setf;
	Lc_t*			prev;
	unsigned int		flags;
} Lc_category_t;

#if _BLD_ast && defined(__EXPORT__)
#undef __MANGLE__
#define __MANGLE__ __LINKAGE__		__EXPORT__
#endif

extern __MANGLE__ size_t		lccanon __PROTO__((Lc_t*, unsigned long flags, char*, size_t));
extern __MANGLE__ Lc_category_t*	lccategories __PROTO__((void));
extern __MANGLE__ int		lcindex __PROTO__((int, int));
extern __MANGLE__ Lc_info_t*	lcinfo __PROTO__((int));
extern __MANGLE__ Lc_t*		lcmake __PROTO__((const char*));
extern __MANGLE__ Lc_t*		lcscan __PROTO__((Lc_t*));

#undef __MANGLE__
#define __MANGLE__ __LINKAGE__

#endif