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