OSDN Git Service

change prefix to '/data/ruby'
[splhack/AndroidRuby.git] / lib / ruby-1.9.1-rc1 / newline.c
1 /* autogenerated. */
2 /* src="transcode-tblgen.rb", len=20916, checksum=45137 */
3 /* src="newline.trans", len=3114, checksum=39279 */
4
5 #include "transcode_data.h"
6
7
8
9 static const unsigned char
10 newline_byte_array[516] = {
11 #define universal_newline_offsets 0
12 0, 255,
13       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
14       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
15       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
16       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
17       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
18       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
19       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
20       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
21       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
22       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
23       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
24       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
25       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
26       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
27       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
28       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
29
30 #define crlf_newline_offsets 258
31 0, 255,
32       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  1,  0,  0,  0,  0,  0,
33       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
34       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
35       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
36       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
37       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
38       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
39       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
40       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
41       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
42       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
43       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
44       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
45       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
46       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
47       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
48
49 };
50 static const unsigned int
51 newline_word_array[11] = {
52 #define universal_newline_infos WORDINDEX2INFO(0)
53      FUNso,
54
55 #define universal_newline WORDINDEX2INFO(1)
56     universal_newline_offsets,
57     universal_newline_infos,
58
59 #define crlf_newline_infos WORDINDEX2INFO(3)
60              NOMAP, o2(0x0d,0x0a),
61
62 #define crlf_newline WORDINDEX2INFO(5)
63     crlf_newline_offsets,
64     crlf_newline_infos,
65
66 #define cr_newline_infos WORDINDEX2INFO(7)
67         NOMAP, o1(0x0d),
68
69 #define cr_newline WORDINDEX2INFO(9)
70     crlf_newline_offsets,
71     cr_newline_infos,
72
73 };
74 #define TRANSCODE_TABLE_INFO newline_byte_array, 516, newline_word_array, 11, sizeof(unsigned int)
75
76
77 #define STATE (sp[0])
78 #define NORMAL 0
79 #define JUST_AFTER_CR 1
80
81 /* no way to access this information, yet. */
82 #define NEWLINES_MET (sp[1])
83 #define MET_LF          0x01
84 #define MET_CRLF        0x02
85 #define MET_CR          0x04
86
87 static int
88 universal_newline_init(void *statep)
89 {
90     unsigned char *sp = statep;
91     STATE = NORMAL;
92     NEWLINES_MET = 0;
93     return 0;
94 }
95
96 static ssize_t
97 fun_so_universal_newline(void *statep, const unsigned char *s, size_t l, unsigned char *o, size_t osize)
98 {
99     unsigned char *sp = statep;
100     int len;
101     if (s[0] == '\n') {
102         if (STATE == NORMAL) {
103             NEWLINES_MET |= MET_LF;
104             o[0] = '\n';
105             len = 1;
106         }
107         else { /* JUST_AFTER_CR */
108             NEWLINES_MET |= MET_CRLF;
109             len = 0;
110         }
111         STATE = NORMAL;
112     }
113     else {
114         if (STATE == JUST_AFTER_CR)
115             NEWLINES_MET |= MET_CR;
116         if (s[0] == '\r') {
117             o[0] = '\n';
118             len = 1;
119             STATE = JUST_AFTER_CR;
120         }
121         else {
122             o[0] = s[0];
123             len = 1;
124             STATE = NORMAL;
125         }
126     }
127
128     return len;
129 }
130
131 static ssize_t
132 universal_newline_finish(void *statep, unsigned char *o, size_t osize)
133 {
134     unsigned char *sp = statep;
135     if (STATE == JUST_AFTER_CR)
136         NEWLINES_MET |= MET_CR;
137     STATE = NORMAL;
138     return 0;
139 }
140
141 static const rb_transcoder
142 rb_universal_newline = {
143     "", "universal_newline", universal_newline,
144     TRANSCODE_TABLE_INFO,
145     1, /* input_unit_length */
146     1, /* max_input */
147     1, /* max_output */
148     asciicompat_converter, /* asciicompat_type */
149     2, universal_newline_init, universal_newline_init, /* state_size, state_init, state_fini */
150     NULL, NULL, NULL, fun_so_universal_newline,
151     universal_newline_finish
152 };
153
154 static const rb_transcoder
155 rb_crlf_newline = {
156     "", "crlf_newline", crlf_newline,
157     TRANSCODE_TABLE_INFO,
158     1, /* input_unit_length */
159     1, /* max_input */
160     2, /* max_output */
161     asciicompat_converter, /* asciicompat_type */
162     0, NULL, NULL, /* state_size, state_init, state_fini */
163     NULL, NULL, NULL, NULL
164 };
165
166 static const rb_transcoder
167 rb_cr_newline = {
168     "", "cr_newline", cr_newline,
169     TRANSCODE_TABLE_INFO,
170     1, /* input_unit_length */
171     1, /* max_input */
172     1, /* max_output */
173     asciicompat_converter, /* asciicompat_type */
174     0, NULL, NULL, /* state_size, state_init, state_fini */
175     NULL, NULL, NULL, NULL
176 };
177
178 void
179 Init_newline(void)
180 {
181     rb_register_transcoder(&rb_universal_newline);
182     rb_register_transcoder(&rb_crlf_newline);
183     rb_register_transcoder(&rb_cr_newline);
184 }
185