• Main Page
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

enc/trans/japanese.c

Go to the documentation of this file.
00001 /* autogenerated. */
00002 /* src="transcode-tblgen.rb", len=27499, checksum=52340 */
00003 /* src="japanese.trans", len=2261, checksum=31681 */
00004 
00005 #include "transcode_data.h"
00006 
00007 
00008 
00009 static const unsigned char
00010 japanese_byte_array[895] = {
00011 #define eucjp2sjis_8E_offsets 0
00012 161, 254,
00013       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00014       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00015       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00016       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  2,
00017       2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
00018       2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,
00019 
00020 #define eucjp2sjis_8F_A1toFE_offsets 96
00021 161, 254,
00022       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00023       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00024       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00025       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00026       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00027       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,
00028 
00029 #define eucjp2sjis_offsets 192
00030 0, 254,
00031       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00032       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00033       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00034       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00035       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00036       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00037       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00038       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00039       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  2,  3,
00040       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00041       1,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
00042       4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
00043       4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
00044       4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
00045       4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
00046       4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,
00047 
00048 #define sjis2eucjp_81to9F_offsets 449
00049 64, 252,
00050       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00051       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00052       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00053       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  0,
00054       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00055       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00056       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00057       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00058       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00059       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00060       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
00061       1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,
00062 
00063 #define sjis2eucjp_offsets 640
00064 0, 252,
00065       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00066       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00067       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00068       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00069       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00070       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00071       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00072       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
00073       1,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
00074       2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
00075       1,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
00076       3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
00077       3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
00078       3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
00079       2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
00080       4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,
00081 
00082 };
00083 static const unsigned int
00084 japanese_word_array[35] = {
00085 #define eucjp2sjis_8E_infos WORDINDEX2INFO(0)
00086      INVALID,   FUNso,   UNDEF,
00087 
00088 #define eucjp2sjis_8E WORDINDEX2INFO(3)
00089     eucjp2sjis_8E_offsets,
00090     eucjp2sjis_8E_infos,
00091 
00092 #define eucjp2sjis_8F_A1toFE_infos WORDINDEX2INFO(5)
00093      INVALID,   UNDEF,
00094 
00095 #define eucjp2sjis_8F_A1toFE WORDINDEX2INFO(7)
00096     eucjp2sjis_8F_A1toFE_offsets,
00097     eucjp2sjis_8F_A1toFE_infos,
00098 
00099 #define eucjp2sjis_8F_infos WORDINDEX2INFO(9)
00100                   INVALID, eucjp2sjis_8F_A1toFE,
00101 
00102 #define eucjp2sjis_8F WORDINDEX2INFO(11)
00103     eucjp2sjis_8F_A1toFE_offsets,
00104     eucjp2sjis_8F_infos,
00105 
00106 #define eucjp2sjis_A1toFE_infos WORDINDEX2INFO(13)
00107      INVALID,   FUNso,
00108 
00109 #define eucjp2sjis_A1toFE WORDINDEX2INFO(15)
00110     eucjp2sjis_8F_A1toFE_offsets,
00111     eucjp2sjis_A1toFE_infos,
00112 
00113 #define eucjp2sjis_infos WORDINDEX2INFO(17)
00114                  NOMAP,           INVALID,
00115          eucjp2sjis_8E,     eucjp2sjis_8F,
00116      eucjp2sjis_A1toFE,
00117 
00118 #define eucjp2sjis WORDINDEX2INFO(22)
00119     eucjp2sjis_offsets,
00120     eucjp2sjis_infos,
00121 
00122 #define sjis2eucjp_81to9F WORDINDEX2INFO(24)
00123     sjis2eucjp_81to9F_offsets,
00124     eucjp2sjis_A1toFE_infos,
00125 
00126 #define sjis2eucjp_F0toFC WORDINDEX2INFO(26)
00127     sjis2eucjp_81to9F_offsets,
00128     eucjp2sjis_8F_A1toFE_infos,
00129 
00130 #define sjis2eucjp_infos WORDINDEX2INFO(28)
00131                  NOMAP,           INVALID,
00132      sjis2eucjp_81to9F,             FUNso,
00133      sjis2eucjp_F0toFC,
00134 
00135 #define sjis2eucjp WORDINDEX2INFO(33)
00136     sjis2eucjp_offsets,
00137     sjis2eucjp_infos,
00138 
00139 };
00140 #define TRANSCODE_TABLE_INFO japanese_byte_array, 895, japanese_word_array, 35, ((int)sizeof(unsigned int))
00141 
00142 
00143 static ssize_t
00144 fun_so_eucjp2sjis(void *statep, const unsigned char *s, size_t l, unsigned char *o, size_t osize)
00145 {
00146     if (s[0] == 0x8e) {
00147         o[0] = s[1];
00148         return 1;
00149     }
00150     else {
00151         int h, m, l;
00152         m = s[0] & 1;
00153         h = (s[0]+m) >> 1;
00154         h += s[0] < 0xdf ? 0x30 : 0x70;
00155         l = s[1] - m * 94 - 3;
00156         if (0x7f <= l)
00157             l++;
00158         o[0] = h;
00159         o[1] = l;
00160         return 2;
00161     }
00162 }
00163 
00164 static ssize_t
00165 fun_so_sjis2eucjp(void *statep, const unsigned char *s, size_t l, unsigned char *o, size_t osize)
00166 {
00167     if (l == 1) {
00168         o[0] = '\x8e';
00169         o[1] = s[0];
00170         return 2;
00171     }
00172     else {
00173         int h, l;
00174         h = s[0];
00175         l = s[1];
00176         if (0xe0 <= h)
00177             h -= 64;
00178         l += l < 0x80 ? 0x61 : 0x60;
00179         h = h * 2 - 0x61;
00180         if (0xfe < l) {
00181             l -= 94;
00182             h += 1;
00183         }
00184         o[0] = h;
00185         o[1] = l;
00186         return 2;
00187     }
00188 }
00189 
00190 static const rb_transcoder
00191 rb_eucjp2sjis = {
00192     "EUC-JP", "Shift_JIS", eucjp2sjis,
00193     TRANSCODE_TABLE_INFO,
00194     1, /* input_unit_length */
00195     3, /* max_input */
00196     2, /* max_output */
00197     asciicompat_converter, /* asciicompat_type */
00198     0, NULL, NULL, /* state_size, state_init, state_fini */
00199     NULL, NULL, NULL, fun_so_eucjp2sjis
00200 };
00201 
00202 static const rb_transcoder
00203 rb_sjis2eucjp = {
00204     "Shift_JIS", "EUC-JP", sjis2eucjp,
00205     TRANSCODE_TABLE_INFO,
00206     1, /* input_unit_length */
00207     2, /* max_input */
00208     2, /* max_output */
00209     asciicompat_converter, /* asciicompat_type */
00210     0, NULL, NULL, /* state_size, state_init, state_fini */
00211     NULL, NULL, NULL, fun_so_sjis2eucjp
00212 };
00213 
00214 void
00215 Init_japanese(void)
00216 {
00217     rb_register_transcoder(&rb_eucjp2sjis);
00218     rb_register_transcoder(&rb_sjis2eucjp);
00219 }
00220 
00221 

Generated on Thu Sep 8 2011 03:49:20 for Ruby by  doxygen 1.7.1