blob: bbf1f42ae60e70cda0ef72c0446e9ea42be42d52 (
plain) (
blame)
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
|
#ifndef _WC_TYPES_H
#define _WC_TYPES_H
#include <Str.h>
#include <config.h>
#if defined(HAVE_STDINT_H)
# include <stdint.h>
#elif defined(HAVE_INTTYPES_H)
# include <inttypes.h>
#endif
typedef unsigned char wc_uchar;
#if defined(HAVE_STDINT_H) || defined(HAVE_INTTYPES_H)
typedef uint8_t wc_uint8;
typedef uint16_t wc_uint16;
typedef uint32_t wc_uint32;
#else
typedef unsigned char wc_uint8;
typedef unsigned short wc_uint16;
typedef unsigned long wc_uint32;
#endif
typedef wc_uint32 wc_ccs;
typedef wc_uint32 wc_ces;
typedef wc_uint32 wc_locale;
typedef wc_uchar wc_bool;
typedef struct {
wc_ccs ccs;
wc_uint32 code;
} wc_wchar_t;
typedef struct {
wc_uint16 code;
wc_uint16 code2;
} wc_map;
typedef struct {
wc_uint16 code;
wc_uint16 code2;
wc_uint16 code3;
} wc_map3;
typedef struct {
wc_ccs ccs;
size_t n;
wc_map *map;
wc_wchar_t (*conv)();
} wc_table;
typedef struct {
wc_ccs ccs;
wc_uchar g;
wc_bool init;
} wc_gset;
typedef struct {
wc_ces id;
char *name;
char *desc;
wc_gset *gset;
wc_uchar *gset_ext;
Str (*conv_from)();
void (*push_to)();
Str (*char_conv)();
} wc_ces_info;
typedef struct {
wc_ces id;
char *name;
char *desc;
} wc_ces_list;
typedef struct {
wc_uint8 auto_detect; /* automatically charset detect */
wc_bool use_combining; /* use combining characters */
wc_bool use_language_tag; /* use language_tags */
wc_bool ucs_conv; /* charset conversion using Unicode */
wc_bool pre_conv; /* previously charset conversion */
wc_bool fix_width_conv; /* not allowed conversion between different
width charsets */
wc_bool use_gb12345_map; /* use GB 12345 Unicode map instead of
GB 2312 Unicode map */
wc_bool use_jisx0201; /* use JIS X 0201 Roman instead of US_ASCII */
wc_bool use_jisc6226; /* use JIS C 6226:1978 instead of JIS X 0208 */
wc_bool use_jisx0201k; /* use JIS X 0201 Katakana */
wc_bool use_jisx0212; /* use JIS X 0212 */
wc_bool use_jisx0213; /* use JIS X 0213 */
wc_bool strict_iso2022; /* strict ISO 2022 */
wc_bool gb18030_as_ucs; /* treat 4 bytes char. of GB18030 as Unicode */
wc_bool no_replace; /* don't output replace character */
wc_bool use_wide; /* use wide characters */
wc_bool east_asian_width; /* East Asian Ambiguous characters are wide */
} wc_option;
typedef struct {
wc_ces_info *ces_info;
wc_uint8 gr;
wc_uint8 gl;
wc_uint8 ss;
wc_ccs g0_ccs;
wc_ccs g1_ccs;
wc_ccs design[4];
#ifdef USE_UNICODE
wc_table **tlist;
wc_table **tlistw;
#endif
int state;
#ifdef USE_UNICODE
Str tag;
int ntag;
wc_uint32 base;
int shift;
#endif
} wc_status;
#endif
|