1
2#line 1 "hb-ot-shaper-myanmar-machine.rl"
3/*
4 * Copyright © 2011,2012 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_OT_SHAPER_MYANMAR_MACHINE_HH
30#define HB_OT_SHAPER_MYANMAR_MACHINE_HH
31
32#include "hb.hh"
33
34#include "hb-ot-layout.hh"
35#include "hb-ot-shaper-indic.hh"
36
37/* buffer var allocations */
38#define myanmar_category() ot_shaper_var_u8_category() /* myanmar_category_t */
39#define myanmar_position() ot_shaper_var_u8_auxiliary() /* myanmar_position_t */
40
41using myanmar_category_t = unsigned;
42using myanmar_position_t = ot_position_t;
43
44#define M_Cat(Cat) myanmar_syllable_machine_ex_##Cat
45
46enum myanmar_syllable_type_t {
47 myanmar_consonant_syllable,
48 myanmar_broken_cluster,
49 myanmar_non_myanmar_cluster,
50};
51
52
53#line 51 "hb-ot-shaper-myanmar-machine.hh"
54#define myanmar_syllable_machine_ex_A 9u
55#define myanmar_syllable_machine_ex_As 32u
56#define myanmar_syllable_machine_ex_C 1u
57#define myanmar_syllable_machine_ex_CS 18u
58#define myanmar_syllable_machine_ex_DB 3u
59#define myanmar_syllable_machine_ex_DOTTEDCIRCLE 11u
60#define myanmar_syllable_machine_ex_GB 10u
61#define myanmar_syllable_machine_ex_H 4u
62#define myanmar_syllable_machine_ex_IV 2u
63#define myanmar_syllable_machine_ex_MH 35u
64#define myanmar_syllable_machine_ex_ML 41u
65#define myanmar_syllable_machine_ex_MR 36u
66#define myanmar_syllable_machine_ex_MW 37u
67#define myanmar_syllable_machine_ex_MY 38u
68#define myanmar_syllable_machine_ex_PT 39u
69#define myanmar_syllable_machine_ex_Ra 15u
70#define myanmar_syllable_machine_ex_SM 8u
71#define myanmar_syllable_machine_ex_VAbv 20u
72#define myanmar_syllable_machine_ex_VBlw 21u
73#define myanmar_syllable_machine_ex_VPre 22u
74#define myanmar_syllable_machine_ex_VPst 23u
75#define myanmar_syllable_machine_ex_VS 40u
76#define myanmar_syllable_machine_ex_ZWJ 6u
77#define myanmar_syllable_machine_ex_ZWNJ 5u
78
79
80#line 76 "hb-ot-shaper-myanmar-machine.hh"
81static const unsigned char _myanmar_syllable_machine_trans_keys[] = {
82 1u, 41u, 3u, 41u, 5u, 39u, 5u, 8u, 3u, 41u, 3u, 39u, 3u, 39u, 5u, 39u,
83 5u, 39u, 3u, 39u, 3u, 39u, 3u, 41u, 5u, 39u, 1u, 15u, 3u, 39u, 3u, 39u,
84 3u, 40u, 3u, 39u, 3u, 41u, 3u, 41u, 3u, 39u, 3u, 41u, 3u, 41u, 3u, 41u,
85 3u, 41u, 3u, 41u, 5u, 39u, 5u, 8u, 3u, 41u, 3u, 39u, 3u, 39u, 5u, 39u,
86 5u, 39u, 3u, 39u, 3u, 39u, 3u, 41u, 5u, 39u, 1u, 15u, 3u, 41u, 3u, 39u,
87 3u, 39u, 3u, 40u, 3u, 39u, 3u, 41u, 3u, 41u, 3u, 39u, 3u, 41u, 3u, 41u,
88 3u, 41u, 3u, 41u, 3u, 41u, 3u, 41u, 3u, 41u, 1u, 41u, 1u, 15u, 0
89};
90
91static const char _myanmar_syllable_machine_key_spans[] = {
92 41, 39, 35, 4, 39, 37, 37, 35,
93 35, 37, 37, 39, 35, 15, 37, 37,
94 38, 37, 39, 39, 37, 39, 39, 39,
95 39, 39, 35, 4, 39, 37, 37, 35,
96 35, 37, 37, 39, 35, 15, 39, 37,
97 37, 38, 37, 39, 39, 37, 39, 39,
98 39, 39, 39, 39, 39, 41, 15
99};
100
101static const short _myanmar_syllable_machine_index_offsets[] = {
102 0, 42, 82, 118, 123, 163, 201, 239,
103 275, 311, 349, 387, 427, 463, 479, 517,
104 555, 594, 632, 672, 712, 750, 790, 830,
105 870, 910, 950, 986, 991, 1031, 1069, 1107,
106 1143, 1179, 1217, 1255, 1295, 1331, 1347, 1387,
107 1425, 1463, 1502, 1540, 1580, 1620, 1658, 1698,
108 1738, 1778, 1818, 1858, 1898, 1938, 1980
109};
110
111static const char _myanmar_syllable_machine_indicies[] = {
112 1, 1, 2, 3, 4, 4, 0, 5,
113 6, 1, 1, 0, 0, 0, 7, 0,
114 0, 8, 0, 9, 10, 11, 12, 0,
115 0, 0, 0, 0, 0, 0, 0, 13,
116 0, 0, 14, 15, 16, 17, 18, 19,
117 20, 0, 22, 23, 24, 24, 21, 25,
118 26, 21, 21, 21, 21, 21, 21, 21,
119 21, 21, 21, 27, 28, 29, 30, 21,
120 21, 21, 21, 21, 21, 21, 21, 31,
121 21, 21, 32, 33, 34, 35, 36, 37,
122 38, 21, 24, 24, 21, 25, 21, 21,
123 21, 21, 21, 21, 21, 21, 21, 21,
124 21, 21, 21, 21, 30, 21, 21, 21,
125 21, 21, 21, 21, 21, 39, 21, 21,
126 21, 21, 21, 21, 36, 21, 24, 24,
127 21, 25, 21, 22, 21, 24, 24, 21,
128 25, 26, 21, 21, 21, 21, 21, 21,
129 21, 21, 21, 21, 40, 21, 21, 30,
130 21, 21, 21, 21, 21, 21, 21, 21,
131 41, 21, 21, 42, 21, 21, 21, 36,
132 21, 41, 21, 22, 21, 24, 24, 21,
133 25, 26, 21, 21, 21, 21, 21, 21,
134 21, 21, 21, 21, 21, 21, 21, 30,
135 21, 21, 21, 21, 21, 21, 21, 21,
136 21, 21, 21, 21, 21, 21, 21, 36,
137 21, 43, 21, 24, 24, 21, 25, 36,
138 21, 21, 21, 21, 21, 21, 21, 21,
139 21, 21, 21, 21, 21, 21, 21, 21,
140 21, 21, 21, 21, 21, 21, 44, 21,
141 21, 21, 21, 21, 21, 36, 21, 24,
142 24, 21, 25, 21, 21, 21, 21, 21,
143 21, 21, 21, 21, 21, 21, 21, 21,
144 21, 21, 21, 21, 21, 21, 21, 21,
145 21, 21, 44, 21, 21, 21, 21, 21,
146 21, 36, 21, 24, 24, 21, 25, 21,
147 21, 21, 21, 21, 21, 21, 21, 21,
148 21, 21, 21, 21, 21, 21, 21, 21,
149 21, 21, 21, 21, 21, 21, 21, 21,
150 21, 21, 21, 21, 21, 36, 21, 22,
151 21, 24, 24, 21, 25, 26, 21, 21,
152 21, 21, 21, 21, 21, 21, 21, 21,
153 40, 21, 21, 30, 21, 21, 21, 21,
154 21, 21, 21, 21, 21, 21, 21, 21,
155 21, 21, 21, 36, 21, 22, 21, 24,
156 24, 21, 25, 26, 21, 21, 21, 21,
157 21, 21, 21, 21, 21, 21, 40, 21,
158 21, 30, 21, 21, 21, 21, 21, 21,
159 21, 21, 41, 21, 21, 21, 21, 21,
160 21, 36, 21, 22, 21, 24, 24, 21,
161 25, 26, 21, 21, 21, 21, 21, 21,
162 21, 21, 21, 21, 40, 21, 21, 30,
163 21, 21, 21, 21, 21, 21, 21, 21,
164 41, 21, 21, 21, 21, 21, 21, 36,
165 21, 41, 21, 24, 24, 21, 25, 21,
166 21, 21, 21, 21, 21, 21, 21, 21,
167 21, 21, 21, 21, 21, 30, 21, 21,
168 21, 21, 21, 21, 21, 21, 21, 21,
169 21, 21, 21, 21, 21, 36, 21, 1,
170 1, 21, 21, 21, 21, 21, 21, 21,
171 21, 21, 21, 21, 21, 1, 21, 22,
172 21, 24, 24, 21, 25, 26, 21, 21,
173 21, 21, 21, 21, 21, 21, 21, 21,
174 27, 28, 21, 30, 21, 21, 21, 21,
175 21, 21, 21, 21, 21, 21, 21, 21,
176 21, 21, 21, 36, 21, 22, 21, 24,
177 24, 21, 25, 26, 21, 21, 21, 21,
178 21, 21, 21, 21, 21, 21, 21, 28,
179 21, 30, 21, 21, 21, 21, 21, 21,
180 21, 21, 21, 21, 21, 21, 21, 21,
181 21, 36, 21, 22, 21, 24, 24, 21,
182 25, 26, 21, 21, 21, 21, 21, 21,
183 21, 21, 21, 21, 27, 28, 29, 30,
184 21, 21, 21, 21, 21, 21, 21, 21,
185 21, 21, 21, 21, 21, 21, 21, 36,
186 45, 21, 22, 21, 24, 24, 21, 25,
187 26, 21, 21, 21, 21, 21, 21, 21,
188 21, 21, 21, 27, 28, 29, 30, 21,
189 21, 21, 21, 21, 21, 21, 21, 21,
190 21, 21, 21, 21, 21, 21, 36, 21,
191 22, 21, 24, 24, 21, 25, 26, 21,
192 21, 21, 21, 21, 21, 21, 21, 21,
193 21, 27, 28, 29, 30, 21, 21, 21,
194 21, 21, 21, 21, 21, 31, 21, 21,
195 32, 33, 34, 35, 36, 21, 38, 21,
196 22, 21, 24, 24, 21, 25, 26, 21,
197 21, 21, 21, 21, 21, 21, 21, 21,
198 21, 27, 28, 29, 30, 21, 21, 21,
199 21, 21, 21, 21, 21, 45, 21, 21,
200 21, 21, 21, 21, 36, 21, 38, 21,
201 22, 21, 24, 24, 21, 25, 26, 21,
202 21, 21, 21, 21, 21, 21, 21, 21,
203 21, 27, 28, 29, 30, 21, 21, 21,
204 21, 21, 21, 21, 21, 45, 21, 21,
205 21, 21, 21, 21, 36, 21, 22, 21,
206 24, 24, 21, 25, 26, 21, 21, 21,
207 21, 21, 21, 21, 21, 21, 21, 27,
208 28, 29, 30, 21, 21, 21, 21, 21,
209 21, 21, 21, 21, 21, 21, 32, 21,
210 34, 21, 36, 21, 38, 21, 22, 21,
211 24, 24, 21, 25, 26, 21, 21, 21,
212 21, 21, 21, 21, 21, 21, 21, 27,
213 28, 29, 30, 21, 21, 21, 21, 21,
214 21, 21, 21, 45, 21, 21, 32, 21,
215 21, 21, 36, 21, 38, 21, 22, 21,
216 24, 24, 21, 25, 26, 21, 21, 21,
217 21, 21, 21, 21, 21, 21, 21, 27,
218 28, 29, 30, 21, 21, 21, 21, 21,
219 21, 21, 21, 46, 21, 21, 32, 33,
220 34, 21, 36, 21, 38, 21, 22, 21,
221 24, 24, 21, 25, 26, 21, 21, 21,
222 21, 21, 21, 21, 21, 21, 21, 27,
223 28, 29, 30, 21, 21, 21, 21, 21,
224 21, 21, 21, 21, 21, 21, 32, 33,
225 34, 21, 36, 21, 38, 21, 22, 23,
226 24, 24, 21, 25, 26, 21, 21, 21,
227 21, 21, 21, 21, 21, 21, 21, 27,
228 28, 29, 30, 21, 21, 21, 21, 21,
229 21, 21, 21, 31, 21, 21, 32, 33,
230 34, 35, 36, 21, 38, 21, 48, 48,
231 47, 5, 47, 47, 47, 47, 47, 47,
232 47, 47, 47, 47, 47, 47, 47, 47,
233 12, 47, 47, 47, 47, 47, 47, 47,
234 47, 49, 47, 47, 47, 47, 47, 47,
235 18, 47, 48, 48, 47, 5, 47, 2,
236 47, 48, 48, 47, 5, 6, 47, 47,
237 47, 47, 47, 47, 47, 47, 47, 47,
238 50, 47, 47, 12, 47, 47, 47, 47,
239 47, 47, 47, 47, 51, 47, 47, 52,
240 47, 47, 47, 18, 47, 51, 47, 2,
241 47, 48, 48, 47, 5, 6, 47, 47,
242 47, 47, 47, 47, 47, 47, 47, 47,
243 47, 47, 47, 12, 47, 47, 47, 47,
244 47, 47, 47, 47, 47, 47, 47, 47,
245 47, 47, 47, 18, 47, 53, 47, 48,
246 48, 47, 5, 18, 47, 47, 47, 47,
247 47, 47, 47, 47, 47, 47, 47, 47,
248 47, 47, 47, 47, 47, 47, 47, 47,
249 47, 47, 54, 47, 47, 47, 47, 47,
250 47, 18, 47, 48, 48, 47, 5, 47,
251 47, 47, 47, 47, 47, 47, 47, 47,
252 47, 47, 47, 47, 47, 47, 47, 47,
253 47, 47, 47, 47, 47, 47, 54, 47,
254 47, 47, 47, 47, 47, 18, 47, 48,
255 48, 47, 5, 47, 47, 47, 47, 47,
256 47, 47, 47, 47, 47, 47, 47, 47,
257 47, 47, 47, 47, 47, 47, 47, 47,
258 47, 47, 47, 47, 47, 47, 47, 47,
259 47, 18, 47, 2, 47, 48, 48, 47,
260 5, 6, 47, 47, 47, 47, 47, 47,
261 47, 47, 47, 47, 50, 47, 47, 12,
262 47, 47, 47, 47, 47, 47, 47, 47,
263 47, 47, 47, 47, 47, 47, 47, 18,
264 47, 2, 47, 48, 48, 47, 5, 6,
265 47, 47, 47, 47, 47, 47, 47, 47,
266 47, 47, 50, 47, 47, 12, 47, 47,
267 47, 47, 47, 47, 47, 47, 51, 47,
268 47, 47, 47, 47, 47, 18, 47, 2,
269 47, 48, 48, 47, 5, 6, 47, 47,
270 47, 47, 47, 47, 47, 47, 47, 47,
271 50, 47, 47, 12, 47, 47, 47, 47,
272 47, 47, 47, 47, 51, 47, 47, 47,
273 47, 47, 47, 18, 47, 51, 47, 48,
274 48, 47, 5, 47, 47, 47, 47, 47,
275 47, 47, 47, 47, 47, 47, 47, 47,
276 47, 12, 47, 47, 47, 47, 47, 47,
277 47, 47, 47, 47, 47, 47, 47, 47,
278 47, 18, 47, 55, 55, 47, 47, 47,
279 47, 47, 47, 47, 47, 47, 47, 47,
280 47, 55, 47, 2, 3, 48, 48, 47,
281 5, 6, 47, 47, 47, 47, 47, 47,
282 47, 47, 47, 47, 9, 10, 11, 12,
283 47, 47, 47, 47, 47, 47, 47, 47,
284 13, 47, 47, 14, 15, 16, 17, 18,
285 19, 20, 47, 2, 47, 48, 48, 47,
286 5, 6, 47, 47, 47, 47, 47, 47,
287 47, 47, 47, 47, 9, 10, 47, 12,
288 47, 47, 47, 47, 47, 47, 47, 47,
289 47, 47, 47, 47, 47, 47, 47, 18,
290 47, 2, 47, 48, 48, 47, 5, 6,
291 47, 47, 47, 47, 47, 47, 47, 47,
292 47, 47, 47, 10, 47, 12, 47, 47,
293 47, 47, 47, 47, 47, 47, 47, 47,
294 47, 47, 47, 47, 47, 18, 47, 2,
295 47, 48, 48, 47, 5, 6, 47, 47,
296 47, 47, 47, 47, 47, 47, 47, 47,
297 9, 10, 11, 12, 47, 47, 47, 47,
298 47, 47, 47, 47, 47, 47, 47, 47,
299 47, 47, 47, 18, 56, 47, 2, 47,
300 48, 48, 47, 5, 6, 47, 47, 47,
301 47, 47, 47, 47, 47, 47, 47, 9,
302 10, 11, 12, 47, 47, 47, 47, 47,
303 47, 47, 47, 47, 47, 47, 47, 47,
304 47, 47, 18, 47, 2, 47, 48, 48,
305 47, 5, 6, 47, 47, 47, 47, 47,
306 47, 47, 47, 47, 47, 9, 10, 11,
307 12, 47, 47, 47, 47, 47, 47, 47,
308 47, 13, 47, 47, 14, 15, 16, 17,
309 18, 47, 20, 47, 2, 47, 48, 48,
310 47, 5, 6, 47, 47, 47, 47, 47,
311 47, 47, 47, 47, 47, 9, 10, 11,
312 12, 47, 47, 47, 47, 47, 47, 47,
313 47, 56, 47, 47, 47, 47, 47, 47,
314 18, 47, 20, 47, 2, 47, 48, 48,
315 47, 5, 6, 47, 47, 47, 47, 47,
316 47, 47, 47, 47, 47, 9, 10, 11,
317 12, 47, 47, 47, 47, 47, 47, 47,
318 47, 56, 47, 47, 47, 47, 47, 47,
319 18, 47, 2, 47, 48, 48, 47, 5,
320 6, 47, 47, 47, 47, 47, 47, 47,
321 47, 47, 47, 9, 10, 11, 12, 47,
322 47, 47, 47, 47, 47, 47, 47, 47,
323 47, 47, 14, 47, 16, 47, 18, 47,
324 20, 47, 2, 47, 48, 48, 47, 5,
325 6, 47, 47, 47, 47, 47, 47, 47,
326 47, 47, 47, 9, 10, 11, 12, 47,
327 47, 47, 47, 47, 47, 47, 47, 56,
328 47, 47, 14, 47, 47, 47, 18, 47,
329 20, 47, 2, 47, 48, 48, 47, 5,
330 6, 47, 47, 47, 47, 47, 47, 47,
331 47, 47, 47, 9, 10, 11, 12, 47,
332 47, 47, 47, 47, 47, 47, 47, 57,
333 47, 47, 14, 15, 16, 47, 18, 47,
334 20, 47, 2, 47, 48, 48, 47, 5,
335 6, 47, 47, 47, 47, 47, 47, 47,
336 47, 47, 47, 9, 10, 11, 12, 47,
337 47, 47, 47, 47, 47, 47, 47, 47,
338 47, 47, 14, 15, 16, 47, 18, 47,
339 20, 47, 2, 3, 48, 48, 47, 5,
340 6, 47, 47, 47, 47, 47, 47, 47,
341 47, 47, 47, 9, 10, 11, 12, 47,
342 47, 47, 47, 47, 47, 47, 47, 13,
343 47, 47, 14, 15, 16, 17, 18, 47,
344 20, 47, 22, 23, 24, 24, 21, 25,
345 26, 21, 21, 21, 21, 21, 21, 21,
346 21, 21, 21, 27, 28, 29, 30, 21,
347 21, 21, 21, 21, 21, 21, 21, 58,
348 21, 21, 32, 33, 34, 35, 36, 37,
349 38, 21, 22, 59, 24, 24, 21, 25,
350 26, 21, 21, 21, 21, 21, 21, 21,
351 21, 21, 21, 27, 28, 29, 30, 21,
352 21, 21, 21, 21, 21, 21, 21, 31,
353 21, 21, 32, 33, 34, 35, 36, 21,
354 38, 21, 1, 1, 2, 3, 48, 48,
355 47, 5, 6, 1, 1, 47, 47, 47,
356 1, 47, 47, 47, 47, 9, 10, 11,
357 12, 47, 47, 47, 47, 47, 47, 47,
358 47, 13, 47, 47, 14, 15, 16, 17,
359 18, 19, 20, 47, 1, 1, 60, 60,
360 60, 60, 60, 60, 60, 1, 1, 60,
361 60, 60, 1, 60, 0
362};
363
364static const char _myanmar_syllable_machine_trans_targs[] = {
365 0, 1, 26, 37, 0, 27, 29, 51,
366 54, 39, 40, 41, 28, 43, 44, 46,
367 47, 48, 30, 50, 45, 0, 2, 13,
368 0, 3, 5, 14, 15, 16, 4, 18,
369 19, 21, 22, 23, 6, 25, 20, 12,
370 9, 10, 11, 7, 8, 17, 24, 0,
371 0, 36, 33, 34, 35, 31, 32, 38,
372 42, 49, 52, 53, 0
373};
374
375static const char _myanmar_syllable_machine_trans_actions[] = {
376 3, 0, 0, 0, 4, 0, 0, 0,
377 0, 0, 0, 0, 0, 0, 0, 0,
378 0, 0, 0, 0, 0, 5, 0, 0,
379 6, 0, 0, 0, 0, 0, 0, 0,
380 0, 0, 0, 0, 0, 0, 0, 0,
381 0, 0, 0, 0, 0, 0, 0, 7,
382 8, 0, 0, 0, 0, 0, 0, 0,
383 0, 0, 0, 0, 9
384};
385
386static const char _myanmar_syllable_machine_to_state_actions[] = {
387 1, 0, 0, 0, 0, 0, 0, 0,
388 0, 0, 0, 0, 0, 0, 0, 0,
389 0, 0, 0, 0, 0, 0, 0, 0,
390 0, 0, 0, 0, 0, 0, 0, 0,
391 0, 0, 0, 0, 0, 0, 0, 0,
392 0, 0, 0, 0, 0, 0, 0, 0,
393 0, 0, 0, 0, 0, 0, 0
394};
395
396static const char _myanmar_syllable_machine_from_state_actions[] = {
397 2, 0, 0, 0, 0, 0, 0, 0,
398 0, 0, 0, 0, 0, 0, 0, 0,
399 0, 0, 0, 0, 0, 0, 0, 0,
400 0, 0, 0, 0, 0, 0, 0, 0,
401 0, 0, 0, 0, 0, 0, 0, 0,
402 0, 0, 0, 0, 0, 0, 0, 0,
403 0, 0, 0, 0, 0, 0, 0
404};
405
406static const short _myanmar_syllable_machine_eof_trans[] = {
407 0, 22, 22, 22, 22, 22, 22, 22,
408 22, 22, 22, 22, 22, 22, 22, 22,
409 22, 22, 22, 22, 22, 22, 22, 22,
410 22, 22, 48, 48, 48, 48, 48, 48,
411 48, 48, 48, 48, 48, 48, 48, 48,
412 48, 48, 48, 48, 48, 48, 48, 48,
413 48, 48, 48, 22, 22, 48, 61
414};
415
416static const int myanmar_syllable_machine_start = 0;
417static const int myanmar_syllable_machine_first_final = 0;
418static const int myanmar_syllable_machine_error = -1;
419
420static const int myanmar_syllable_machine_en_main = 0;
421
422
423#line 55 "hb-ot-shaper-myanmar-machine.rl"
424
425
426
427#line 117 "hb-ot-shaper-myanmar-machine.rl"
428
429
430#define found_syllable(syllable_type) \
431 HB_STMT_START { \
432 if (0) fprintf (stderr, "syllable %u..%u %s\n", ts, te, #syllable_type); \
433 for (unsigned int i = ts; i < te; i++) \
434 info[i].syllable() = (syllable_serial << 4) | syllable_type; \
435 syllable_serial++; \
436 if (syllable_serial == 16) syllable_serial = 1; \
437 } HB_STMT_END
438
439inline void
440find_syllables_myanmar (hb_buffer_t *buffer)
441{
442 unsigned int p, pe, eof, ts, te, act HB_UNUSED;
443 int cs;
444 hb_glyph_info_t *info = buffer->info;
445
446#line 436 "hb-ot-shaper-myanmar-machine.hh"
447 {
448 cs = myanmar_syllable_machine_start;
449 ts = 0;
450 te = 0;
451 act = 0;
452 }
453
454#line 137 "hb-ot-shaper-myanmar-machine.rl"
455
456
457 p = 0;
458 pe = eof = buffer->len;
459
460 unsigned int syllable_serial = 1;
461
462#line 448 "hb-ot-shaper-myanmar-machine.hh"
463 {
464 int _slen;
465 int _trans;
466 const unsigned char *_keys;
467 const char *_inds;
468 if ( p == pe )
469 goto _test_eof;
470_resume:
471 switch ( _myanmar_syllable_machine_from_state_actions[cs] ) {
472 case 2:
473#line 1 "NONE"
474 {ts = p;}
475 break;
476#line 460 "hb-ot-shaper-myanmar-machine.hh"
477 }
478
479 _keys = _myanmar_syllable_machine_trans_keys + (cs<<1);
480 _inds = _myanmar_syllable_machine_indicies + _myanmar_syllable_machine_index_offsets[cs];
481
482 _slen = _myanmar_syllable_machine_key_spans[cs];
483 _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].myanmar_category()) &&
484 ( info[p].myanmar_category()) <= _keys[1] ?
485 ( info[p].myanmar_category()) - _keys[0] : _slen ];
486
487_eof_trans:
488 cs = _myanmar_syllable_machine_trans_targs[_trans];
489
490 if ( _myanmar_syllable_machine_trans_actions[_trans] == 0 )
491 goto _again;
492
493 switch ( _myanmar_syllable_machine_trans_actions[_trans] ) {
494 case 6:
495#line 110 "hb-ot-shaper-myanmar-machine.rl"
496 {te = p+1;{ found_syllable (myanmar_consonant_syllable); }}
497 break;
498 case 4:
499#line 111 "hb-ot-shaper-myanmar-machine.rl"
500 {te = p+1;{ found_syllable (myanmar_non_myanmar_cluster); }}
501 break;
502 case 8:
503#line 112 "hb-ot-shaper-myanmar-machine.rl"
504 {te = p+1;{ found_syllable (myanmar_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
505 break;
506 case 3:
507#line 113 "hb-ot-shaper-myanmar-machine.rl"
508 {te = p+1;{ found_syllable (myanmar_non_myanmar_cluster); }}
509 break;
510 case 5:
511#line 110 "hb-ot-shaper-myanmar-machine.rl"
512 {te = p;p--;{ found_syllable (myanmar_consonant_syllable); }}
513 break;
514 case 7:
515#line 112 "hb-ot-shaper-myanmar-machine.rl"
516 {te = p;p--;{ found_syllable (myanmar_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
517 break;
518 case 9:
519#line 113 "hb-ot-shaper-myanmar-machine.rl"
520 {te = p;p--;{ found_syllable (myanmar_non_myanmar_cluster); }}
521 break;
522#line 498 "hb-ot-shaper-myanmar-machine.hh"
523 }
524
525_again:
526 switch ( _myanmar_syllable_machine_to_state_actions[cs] ) {
527 case 1:
528#line 1 "NONE"
529 {ts = 0;}
530 break;
531#line 505 "hb-ot-shaper-myanmar-machine.hh"
532 }
533
534 if ( ++p != pe )
535 goto _resume;
536 _test_eof: {}
537 if ( p == eof )
538 {
539 if ( _myanmar_syllable_machine_eof_trans[cs] > 0 ) {
540 _trans = _myanmar_syllable_machine_eof_trans[cs] - 1;
541 goto _eof_trans;
542 }
543 }
544
545 }
546
547#line 145 "hb-ot-shaper-myanmar-machine.rl"
548
549}
550
551#undef found_syllable
552
553#endif /* HB_OT_SHAPER_MYANMAR_MACHINE_HH */
554