• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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