fb67dd42e6483c1dec04924b319d33bd34e84372
[platform/upstream/harfbuzz.git] / src / hb-ot-shape-complex-myanmar-machine.hh
1
2 #line 1 "hb-ot-shape-complex-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_SHAPE_COMPLEX_MYANMAR_MACHINE_HH
30 #define HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH
31
32 #include "hb-private.hh"
33
34
35 #line 36 "hb-ot-shape-complex-myanmar-machine.hh"
36 static const unsigned char _myanmar_syllable_machine_trans_keys[] = {
37         1u, 32u, 3u, 30u, 5u, 29u, 5u, 8u, 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u, 
38         3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 1u, 16u, 3u, 29u, 3u, 29u, 3u, 29u, 
39         3u, 29u, 3u, 29u, 3u, 30u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 5u, 29u, 
40         5u, 8u, 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u, 3u, 29u, 3u, 29u, 3u, 29u, 
41         3u, 29u, 3u, 30u, 3u, 29u, 1u, 32u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 
42         3u, 29u, 3u, 30u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 1u, 32u, 8u, 8u, 
43         0
44 };
45
46 static const char _myanmar_syllable_machine_key_spans[] = {
47         32, 28, 25, 4, 25, 23, 21, 21, 
48         27, 27, 27, 27, 16, 27, 27, 27, 
49         27, 27, 28, 27, 27, 27, 27, 25, 
50         4, 25, 23, 21, 21, 27, 27, 27, 
51         27, 28, 27, 32, 27, 27, 27, 27, 
52         27, 28, 27, 27, 27, 27, 32, 1
53 };
54
55 static const short _myanmar_syllable_machine_index_offsets[] = {
56         0, 33, 62, 88, 93, 119, 143, 165, 
57         187, 215, 243, 271, 299, 316, 344, 372, 
58         400, 428, 456, 485, 513, 541, 569, 597, 
59         623, 628, 654, 678, 700, 722, 750, 778, 
60         806, 834, 863, 891, 924, 952, 980, 1008, 
61         1036, 1064, 1093, 1121, 1149, 1177, 1205, 1238
62 };
63
64 static const char _myanmar_syllable_machine_indicies[] = {
65         1, 1, 2, 3, 4, 4, 0, 5, 
66         0, 6, 1, 0, 0, 0, 0, 7, 
67         0, 8, 9, 0, 10, 11, 12, 13, 
68         14, 15, 16, 17, 18, 19, 20, 1, 
69         0, 22, 23, 24, 24, 21, 25, 21, 
70         26, 21, 21, 21, 21, 21, 21, 21, 
71         27, 21, 21, 28, 29, 30, 31, 32, 
72         33, 34, 35, 36, 37, 21, 24, 24, 
73         21, 25, 21, 21, 21, 21, 21, 21, 
74         21, 21, 21, 38, 21, 21, 21, 21, 
75         21, 21, 32, 21, 21, 21, 36, 21, 
76         24, 24, 21, 25, 21, 24, 24, 21, 
77         25, 21, 21, 21, 21, 21, 21, 21, 
78         21, 21, 21, 21, 21, 21, 21, 21, 
79         21, 32, 21, 21, 21, 36, 21, 39, 
80         21, 24, 24, 21, 25, 21, 32, 21, 
81         21, 21, 21, 21, 21, 21, 40, 21, 
82         21, 21, 21, 21, 21, 32, 21, 24, 
83         24, 21, 25, 21, 21, 21, 21, 21, 
84         21, 21, 21, 21, 40, 21, 21, 21, 
85         21, 21, 21, 32, 21, 24, 24, 21, 
86         25, 21, 21, 21, 21, 21, 21, 21, 
87         21, 21, 21, 21, 21, 21, 21, 21, 
88         21, 32, 21, 22, 21, 24, 24, 21, 
89         25, 21, 26, 21, 21, 21, 21, 21, 
90         21, 21, 41, 21, 21, 41, 21, 21, 
91         21, 32, 42, 21, 21, 36, 21, 22, 
92         21, 24, 24, 21, 25, 21, 26, 21, 
93         21, 21, 21, 21, 21, 21, 21, 21, 
94         21, 21, 21, 21, 21, 32, 21, 21, 
95         21, 36, 21, 22, 21, 24, 24, 21, 
96         25, 21, 26, 21, 21, 21, 21, 21, 
97         21, 21, 41, 21, 21, 21, 21, 21, 
98         21, 32, 42, 21, 21, 36, 21, 22, 
99         21, 24, 24, 21, 25, 21, 26, 21, 
100         21, 21, 21, 21, 21, 21, 21, 21, 
101         21, 21, 21, 21, 21, 32, 42, 21, 
102         21, 36, 21, 1, 1, 21, 21, 21, 
103         21, 21, 21, 21, 21, 21, 21, 21, 
104         21, 21, 1, 21, 22, 21, 24, 24, 
105         21, 25, 21, 26, 21, 21, 21, 21, 
106         21, 21, 21, 27, 21, 21, 28, 29, 
107         30, 31, 32, 33, 34, 35, 36, 21, 
108         22, 21, 24, 24, 21, 25, 21, 26, 
109         21, 21, 21, 21, 21, 21, 21, 43, 
110         21, 21, 21, 21, 21, 21, 32, 33, 
111         34, 35, 36, 21, 22, 21, 24, 24, 
112         21, 25, 21, 26, 21, 21, 21, 21, 
113         21, 21, 21, 21, 21, 21, 21, 21, 
114         21, 21, 32, 33, 34, 35, 36, 21, 
115         22, 21, 24, 24, 21, 25, 21, 26, 
116         21, 21, 21, 21, 21, 21, 21, 21, 
117         21, 21, 21, 21, 21, 21, 32, 33, 
118         34, 21, 36, 21, 22, 21, 24, 24, 
119         21, 25, 21, 26, 21, 21, 21, 21, 
120         21, 21, 21, 21, 21, 21, 21, 21, 
121         21, 21, 32, 21, 34, 21, 36, 21, 
122         22, 21, 24, 24, 21, 25, 21, 26, 
123         21, 21, 21, 21, 21, 21, 21, 21, 
124         21, 21, 21, 21, 21, 21, 32, 33, 
125         34, 35, 36, 43, 21, 22, 21, 24, 
126         24, 21, 25, 21, 26, 21, 21, 21, 
127         21, 21, 21, 21, 43, 21, 21, 28, 
128         21, 30, 21, 32, 33, 34, 35, 36, 
129         21, 22, 21, 24, 24, 21, 25, 21, 
130         26, 21, 21, 21, 21, 21, 21, 21, 
131         43, 21, 21, 28, 21, 21, 21, 32, 
132         33, 34, 35, 36, 21, 22, 21, 24, 
133         24, 21, 25, 21, 26, 21, 21, 21, 
134         21, 21, 21, 21, 43, 21, 21, 28, 
135         29, 30, 21, 32, 33, 34, 35, 36, 
136         21, 22, 23, 24, 24, 21, 25, 21, 
137         26, 21, 21, 21, 21, 21, 21, 21, 
138         27, 21, 21, 28, 29, 30, 31, 32, 
139         33, 34, 35, 36, 21, 3, 3, 44, 
140         5, 44, 44, 44, 44, 44, 44, 44, 
141         44, 44, 45, 44, 44, 44, 44, 44, 
142         44, 14, 44, 44, 44, 18, 44, 3, 
143         3, 44, 5, 44, 3, 3, 44, 5, 
144         44, 44, 44, 44, 44, 44, 44, 44, 
145         44, 44, 44, 44, 44, 44, 44, 44, 
146         14, 44, 44, 44, 18, 44, 46, 44, 
147         3, 3, 44, 5, 44, 14, 44, 44, 
148         44, 44, 44, 44, 44, 47, 44, 44, 
149         44, 44, 44, 44, 14, 44, 3, 3, 
150         44, 5, 44, 44, 44, 44, 44, 44, 
151         44, 44, 44, 47, 44, 44, 44, 44, 
152         44, 44, 14, 44, 3, 3, 44, 5, 
153         44, 44, 44, 44, 44, 44, 44, 44, 
154         44, 44, 44, 44, 44, 44, 44, 44, 
155         14, 44, 2, 44, 3, 3, 44, 5, 
156         44, 6, 44, 44, 44, 44, 44, 44, 
157         44, 48, 44, 44, 48, 44, 44, 44, 
158         14, 49, 44, 44, 18, 44, 2, 44, 
159         3, 3, 44, 5, 44, 6, 44, 44, 
160         44, 44, 44, 44, 44, 44, 44, 44, 
161         44, 44, 44, 44, 14, 44, 44, 44, 
162         18, 44, 2, 44, 3, 3, 44, 5, 
163         44, 6, 44, 44, 44, 44, 44, 44, 
164         44, 48, 44, 44, 44, 44, 44, 44, 
165         14, 49, 44, 44, 18, 44, 2, 44, 
166         3, 3, 44, 5, 44, 6, 44, 44, 
167         44, 44, 44, 44, 44, 44, 44, 44, 
168         44, 44, 44, 44, 14, 49, 44, 44, 
169         18, 44, 22, 23, 24, 24, 21, 25, 
170         21, 26, 21, 21, 21, 21, 21, 21, 
171         21, 50, 21, 21, 28, 29, 30, 31, 
172         32, 33, 34, 35, 36, 37, 21, 22, 
173         51, 24, 24, 21, 25, 21, 26, 21, 
174         21, 21, 21, 21, 21, 21, 27, 21, 
175         21, 28, 29, 30, 31, 32, 33, 34, 
176         35, 36, 21, 1, 1, 2, 3, 3, 
177         3, 44, 5, 44, 6, 1, 44, 44, 
178         44, 44, 1, 44, 8, 44, 44, 10, 
179         11, 12, 13, 14, 15, 16, 17, 18, 
180         19, 44, 1, 44, 2, 44, 3, 3, 
181         44, 5, 44, 6, 44, 44, 44, 44, 
182         44, 44, 44, 8, 44, 44, 10, 11, 
183         12, 13, 14, 15, 16, 17, 18, 44, 
184         2, 44, 3, 3, 44, 5, 44, 6, 
185         44, 44, 44, 44, 44, 44, 44, 52, 
186         44, 44, 44, 44, 44, 44, 14, 15, 
187         16, 17, 18, 44, 2, 44, 3, 3, 
188         44, 5, 44, 6, 44, 44, 44, 44, 
189         44, 44, 44, 44, 44, 44, 44, 44, 
190         44, 44, 14, 15, 16, 17, 18, 44, 
191         2, 44, 3, 3, 44, 5, 44, 6, 
192         44, 44, 44, 44, 44, 44, 44, 44, 
193         44, 44, 44, 44, 44, 44, 14, 15, 
194         16, 44, 18, 44, 2, 44, 3, 3, 
195         44, 5, 44, 6, 44, 44, 44, 44, 
196         44, 44, 44, 44, 44, 44, 44, 44, 
197         44, 44, 14, 44, 16, 44, 18, 44, 
198         2, 44, 3, 3, 44, 5, 44, 6, 
199         44, 44, 44, 44, 44, 44, 44, 44, 
200         44, 44, 44, 44, 44, 44, 14, 15, 
201         16, 17, 18, 52, 44, 2, 44, 3, 
202         3, 44, 5, 44, 6, 44, 44, 44, 
203         44, 44, 44, 44, 52, 44, 44, 10, 
204         44, 12, 44, 14, 15, 16, 17, 18, 
205         44, 2, 44, 3, 3, 44, 5, 44, 
206         6, 44, 44, 44, 44, 44, 44, 44, 
207         52, 44, 44, 10, 44, 44, 44, 14, 
208         15, 16, 17, 18, 44, 2, 44, 3, 
209         3, 44, 5, 44, 6, 44, 44, 44, 
210         44, 44, 44, 44, 52, 44, 44, 10, 
211         11, 12, 44, 14, 15, 16, 17, 18, 
212         44, 2, 3, 3, 3, 44, 5, 44, 
213         6, 44, 44, 44, 44, 44, 44, 44, 
214         8, 44, 44, 10, 11, 12, 13, 14, 
215         15, 16, 17, 18, 44, 1, 1, 53, 
216         53, 53, 53, 53, 53, 53, 53, 1, 
217         53, 53, 53, 53, 1, 53, 53, 53, 
218         53, 53, 53, 53, 53, 53, 53, 53, 
219         53, 53, 53, 53, 1, 53, 54, 53, 
220         0
221 };
222
223 static const char _myanmar_syllable_machine_trans_targs[] = {
224         0, 1, 23, 0, 0, 24, 30, 33, 
225         36, 46, 37, 42, 43, 44, 26, 39, 
226         40, 41, 29, 45, 47, 0, 2, 12, 
227         0, 3, 9, 13, 14, 19, 20, 21, 
228         5, 16, 17, 18, 8, 22, 4, 6, 
229         7, 10, 11, 15, 0, 25, 27, 28, 
230         31, 32, 34, 35, 38, 0, 0
231 };
232
233 static const char _myanmar_syllable_machine_trans_actions[] = {
234         3, 0, 0, 4, 5, 0, 0, 0, 
235         0, 0, 0, 0, 0, 0, 0, 0, 
236         0, 0, 0, 0, 0, 6, 0, 0, 
237         7, 0, 0, 0, 0, 0, 0, 0, 
238         0, 0, 0, 0, 0, 0, 0, 0, 
239         0, 0, 0, 0, 8, 0, 0, 0, 
240         0, 0, 0, 0, 0, 9, 10
241 };
242
243 static const char _myanmar_syllable_machine_to_state_actions[] = {
244         1, 0, 0, 0, 0, 0, 0, 0, 
245         0, 0, 0, 0, 0, 0, 0, 0, 
246         0, 0, 0, 0, 0, 0, 0, 0, 
247         0, 0, 0, 0, 0, 0, 0, 0, 
248         0, 0, 0, 0, 0, 0, 0, 0, 
249         0, 0, 0, 0, 0, 0, 0, 0
250 };
251
252 static const char _myanmar_syllable_machine_from_state_actions[] = {
253         2, 0, 0, 0, 0, 0, 0, 0, 
254         0, 0, 0, 0, 0, 0, 0, 0, 
255         0, 0, 0, 0, 0, 0, 0, 0, 
256         0, 0, 0, 0, 0, 0, 0, 0, 
257         0, 0, 0, 0, 0, 0, 0, 0, 
258         0, 0, 0, 0, 0, 0, 0, 0
259 };
260
261 static const short _myanmar_syllable_machine_eof_trans[] = {
262         0, 22, 22, 22, 22, 22, 22, 22, 
263         22, 22, 22, 22, 22, 22, 22, 22, 
264         22, 22, 22, 22, 22, 22, 22, 45, 
265         45, 45, 45, 45, 45, 45, 45, 45, 
266         45, 22, 22, 45, 45, 45, 45, 45, 
267         45, 45, 45, 45, 45, 45, 54, 54
268 };
269
270 static const int myanmar_syllable_machine_start = 0;
271 static const int myanmar_syllable_machine_first_final = 0;
272 static const int myanmar_syllable_machine_error = -1;
273
274 static const int myanmar_syllable_machine_en_main = 0;
275
276
277 #line 36 "hb-ot-shape-complex-myanmar-machine.rl"
278
279
280
281 #line 94 "hb-ot-shape-complex-myanmar-machine.rl"
282
283
284 #define found_syllable(syllable_type) \
285   HB_STMT_START { \
286     if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
287     for (unsigned int i = last; i < p+1; i++) \
288       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
289     last = p+1; \
290     syllable_serial++; \
291     if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
292   } HB_STMT_END
293
294 static void
295 find_syllables (hb_buffer_t *buffer)
296 {
297   unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
298   int cs;
299   hb_glyph_info_t *info = buffer->info;
300   
301 #line 302 "hb-ot-shape-complex-myanmar-machine.hh"
302         {
303         cs = myanmar_syllable_machine_start;
304         ts = 0;
305         te = 0;
306         act = 0;
307         }
308
309 #line 115 "hb-ot-shape-complex-myanmar-machine.rl"
310
311
312   p = 0;
313   pe = eof = buffer->len;
314
315   unsigned int last = 0;
316   unsigned int syllable_serial = 1;
317   
318 #line 319 "hb-ot-shape-complex-myanmar-machine.hh"
319         {
320         int _slen;
321         int _trans;
322         const unsigned char *_keys;
323         const char *_inds;
324         if ( p == pe )
325                 goto _test_eof;
326 _resume:
327         switch ( _myanmar_syllable_machine_from_state_actions[cs] ) {
328         case 2:
329 #line 1 "NONE"
330         {ts = p;}
331         break;
332 #line 333 "hb-ot-shape-complex-myanmar-machine.hh"
333         }
334
335         _keys = _myanmar_syllable_machine_trans_keys + (cs<<1);
336         _inds = _myanmar_syllable_machine_indicies + _myanmar_syllable_machine_index_offsets[cs];
337
338         _slen = _myanmar_syllable_machine_key_spans[cs];
339         _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].myanmar_category()) &&
340                 ( info[p].myanmar_category()) <= _keys[1] ?
341                 ( info[p].myanmar_category()) - _keys[0] : _slen ];
342
343 _eof_trans:
344         cs = _myanmar_syllable_machine_trans_targs[_trans];
345
346         if ( _myanmar_syllable_machine_trans_actions[_trans] == 0 )
347                 goto _again;
348
349         switch ( _myanmar_syllable_machine_trans_actions[_trans] ) {
350         case 7:
351 #line 86 "hb-ot-shape-complex-myanmar-machine.rl"
352         {te = p+1;{ found_syllable (consonant_syllable); }}
353         break;
354         case 5:
355 #line 87 "hb-ot-shape-complex-myanmar-machine.rl"
356         {te = p+1;{ found_syllable (non_myanmar_cluster); }}
357         break;
358         case 10:
359 #line 88 "hb-ot-shape-complex-myanmar-machine.rl"
360         {te = p+1;{ found_syllable (punctuation_cluster); }}
361         break;
362         case 4:
363 #line 89 "hb-ot-shape-complex-myanmar-machine.rl"
364         {te = p+1;{ found_syllable (broken_cluster); }}
365         break;
366         case 3:
367 #line 90 "hb-ot-shape-complex-myanmar-machine.rl"
368         {te = p+1;{ found_syllable (non_myanmar_cluster); }}
369         break;
370         case 6:
371 #line 86 "hb-ot-shape-complex-myanmar-machine.rl"
372         {te = p;p--;{ found_syllable (consonant_syllable); }}
373         break;
374         case 8:
375 #line 89 "hb-ot-shape-complex-myanmar-machine.rl"
376         {te = p;p--;{ found_syllable (broken_cluster); }}
377         break;
378         case 9:
379 #line 90 "hb-ot-shape-complex-myanmar-machine.rl"
380         {te = p;p--;{ found_syllable (non_myanmar_cluster); }}
381         break;
382 #line 383 "hb-ot-shape-complex-myanmar-machine.hh"
383         }
384
385 _again:
386         switch ( _myanmar_syllable_machine_to_state_actions[cs] ) {
387         case 1:
388 #line 1 "NONE"
389         {ts = 0;}
390         break;
391 #line 392 "hb-ot-shape-complex-myanmar-machine.hh"
392         }
393
394         if ( ++p != pe )
395                 goto _resume;
396         _test_eof: {}
397         if ( p == eof )
398         {
399         if ( _myanmar_syllable_machine_eof_trans[cs] > 0 ) {
400                 _trans = _myanmar_syllable_machine_eof_trans[cs] - 1;
401                 goto _eof_trans;
402         }
403         }
404
405         }
406
407 #line 124 "hb-ot-shape-complex-myanmar-machine.rl"
408
409 }
410
411 #undef found_syllable
412
413 #endif /* HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH */