Newer
Older
* libpyzy - The Chinese PinYin and Bopomofo conversion library.
*
* Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of the
* License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
#ifndef __PYZY_DOUBLE_PINYIN_TABLE_H_
#define __PYZY_DOUBLE_PINYIN_TABLE_H_
#define DOUBLE_PINYIN_MSPY (0)
#define DOUBLE_PINYIN_ZRM (1)
#define DOUBLE_PINYIN_ABC (2)
#define DOUBLE_PINYIN_ZGPY (3)
#define DOUBLE_PINYIN_PYJJ (4)
#define DOUBLE_PINYIN_XHE (5)
#define DOUBLE_PINYIN_LAST (5)
#ifdef DEFINE_DOUBLE_PINYIN_TABLES
#define PINYIN_ID_AEO PINYIN_ID_ZERO
static const char double_pinyin_mspy_sheng[] = {
PINYIN_ID_AEO, // A
PINYIN_ID_B, // B
PINYIN_ID_C, // C
PINYIN_ID_D, // D
PINYIN_ID_AEO, // E
PINYIN_ID_F, // F
PINYIN_ID_G, // G
PINYIN_ID_H, // H
PINYIN_ID_CH, // I
PINYIN_ID_J, // J
PINYIN_ID_K, // K
PINYIN_ID_L, // L
PINYIN_ID_M, // M
PINYIN_ID_N, // N
PINYIN_ID_ZERO, // O
PINYIN_ID_P, // P
PINYIN_ID_Q, // Q
PINYIN_ID_R, // R
PINYIN_ID_S, // S
PINYIN_ID_T, // T
PINYIN_ID_SH, // U
PINYIN_ID_ZH, // V
PINYIN_ID_W, // W
PINYIN_ID_X, // X
PINYIN_ID_Y, // Y
PINYIN_ID_Z, // Z
PINYIN_ID_VOID, // ;
};
static const char double_pinyin_mspy_yun[][2] = {
{ PINYIN_ID_A, PINYIN_ID_VOID }, // A
{ PINYIN_ID_OU, PINYIN_ID_VOID }, // B
{ PINYIN_ID_IAO, PINYIN_ID_VOID }, // C
{ PINYIN_ID_UANG, PINYIN_ID_IANG }, // D
{ PINYIN_ID_E, PINYIN_ID_VOID }, // E
{ PINYIN_ID_EN, PINYIN_ID_VOID }, // F
{ PINYIN_ID_ENG, PINYIN_ID_NG }, // G
{ PINYIN_ID_ANG, PINYIN_ID_VOID }, // H
{ PINYIN_ID_I, PINYIN_ID_VOID }, // I
{ PINYIN_ID_AN, PINYIN_ID_VOID }, // J
{ PINYIN_ID_AO, PINYIN_ID_VOID }, // K
{ PINYIN_ID_AI, PINYIN_ID_VOID }, // L
{ PINYIN_ID_IAN, PINYIN_ID_VOID }, // M
{ PINYIN_ID_IN, PINYIN_ID_VOID }, // N
{ PINYIN_ID_UO, PINYIN_ID_O }, // O
{ PINYIN_ID_UN, PINYIN_ID_VOID }, // P
{ PINYIN_ID_IU, PINYIN_ID_VOID }, // Q
{ PINYIN_ID_UAN, PINYIN_ID_ER }, // R
{ PINYIN_ID_ONG, PINYIN_ID_IONG }, // S
{ PINYIN_ID_UE, PINYIN_ID_VOID }, // T
{ PINYIN_ID_U, PINYIN_ID_VOID }, // U
{ PINYIN_ID_UI, PINYIN_ID_UE }, // V
{ PINYIN_ID_IA, PINYIN_ID_UA }, // W
{ PINYIN_ID_IE, PINYIN_ID_VOID }, // X
{ PINYIN_ID_UAI, PINYIN_ID_V }, // Y
{ PINYIN_ID_EI, PINYIN_ID_VOID }, // Z
{ PINYIN_ID_ING, PINYIN_ID_VOID }, // ;
};
static const char double_pinyin_zrm_sheng[] = {
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
PINYIN_ID_AEO, // A
PINYIN_ID_B, // B
PINYIN_ID_C, // C
PINYIN_ID_D, // D
PINYIN_ID_AEO, // E
PINYIN_ID_F, // F
PINYIN_ID_G, // G
PINYIN_ID_H, // H
PINYIN_ID_CH, // I
PINYIN_ID_J, // J
PINYIN_ID_K, // K
PINYIN_ID_L, // L
PINYIN_ID_M, // M
PINYIN_ID_N, // N
PINYIN_ID_ZERO, // O
PINYIN_ID_P, // P
PINYIN_ID_Q, // Q
PINYIN_ID_R, // R
PINYIN_ID_S, // S
PINYIN_ID_T, // T
PINYIN_ID_SH, // U
PINYIN_ID_ZH, // V
PINYIN_ID_W, // W
PINYIN_ID_X, // X
PINYIN_ID_Y, // Y
PINYIN_ID_Z, // Z
PINYIN_ID_VOID, // ;
};
static const char double_pinyin_zrm_yun[][2] = {
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
{ PINYIN_ID_A, PINYIN_ID_VOID }, // A
{ PINYIN_ID_OU, PINYIN_ID_VOID }, // B
{ PINYIN_ID_IAO, PINYIN_ID_VOID }, // C
{ PINYIN_ID_UANG, PINYIN_ID_IANG }, // D
{ PINYIN_ID_E, PINYIN_ID_VOID }, // E
{ PINYIN_ID_EN, PINYIN_ID_VOID }, // F
{ PINYIN_ID_ENG, PINYIN_ID_NG }, // G
{ PINYIN_ID_ANG, PINYIN_ID_VOID }, // H
{ PINYIN_ID_I, PINYIN_ID_VOID }, // I
{ PINYIN_ID_AN, PINYIN_ID_VOID }, // J
{ PINYIN_ID_AO, PINYIN_ID_VOID }, // K
{ PINYIN_ID_AI, PINYIN_ID_VOID }, // L
{ PINYIN_ID_IAN, PINYIN_ID_VOID }, // M
{ PINYIN_ID_IN, PINYIN_ID_VOID }, // N
{ PINYIN_ID_UO, PINYIN_ID_O }, // O
{ PINYIN_ID_UN, PINYIN_ID_VOID }, // P
{ PINYIN_ID_IU, PINYIN_ID_VOID }, // Q
{ PINYIN_ID_UAN, PINYIN_ID_ER }, // R
{ PINYIN_ID_ONG, PINYIN_ID_IONG }, // S
{ PINYIN_ID_UE, PINYIN_ID_VOID }, // T
{ PINYIN_ID_U, PINYIN_ID_VOID }, // U
{ PINYIN_ID_UI, PINYIN_ID_V }, // V
{ PINYIN_ID_IA, PINYIN_ID_UA }, // W
{ PINYIN_ID_IE, PINYIN_ID_VOID }, // X
{ PINYIN_ID_UAI, PINYIN_ID_ING }, // Y
{ PINYIN_ID_EI, PINYIN_ID_VOID }, // Z
{ PINYIN_ID_VOID, PINYIN_ID_VOID }, // ;
};
static const char double_pinyin_abc_sheng[] = {
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
PINYIN_ID_ZH, // A
PINYIN_ID_B, // B
PINYIN_ID_C, // C
PINYIN_ID_D, // D
PINYIN_ID_CH, // E
PINYIN_ID_F, // F
PINYIN_ID_G, // G
PINYIN_ID_H, // H
PINYIN_ID_VOID, // I
PINYIN_ID_J, // J
PINYIN_ID_K, // K
PINYIN_ID_L, // L
PINYIN_ID_M, // M
PINYIN_ID_N, // N
PINYIN_ID_ZERO, // O
PINYIN_ID_P, // P
PINYIN_ID_Q, // Q
PINYIN_ID_R, // R
PINYIN_ID_S, // S
PINYIN_ID_T, // T
PINYIN_ID_VOID, // U
PINYIN_ID_SH, // V
PINYIN_ID_W, // W
PINYIN_ID_X, // X
PINYIN_ID_Y, // Y
PINYIN_ID_Z, // Z
PINYIN_ID_VOID, // ;
};
static const char double_pinyin_abc_yun[][2] = {
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
{ PINYIN_ID_A, PINYIN_ID_VOID }, // A
{ PINYIN_ID_OU, PINYIN_ID_VOID }, // B
{ PINYIN_ID_IN, PINYIN_ID_UAI }, // C
{ PINYIN_ID_IA, PINYIN_ID_UA }, // D
{ PINYIN_ID_E, PINYIN_ID_VOID }, // E
{ PINYIN_ID_EN, PINYIN_ID_VOID }, // F
{ PINYIN_ID_ENG, PINYIN_ID_NG }, // G
{ PINYIN_ID_ANG, PINYIN_ID_VOID }, // H
{ PINYIN_ID_I, PINYIN_ID_VOID }, // I
{ PINYIN_ID_AN, PINYIN_ID_VOID }, // J
{ PINYIN_ID_AO, PINYIN_ID_VOID }, // K
{ PINYIN_ID_AI, PINYIN_ID_VOID }, // L
{ PINYIN_ID_UE, PINYIN_ID_UI }, // M
{ PINYIN_ID_UN, PINYIN_ID_VOID }, // N
{ PINYIN_ID_UO, PINYIN_ID_O }, // O
{ PINYIN_ID_UAN, PINYIN_ID_VOID }, // P
{ PINYIN_ID_EI, PINYIN_ID_VOID }, // Q
{ PINYIN_ID_ER, PINYIN_ID_IU }, // R
{ PINYIN_ID_ONG, PINYIN_ID_IONG }, // S
{ PINYIN_ID_IANG, PINYIN_ID_UANG }, // T
{ PINYIN_ID_U, PINYIN_ID_VOID }, // U
{ PINYIN_ID_V, PINYIN_ID_UE }, // V
{ PINYIN_ID_IAN, PINYIN_ID_VOID }, // W
{ PINYIN_ID_IE, PINYIN_ID_VOID }, // X
{ PINYIN_ID_ING, PINYIN_ID_VOID }, // Y
{ PINYIN_ID_IAO, PINYIN_ID_VOID }, // Z
{ PINYIN_ID_VOID, PINYIN_ID_VOID }, // ;
};
static const char double_pinyin_zgpy_sheng[] = {
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
PINYIN_ID_CH, // A
PINYIN_ID_B, // B
PINYIN_ID_C, // C
PINYIN_ID_D, // D
PINYIN_ID_AEO, // E
PINYIN_ID_F, // F
PINYIN_ID_G, // G
PINYIN_ID_H, // H
PINYIN_ID_SH, // I
PINYIN_ID_J, // J
PINYIN_ID_K, // K
PINYIN_ID_L, // L
PINYIN_ID_M, // M
PINYIN_ID_N, // N
PINYIN_ID_ZERO, // O
PINYIN_ID_P, // P
PINYIN_ID_Q, // Q
PINYIN_ID_R, // R
PINYIN_ID_S, // S
PINYIN_ID_T, // T
PINYIN_ID_ZH, // U
PINYIN_ID_VOID, // V
PINYIN_ID_W, // W
PINYIN_ID_X, // X
PINYIN_ID_Y, // Y
PINYIN_ID_Z, // Z
PINYIN_ID_VOID, // ;
};
static const char double_pinyin_zgpy_yun[][2] = {
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
{ PINYIN_ID_A, PINYIN_ID_VOID }, // A
{ PINYIN_ID_IAO, PINYIN_ID_VOID }, // B
{ PINYIN_ID_VOID, PINYIN_ID_VOID }, // C
{ PINYIN_ID_IE, PINYIN_ID_VOID }, // D
{ PINYIN_ID_E, PINYIN_ID_VOID }, // E
{ PINYIN_ID_IAN, PINYIN_ID_VOID }, // F
{ PINYIN_ID_IANG, PINYIN_ID_UANG }, // G
{ PINYIN_ID_ONG, PINYIN_ID_IONG }, // H
{ PINYIN_ID_I, PINYIN_ID_VOID }, // I
{ PINYIN_ID_ER, PINYIN_ID_IU }, // J
{ PINYIN_ID_EI, PINYIN_ID_VOID }, // K
{ PINYIN_ID_UAN, PINYIN_ID_VOID }, // L
{ PINYIN_ID_UN, PINYIN_ID_VOID }, // M
{ PINYIN_ID_UE, PINYIN_ID_UI }, // N
{ PINYIN_ID_UO, PINYIN_ID_O }, // O
{ PINYIN_ID_AI, PINYIN_ID_VOID }, // P
{ PINYIN_ID_AO, PINYIN_ID_VOID }, // Q
{ PINYIN_ID_AN, PINYIN_ID_VOID }, // R
{ PINYIN_ID_ANG, PINYIN_ID_VOID }, // S
{ PINYIN_ID_ENG, PINYIN_ID_NG }, // T
{ PINYIN_ID_U, PINYIN_ID_VOID }, // U
{ PINYIN_ID_V, PINYIN_ID_VOID }, // V
{ PINYIN_ID_EN, PINYIN_ID_VOID }, // W
{ PINYIN_ID_IA, PINYIN_ID_UA }, // X
{ PINYIN_ID_IN, PINYIN_ID_UAI }, // Y
{ PINYIN_ID_OU, PINYIN_ID_VOID }, // Z
{ PINYIN_ID_ING, PINYIN_ID_VOID }, // ;
};
static const char double_pinyin_pyjj_sheng[] = {
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
PINYIN_ID_ZERO, // A
PINYIN_ID_B, // B
PINYIN_ID_C, // C
PINYIN_ID_D, // D
PINYIN_ID_AEO, // E
PINYIN_ID_F, // F
PINYIN_ID_G, // G
PINYIN_ID_H, // H
PINYIN_ID_SH, // I
PINYIN_ID_J, // J
PINYIN_ID_K, // K
PINYIN_ID_L, // L
PINYIN_ID_M, // M
PINYIN_ID_N, // N
PINYIN_ID_ZERO, // O
PINYIN_ID_P, // P
PINYIN_ID_Q, // Q
PINYIN_ID_R, // R
PINYIN_ID_S, // S
PINYIN_ID_T, // T
PINYIN_ID_CH, // U
PINYIN_ID_ZH, // V
PINYIN_ID_W, // W
PINYIN_ID_X, // X
PINYIN_ID_Y, // Y
PINYIN_ID_Z, // Z
PINYIN_ID_VOID, // ;
};
static const char double_pinyin_pyjj_yun[][2] = {
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
{ PINYIN_ID_A, PINYIN_ID_VOID }, // A
{ PINYIN_ID_IA, PINYIN_ID_UA }, // B
{ PINYIN_ID_UAN, PINYIN_ID_VOID }, // C
{ PINYIN_ID_AO, PINYIN_ID_VOID }, // D
{ PINYIN_ID_E, PINYIN_ID_VOID }, // E
{ PINYIN_ID_AN, PINYIN_ID_VOID }, // F
{ PINYIN_ID_ANG, PINYIN_ID_VOID }, // G
{ PINYIN_ID_IANG, PINYIN_ID_UANG }, // H
{ PINYIN_ID_I, PINYIN_ID_VOID }, // I
{ PINYIN_ID_IAN, PINYIN_ID_VOID }, // J
{ PINYIN_ID_IAO, PINYIN_ID_VOID }, // K
{ PINYIN_ID_IN, PINYIN_ID_VOID }, // L
{ PINYIN_ID_IE, PINYIN_ID_VOID }, // M
{ PINYIN_ID_IU, PINYIN_ID_VOID }, // N
{ PINYIN_ID_UO, PINYIN_ID_O }, // O
{ PINYIN_ID_OU, PINYIN_ID_VOID }, // P
{ PINYIN_ID_ER, PINYIN_ID_ING }, // Q
{ PINYIN_ID_EN, PINYIN_ID_VOID }, // R
{ PINYIN_ID_AI, PINYIN_ID_VOID }, // S
{ PINYIN_ID_ENG, PINYIN_ID_NG }, // T
{ PINYIN_ID_U, PINYIN_ID_VOID }, // U
{ PINYIN_ID_V, PINYIN_ID_UI }, // V
{ PINYIN_ID_EI, PINYIN_ID_VOID }, // W
{ PINYIN_ID_UAI, PINYIN_ID_UE }, // X
{ PINYIN_ID_ONG, PINYIN_ID_IONG }, // Y
{ PINYIN_ID_UN, PINYIN_ID_VOID }, // Z
{ PINYIN_ID_VOID, PINYIN_ID_VOID }, // ;
};
static const char double_pinyin_xhe_sheng[] = {
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
PINYIN_ID_AEO, // A
PINYIN_ID_B, // B
PINYIN_ID_C, // C
PINYIN_ID_D, // D
PINYIN_ID_AEO, // E
PINYIN_ID_F, // F
PINYIN_ID_G, // G
PINYIN_ID_H, // H
PINYIN_ID_CH, // I
PINYIN_ID_J, // J
PINYIN_ID_K, // K
PINYIN_ID_L, // L
PINYIN_ID_M, // M
PINYIN_ID_N, // N
PINYIN_ID_ZERO, // O
PINYIN_ID_P, // P
PINYIN_ID_Q, // Q
PINYIN_ID_R, // R
PINYIN_ID_S, // S
PINYIN_ID_T, // T
PINYIN_ID_SH, // U
PINYIN_ID_ZH, // V
PINYIN_ID_W, // W
PINYIN_ID_X, // X
PINYIN_ID_Y, // Y
PINYIN_ID_Z, // Z
PINYIN_ID_VOID, // ;
};
static const char double_pinyin_xhe_yun[][2] = {
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
{ PINYIN_ID_A, PINYIN_ID_VOID }, // A
{ PINYIN_ID_IN, PINYIN_ID_VOID }, // B
{ PINYIN_ID_AO, PINYIN_ID_VOID }, // C
{ PINYIN_ID_AI, PINYIN_ID_VOID }, // D
{ PINYIN_ID_E, PINYIN_ID_VOID }, // E
{ PINYIN_ID_EN, PINYIN_ID_VOID }, // F
{ PINYIN_ID_ENG, PINYIN_ID_NG }, // G
{ PINYIN_ID_ANG, PINYIN_ID_VOID }, // H
{ PINYIN_ID_I, PINYIN_ID_VOID }, // I
{ PINYIN_ID_AN, PINYIN_ID_VOID }, // J
{ PINYIN_ID_UAI, PINYIN_ID_ING }, // K
{ PINYIN_ID_IANG, PINYIN_ID_UANG }, // L
{ PINYIN_ID_IAN, PINYIN_ID_VOID }, // M
{ PINYIN_ID_IAO, PINYIN_ID_VOID }, // N
{ PINYIN_ID_UO, PINYIN_ID_O }, // O
{ PINYIN_ID_IE, PINYIN_ID_VOID }, // P
{ PINYIN_ID_IU, PINYIN_ID_VOID }, // Q
{ PINYIN_ID_UAN, PINYIN_ID_ER }, // R
{ PINYIN_ID_ONG, PINYIN_ID_IONG }, // S
{ PINYIN_ID_UE, PINYIN_ID_VOID }, // T
{ PINYIN_ID_U, PINYIN_ID_VOID }, // U
{ PINYIN_ID_V, PINYIN_ID_UI }, // V
{ PINYIN_ID_EI, PINYIN_ID_VOID }, // W
{ PINYIN_ID_IA, PINYIN_ID_UA }, // X
{ PINYIN_ID_UN, PINYIN_ID_VOID }, // Y
{ PINYIN_ID_OU, PINYIN_ID_VOID }, // Z
{ PINYIN_ID_VOID, PINYIN_ID_VOID }, // ;
};
static const struct {
const char (&sheng)[27];
const char (&yun)[27][2];
} double_pinyin_map [] = {
{ double_pinyin_mspy_sheng, double_pinyin_mspy_yun },
{ double_pinyin_zrm_sheng, double_pinyin_zrm_yun },
{ double_pinyin_abc_sheng, double_pinyin_abc_yun },
{ double_pinyin_zgpy_sheng, double_pinyin_zgpy_yun },
{ double_pinyin_pyjj_sheng, double_pinyin_pyjj_yun },
{ double_pinyin_xhe_sheng, double_pinyin_xhe_yun },
};
#endif // DEFINE_DOUBLE_PINYIN_TABLE
#endif // __PYZY_DOUBLE_PINYIN_TABLE_H_