mochilo 1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +9 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +30 -0
- data/README.md +56 -0
- data/Rakefile +33 -0
- data/docs/format-spec.md +46 -0
- data/docs/why-banana-pack.md +25 -0
- data/ext/mochilo/buffer.c +141 -0
- data/ext/mochilo/buffer.h +146 -0
- data/ext/mochilo/encodings.h +400 -0
- data/ext/mochilo/extconf.rb +5 -0
- data/ext/mochilo/mochilo.h +158 -0
- data/ext/mochilo/mochilo.rb.c +119 -0
- data/ext/mochilo/mochilo_api.h +91 -0
- data/ext/mochilo/mochilo_pack.c +331 -0
- data/ext/mochilo/mochilo_unpack.c +279 -0
- data/genperf.rb +14 -0
- data/lib/mochilo.rb +11 -0
- data/lib/mochilo/console.rb +5 -0
- data/lib/mochilo/version.rb +3 -0
- data/mochilo.gemspec +24 -0
- data/script/benchmark +43 -0
- data/script/bootstrap +16 -0
- data/script/console +7 -0
- data/script/testsuite +10 -0
- data/test/assets/pulls.json +6934 -0
- data/test/pack_test.rb +172 -0
- data/test/setup.rb +16 -0
- data/test/unpack_test.rb +159 -0
- metadata +116 -0
@@ -0,0 +1,400 @@
|
|
1
|
+
/* C code produced by gperf version 3.0.3 */
|
2
|
+
/* Command-line: gperf */
|
3
|
+
/* Computed positions: -k'3-5,7,$' */
|
4
|
+
|
5
|
+
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
|
6
|
+
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
|
7
|
+
&& (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
|
8
|
+
&& ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
|
9
|
+
&& ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
|
10
|
+
&& ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
|
11
|
+
&& ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
|
12
|
+
&& ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
|
13
|
+
&& ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
|
14
|
+
&& ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
|
15
|
+
&& ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
|
16
|
+
&& ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
|
17
|
+
&& ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
|
18
|
+
&& ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
|
19
|
+
&& ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
|
20
|
+
&& ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
|
21
|
+
&& ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
|
22
|
+
&& ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
|
23
|
+
&& ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
|
24
|
+
&& ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
|
25
|
+
&& ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
|
26
|
+
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
|
27
|
+
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
|
28
|
+
/* The character set is not based on ISO-646. */
|
29
|
+
error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
|
30
|
+
#endif
|
31
|
+
|
32
|
+
struct mochilo_enc_map { const char *name; uint8_t id; };
|
33
|
+
/* maximum key range = 326, duplicates = 0 */
|
34
|
+
|
35
|
+
#ifdef __GNUC__
|
36
|
+
__inline
|
37
|
+
#else
|
38
|
+
#ifdef __cplusplus
|
39
|
+
inline
|
40
|
+
#endif
|
41
|
+
#endif
|
42
|
+
static unsigned int
|
43
|
+
mochilo_encoding_hash (str, len)
|
44
|
+
register const char *str;
|
45
|
+
register unsigned int len;
|
46
|
+
{
|
47
|
+
static const unsigned short asso_values[] =
|
48
|
+
{
|
49
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
50
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
51
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
52
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
53
|
+
336, 336, 336, 336, 336, 5, 336, 336, 40, 50,
|
54
|
+
30, 55, 90, 5, 0, 60, 10, 80, 336, 336,
|
55
|
+
336, 336, 336, 336, 336, 10, 10, 15, 0, 0,
|
56
|
+
90, 0, 336, 105, 12, 110, 0, 0, 336, 5,
|
57
|
+
30, 336, 10, 0, 0, 35, 336, 17, 336, 336,
|
58
|
+
336, 336, 336, 336, 336, 336, 336, 0, 336, 0,
|
59
|
+
0, 5, 85, 0, 0, 70, 336, 0, 20, 5,
|
60
|
+
0, 0, 336, 336, 12, 0, 0, 0, 336, 336,
|
61
|
+
336, 70, 336, 336, 336, 336, 336, 336, 336, 336,
|
62
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
63
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
64
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
65
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
66
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
67
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
68
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
69
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
70
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
71
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
72
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
73
|
+
336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
|
74
|
+
336, 336, 336, 336, 336, 336
|
75
|
+
};
|
76
|
+
register int hval = len;
|
77
|
+
|
78
|
+
switch (hval)
|
79
|
+
{
|
80
|
+
default:
|
81
|
+
hval += asso_values[(unsigned char)str[6]];
|
82
|
+
/*FALLTHROUGH*/
|
83
|
+
case 6:
|
84
|
+
case 5:
|
85
|
+
hval += asso_values[(unsigned char)str[4]];
|
86
|
+
/*FALLTHROUGH*/
|
87
|
+
case 4:
|
88
|
+
hval += asso_values[(unsigned char)str[3]];
|
89
|
+
/*FALLTHROUGH*/
|
90
|
+
case 3:
|
91
|
+
hval += asso_values[(unsigned char)str[2]];
|
92
|
+
break;
|
93
|
+
}
|
94
|
+
return hval + asso_values[(unsigned char)str[len - 1]];
|
95
|
+
}
|
96
|
+
|
97
|
+
static const char *mochilo_enc_lookup[] = {
|
98
|
+
"UTF-8",
|
99
|
+
"US-ASCII",
|
100
|
+
"Big5",
|
101
|
+
"Big5-HKSCS",
|
102
|
+
"Big5-UAO",
|
103
|
+
"CP949",
|
104
|
+
"Emacs-Mule",
|
105
|
+
"EUC-JP",
|
106
|
+
"EUC-KR",
|
107
|
+
"EUC-TW",
|
108
|
+
"GB18030",
|
109
|
+
"GBK",
|
110
|
+
"ISO-8859-1",
|
111
|
+
"ISO-8859-2",
|
112
|
+
"ISO-8859-3",
|
113
|
+
"ISO-8859-4",
|
114
|
+
"ISO-8859-5",
|
115
|
+
"ISO-8859-6",
|
116
|
+
"ISO-8859-7",
|
117
|
+
"ISO-8859-8",
|
118
|
+
"ISO-8859-9",
|
119
|
+
"ISO-8859-10",
|
120
|
+
"ISO-8859-11",
|
121
|
+
"ISO-8859-13",
|
122
|
+
"ISO-8859-14",
|
123
|
+
"ISO-8859-15",
|
124
|
+
"ISO-8859-16",
|
125
|
+
"KOI8-R",
|
126
|
+
"KOI8-U",
|
127
|
+
"Shift_JIS",
|
128
|
+
"UTF-16BE",
|
129
|
+
"UTF-16LE",
|
130
|
+
"UTF-32BE",
|
131
|
+
"UTF-32LE",
|
132
|
+
"Windows-1251",
|
133
|
+
"IBM437",
|
134
|
+
"IBM737",
|
135
|
+
"IBM775",
|
136
|
+
"CP850",
|
137
|
+
"IBM852",
|
138
|
+
"CP852",
|
139
|
+
"IBM855",
|
140
|
+
"CP855",
|
141
|
+
"IBM857",
|
142
|
+
"IBM860",
|
143
|
+
"IBM861",
|
144
|
+
"IBM862",
|
145
|
+
"IBM863",
|
146
|
+
"IBM864",
|
147
|
+
"IBM865",
|
148
|
+
"IBM866",
|
149
|
+
"IBM869",
|
150
|
+
"Windows-1258",
|
151
|
+
"GB1988",
|
152
|
+
"macCentEuro",
|
153
|
+
"macCroatian",
|
154
|
+
"macCyrillic",
|
155
|
+
"macGreek",
|
156
|
+
"macIceland",
|
157
|
+
"macRoman",
|
158
|
+
"macRomania",
|
159
|
+
"macThai",
|
160
|
+
"macTurkish",
|
161
|
+
"macUkraine",
|
162
|
+
"CP950",
|
163
|
+
"CP951",
|
164
|
+
"stateless-ISO-2022-JP",
|
165
|
+
"eucJP-ms",
|
166
|
+
"CP51932",
|
167
|
+
"GB2312",
|
168
|
+
"GB12345",
|
169
|
+
"ISO-2022-JP",
|
170
|
+
"ISO-2022-JP-2",
|
171
|
+
"CP50220",
|
172
|
+
"CP50221",
|
173
|
+
"Windows-1252",
|
174
|
+
"Windows-1250",
|
175
|
+
"Windows-1256",
|
176
|
+
"Windows-1253",
|
177
|
+
"Windows-1255",
|
178
|
+
"Windows-1254",
|
179
|
+
"TIS-620",
|
180
|
+
"Windows-874",
|
181
|
+
"Windows-1257",
|
182
|
+
"Windows-31J",
|
183
|
+
"MacJapanese",
|
184
|
+
"UTF-7",
|
185
|
+
"UTF8-MAC",
|
186
|
+
"UTF-16",
|
187
|
+
"UTF-32",
|
188
|
+
"UTF8-DoCoMo",
|
189
|
+
"SJIS-DoCoMo",
|
190
|
+
"UTF8-KDDI",
|
191
|
+
"SJIS-KDDI",
|
192
|
+
"ISO-2022-JP-KDDI",
|
193
|
+
"stateless-ISO-2022-JP-KDDI",
|
194
|
+
"UTF8-SoftBank",
|
195
|
+
"SJIS-SoftBank"
|
196
|
+
};
|
197
|
+
|
198
|
+
|
199
|
+
#ifdef __GNUC__
|
200
|
+
__inline
|
201
|
+
#ifdef __GNUC_STDC_INLINE__
|
202
|
+
__attribute__ ((__gnu_inline__))
|
203
|
+
#endif
|
204
|
+
#endif
|
205
|
+
static const struct mochilo_enc_map *
|
206
|
+
mochilo_encoding_to_id (str, len)
|
207
|
+
register const char *str;
|
208
|
+
register unsigned int len;
|
209
|
+
{
|
210
|
+
enum
|
211
|
+
{
|
212
|
+
TOTAL_KEYWORDS = 99,
|
213
|
+
MIN_WORD_LENGTH = 3,
|
214
|
+
MAX_WORD_LENGTH = 26,
|
215
|
+
MIN_HASH_VALUE = 10,
|
216
|
+
MAX_HASH_VALUE = 335
|
217
|
+
};
|
218
|
+
|
219
|
+
static const struct mochilo_enc_map wordlist[] =
|
220
|
+
{
|
221
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
222
|
+
{""},
|
223
|
+
{"macTurkish", MSGPACK_ENC_MACTURKISH},
|
224
|
+
{""},
|
225
|
+
{"Windows-1256", MSGPACK_ENC_WINDOWS_1256},
|
226
|
+
{""},
|
227
|
+
{"Big5", MSGPACK_ENC_BIG5},
|
228
|
+
{"Emacs-Mule", MSGPACK_ENC_EMACS_MULE},
|
229
|
+
{"IBM866", MSGPACK_ENC_IBM866},
|
230
|
+
{"Windows-1255", MSGPACK_ENC_WINDOWS_1255},
|
231
|
+
{"macRoman", MSGPACK_ENC_MACROMAN},
|
232
|
+
{""},
|
233
|
+
{"macRomania", MSGPACK_ENC_MACROMANIA},
|
234
|
+
{"IBM865", MSGPACK_ENC_IBM865},
|
235
|
+
{"Windows-1258", MSGPACK_ENC_WINDOWS_1258},
|
236
|
+
{"Windows-31J", MSGPACK_ENC_WINDOWS_31J},
|
237
|
+
{""},
|
238
|
+
{"macGreek", MSGPACK_ENC_MACGREEK},
|
239
|
+
{"IBM855", MSGPACK_ENC_IBM855},
|
240
|
+
{""},
|
241
|
+
{"MacJapanese", MSGPACK_ENC_MACJAPANESE},
|
242
|
+
{""},
|
243
|
+
{"CP855", MSGPACK_ENC_CP855},
|
244
|
+
{"macCentEuro", MSGPACK_ENC_MACCENTEURO},
|
245
|
+
{""},
|
246
|
+
{"Big5-UAO", MSGPACK_ENC_BIG5_UAO},
|
247
|
+
{""},
|
248
|
+
{"ISO-8859-6", MSGPACK_ENC_ISO_8859_6},
|
249
|
+
{"ISO-8859-16", MSGPACK_ENC_ISO_8859_16},
|
250
|
+
{""},
|
251
|
+
{"macCroatian", MSGPACK_ENC_MACCROATIAN},
|
252
|
+
{""},
|
253
|
+
{"ISO-8859-5", MSGPACK_ENC_ISO_8859_5},
|
254
|
+
{"ISO-8859-15", MSGPACK_ENC_ISO_8859_15},
|
255
|
+
{"Windows-1252", MSGPACK_ENC_WINDOWS_1252},
|
256
|
+
{"EUC-TW", MSGPACK_ENC_EUC_TW},
|
257
|
+
{""},
|
258
|
+
{"ISO-8859-8", MSGPACK_ENC_ISO_8859_8},
|
259
|
+
{"IBM862", MSGPACK_ENC_IBM862},
|
260
|
+
{""}, {""}, {""},
|
261
|
+
{"macUkraine", MSGPACK_ENC_MACUKRAINE},
|
262
|
+
{"IBM852", MSGPACK_ENC_IBM852},
|
263
|
+
{"Windows-1250", MSGPACK_ENC_WINDOWS_1250},
|
264
|
+
{""}, {""},
|
265
|
+
{"eucJP-ms", MSGPACK_ENC_EUCJP_MS},
|
266
|
+
{"IBM860", MSGPACK_ENC_IBM860},
|
267
|
+
{""}, {""}, {""}, {""},
|
268
|
+
{"stateless-ISO-2022-JP", MSGPACK_ENC_STATELESS_ISO_2022_JP},
|
269
|
+
{"Windows-1251", MSGPACK_ENC_WINDOWS_1251},
|
270
|
+
{""}, {""},
|
271
|
+
{"ISO-8859-2", MSGPACK_ENC_ISO_8859_2},
|
272
|
+
{"IBM861", MSGPACK_ENC_IBM861},
|
273
|
+
{"Windows-1253", MSGPACK_ENC_WINDOWS_1253},
|
274
|
+
{"EUC-JP", MSGPACK_ENC_EUC_JP},
|
275
|
+
{""}, {""},
|
276
|
+
{"IBM863", MSGPACK_ENC_IBM863},
|
277
|
+
{"Windows-1257", MSGPACK_ENC_WINDOWS_1257},
|
278
|
+
{""}, {""}, {""},
|
279
|
+
{"ISO-8859-10", MSGPACK_ENC_ISO_8859_10},
|
280
|
+
{""}, {""}, {""},
|
281
|
+
{"CP852", MSGPACK_ENC_CP852},
|
282
|
+
{"IBM857", MSGPACK_ENC_IBM857},
|
283
|
+
{""}, {""}, {""},
|
284
|
+
{"ISO-8859-1", MSGPACK_ENC_ISO_8859_1},
|
285
|
+
{"ISO-8859-11", MSGPACK_ENC_ISO_8859_11},
|
286
|
+
{""}, {""}, {""},
|
287
|
+
{"ISO-8859-3", MSGPACK_ENC_ISO_8859_3},
|
288
|
+
{"ISO-8859-13", MSGPACK_ENC_ISO_8859_13},
|
289
|
+
{"TIS-620", MSGPACK_ENC_TIS_620},
|
290
|
+
{""}, {""},
|
291
|
+
{"ISO-8859-7", MSGPACK_ENC_ISO_8859_7},
|
292
|
+
{"IBM869", MSGPACK_ENC_IBM869},
|
293
|
+
{""}, {""}, {""},
|
294
|
+
{"CP850", MSGPACK_ENC_CP850},
|
295
|
+
{"Windows-874", MSGPACK_ENC_WINDOWS_874},
|
296
|
+
{"Windows-1254", MSGPACK_ENC_WINDOWS_1254},
|
297
|
+
{""}, {""}, {""},
|
298
|
+
{"IBM864", MSGPACK_ENC_IBM864},
|
299
|
+
{""}, {""}, {""}, {""},
|
300
|
+
{"ISO-2022-JP", MSGPACK_ENC_ISO_2022_JP},
|
301
|
+
{""},
|
302
|
+
{"ISO-2022-JP-2", MSGPACK_ENC_ISO_2022_JP_2},
|
303
|
+
{""},
|
304
|
+
{"ISO-8859-9", MSGPACK_ENC_ISO_8859_9},
|
305
|
+
{"UTF8-DoCoMo", MSGPACK_ENC_UTF8_DOCOMO},
|
306
|
+
{""},
|
307
|
+
{"UTF8-SoftBank", MSGPACK_ENC_UTF8_SOFTBANK},
|
308
|
+
{""},
|
309
|
+
{"UTF-8", MSGPACK_ENC_UTF_8},
|
310
|
+
{"SJIS-DoCoMo", MSGPACK_ENC_SJIS_DOCOMO},
|
311
|
+
{""},
|
312
|
+
{"SJIS-SoftBank", MSGPACK_ENC_SJIS_SOFTBANK},
|
313
|
+
{""},
|
314
|
+
{"ISO-8859-4", MSGPACK_ENC_ISO_8859_4},
|
315
|
+
{"ISO-8859-14", MSGPACK_ENC_ISO_8859_14},
|
316
|
+
{""}, {""}, {""},
|
317
|
+
{"Big5-HKSCS", MSGPACK_ENC_BIG5_HKSCS},
|
318
|
+
{"IBM775", MSGPACK_ENC_IBM775},
|
319
|
+
{""}, {""}, {""},
|
320
|
+
{"macIceland", MSGPACK_ENC_MACICELAND},
|
321
|
+
{"KOI8-R", MSGPACK_ENC_KOI8_R},
|
322
|
+
{""},
|
323
|
+
{"UTF8-MAC", MSGPACK_ENC_UTF8_MAC},
|
324
|
+
{""}, {""},
|
325
|
+
{"stateless-ISO-2022-JP-KDDI", MSGPACK_ENC_STATELESS_ISO_2022_JP_KDDI},
|
326
|
+
{""}, {""}, {""}, {""},
|
327
|
+
{"EUC-KR", MSGPACK_ENC_EUC_KR},
|
328
|
+
{"macThai", MSGPACK_ENC_MACTHAI},
|
329
|
+
{""}, {""}, {""},
|
330
|
+
{"UTF-16", MSGPACK_ENC_UTF_16},
|
331
|
+
{"GB12345", MSGPACK_ENC_GB12345},
|
332
|
+
{"UTF-16LE", MSGPACK_ENC_UTF_16LE},
|
333
|
+
{""}, {""},
|
334
|
+
{"GB1988", MSGPACK_ENC_GB1988},
|
335
|
+
{""},
|
336
|
+
{"UTF-32LE", MSGPACK_ENC_UTF_32LE},
|
337
|
+
{""}, {""},
|
338
|
+
{"KOI8-U", MSGPACK_ENC_KOI8_U},
|
339
|
+
{"CP50220", MSGPACK_ENC_CP50220},
|
340
|
+
{"UTF-16BE", MSGPACK_ENC_UTF_16BE},
|
341
|
+
{""}, {""},
|
342
|
+
{"macCyrillic", MSGPACK_ENC_MACCYRILLIC},
|
343
|
+
{""},
|
344
|
+
{"UTF-32BE", MSGPACK_ENC_UTF_32BE},
|
345
|
+
{""},
|
346
|
+
{"CP950", MSGPACK_ENC_CP950},
|
347
|
+
{"GB2312", MSGPACK_ENC_GB2312},
|
348
|
+
{""}, {""}, {""}, {""},
|
349
|
+
{"Shift_JIS", MSGPACK_ENC_SHIFT_JIS},
|
350
|
+
{""}, {""}, {""}, {""},
|
351
|
+
{"IBM737", MSGPACK_ENC_IBM737},
|
352
|
+
{"CP50221", MSGPACK_ENC_CP50221},
|
353
|
+
{""}, {""}, {""},
|
354
|
+
{"UTF-32", MSGPACK_ENC_UTF_32},
|
355
|
+
{"GB18030", MSGPACK_ENC_GB18030},
|
356
|
+
{""}, {""},
|
357
|
+
{"CP951", MSGPACK_ENC_CP951},
|
358
|
+
{"ISO-2022-JP-KDDI", MSGPACK_ENC_ISO_2022_JP_KDDI},
|
359
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
360
|
+
{""},
|
361
|
+
{"CP51932", MSGPACK_ENC_CP51932},
|
362
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
363
|
+
{"IBM437", MSGPACK_ENC_IBM437},
|
364
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""},
|
365
|
+
{"UTF8-KDDI", MSGPACK_ENC_UTF8_KDDI},
|
366
|
+
{"UTF-7", MSGPACK_ENC_UTF_7},
|
367
|
+
{""}, {""},
|
368
|
+
{"GBK", MSGPACK_ENC_GBK},
|
369
|
+
{"SJIS-KDDI", MSGPACK_ENC_SJIS_KDDI},
|
370
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
371
|
+
{"US-ASCII", MSGPACK_ENC_US_ASCII},
|
372
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
373
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
374
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
375
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
376
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
377
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
378
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
379
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
380
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
381
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
382
|
+
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
383
|
+
{""}, {""},
|
384
|
+
{"CP949", MSGPACK_ENC_CP949}
|
385
|
+
};
|
386
|
+
|
387
|
+
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
388
|
+
{
|
389
|
+
register int key = mochilo_encoding_hash (str, len);
|
390
|
+
|
391
|
+
if (key <= MAX_HASH_VALUE && key >= 0)
|
392
|
+
{
|
393
|
+
register const char *s = wordlist[key].name;
|
394
|
+
|
395
|
+
if (*str == *s && !strcmp (str + 1, s + 1))
|
396
|
+
return &wordlist[key];
|
397
|
+
}
|
398
|
+
}
|
399
|
+
return 0;
|
400
|
+
}
|
@@ -0,0 +1,158 @@
|
|
1
|
+
#ifndef __MOCHILO_H__
|
2
|
+
#define __MOCHILO_H__
|
3
|
+
|
4
|
+
#define RSTRING_NOT_MODIFIED
|
5
|
+
#include <ruby.h>
|
6
|
+
#if defined(HAVE_RUBY_ST_H)
|
7
|
+
#include <ruby/st.h>
|
8
|
+
#else
|
9
|
+
#include <st.h>
|
10
|
+
#endif
|
11
|
+
|
12
|
+
#include "buffer.h"
|
13
|
+
|
14
|
+
#define MOAPI static inline
|
15
|
+
|
16
|
+
enum msgpack_t {
|
17
|
+
MSGPACK_T_NIL = 0xc0,
|
18
|
+
MSGPACK_T_FALSE = 0xc2,
|
19
|
+
MSGPACK_T_TRUE = 0xc3,
|
20
|
+
MSGPACK_T_FLOAT = 0xca,
|
21
|
+
MSGPACK_T_DOUBLE = 0xcb,
|
22
|
+
MSGPACK_T_UINT8 = 0xcc,
|
23
|
+
MSGPACK_T_UINT16 = 0xcd,
|
24
|
+
MSGPACK_T_UINT32 = 0xce,
|
25
|
+
MSGPACK_T_UINT64 = 0xcf,
|
26
|
+
MSGPACK_T_INT8 = 0xd0,
|
27
|
+
MSGPACK_T_INT16 = 0xd1,
|
28
|
+
MSGPACK_T_INT32 = 0xd2,
|
29
|
+
MSGPACK_T_INT64 = 0xd3,
|
30
|
+
MSGPACK_T_SYM = 0xd4,
|
31
|
+
MSGPACK_T_STR16 = 0xd8, /* reserved in the spec */
|
32
|
+
MSGPACK_T_STR32 = 0xd9, /* reserved in the spec */
|
33
|
+
MSGPACK_T_RAW16 = 0xda,
|
34
|
+
MSGPACK_T_RAW32 = 0xdb,
|
35
|
+
MSGPACK_T_ARRAY16 = 0xdc,
|
36
|
+
MSGPACK_T_ARRAY32 = 0xdd,
|
37
|
+
MSGPACK_T_MAP16 = 0xde,
|
38
|
+
MSGPACK_T_MAP32 = 0xdf
|
39
|
+
};
|
40
|
+
|
41
|
+
enum msgpack_enc_t {
|
42
|
+
MSGPACK_ENC_UTF_8,
|
43
|
+
MSGPACK_ENC_US_ASCII,
|
44
|
+
MSGPACK_ENC_BIG5,
|
45
|
+
MSGPACK_ENC_BIG5_HKSCS,
|
46
|
+
MSGPACK_ENC_BIG5_UAO,
|
47
|
+
MSGPACK_ENC_CP949,
|
48
|
+
MSGPACK_ENC_EMACS_MULE,
|
49
|
+
MSGPACK_ENC_EUC_JP,
|
50
|
+
MSGPACK_ENC_EUC_KR,
|
51
|
+
MSGPACK_ENC_EUC_TW,
|
52
|
+
MSGPACK_ENC_GB18030,
|
53
|
+
MSGPACK_ENC_GBK,
|
54
|
+
MSGPACK_ENC_ISO_8859_1,
|
55
|
+
MSGPACK_ENC_ISO_8859_2,
|
56
|
+
MSGPACK_ENC_ISO_8859_3,
|
57
|
+
MSGPACK_ENC_ISO_8859_4,
|
58
|
+
MSGPACK_ENC_ISO_8859_5,
|
59
|
+
MSGPACK_ENC_ISO_8859_6,
|
60
|
+
MSGPACK_ENC_ISO_8859_7,
|
61
|
+
MSGPACK_ENC_ISO_8859_8,
|
62
|
+
MSGPACK_ENC_ISO_8859_9,
|
63
|
+
MSGPACK_ENC_ISO_8859_10,
|
64
|
+
MSGPACK_ENC_ISO_8859_11,
|
65
|
+
MSGPACK_ENC_ISO_8859_13,
|
66
|
+
MSGPACK_ENC_ISO_8859_14,
|
67
|
+
MSGPACK_ENC_ISO_8859_15,
|
68
|
+
MSGPACK_ENC_ISO_8859_16,
|
69
|
+
MSGPACK_ENC_KOI8_R,
|
70
|
+
MSGPACK_ENC_KOI8_U,
|
71
|
+
MSGPACK_ENC_SHIFT_JIS,
|
72
|
+
MSGPACK_ENC_UTF_16BE,
|
73
|
+
MSGPACK_ENC_UTF_16LE,
|
74
|
+
MSGPACK_ENC_UTF_32BE,
|
75
|
+
MSGPACK_ENC_UTF_32LE,
|
76
|
+
MSGPACK_ENC_WINDOWS_1251,
|
77
|
+
MSGPACK_ENC_IBM437,
|
78
|
+
MSGPACK_ENC_IBM737,
|
79
|
+
MSGPACK_ENC_IBM775,
|
80
|
+
MSGPACK_ENC_CP850,
|
81
|
+
MSGPACK_ENC_IBM852,
|
82
|
+
MSGPACK_ENC_CP852,
|
83
|
+
MSGPACK_ENC_IBM855,
|
84
|
+
MSGPACK_ENC_CP855,
|
85
|
+
MSGPACK_ENC_IBM857,
|
86
|
+
MSGPACK_ENC_IBM860,
|
87
|
+
MSGPACK_ENC_IBM861,
|
88
|
+
MSGPACK_ENC_IBM862,
|
89
|
+
MSGPACK_ENC_IBM863,
|
90
|
+
MSGPACK_ENC_IBM864,
|
91
|
+
MSGPACK_ENC_IBM865,
|
92
|
+
MSGPACK_ENC_IBM866,
|
93
|
+
MSGPACK_ENC_IBM869,
|
94
|
+
MSGPACK_ENC_WINDOWS_1258,
|
95
|
+
MSGPACK_ENC_GB1988,
|
96
|
+
MSGPACK_ENC_MACCENTEURO,
|
97
|
+
MSGPACK_ENC_MACCROATIAN,
|
98
|
+
MSGPACK_ENC_MACCYRILLIC,
|
99
|
+
MSGPACK_ENC_MACGREEK,
|
100
|
+
MSGPACK_ENC_MACICELAND,
|
101
|
+
MSGPACK_ENC_MACROMAN,
|
102
|
+
MSGPACK_ENC_MACROMANIA,
|
103
|
+
MSGPACK_ENC_MACTHAI,
|
104
|
+
MSGPACK_ENC_MACTURKISH,
|
105
|
+
MSGPACK_ENC_MACUKRAINE,
|
106
|
+
MSGPACK_ENC_CP950,
|
107
|
+
MSGPACK_ENC_CP951,
|
108
|
+
MSGPACK_ENC_STATELESS_ISO_2022_JP,
|
109
|
+
MSGPACK_ENC_EUCJP_MS,
|
110
|
+
MSGPACK_ENC_CP51932,
|
111
|
+
MSGPACK_ENC_GB2312,
|
112
|
+
MSGPACK_ENC_GB12345,
|
113
|
+
MSGPACK_ENC_ISO_2022_JP,
|
114
|
+
MSGPACK_ENC_ISO_2022_JP_2,
|
115
|
+
MSGPACK_ENC_CP50220,
|
116
|
+
MSGPACK_ENC_CP50221,
|
117
|
+
MSGPACK_ENC_WINDOWS_1252,
|
118
|
+
MSGPACK_ENC_WINDOWS_1250,
|
119
|
+
MSGPACK_ENC_WINDOWS_1256,
|
120
|
+
MSGPACK_ENC_WINDOWS_1253,
|
121
|
+
MSGPACK_ENC_WINDOWS_1255,
|
122
|
+
MSGPACK_ENC_WINDOWS_1254,
|
123
|
+
MSGPACK_ENC_TIS_620,
|
124
|
+
MSGPACK_ENC_WINDOWS_874,
|
125
|
+
MSGPACK_ENC_WINDOWS_1257,
|
126
|
+
MSGPACK_ENC_WINDOWS_31J,
|
127
|
+
MSGPACK_ENC_MACJAPANESE,
|
128
|
+
MSGPACK_ENC_UTF_7,
|
129
|
+
MSGPACK_ENC_UTF8_MAC,
|
130
|
+
MSGPACK_ENC_UTF_16,
|
131
|
+
MSGPACK_ENC_UTF_32,
|
132
|
+
MSGPACK_ENC_UTF8_DOCOMO,
|
133
|
+
MSGPACK_ENC_SJIS_DOCOMO,
|
134
|
+
MSGPACK_ENC_UTF8_KDDI,
|
135
|
+
MSGPACK_ENC_SJIS_KDDI,
|
136
|
+
MSGPACK_ENC_ISO_2022_JP_KDDI,
|
137
|
+
MSGPACK_ENC_STATELESS_ISO_2022_JP_KDDI,
|
138
|
+
MSGPACK_ENC_UTF8_SOFTBANK,
|
139
|
+
MSGPACK_ENC_SJIS_SOFTBANK
|
140
|
+
};
|
141
|
+
|
142
|
+
enum msgpack_err_t {
|
143
|
+
MSGPACK_EEOF = -1,
|
144
|
+
MSGPACK_EINVALID = -2,
|
145
|
+
MSGPACK_ENOTHING = -3,
|
146
|
+
MSGPACK_EUNSAFE = -4,
|
147
|
+
};
|
148
|
+
|
149
|
+
typedef void * mo_value;
|
150
|
+
typedef uint64_t mo_integer;
|
151
|
+
int mochilo_unpack_one(mo_value *_value, mochilo_src *src);
|
152
|
+
|
153
|
+
#ifdef HAVE_RUBY_ENCODING_H
|
154
|
+
# include <ruby/encoding.h>
|
155
|
+
# include "encodings.h"
|
156
|
+
#endif
|
157
|
+
|
158
|
+
#endif
|