1/* autogenerated. */
2/* src="transcode-tblgen.rb", len=28460, checksum=51276 */
3/* src="escape.trans", len=1982, checksum=23094 */
4
5#include "transcode_data.h"
6
7
8
9static const unsigned char
10escape_byte_array[1055] = {
11#define from__to_amp_escape_offsets 0
120, 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,  1,  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 str1_amp makeSTR1(258)
31    makeSTR1LEN(5), 0x26, 0x61, 0x6D, 0x70, 0x3B,
32
33#define from__to_xml_text_escape_offsets 264
340, 255,
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,  1,  0,    0,  0,  0,  0,  0,  0,  0,  0,
38      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  2,  0,  3,  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      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
49      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
50      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
51
52#define str1_lt makeSTR1(522)
53    makeSTR1LEN(4), 0x26, 0x6C, 0x74, 0x3B,
54
55#define str1_gt makeSTR1(527)
56    makeSTR1LEN(4), 0x26, 0x67, 0x74, 0x3B,
57
58#define from__to_xml_attr_content_escape_offsets 532
590, 255,
60      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
61      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
62      0,  0,  1,  0,  0,  0,  2,  0,    0,  0,  0,  0,  0,  0,  0,  0,
63      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  3,  0,  4,  0,
64      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
65      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
66      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
67      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
68      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
69      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
70      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
71      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
72      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
73      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
74      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
75      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
76
77#define str1_quot makeSTR1(790)
78    makeSTR1LEN(6), 0x26, 0x71, 0x75, 0x6F, 0x74, 0x3B,
79
80#define escape_xml_attr_quote_offsets 797
810, 255,
82      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
83      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
84      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
85      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
86      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
87      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
88      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
89      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
90      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
91      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
92      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
93      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
94      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
95      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
96      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
97      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
98
99};
100static const unsigned int
101escape_word_array[20] = {
102#define from__to_amp_escape_infos WORDINDEX2INFO(0)
103        NOMAP, str1_amp,
104
105#define from__to_amp_escape WORDINDEX2INFO(2)
106    from__to_amp_escape_offsets,
107    from__to_amp_escape_infos,
108
109#define from__to_xml_text_escape_infos WORDINDEX2INFO(4)
110        NOMAP, str1_amp,  str1_lt,  str1_gt,
111
112#define from__to_xml_text_escape WORDINDEX2INFO(8)
113    from__to_xml_text_escape_offsets,
114    from__to_xml_text_escape_infos,
115
116#define from__to_xml_attr_content_escape_infos WORDINDEX2INFO(10)
117         NOMAP, str1_quot,  str1_amp,   str1_lt,
118       str1_gt,
119
120#define from__to_xml_attr_content_escape WORDINDEX2INFO(15)
121    from__to_xml_attr_content_escape_offsets,
122    from__to_xml_attr_content_escape_infos,
123
124#define escape_xml_attr_quote_infos WORDINDEX2INFO(17)
125     FUNso,
126
127#define escape_xml_attr_quote WORDINDEX2INFO(18)
128    escape_xml_attr_quote_offsets,
129    escape_xml_attr_quote_infos,
130
131};
132#define TRANSCODE_TABLE_INFO escape_byte_array, 1055, escape_word_array, 20, ((int)sizeof(unsigned int))
133static const rb_transcoder
134rb_from__to_amp_escape = {
135    "", "amp_escape", from__to_amp_escape,
136    TRANSCODE_TABLE_INFO,
137    1, /* input_unit_length */
138    1, /* max_input */
139    5, /* max_output */
140    asciicompat_converter, /* asciicompat_type */
141    0, NULL, NULL, /* state_size, state_init, state_fini */
142    NULL, NULL, NULL, NULL,
143    NULL, NULL, NULL
144};
145static const rb_transcoder
146rb_from__to_xml_text_escape = {
147    "", "xml_text_escape", from__to_xml_text_escape,
148    TRANSCODE_TABLE_INFO,
149    1, /* input_unit_length */
150    1, /* max_input */
151    5, /* max_output */
152    asciicompat_converter, /* asciicompat_type */
153    0, NULL, NULL, /* state_size, state_init, state_fini */
154    NULL, NULL, NULL, NULL,
155    NULL, NULL, NULL
156};
157static const rb_transcoder
158rb_from__to_xml_attr_content_escape = {
159    "", "xml_attr_content_escape", from__to_xml_attr_content_escape,
160    TRANSCODE_TABLE_INFO,
161    1, /* input_unit_length */
162    1, /* max_input */
163    6, /* max_output */
164    asciicompat_converter, /* asciicompat_type */
165    0, NULL, NULL, /* state_size, state_init, state_fini */
166    NULL, NULL, NULL, NULL,
167    NULL, NULL, NULL
168};
169
170
171#define END 0
172#define NORMAL  1
173
174static int
175escape_xml_attr_quote_init(void *statep)
176{
177    unsigned char *sp = statep;
178    *sp = END;
179    return 0;
180}
181
182static ssize_t
183fun_so_escape_xml_attr_quote(void *statep, const unsigned char *s, size_t l, unsigned char *o, size_t osize)
184{
185    unsigned char *sp = statep;
186    int n = 0;
187    if (*sp == END) {
188        *sp = NORMAL;
189        o[n++] = '"';
190    }
191    o[n++] = s[0];
192    return n;
193}
194
195static ssize_t
196escape_xml_attr_quote_finish(void *statep, unsigned char *o, size_t osize)
197{
198    unsigned char *sp = statep;
199    int n = 0;
200
201    if (*sp == END) {
202        o[n++] = '"';
203    }
204
205    o[n++] = '"';
206    *sp = END;
207
208    return n;
209}
210
211static const rb_transcoder
212rb_escape_xml_attr_quote = {
213    "", "xml_attr_quote", escape_xml_attr_quote,
214    TRANSCODE_TABLE_INFO,
215    1, /* input_unit_length */
216    1, /* max_input */
217    7, /* max_output */
218    asciicompat_encoder, /* asciicompat_type */
219    1, escape_xml_attr_quote_init, escape_xml_attr_quote_init,
220    NULL, NULL, NULL, fun_so_escape_xml_attr_quote,
221    escape_xml_attr_quote_finish
222};
223
224TRANS_INIT(escape)
225{
226    rb_register_transcoder(&rb_from__to_amp_escape);
227    rb_register_transcoder(&rb_from__to_xml_text_escape);
228    rb_register_transcoder(&rb_from__to_xml_attr_content_escape);
229
230    rb_register_transcoder(&rb_escape_xml_attr_quote);
231}
232
233
234