1
2 #line 1 "hb-buffer-deserialize-json.rl"
3 /*
4 * Copyright © 2013 Google, Inc.
5 *
6 * This is part of HarfBuzz, a text shaping library.
7 *
8 * Permission is hereby granted, without written agreement and without
9 * license or royalty fees, to use, copy, modify, and distribute this
10 * software and its documentation for any purpose, provided that the
11 * above copyright notice and the following two paragraphs appear in
12 * all copies of this software.
13 *
14 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
15 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
16 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
17 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
18 * DAMAGE.
19 *
20 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
21 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
22 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
23 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
24 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
25 *
26 * Google Author(s): Behdad Esfahbod
27 */
28
29 #ifndef HB_BUFFER_DESERIALIZE_JSON_HH
30 #define HB_BUFFER_DESERIALIZE_JSON_HH
31
32 #include "hb.hh"
33
34
35 #line 36 "hb-buffer-deserialize-json.hh"
36 static const unsigned char _deserialize_json_trans_keys[] = {
37 0u, 0u, 9u, 123u, 9u, 34u, 97u, 117u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u,
38 48u, 57u, 9u, 125u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u,
39 9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u,
40 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u,
41 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u,
42 34u, 92u, 9u, 125u, 34u, 92u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u,
43 9u, 125u, 9u, 93u, 9u, 123u, 0u, 0u, 0
44 };
45
46 static const char _deserialize_json_key_spans[] = {
47 0, 115, 26, 21, 2, 1, 50, 49,
48 10, 117, 117, 117, 1, 50, 49, 10,
49 117, 117, 1, 1, 50, 49, 117, 117,
50 2, 1, 50, 49, 10, 117, 117, 1,
51 50, 49, 10, 117, 117, 1, 50, 49,
52 59, 117, 59, 117, 117, 1, 50, 49,
53 117, 85, 115, 0
54 };
55
56 static const short _deserialize_json_index_offsets[] = {
57 0, 0, 116, 143, 165, 168, 170, 221,
58 271, 282, 400, 518, 636, 638, 689, 739,
59 750, 868, 986, 988, 990, 1041, 1091, 1209,
60 1327, 1330, 1332, 1383, 1433, 1444, 1562, 1680,
61 1682, 1733, 1783, 1794, 1912, 2030, 2032, 2083,
62 2133, 2193, 2311, 2371, 2489, 2607, 2609, 2660,
63 2710, 2828, 2914, 3030
64 };
65
66 static const char _deserialize_json_indicies[] = {
67 0, 0, 0, 0, 0, 1, 1,
68 1, 1, 1, 1, 1, 1, 1, 1,
69 1, 1, 1, 1, 1, 1, 1, 1,
70 0, 1, 1, 1, 1, 1, 1, 1,
71 1, 1, 1, 1, 1, 1, 1, 1,
72 1, 1, 1, 1, 1, 1, 1, 1,
73 1, 1, 1, 1, 1, 1, 1, 1,
74 1, 1, 1, 1, 1, 1, 1, 1,
75 1, 1, 1, 1, 1, 1, 1, 1,
76 1, 1, 1, 1, 1, 1, 1, 1,
77 1, 1, 1, 1, 1, 1, 1, 1,
78 1, 1, 1, 1, 1, 1, 1, 1,
79 1, 1, 1, 1, 1, 1, 1, 1,
80 1, 1, 1, 1, 1, 1, 1, 1,
81 1, 1, 1, 2, 1, 3, 3, 3,
82 3, 3, 1, 1, 1, 1, 1, 1,
83 1, 1, 1, 1, 1, 1, 1, 1,
84 1, 1, 1, 1, 3, 1, 4, 1,
85 5, 1, 6, 7, 1, 1, 8, 1,
86 1, 1, 1, 1, 1, 1, 1, 1,
87 1, 1, 1, 1, 9, 1, 10, 11,
88 1, 12, 1, 12, 12, 12, 12, 12,
89 1, 1, 1, 1, 1, 1, 1, 1,
90 1, 1, 1, 1, 1, 1, 1, 1,
91 1, 1, 12, 1, 1, 1, 1, 1,
92 1, 1, 1, 1, 1, 1, 1, 1,
93 1, 1, 1, 1, 1, 1, 1, 1,
94 1, 1, 1, 1, 13, 1, 13, 13,
95 13, 13, 13, 1, 1, 1, 1, 1,
96 1, 1, 1, 1, 1, 1, 1, 1,
97 1, 1, 1, 1, 1, 13, 1, 1,
98 1, 1, 1, 1, 1, 1, 1, 1,
99 1, 1, 14, 1, 1, 15, 16, 16,
100 16, 16, 16, 16, 16, 16, 16, 1,
101 17, 18, 18, 18, 18, 18, 18, 18,
102 18, 18, 1, 19, 19, 19, 19, 19,
103 1, 1, 1, 1, 1, 1, 1, 1,
104 1, 1, 1, 1, 1, 1, 1, 1,
105 1, 1, 19, 1, 1, 1, 1, 1,
106 1, 1, 1, 1, 1, 1, 20, 1,
107 1, 1, 1, 1, 1, 1, 1, 1,
108 1, 1, 1, 1, 1, 1, 1, 1,
109 1, 1, 1, 1, 1, 1, 1, 1,
110 1, 1, 1, 1, 1, 1, 1, 1,
111 1, 1, 1, 1, 1, 1, 1, 1,
112 1, 1, 1, 1, 1, 1, 1, 1,
113 1, 1, 1, 1, 1, 1, 1, 1,
114 1, 1, 1, 1, 1, 1, 1, 1,
115 1, 1, 1, 1, 1, 1, 1, 1,
116 1, 1, 1, 1, 1, 1, 1, 21,
117 1, 22, 22, 22, 22, 22, 1, 1,
118 1, 1, 1, 1, 1, 1, 1, 1,
119 1, 1, 1, 1, 1, 1, 1, 1,
120 22, 1, 1, 1, 1, 1, 1, 1,
121 1, 1, 1, 1, 3, 1, 1, 1,
122 1, 1, 1, 1, 1, 1, 1, 1,
123 1, 1, 1, 1, 1, 1, 1, 1,
124 1, 1, 1, 1, 1, 1, 1, 1,
125 1, 1, 1, 1, 1, 1, 1, 1,
126 1, 1, 1, 1, 1, 1, 1, 1,
127 1, 1, 1, 1, 1, 1, 1, 1,
128 1, 1, 1, 1, 1, 1, 1, 1,
129 1, 1, 1, 1, 1, 1, 1, 1,
130 1, 1, 1, 1, 1, 1, 1, 1,
131 1, 1, 1, 1, 1, 23, 1, 19,
132 19, 19, 19, 19, 1, 1, 1, 1,
133 1, 1, 1, 1, 1, 1, 1, 1,
134 1, 1, 1, 1, 1, 1, 19, 1,
135 1, 1, 1, 1, 1, 1, 1, 1,
136 1, 1, 20, 1, 1, 1, 18, 18,
137 18, 18, 18, 18, 18, 18, 18, 18,
138 1, 1, 1, 1, 1, 1, 1, 1,
139 1, 1, 1, 1, 1, 1, 1, 1,
140 1, 1, 1, 1, 1, 1, 1, 1,
141 1, 1, 1, 1, 1, 1, 1, 1,
142 1, 1, 1, 1, 1, 1, 1, 1,
143 1, 1, 1, 1, 1, 1, 1, 1,
144 1, 1, 1, 1, 1, 1, 1, 1,
145 1, 1, 1, 1, 1, 1, 1, 1,
146 1, 1, 1, 21, 1, 24, 1, 24,
147 24, 24, 24, 24, 1, 1, 1, 1,
148 1, 1, 1, 1, 1, 1, 1, 1,
149 1, 1, 1, 1, 1, 1, 24, 1,
150 1, 1, 1, 1, 1, 1, 1, 1,
151 1, 1, 1, 1, 1, 1, 1, 1,
152 1, 1, 1, 1, 1, 1, 1, 1,
153 25, 1, 25, 25, 25, 25, 25, 1,
154 1, 1, 1, 1, 1, 1, 1, 1,
155 1, 1, 1, 1, 1, 1, 1, 1,
156 1, 25, 1, 1, 1, 1, 1, 1,
157 1, 1, 1, 1, 1, 1, 26, 1,
158 1, 27, 28, 28, 28, 28, 28, 28,
159 28, 28, 28, 1, 29, 30, 30, 30,
160 30, 30, 30, 30, 30, 30, 1, 31,
161 31, 31, 31, 31, 1, 1, 1, 1,
162 1, 1, 1, 1, 1, 1, 1, 1,
163 1, 1, 1, 1, 1, 1, 31, 1,
164 1, 1, 1, 1, 1, 1, 1, 1,
165 1, 1, 32, 1, 1, 1, 1, 1,
166 1, 1, 1, 1, 1, 1, 1, 1,
167 1, 1, 1, 1, 1, 1, 1, 1,
168 1, 1, 1, 1, 1, 1, 1, 1,
169 1, 1, 1, 1, 1, 1, 1, 1,
170 1, 1, 1, 1, 1, 1, 1, 1,
171 1, 1, 1, 1, 1, 1, 1, 1,
172 1, 1, 1, 1, 1, 1, 1, 1,
173 1, 1, 1, 1, 1, 1, 1, 1,
174 1, 1, 1, 1, 1, 1, 1, 1,
175 1, 1, 1, 33, 1, 31, 31, 31,
176 31, 31, 1, 1, 1, 1, 1, 1,
177 1, 1, 1, 1, 1, 1, 1, 1,
178 1, 1, 1, 1, 31, 1, 1, 1,
179 1, 1, 1, 1, 1, 1, 1, 1,
180 32, 1, 1, 1, 30, 30, 30, 30,
181 30, 30, 30, 30, 30, 30, 1, 1,
182 1, 1, 1, 1, 1, 1, 1, 1,
183 1, 1, 1, 1, 1, 1, 1, 1,
184 1, 1, 1, 1, 1, 1, 1, 1,
185 1, 1, 1, 1, 1, 1, 1, 1,
186 1, 1, 1, 1, 1, 1, 1, 1,
187 1, 1, 1, 1, 1, 1, 1, 1,
188 1, 1, 1, 1, 1, 1, 1, 1,
189 1, 1, 1, 1, 1, 1, 1, 1,
190 1, 33, 1, 34, 1, 35, 1, 35,
191 35, 35, 35, 35, 1, 1, 1, 1,
192 1, 1, 1, 1, 1, 1, 1, 1,
193 1, 1, 1, 1, 1, 1, 35, 1,
194 1, 1, 1, 1, 1, 1, 1, 1,
195 1, 1, 1, 1, 1, 1, 1, 1,
196 1, 1, 1, 1, 1, 1, 1, 1,
197 36, 1, 36, 36, 36, 36, 36, 1,
198 1, 1, 1, 1, 1, 1, 1, 1,
199 1, 1, 1, 1, 1, 1, 1, 1,
200 1, 36, 1, 1, 1, 1, 1, 1,
201 1, 1, 1, 1, 1, 1, 1, 1,
202 1, 37, 38, 38, 38, 38, 38, 38,
203 38, 38, 38, 1, 39, 39, 39, 39,
204 39, 1, 1, 1, 1, 1, 1, 1,
205 1, 1, 1, 1, 1, 1, 1, 1,
206 1, 1, 1, 39, 1, 1, 1, 1,
207 1, 1, 1, 1, 1, 1, 1, 40,
208 1, 1, 1, 1, 1, 1, 1, 1,
209 1, 1, 1, 1, 1, 1, 1, 1,
210 1, 1, 1, 1, 1, 1, 1, 1,
211 1, 1, 1, 1, 1, 1, 1, 1,
212 1, 1, 1, 1, 1, 1, 1, 1,
213 1, 1, 1, 1, 1, 1, 1, 1,
214 1, 1, 1, 1, 1, 1, 1, 1,
215 1, 1, 1, 1, 1, 1, 1, 1,
216 1, 1, 1, 1, 1, 1, 1, 1,
217 1, 1, 1, 1, 1, 1, 1, 1,
218 41, 1, 39, 39, 39, 39, 39, 1,
219 1, 1, 1, 1, 1, 1, 1, 1,
220 1, 1, 1, 1, 1, 1, 1, 1,
221 1, 39, 1, 1, 1, 1, 1, 1,
222 1, 1, 1, 1, 1, 40, 1, 1,
223 1, 42, 42, 42, 42, 42, 42, 42,
224 42, 42, 42, 1, 1, 1, 1, 1,
225 1, 1, 1, 1, 1, 1, 1, 1,
226 1, 1, 1, 1, 1, 1, 1, 1,
227 1, 1, 1, 1, 1, 1, 1, 1,
228 1, 1, 1, 1, 1, 1, 1, 1,
229 1, 1, 1, 1, 1, 1, 1, 1,
230 1, 1, 1, 1, 1, 1, 1, 1,
231 1, 1, 1, 1, 1, 1, 1, 1,
232 1, 1, 1, 1, 1, 1, 41, 1,
233 43, 44, 1, 45, 1, 45, 45, 45,
234 45, 45, 1, 1, 1, 1, 1, 1,
235 1, 1, 1, 1, 1, 1, 1, 1,
236 1, 1, 1, 1, 45, 1, 1, 1,
237 1, 1, 1, 1, 1, 1, 1, 1,
238 1, 1, 1, 1, 1, 1, 1, 1,
239 1, 1, 1, 1, 1, 1, 46, 1,
240 46, 46, 46, 46, 46, 1, 1, 1,
241 1, 1, 1, 1, 1, 1, 1, 1,
242 1, 1, 1, 1, 1, 1, 1, 46,
243 1, 1, 1, 1, 1, 1, 1, 1,
244 1, 1, 1, 1, 47, 1, 1, 48,
245 49, 49, 49, 49, 49, 49, 49, 49,
246 49, 1, 50, 51, 51, 51, 51, 51,
247 51, 51, 51, 51, 1, 52, 52, 52,
248 52, 52, 1, 1, 1, 1, 1, 1,
249 1, 1, 1, 1, 1, 1, 1, 1,
250 1, 1, 1, 1, 52, 1, 1, 1,
251 1, 1, 1, 1, 1, 1, 1, 1,
252 53, 1, 1, 1, 1, 1, 1, 1,
253 1, 1, 1, 1, 1, 1, 1, 1,
254 1, 1, 1, 1, 1, 1, 1, 1,
255 1, 1, 1, 1, 1, 1, 1, 1,
256 1, 1, 1, 1, 1, 1, 1, 1,
257 1, 1, 1, 1, 1, 1, 1, 1,
258 1, 1, 1, 1, 1, 1, 1, 1,
259 1, 1, 1, 1, 1, 1, 1, 1,
260 1, 1, 1, 1, 1, 1, 1, 1,
261 1, 1, 1, 1, 1, 1, 1, 1,
262 1, 54, 1, 52, 52, 52, 52, 52,
263 1, 1, 1, 1, 1, 1, 1, 1,
264 1, 1, 1, 1, 1, 1, 1, 1,
265 1, 1, 52, 1, 1, 1, 1, 1,
266 1, 1, 1, 1, 1, 1, 53, 1,
267 1, 1, 51, 51, 51, 51, 51, 51,
268 51, 51, 51, 51, 1, 1, 1, 1,
269 1, 1, 1, 1, 1, 1, 1, 1,
270 1, 1, 1, 1, 1, 1, 1, 1,
271 1, 1, 1, 1, 1, 1, 1, 1,
272 1, 1, 1, 1, 1, 1, 1, 1,
273 1, 1, 1, 1, 1, 1, 1, 1,
274 1, 1, 1, 1, 1, 1, 1, 1,
275 1, 1, 1, 1, 1, 1, 1, 1,
276 1, 1, 1, 1, 1, 1, 1, 54,
277 1, 55, 1, 55, 55, 55, 55, 55,
278 1, 1, 1, 1, 1, 1, 1, 1,
279 1, 1, 1, 1, 1, 1, 1, 1,
280 1, 1, 55, 1, 1, 1, 1, 1,
281 1, 1, 1, 1, 1, 1, 1, 1,
282 1, 1, 1, 1, 1, 1, 1, 1,
283 1, 1, 1, 1, 56, 1, 56, 56,
284 56, 56, 56, 1, 1, 1, 1, 1,
285 1, 1, 1, 1, 1, 1, 1, 1,
286 1, 1, 1, 1, 1, 56, 1, 1,
287 1, 1, 1, 1, 1, 1, 1, 1,
288 1, 1, 57, 1, 1, 58, 59, 59,
289 59, 59, 59, 59, 59, 59, 59, 1,
290 60, 61, 61, 61, 61, 61, 61, 61,
291 61, 61, 1, 62, 62, 62, 62, 62,
292 1, 1, 1, 1, 1, 1, 1, 1,
293 1, 1, 1, 1, 1, 1, 1, 1,
294 1, 1, 62, 1, 1, 1, 1, 1,
295 1, 1, 1, 1, 1, 1, 63, 1,
296 1, 1, 1, 1, 1, 1, 1, 1,
297 1, 1, 1, 1, 1, 1, 1, 1,
298 1, 1, 1, 1, 1, 1, 1, 1,
299 1, 1, 1, 1, 1, 1, 1, 1,
300 1, 1, 1, 1, 1, 1, 1, 1,
301 1, 1, 1, 1, 1, 1, 1, 1,
302 1, 1, 1, 1, 1, 1, 1, 1,
303 1, 1, 1, 1, 1, 1, 1, 1,
304 1, 1, 1, 1, 1, 1, 1, 1,
305 1, 1, 1, 1, 1, 1, 1, 64,
306 1, 62, 62, 62, 62, 62, 1, 1,
307 1, 1, 1, 1, 1, 1, 1, 1,
308 1, 1, 1, 1, 1, 1, 1, 1,
309 62, 1, 1, 1, 1, 1, 1, 1,
310 1, 1, 1, 1, 63, 1, 1, 1,
311 61, 61, 61, 61, 61, 61, 61, 61,
312 61, 61, 1, 1, 1, 1, 1, 1,
313 1, 1, 1, 1, 1, 1, 1, 1,
314 1, 1, 1, 1, 1, 1, 1, 1,
315 1, 1, 1, 1, 1, 1, 1, 1,
316 1, 1, 1, 1, 1, 1, 1, 1,
317 1, 1, 1, 1, 1, 1, 1, 1,
318 1, 1, 1, 1, 1, 1, 1, 1,
319 1, 1, 1, 1, 1, 1, 1, 1,
320 1, 1, 1, 1, 1, 64, 1, 65,
321 1, 65, 65, 65, 65, 65, 1, 1,
322 1, 1, 1, 1, 1, 1, 1, 1,
323 1, 1, 1, 1, 1, 1, 1, 1,
324 65, 1, 1, 1, 1, 1, 1, 1,
325 1, 1, 1, 1, 1, 1, 1, 1,
326 1, 1, 1, 1, 1, 1, 1, 1,
327 1, 1, 66, 1, 66, 66, 66, 66,
328 66, 1, 1, 1, 1, 1, 1, 1,
329 1, 1, 1, 1, 1, 1, 1, 1,
330 1, 1, 1, 66, 1, 67, 1, 1,
331 1, 1, 1, 1, 1, 1, 1, 1,
332 1, 1, 1, 68, 69, 69, 69, 69,
333 69, 69, 69, 69, 69, 1, 71, 70,
334 70, 70, 70, 70, 70, 70, 70, 70,
335 70, 70, 70, 70, 70, 70, 70, 70,
336 70, 70, 70, 70, 70, 70, 70, 70,
337 70, 70, 70, 70, 70, 70, 70, 70,
338 70, 70, 70, 70, 70, 70, 70, 70,
339 70, 70, 70, 70, 70, 70, 70, 70,
340 70, 70, 70, 70, 70, 70, 70, 70,
341 72, 70, 73, 73, 73, 73, 73, 1,
342 1, 1, 1, 1, 1, 1, 1, 1,
343 1, 1, 1, 1, 1, 1, 1, 1,
344 1, 73, 1, 1, 1, 1, 1, 1,
345 1, 1, 1, 1, 1, 74, 1, 1,
346 1, 1, 1, 1, 1, 1, 1, 1,
347 1, 1, 1, 1, 1, 1, 1, 1,
348 1, 1, 1, 1, 1, 1, 1, 1,
349 1, 1, 1, 1, 1, 1, 1, 1,
350 1, 1, 1, 1, 1, 1, 1, 1,
351 1, 1, 1, 1, 1, 1, 1, 1,
352 1, 1, 1, 1, 1, 1, 1, 1,
353 1, 1, 1, 1, 1, 1, 1, 1,
354 1, 1, 1, 1, 1, 1, 1, 1,
355 1, 1, 1, 1, 1, 1, 75, 1,
356 70, 1, 1, 1, 1, 1, 1, 1,
357 1, 1, 1, 1, 1, 1, 1, 1,
358 1, 1, 1, 1, 1, 1, 1, 1,
359 1, 1, 1, 1, 1, 1, 1, 1,
360 1, 1, 1, 1, 1, 1, 1, 1,
361 1, 1, 1, 1, 1, 1, 1, 1,
362 1, 1, 1, 1, 1, 1, 1, 1,
363 1, 1, 70, 1, 76, 76, 76, 76,
364 76, 1, 1, 1, 1, 1, 1, 1,
365 1, 1, 1, 1, 1, 1, 1, 1,
366 1, 1, 1, 76, 1, 1, 1, 1,
367 1, 1, 1, 1, 1, 1, 1, 77,
368 1, 1, 1, 1, 1, 1, 1, 1,
369 1, 1, 1, 1, 1, 1, 1, 1,
370 1, 1, 1, 1, 1, 1, 1, 1,
371 1, 1, 1, 1, 1, 1, 1, 1,
372 1, 1, 1, 1, 1, 1, 1, 1,
373 1, 1, 1, 1, 1, 1, 1, 1,
374 1, 1, 1, 1, 1, 1, 1, 1,
375 1, 1, 1, 1, 1, 1, 1, 1,
376 1, 1, 1, 1, 1, 1, 1, 1,
377 1, 1, 1, 1, 1, 1, 1, 1,
378 78, 1, 76, 76, 76, 76, 76, 1,
379 1, 1, 1, 1, 1, 1, 1, 1,
380 1, 1, 1, 1, 1, 1, 1, 1,
381 1, 76, 1, 1, 1, 1, 1, 1,
382 1, 1, 1, 1, 1, 77, 1, 1,
383 1, 79, 79, 79, 79, 79, 79, 79,
384 79, 79, 79, 1, 1, 1, 1, 1,
385 1, 1, 1, 1, 1, 1, 1, 1,
386 1, 1, 1, 1, 1, 1, 1, 1,
387 1, 1, 1, 1, 1, 1, 1, 1,
388 1, 1, 1, 1, 1, 1, 1, 1,
389 1, 1, 1, 1, 1, 1, 1, 1,
390 1, 1, 1, 1, 1, 1, 1, 1,
391 1, 1, 1, 1, 1, 1, 1, 1,
392 1, 1, 1, 1, 1, 1, 78, 1,
393 80, 1, 80, 80, 80, 80, 80, 1,
394 1, 1, 1, 1, 1, 1, 1, 1,
395 1, 1, 1, 1, 1, 1, 1, 1,
396 1, 80, 1, 1, 1, 1, 1, 1,
397 1, 1, 1, 1, 1, 1, 1, 1,
398 1, 1, 1, 1, 1, 1, 1, 1,
399 1, 1, 1, 81, 1, 81, 81, 81,
400 81, 81, 1, 1, 1, 1, 1, 1,
401 1, 1, 1, 1, 1, 1, 1, 1,
402 1, 1, 1, 1, 81, 1, 1, 1,
403 1, 1, 1, 1, 1, 1, 1, 1,
404 1, 1, 1, 1, 82, 83, 83, 83,
405 83, 83, 83, 83, 83, 83, 1, 76,
406 76, 76, 76, 76, 1, 1, 1, 1,
407 1, 1, 1, 1, 1, 1, 1, 1,
408 1, 1, 1, 1, 1, 1, 76, 1,
409 1, 1, 1, 1, 1, 1, 1, 1,
410 1, 1, 77, 1, 1, 1, 84, 84,
411 84, 84, 84, 84, 84, 84, 84, 84,
412 1, 1, 1, 1, 1, 1, 1, 1,
413 1, 1, 1, 1, 1, 1, 1, 1,
414 1, 1, 1, 1, 1, 1, 1, 1,
415 1, 1, 1, 1, 1, 1, 1, 1,
416 1, 1, 1, 1, 1, 1, 1, 1,
417 1, 1, 1, 1, 1, 1, 1, 1,
418 1, 1, 1, 1, 1, 1, 1, 1,
419 1, 1, 1, 1, 1, 1, 1, 1,
420 1, 1, 1, 78, 1, 85, 85, 85,
421 85, 85, 1, 1, 1, 1, 1, 1,
422 1, 1, 1, 1, 1, 1, 1, 1,
423 1, 1, 1, 1, 85, 1, 1, 1,
424 1, 1, 1, 1, 1, 1, 1, 1,
425 86, 1, 1, 1, 1, 1, 1, 1,
426 1, 1, 1, 1, 1, 1, 1, 1,
427 1, 1, 1, 1, 1, 1, 1, 1,
428 1, 1, 1, 1, 1, 1, 1, 1,
429 1, 1, 1, 1, 1, 1, 1, 1,
430 1, 1, 1, 1, 1, 1, 1, 1,
431 1, 87, 1, 0, 0, 0, 0, 0,
432 1, 1, 1, 1, 1, 1, 1, 1,
433 1, 1, 1, 1, 1, 1, 1, 1,
434 1, 1, 0, 1, 1, 1, 1, 1,
435 1, 1, 1, 1, 1, 1, 1, 1,
436 1, 1, 1, 1, 1, 1, 1, 1,
437 1, 1, 1, 1, 1, 1, 1, 1,
438 1, 1, 1, 1, 1, 1, 1, 1,
439 1, 1, 1, 1, 1, 1, 1, 1,
440 1, 1, 1, 1, 1, 1, 1, 1,
441 1, 1, 1, 1, 1, 1, 1, 1,
442 1, 1, 1, 1, 1, 1, 1, 1,
443 1, 1, 1, 1, 1, 1, 1, 1,
444 1, 1, 1, 1, 1, 1, 1, 1,
445 1, 1, 1, 1, 1, 2, 1, 1,
446 0
447 };
448
449 static const char _deserialize_json_trans_targs[] = {
450 1, 0, 2, 2, 3, 4, 18, 24,
451 37, 45, 5, 12, 6, 7, 8, 9,
452 11, 9, 11, 10, 2, 49, 10, 49,
453 13, 14, 15, 16, 17, 16, 17, 10,
454 2, 49, 19, 20, 21, 22, 23, 10,
455 2, 49, 23, 25, 31, 26, 27, 28,
456 29, 30, 29, 30, 10, 2, 49, 32,
457 33, 34, 35, 36, 35, 36, 10, 2,
458 49, 38, 39, 40, 43, 44, 40, 41,
459 42, 10, 2, 49, 10, 2, 49, 44,
460 46, 47, 43, 48, 48, 49, 50, 51
461 };
462
463 static const char _deserialize_json_trans_actions[] = {
464 0, 0, 1, 0, 0, 0, 0, 0,
465 0, 0, 0, 0, 0, 0, 2, 2,
466 2, 0, 0, 3, 3, 4, 0, 5,
467 0, 0, 2, 2, 2, 0, 0, 6,
468 6, 7, 0, 0, 0, 2, 2, 8,
469 8, 9, 0, 0, 0, 0, 0, 2,
470 2, 2, 0, 0, 10, 10, 11, 0,
471 0, 2, 2, 2, 0, 0, 12, 12,
472 13, 0, 0, 2, 14, 14, 0, 15,
473 0, 16, 16, 17, 18, 18, 19, 15,
474 0, 0, 20, 20, 21, 0, 0, 0
475 };
476
477 static const int deserialize_json_start = 1;
478 static const int deserialize_json_first_final = 49;
479 static const int deserialize_json_error = 0;
480
481 static const int deserialize_json_en_main = 1;
482
483
484 #line 108 "hb-buffer-deserialize-json.rl"
485
486
487 static hb_bool_t
_hb_buffer_deserialize_json(hb_buffer_t * buffer,const char * buf,unsigned int buf_len,const char ** end_ptr,hb_font_t * font)488 _hb_buffer_deserialize_json (hb_buffer_t *buffer,
489 const char *buf,
490 unsigned int buf_len,
491 const char **end_ptr,
492 hb_font_t *font)
493 {
494 const char *p = buf, *pe = buf + buf_len;
495
496 /* Ensure we have positions. */
497 (void) hb_buffer_get_glyph_positions (buffer, nullptr);
498
499 while (p < pe && ISSPACE (*p))
500 p++;
501 if (p < pe && *p == (buffer->len ? ',' : '['))
502 {
503 *end_ptr = ++p;
504 }
505
506 const char *tok = nullptr;
507 int cs;
508 hb_glyph_info_t info = {0};
509 hb_glyph_position_t pos = {0};
510
511 #line 512 "hb-buffer-deserialize-json.hh"
512 {
513 cs = deserialize_json_start;
514 }
515
516 #line 517 "hb-buffer-deserialize-json.hh"
517 {
518 int _slen;
519 int _trans;
520 const unsigned char *_keys;
521 const char *_inds;
522 if ( p == pe )
523 goto _test_eof;
524 if ( cs == 0 )
525 goto _out;
526 _resume:
527 _keys = _deserialize_json_trans_keys + (cs<<1);
528 _inds = _deserialize_json_indicies + _deserialize_json_index_offsets[cs];
529
530 _slen = _deserialize_json_key_spans[cs];
531 _trans = _inds[ _slen > 0 && _keys[0] <=(*p) &&
532 (*p) <= _keys[1] ?
533 (*p) - _keys[0] : _slen ];
534
535 cs = _deserialize_json_trans_targs[_trans];
536
537 if ( _deserialize_json_trans_actions[_trans] == 0 )
538 goto _again;
539
540 switch ( _deserialize_json_trans_actions[_trans] ) {
541 case 1:
542 #line 38 "hb-buffer-deserialize-json.rl"
543 {
544 memset (&info, 0, sizeof (info));
545 memset (&pos , 0, sizeof (pos ));
546 }
547 break;
548 case 5:
549 #line 43 "hb-buffer-deserialize-json.rl"
550 {
551 buffer->add_info (info);
552 if (unlikely (!buffer->successful))
553 return false;
554 buffer->pos[buffer->len - 1] = pos;
555 *end_ptr = p;
556 }
557 break;
558 case 2:
559 #line 51 "hb-buffer-deserialize-json.rl"
560 {
561 tok = p;
562 }
563 break;
564 case 15:
565 #line 55 "hb-buffer-deserialize-json.rl"
566 { if (unlikely (!buffer->ensure_glyphs ())) return false; }
567 break;
568 case 21:
569 #line 56 "hb-buffer-deserialize-json.rl"
570 { if (unlikely (!buffer->ensure_unicode ())) return false; }
571 break;
572 case 16:
573 #line 58 "hb-buffer-deserialize-json.rl"
574 {
575 /* TODO Unescape \" and \\ if found. */
576 if (!hb_font_glyph_from_string (font,
577 tok, p - tok,
578 &info.codepoint))
579 return false;
580 }
581 break;
582 case 18:
583 #line 66 "hb-buffer-deserialize-json.rl"
584 { if (!parse_uint (tok, p, &info.codepoint)) return false; }
585 break;
586 case 8:
587 #line 67 "hb-buffer-deserialize-json.rl"
588 { if (!parse_uint (tok, p, &info.cluster )) return false; }
589 break;
590 case 10:
591 #line 68 "hb-buffer-deserialize-json.rl"
592 { if (!parse_int (tok, p, &pos.x_offset )) return false; }
593 break;
594 case 12:
595 #line 69 "hb-buffer-deserialize-json.rl"
596 { if (!parse_int (tok, p, &pos.y_offset )) return false; }
597 break;
598 case 3:
599 #line 70 "hb-buffer-deserialize-json.rl"
600 { if (!parse_int (tok, p, &pos.x_advance)) return false; }
601 break;
602 case 6:
603 #line 71 "hb-buffer-deserialize-json.rl"
604 { if (!parse_int (tok, p, &pos.y_advance)) return false; }
605 break;
606 case 14:
607 #line 51 "hb-buffer-deserialize-json.rl"
608 {
609 tok = p;
610 }
611 #line 55 "hb-buffer-deserialize-json.rl"
612 { if (unlikely (!buffer->ensure_glyphs ())) return false; }
613 break;
614 case 20:
615 #line 51 "hb-buffer-deserialize-json.rl"
616 {
617 tok = p;
618 }
619 #line 56 "hb-buffer-deserialize-json.rl"
620 { if (unlikely (!buffer->ensure_unicode ())) return false; }
621 break;
622 case 17:
623 #line 58 "hb-buffer-deserialize-json.rl"
624 {
625 /* TODO Unescape \" and \\ if found. */
626 if (!hb_font_glyph_from_string (font,
627 tok, p - tok,
628 &info.codepoint))
629 return false;
630 }
631 #line 43 "hb-buffer-deserialize-json.rl"
632 {
633 buffer->add_info (info);
634 if (unlikely (!buffer->successful))
635 return false;
636 buffer->pos[buffer->len - 1] = pos;
637 *end_ptr = p;
638 }
639 break;
640 case 19:
641 #line 66 "hb-buffer-deserialize-json.rl"
642 { if (!parse_uint (tok, p, &info.codepoint)) return false; }
643 #line 43 "hb-buffer-deserialize-json.rl"
644 {
645 buffer->add_info (info);
646 if (unlikely (!buffer->successful))
647 return false;
648 buffer->pos[buffer->len - 1] = pos;
649 *end_ptr = p;
650 }
651 break;
652 case 9:
653 #line 67 "hb-buffer-deserialize-json.rl"
654 { if (!parse_uint (tok, p, &info.cluster )) return false; }
655 #line 43 "hb-buffer-deserialize-json.rl"
656 {
657 buffer->add_info (info);
658 if (unlikely (!buffer->successful))
659 return false;
660 buffer->pos[buffer->len - 1] = pos;
661 *end_ptr = p;
662 }
663 break;
664 case 11:
665 #line 68 "hb-buffer-deserialize-json.rl"
666 { if (!parse_int (tok, p, &pos.x_offset )) return false; }
667 #line 43 "hb-buffer-deserialize-json.rl"
668 {
669 buffer->add_info (info);
670 if (unlikely (!buffer->successful))
671 return false;
672 buffer->pos[buffer->len - 1] = pos;
673 *end_ptr = p;
674 }
675 break;
676 case 13:
677 #line 69 "hb-buffer-deserialize-json.rl"
678 { if (!parse_int (tok, p, &pos.y_offset )) return false; }
679 #line 43 "hb-buffer-deserialize-json.rl"
680 {
681 buffer->add_info (info);
682 if (unlikely (!buffer->successful))
683 return false;
684 buffer->pos[buffer->len - 1] = pos;
685 *end_ptr = p;
686 }
687 break;
688 case 4:
689 #line 70 "hb-buffer-deserialize-json.rl"
690 { if (!parse_int (tok, p, &pos.x_advance)) return false; }
691 #line 43 "hb-buffer-deserialize-json.rl"
692 {
693 buffer->add_info (info);
694 if (unlikely (!buffer->successful))
695 return false;
696 buffer->pos[buffer->len - 1] = pos;
697 *end_ptr = p;
698 }
699 break;
700 case 7:
701 #line 71 "hb-buffer-deserialize-json.rl"
702 { if (!parse_int (tok, p, &pos.y_advance)) return false; }
703 #line 43 "hb-buffer-deserialize-json.rl"
704 {
705 buffer->add_info (info);
706 if (unlikely (!buffer->successful))
707 return false;
708 buffer->pos[buffer->len - 1] = pos;
709 *end_ptr = p;
710 }
711 break;
712 #line 713 "hb-buffer-deserialize-json.hh"
713 }
714
715 _again:
716 if ( cs == 0 )
717 goto _out;
718 if ( ++p != pe )
719 goto _resume;
720 _test_eof: {}
721 _out: {}
722 }
723
724 #line 136 "hb-buffer-deserialize-json.rl"
725
726
727 *end_ptr = p;
728
729 return p == pe && *(p-1) != ']';
730 }
731
732 #endif /* HB_BUFFER_DESERIALIZE_JSON_HH */
733