summaryrefslogtreecommitdiff
path: root/usr/src/cmd/ast/libast/i386/lc.h
blob: 024f410dfc3fbb20c09a7c47f92b18cd20464097 (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
/* : : generated by cmd/ast/tools/lcgen : : */
#pragma prototyped

#ifndef _LC_H
#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;
	void*			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)(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__)
#define extern		__EXPORT__
#endif

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

#undef	extern

#endif