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 #ifndef MBFL_MBFILTER_H
90 #define MBFL_MBFILTER_H
91
92 #include "mbfl_defs.h"
93 #include "mbfl_consts.h"
94 #include "mbfl_allocators.h"
95 #include "mbfl_encoding.h"
96 #include "mbfl_language.h"
97 #include "mbfl_string.h"
98 #include "mbfl_convert.h"
99 #include "mbfl_ident.h"
100
101
102
103
104 #define MBFL_VERSION_MAJOR 1
105 #define MBFL_VERSION_MINOR 3
106 #define MBFL_VERSION_TEENY 2
107
108
109
110
111 #define MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE 0
112 #define MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR 1
113 #define MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG 2
114 #define MBFL_OUTPUTFILTER_ILLEGAL_MODE_ENTITY 3
115
116
117
118
119 typedef struct _mbfl_buffer_converter mbfl_buffer_converter;
120
121 struct _mbfl_buffer_converter {
122 mbfl_convert_filter *filter1;
123 mbfl_convert_filter *filter2;
124 mbfl_memory_device device;
125 const mbfl_encoding *from;
126 const mbfl_encoding *to;
127 };
128
129 MBFLAPI extern mbfl_buffer_converter * mbfl_buffer_converter_new(enum mbfl_no_encoding from, enum mbfl_no_encoding to, int buf_initsz);
130 MBFLAPI extern mbfl_buffer_converter * mbfl_buffer_converter_new2(const mbfl_encoding *from, const mbfl_encoding *to, int buf_initsz);
131 MBFLAPI extern void mbfl_buffer_converter_delete(mbfl_buffer_converter *convd);
132 MBFLAPI extern void mbfl_buffer_converter_reset(mbfl_buffer_converter *convd);
133 MBFLAPI extern int mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode);
134 MBFLAPI extern int mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar);
135 MBFLAPI extern int mbfl_buffer_converter_strncat(mbfl_buffer_converter *convd, const unsigned char *p, int n);
136 MBFLAPI extern int mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *string);
137 MBFLAPI extern int mbfl_buffer_converter_feed2(mbfl_buffer_converter *convd, mbfl_string *string, int *loc);
138 MBFLAPI extern int mbfl_buffer_converter_flush(mbfl_buffer_converter *convd);
139 MBFLAPI extern mbfl_string * mbfl_buffer_converter_getbuffer(mbfl_buffer_converter *convd, mbfl_string *result);
140 MBFLAPI extern mbfl_string * mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result);
141 MBFLAPI extern mbfl_string * mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *string, mbfl_string *result);
142 MBFLAPI extern int mbfl_buffer_illegalchars(mbfl_buffer_converter *convd);
143
144
145
146
147 typedef struct _mbfl_encoding_detector mbfl_encoding_detector;
148
149 struct _mbfl_encoding_detector {
150 mbfl_identify_filter **filter_list;
151 int filter_list_size;
152 int strict;
153 };
154
155 MBFLAPI extern mbfl_encoding_detector * mbfl_encoding_detector_new(enum mbfl_no_encoding *elist, int elistsz, int strict);
156 MBFLAPI extern mbfl_encoding_detector * mbfl_encoding_detector_new2(const mbfl_encoding **elist, int elistsz, int strict);
157 MBFLAPI extern void mbfl_encoding_detector_delete(mbfl_encoding_detector *identd);
158 MBFLAPI extern int mbfl_encoding_detector_feed(mbfl_encoding_detector *identd, mbfl_string *string);
159 MBFLAPI extern enum mbfl_no_encoding mbfl_encoding_detector_judge(mbfl_encoding_detector *identd);
160 MBFLAPI extern const mbfl_encoding *mbfl_encoding_detector_judge2(mbfl_encoding_detector *identd);
161
162
163
164
165
166 MBFLAPI extern mbfl_string *
167 mbfl_convert_encoding(mbfl_string *string, mbfl_string *result, enum mbfl_no_encoding toenc);
168
169
170
171
172
173 MBFLAPI extern const mbfl_encoding *
174 mbfl_identify_encoding(mbfl_string *string, enum mbfl_no_encoding *elist, int elistsz, int strict);
175
176 MBFLAPI extern const mbfl_encoding *
177 mbfl_identify_encoding2(mbfl_string *string, const mbfl_encoding **elist, int elistsz, int strict);
178
179
180
181 MBFLAPI extern int
182 mbfl_strlen(mbfl_string *string);
183
184
185
186
187 MBFLAPI extern int
188 mbfl_oddlen(mbfl_string *string);
189
190
191
192
193 MBFLAPI extern int
194 mbfl_strpos(mbfl_string *haystack, mbfl_string *needle, int offset, int reverse);
195
196
197
198
199
200 MBFLAPI extern int
201 mbfl_substr_count(mbfl_string *haystack, mbfl_string *needle);
202
203
204
205
206 MBFLAPI extern mbfl_string *
207 mbfl_substr(mbfl_string *string, mbfl_string *result, int from, int length);
208
209
210
211
212 MBFLAPI extern mbfl_string *
213 mbfl_strcut(mbfl_string *string, mbfl_string *result, int from, int length);
214
215
216
217
218 MBFLAPI extern int
219 mbfl_strwidth(mbfl_string *string);
220
221
222
223
224 MBFLAPI extern mbfl_string *
225 mbfl_strimwidth(mbfl_string *string, mbfl_string *marker, mbfl_string *result, int from, int width);
226
227
228
229
230 struct mime_header_encoder_data;
231
232 MBFLAPI extern struct mime_header_encoder_data *
233 mime_header_encoder_new(
234 enum mbfl_no_encoding incode,
235 enum mbfl_no_encoding outcode,
236 enum mbfl_no_encoding encoding);
237
238 MBFLAPI extern void
239 mime_header_encoder_delete(struct mime_header_encoder_data *pe);
240
241 MBFLAPI extern int
242 mime_header_encoder_feed(int c, struct mime_header_encoder_data *pe);
243
244 MBFLAPI extern mbfl_string *
245 mime_header_encoder_result(struct mime_header_encoder_data *pe, mbfl_string *result);
246
247 MBFLAPI extern mbfl_string *
248 mbfl_mime_header_encode(
249 mbfl_string *string, mbfl_string *result,
250 enum mbfl_no_encoding outcode,
251 enum mbfl_no_encoding encoding,
252 const char *linefeed,
253 int indent);
254
255
256
257
258 struct mime_header_decoder_data;
259
260 MBFLAPI extern struct mime_header_decoder_data *
261 mime_header_decoder_new(enum mbfl_no_encoding outcode);
262
263 MBFLAPI extern void
264 mime_header_decoder_delete(struct mime_header_decoder_data *pd);
265
266 MBFLAPI extern int
267 mime_header_decoder_feed(int c, struct mime_header_decoder_data *pd);
268
269 MBFLAPI extern mbfl_string *
270 mime_header_decoder_result(struct mime_header_decoder_data *pd, mbfl_string *result);
271
272 MBFLAPI extern mbfl_string *
273 mbfl_mime_header_decode(
274 mbfl_string *string,
275 mbfl_string *result,
276 enum mbfl_no_encoding outcode);
277
278
279
280
281 MBFLAPI extern mbfl_string *
282 mbfl_html_numeric_entity(mbfl_string *string, mbfl_string *result, int *convmap, int mapsize, int type);
283
284
285
286
287 MBFLAPI extern mbfl_string *
288 mbfl_ja_jp_hantozen(mbfl_string *string, mbfl_string *result, int mode);
289
290 #endif