1*2d1272b8SAndroid Build Coastguard Worker
2*2d1272b8SAndroid Build Coastguard Worker #line 1 "hb-buffer-deserialize-text-unicode.rl"
3*2d1272b8SAndroid Build Coastguard Worker /*
4*2d1272b8SAndroid Build Coastguard Worker * Copyright © 2013 Google, Inc.
5*2d1272b8SAndroid Build Coastguard Worker *
6*2d1272b8SAndroid Build Coastguard Worker * This is part of HarfBuzz, a text shaping library.
7*2d1272b8SAndroid Build Coastguard Worker *
8*2d1272b8SAndroid Build Coastguard Worker * Permission is hereby granted, without written agreement and without
9*2d1272b8SAndroid Build Coastguard Worker * license or royalty fees, to use, copy, modify, and distribute this
10*2d1272b8SAndroid Build Coastguard Worker * software and its documentation for any purpose, provided that the
11*2d1272b8SAndroid Build Coastguard Worker * above copyright notice and the following two paragraphs appear in
12*2d1272b8SAndroid Build Coastguard Worker * all copies of this software.
13*2d1272b8SAndroid Build Coastguard Worker *
14*2d1272b8SAndroid Build Coastguard Worker * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
15*2d1272b8SAndroid Build Coastguard Worker * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
16*2d1272b8SAndroid Build Coastguard Worker * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
17*2d1272b8SAndroid Build Coastguard Worker * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
18*2d1272b8SAndroid Build Coastguard Worker * DAMAGE.
19*2d1272b8SAndroid Build Coastguard Worker *
20*2d1272b8SAndroid Build Coastguard Worker * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
21*2d1272b8SAndroid Build Coastguard Worker * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
22*2d1272b8SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
23*2d1272b8SAndroid Build Coastguard Worker * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
24*2d1272b8SAndroid Build Coastguard Worker * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
25*2d1272b8SAndroid Build Coastguard Worker *
26*2d1272b8SAndroid Build Coastguard Worker * Google Author(s): Behdad Esfahbod
27*2d1272b8SAndroid Build Coastguard Worker */
28*2d1272b8SAndroid Build Coastguard Worker
29*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_BUFFER_DESERIALIZE_TEXT_UNICODE_HH
30*2d1272b8SAndroid Build Coastguard Worker #define HB_BUFFER_DESERIALIZE_TEXT_UNICODE_HH
31*2d1272b8SAndroid Build Coastguard Worker
32*2d1272b8SAndroid Build Coastguard Worker #include "hb.hh"
33*2d1272b8SAndroid Build Coastguard Worker
34*2d1272b8SAndroid Build Coastguard Worker
35*2d1272b8SAndroid Build Coastguard Worker #line 36 "hb-buffer-deserialize-text-unicode.hh"
36*2d1272b8SAndroid Build Coastguard Worker static const unsigned char _deserialize_text_unicode_trans_keys[] = {
37*2d1272b8SAndroid Build Coastguard Worker 0u, 0u, 9u, 117u, 43u, 102u, 48u, 102u, 48u, 57u, 9u, 124u, 9u, 124u, 9u, 124u,
38*2d1272b8SAndroid Build Coastguard Worker 9u, 124u, 0
39*2d1272b8SAndroid Build Coastguard Worker };
40*2d1272b8SAndroid Build Coastguard Worker
41*2d1272b8SAndroid Build Coastguard Worker static const char _deserialize_text_unicode_key_spans[] = {
42*2d1272b8SAndroid Build Coastguard Worker 0, 109, 60, 55, 10, 116, 116, 116,
43*2d1272b8SAndroid Build Coastguard Worker 116
44*2d1272b8SAndroid Build Coastguard Worker };
45*2d1272b8SAndroid Build Coastguard Worker
46*2d1272b8SAndroid Build Coastguard Worker static const short _deserialize_text_unicode_index_offsets[] = {
47*2d1272b8SAndroid Build Coastguard Worker 0, 0, 110, 171, 227, 238, 355, 472,
48*2d1272b8SAndroid Build Coastguard Worker 589
49*2d1272b8SAndroid Build Coastguard Worker };
50*2d1272b8SAndroid Build Coastguard Worker
51*2d1272b8SAndroid Build Coastguard Worker static const char _deserialize_text_unicode_indicies[] = {
52*2d1272b8SAndroid Build Coastguard Worker 0, 0, 0, 0, 0, 1, 1,
53*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
54*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
55*2d1272b8SAndroid Build Coastguard Worker 0, 1, 1, 1, 1, 1, 1, 1,
56*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
57*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
58*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
59*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
60*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
61*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 2, 1, 1,
62*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
63*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
64*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
65*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 2, 1, 3,
66*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 4, 4, 4, 4,
67*2d1272b8SAndroid Build Coastguard Worker 4, 4, 4, 4, 4, 4, 1, 1,
68*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 4, 4, 4,
69*2d1272b8SAndroid Build Coastguard Worker 4, 4, 4, 1, 1, 1, 1, 1,
70*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
71*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
72*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 4, 4, 4,
73*2d1272b8SAndroid Build Coastguard Worker 4, 4, 4, 1, 4, 4, 4, 4,
74*2d1272b8SAndroid Build Coastguard Worker 4, 4, 4, 4, 4, 4, 1, 1,
75*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 4, 4, 4,
76*2d1272b8SAndroid Build Coastguard Worker 4, 4, 4, 1, 1, 1, 1, 1,
77*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
78*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
79*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 4, 4, 4,
80*2d1272b8SAndroid Build Coastguard Worker 4, 4, 4, 1, 5, 6, 6, 6,
81*2d1272b8SAndroid Build Coastguard Worker 6, 6, 6, 6, 6, 6, 1, 7,
82*2d1272b8SAndroid Build Coastguard Worker 7, 7, 7, 7, 1, 1, 1, 1,
83*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
84*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 7, 1,
85*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
86*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 8, 8,
87*2d1272b8SAndroid Build Coastguard Worker 8, 8, 8, 8, 8, 8, 8, 8,
88*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 9, 1, 1, 1, 8,
89*2d1272b8SAndroid Build Coastguard Worker 8, 8, 8, 8, 8, 1, 1, 1,
90*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
91*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
92*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 8,
93*2d1272b8SAndroid Build Coastguard Worker 8, 8, 8, 8, 8, 1, 1, 1,
94*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
95*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
96*2d1272b8SAndroid Build Coastguard Worker 1, 1, 10, 1, 11, 11, 11, 11,
97*2d1272b8SAndroid Build Coastguard Worker 11, 1, 1, 1, 1, 1, 1, 1,
98*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
99*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 11, 1, 1, 1, 1,
100*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
101*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
102*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
103*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
104*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
105*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
106*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
107*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
108*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
109*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
110*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 0,
111*2d1272b8SAndroid Build Coastguard Worker 1, 12, 12, 12, 12, 12, 1, 1,
112*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
113*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
114*2d1272b8SAndroid Build Coastguard Worker 12, 1, 1, 1, 1, 1, 1, 1,
115*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
116*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
117*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
118*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
119*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
120*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
121*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
122*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
123*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
124*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
125*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 13, 1, 12, 12,
126*2d1272b8SAndroid Build Coastguard Worker 12, 12, 12, 1, 1, 1, 1, 1,
127*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
128*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 12, 1, 1,
129*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
130*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 14, 14, 14,
131*2d1272b8SAndroid Build Coastguard Worker 14, 14, 14, 14, 14, 14, 14, 1,
132*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
133*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
134*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
135*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
136*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
137*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
138*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
139*2d1272b8SAndroid Build Coastguard Worker 1, 1, 1, 1, 1, 1, 1, 1,
140*2d1272b8SAndroid Build Coastguard Worker 1, 13, 1, 0
141*2d1272b8SAndroid Build Coastguard Worker };
142*2d1272b8SAndroid Build Coastguard Worker
143*2d1272b8SAndroid Build Coastguard Worker static const char _deserialize_text_unicode_trans_targs[] = {
144*2d1272b8SAndroid Build Coastguard Worker 1, 0, 2, 3, 5, 7, 8, 6,
145*2d1272b8SAndroid Build Coastguard Worker 5, 4, 1, 6, 6, 1, 8
146*2d1272b8SAndroid Build Coastguard Worker };
147*2d1272b8SAndroid Build Coastguard Worker
148*2d1272b8SAndroid Build Coastguard Worker static const char _deserialize_text_unicode_trans_actions[] = {
149*2d1272b8SAndroid Build Coastguard Worker 0, 0, 1, 0, 2, 2, 2, 3,
150*2d1272b8SAndroid Build Coastguard Worker 0, 4, 3, 0, 5, 5, 0
151*2d1272b8SAndroid Build Coastguard Worker };
152*2d1272b8SAndroid Build Coastguard Worker
153*2d1272b8SAndroid Build Coastguard Worker static const char _deserialize_text_unicode_eof_actions[] = {
154*2d1272b8SAndroid Build Coastguard Worker 0, 0, 0, 0, 0, 3, 0, 5,
155*2d1272b8SAndroid Build Coastguard Worker 5
156*2d1272b8SAndroid Build Coastguard Worker };
157*2d1272b8SAndroid Build Coastguard Worker
158*2d1272b8SAndroid Build Coastguard Worker static const int deserialize_text_unicode_start = 1;
159*2d1272b8SAndroid Build Coastguard Worker static const int deserialize_text_unicode_first_final = 5;
160*2d1272b8SAndroid Build Coastguard Worker static const int deserialize_text_unicode_error = 0;
161*2d1272b8SAndroid Build Coastguard Worker
162*2d1272b8SAndroid Build Coastguard Worker static const int deserialize_text_unicode_en_main = 1;
163*2d1272b8SAndroid Build Coastguard Worker
164*2d1272b8SAndroid Build Coastguard Worker
165*2d1272b8SAndroid Build Coastguard Worker #line 79 "hb-buffer-deserialize-text-unicode.rl"
166*2d1272b8SAndroid Build Coastguard Worker
167*2d1272b8SAndroid Build Coastguard Worker
168*2d1272b8SAndroid Build Coastguard Worker static hb_bool_t
_hb_buffer_deserialize_text_unicode(hb_buffer_t * buffer,const char * buf,unsigned int buf_len,const char ** end_ptr,hb_font_t * font)169*2d1272b8SAndroid Build Coastguard Worker _hb_buffer_deserialize_text_unicode (hb_buffer_t *buffer,
170*2d1272b8SAndroid Build Coastguard Worker const char *buf,
171*2d1272b8SAndroid Build Coastguard Worker unsigned int buf_len,
172*2d1272b8SAndroid Build Coastguard Worker const char **end_ptr,
173*2d1272b8SAndroid Build Coastguard Worker hb_font_t *font)
174*2d1272b8SAndroid Build Coastguard Worker {
175*2d1272b8SAndroid Build Coastguard Worker const char *p = buf, *pe = buf + buf_len, *eof = pe, *orig_pe = pe;
176*2d1272b8SAndroid Build Coastguard Worker
177*2d1272b8SAndroid Build Coastguard Worker while (p < pe && ISSPACE (*p))
178*2d1272b8SAndroid Build Coastguard Worker p++;
179*2d1272b8SAndroid Build Coastguard Worker if (p < pe && *p == (buffer->len ? '|' : '<'))
180*2d1272b8SAndroid Build Coastguard Worker *end_ptr = ++p;
181*2d1272b8SAndroid Build Coastguard Worker
182*2d1272b8SAndroid Build Coastguard Worker const char *end = strchr ((char *) p, '>');
183*2d1272b8SAndroid Build Coastguard Worker if (end)
184*2d1272b8SAndroid Build Coastguard Worker pe = eof = end;
185*2d1272b8SAndroid Build Coastguard Worker else
186*2d1272b8SAndroid Build Coastguard Worker {
187*2d1272b8SAndroid Build Coastguard Worker end = strrchr ((char *) p, '|');
188*2d1272b8SAndroid Build Coastguard Worker if (end)
189*2d1272b8SAndroid Build Coastguard Worker pe = eof = end;
190*2d1272b8SAndroid Build Coastguard Worker else
191*2d1272b8SAndroid Build Coastguard Worker pe = eof = p;
192*2d1272b8SAndroid Build Coastguard Worker }
193*2d1272b8SAndroid Build Coastguard Worker
194*2d1272b8SAndroid Build Coastguard Worker
195*2d1272b8SAndroid Build Coastguard Worker const char *tok = nullptr;
196*2d1272b8SAndroid Build Coastguard Worker int cs;
197*2d1272b8SAndroid Build Coastguard Worker hb_glyph_info_t info = {0};
198*2d1272b8SAndroid Build Coastguard Worker const hb_glyph_position_t pos = {0};
199*2d1272b8SAndroid Build Coastguard Worker
200*2d1272b8SAndroid Build Coastguard Worker #line 201 "hb-buffer-deserialize-text-unicode.hh"
201*2d1272b8SAndroid Build Coastguard Worker {
202*2d1272b8SAndroid Build Coastguard Worker cs = deserialize_text_unicode_start;
203*2d1272b8SAndroid Build Coastguard Worker }
204*2d1272b8SAndroid Build Coastguard Worker
205*2d1272b8SAndroid Build Coastguard Worker #line 206 "hb-buffer-deserialize-text-unicode.hh"
206*2d1272b8SAndroid Build Coastguard Worker {
207*2d1272b8SAndroid Build Coastguard Worker int _slen;
208*2d1272b8SAndroid Build Coastguard Worker int _trans;
209*2d1272b8SAndroid Build Coastguard Worker const unsigned char *_keys;
210*2d1272b8SAndroid Build Coastguard Worker const char *_inds;
211*2d1272b8SAndroid Build Coastguard Worker if ( p == pe )
212*2d1272b8SAndroid Build Coastguard Worker goto _test_eof;
213*2d1272b8SAndroid Build Coastguard Worker if ( cs == 0 )
214*2d1272b8SAndroid Build Coastguard Worker goto _out;
215*2d1272b8SAndroid Build Coastguard Worker _resume:
216*2d1272b8SAndroid Build Coastguard Worker _keys = _deserialize_text_unicode_trans_keys + (cs<<1);
217*2d1272b8SAndroid Build Coastguard Worker _inds = _deserialize_text_unicode_indicies + _deserialize_text_unicode_index_offsets[cs];
218*2d1272b8SAndroid Build Coastguard Worker
219*2d1272b8SAndroid Build Coastguard Worker _slen = _deserialize_text_unicode_key_spans[cs];
220*2d1272b8SAndroid Build Coastguard Worker _trans = _inds[ _slen > 0 && _keys[0] <=(*p) &&
221*2d1272b8SAndroid Build Coastguard Worker (*p) <= _keys[1] ?
222*2d1272b8SAndroid Build Coastguard Worker (*p) - _keys[0] : _slen ];
223*2d1272b8SAndroid Build Coastguard Worker
224*2d1272b8SAndroid Build Coastguard Worker cs = _deserialize_text_unicode_trans_targs[_trans];
225*2d1272b8SAndroid Build Coastguard Worker
226*2d1272b8SAndroid Build Coastguard Worker if ( _deserialize_text_unicode_trans_actions[_trans] == 0 )
227*2d1272b8SAndroid Build Coastguard Worker goto _again;
228*2d1272b8SAndroid Build Coastguard Worker
229*2d1272b8SAndroid Build Coastguard Worker switch ( _deserialize_text_unicode_trans_actions[_trans] ) {
230*2d1272b8SAndroid Build Coastguard Worker case 1:
231*2d1272b8SAndroid Build Coastguard Worker #line 38 "hb-buffer-deserialize-text-unicode.rl"
232*2d1272b8SAndroid Build Coastguard Worker {
233*2d1272b8SAndroid Build Coastguard Worker hb_memset (&info, 0, sizeof (info));
234*2d1272b8SAndroid Build Coastguard Worker }
235*2d1272b8SAndroid Build Coastguard Worker break;
236*2d1272b8SAndroid Build Coastguard Worker case 2:
237*2d1272b8SAndroid Build Coastguard Worker #line 51 "hb-buffer-deserialize-text-unicode.rl"
238*2d1272b8SAndroid Build Coastguard Worker {
239*2d1272b8SAndroid Build Coastguard Worker tok = p;
240*2d1272b8SAndroid Build Coastguard Worker }
241*2d1272b8SAndroid Build Coastguard Worker break;
242*2d1272b8SAndroid Build Coastguard Worker case 4:
243*2d1272b8SAndroid Build Coastguard Worker #line 55 "hb-buffer-deserialize-text-unicode.rl"
244*2d1272b8SAndroid Build Coastguard Worker {if (!parse_hex (tok, p, &info.codepoint )) return false; }
245*2d1272b8SAndroid Build Coastguard Worker break;
246*2d1272b8SAndroid Build Coastguard Worker case 3:
247*2d1272b8SAndroid Build Coastguard Worker #line 55 "hb-buffer-deserialize-text-unicode.rl"
248*2d1272b8SAndroid Build Coastguard Worker {if (!parse_hex (tok, p, &info.codepoint )) return false; }
249*2d1272b8SAndroid Build Coastguard Worker #line 42 "hb-buffer-deserialize-text-unicode.rl"
250*2d1272b8SAndroid Build Coastguard Worker {
251*2d1272b8SAndroid Build Coastguard Worker buffer->add_info (info);
252*2d1272b8SAndroid Build Coastguard Worker if (unlikely (!buffer->successful))
253*2d1272b8SAndroid Build Coastguard Worker return false;
254*2d1272b8SAndroid Build Coastguard Worker if (buffer->have_positions)
255*2d1272b8SAndroid Build Coastguard Worker buffer->pos[buffer->len - 1] = pos;
256*2d1272b8SAndroid Build Coastguard Worker *end_ptr = p;
257*2d1272b8SAndroid Build Coastguard Worker }
258*2d1272b8SAndroid Build Coastguard Worker break;
259*2d1272b8SAndroid Build Coastguard Worker case 5:
260*2d1272b8SAndroid Build Coastguard Worker #line 57 "hb-buffer-deserialize-text-unicode.rl"
261*2d1272b8SAndroid Build Coastguard Worker { if (!parse_uint (tok, p, &info.cluster )) return false; }
262*2d1272b8SAndroid Build Coastguard Worker #line 42 "hb-buffer-deserialize-text-unicode.rl"
263*2d1272b8SAndroid Build Coastguard Worker {
264*2d1272b8SAndroid Build Coastguard Worker buffer->add_info (info);
265*2d1272b8SAndroid Build Coastguard Worker if (unlikely (!buffer->successful))
266*2d1272b8SAndroid Build Coastguard Worker return false;
267*2d1272b8SAndroid Build Coastguard Worker if (buffer->have_positions)
268*2d1272b8SAndroid Build Coastguard Worker buffer->pos[buffer->len - 1] = pos;
269*2d1272b8SAndroid Build Coastguard Worker *end_ptr = p;
270*2d1272b8SAndroid Build Coastguard Worker }
271*2d1272b8SAndroid Build Coastguard Worker break;
272*2d1272b8SAndroid Build Coastguard Worker #line 273 "hb-buffer-deserialize-text-unicode.hh"
273*2d1272b8SAndroid Build Coastguard Worker }
274*2d1272b8SAndroid Build Coastguard Worker
275*2d1272b8SAndroid Build Coastguard Worker _again:
276*2d1272b8SAndroid Build Coastguard Worker if ( cs == 0 )
277*2d1272b8SAndroid Build Coastguard Worker goto _out;
278*2d1272b8SAndroid Build Coastguard Worker if ( ++p != pe )
279*2d1272b8SAndroid Build Coastguard Worker goto _resume;
280*2d1272b8SAndroid Build Coastguard Worker _test_eof: {}
281*2d1272b8SAndroid Build Coastguard Worker if ( p == eof )
282*2d1272b8SAndroid Build Coastguard Worker {
283*2d1272b8SAndroid Build Coastguard Worker switch ( _deserialize_text_unicode_eof_actions[cs] ) {
284*2d1272b8SAndroid Build Coastguard Worker case 3:
285*2d1272b8SAndroid Build Coastguard Worker #line 55 "hb-buffer-deserialize-text-unicode.rl"
286*2d1272b8SAndroid Build Coastguard Worker {if (!parse_hex (tok, p, &info.codepoint )) return false; }
287*2d1272b8SAndroid Build Coastguard Worker #line 42 "hb-buffer-deserialize-text-unicode.rl"
288*2d1272b8SAndroid Build Coastguard Worker {
289*2d1272b8SAndroid Build Coastguard Worker buffer->add_info (info);
290*2d1272b8SAndroid Build Coastguard Worker if (unlikely (!buffer->successful))
291*2d1272b8SAndroid Build Coastguard Worker return false;
292*2d1272b8SAndroid Build Coastguard Worker if (buffer->have_positions)
293*2d1272b8SAndroid Build Coastguard Worker buffer->pos[buffer->len - 1] = pos;
294*2d1272b8SAndroid Build Coastguard Worker *end_ptr = p;
295*2d1272b8SAndroid Build Coastguard Worker }
296*2d1272b8SAndroid Build Coastguard Worker break;
297*2d1272b8SAndroid Build Coastguard Worker case 5:
298*2d1272b8SAndroid Build Coastguard Worker #line 57 "hb-buffer-deserialize-text-unicode.rl"
299*2d1272b8SAndroid Build Coastguard Worker { if (!parse_uint (tok, p, &info.cluster )) return false; }
300*2d1272b8SAndroid Build Coastguard Worker #line 42 "hb-buffer-deserialize-text-unicode.rl"
301*2d1272b8SAndroid Build Coastguard Worker {
302*2d1272b8SAndroid Build Coastguard Worker buffer->add_info (info);
303*2d1272b8SAndroid Build Coastguard Worker if (unlikely (!buffer->successful))
304*2d1272b8SAndroid Build Coastguard Worker return false;
305*2d1272b8SAndroid Build Coastguard Worker if (buffer->have_positions)
306*2d1272b8SAndroid Build Coastguard Worker buffer->pos[buffer->len - 1] = pos;
307*2d1272b8SAndroid Build Coastguard Worker *end_ptr = p;
308*2d1272b8SAndroid Build Coastguard Worker }
309*2d1272b8SAndroid Build Coastguard Worker break;
310*2d1272b8SAndroid Build Coastguard Worker #line 311 "hb-buffer-deserialize-text-unicode.hh"
311*2d1272b8SAndroid Build Coastguard Worker }
312*2d1272b8SAndroid Build Coastguard Worker }
313*2d1272b8SAndroid Build Coastguard Worker
314*2d1272b8SAndroid Build Coastguard Worker _out: {}
315*2d1272b8SAndroid Build Coastguard Worker }
316*2d1272b8SAndroid Build Coastguard Worker
317*2d1272b8SAndroid Build Coastguard Worker #line 115 "hb-buffer-deserialize-text-unicode.rl"
318*2d1272b8SAndroid Build Coastguard Worker
319*2d1272b8SAndroid Build Coastguard Worker
320*2d1272b8SAndroid Build Coastguard Worker if (pe < orig_pe && *pe == '>')
321*2d1272b8SAndroid Build Coastguard Worker {
322*2d1272b8SAndroid Build Coastguard Worker pe++;
323*2d1272b8SAndroid Build Coastguard Worker if (p == pe)
324*2d1272b8SAndroid Build Coastguard Worker p++;
325*2d1272b8SAndroid Build Coastguard Worker }
326*2d1272b8SAndroid Build Coastguard Worker
327*2d1272b8SAndroid Build Coastguard Worker *end_ptr = p;
328*2d1272b8SAndroid Build Coastguard Worker
329*2d1272b8SAndroid Build Coastguard Worker return p == pe;
330*2d1272b8SAndroid Build Coastguard Worker }
331*2d1272b8SAndroid Build Coastguard Worker
332*2d1272b8SAndroid Build Coastguard Worker #endif /* HB_BUFFER_DESERIALIZE_TEXT_UNICODE_HH */
333