2 #line 1 "hb-ot-shape-complex-myanmar-machine.rl"
4 * Copyright © 2011,2012 Google, Inc.
6 * This is part of HarfBuzz, a text shaping library.
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.
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
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.
26 * Google Author(s): Behdad Esfahbod
29 #ifndef HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH
30 #define HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH
32 #include "hb-private.hh"
35 #line 36 "hb-ot-shape-complex-myanmar-machine.hh.tmp"
36 static const unsigned char _myanmar_syllable_machine_trans_keys
[] = {
37 1u, 30u, 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, 0
45 static const char _myanmar_syllable_machine_key_spans
[] = {
46 30, 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,
54 static const short _myanmar_syllable_machine_index_offsets
[] = {
55 0, 31, 60, 86, 91, 117, 141, 163,
56 185, 213, 241, 269, 297, 314, 342, 370,
57 398, 426, 454, 482, 510, 538, 566, 592,
58 597, 623, 647, 669, 691, 719, 747, 775,
59 803, 832, 860, 891, 919, 947, 975, 1003,
60 1031, 1059, 1087, 1115
63 static const char _myanmar_syllable_machine_indicies
[] = {
64 1, 1, 2, 3, 4, 4, 0, 5,
65 0, 6, 0, 1, 0, 0, 0, 7,
66 0, 8, 1, 0, 9, 10, 11, 12,
67 13, 14, 15, 16, 17, 18, 0, 20,
68 21, 22, 22, 19, 23, 19, 24, 19,
69 19, 19, 19, 19, 19, 19, 25, 19,
70 19, 26, 27, 28, 29, 30, 31, 32,
71 33, 34, 35, 19, 22, 22, 19, 23,
72 19, 19, 19, 19, 19, 19, 19, 19,
73 19, 36, 19, 19, 19, 19, 19, 19,
74 30, 19, 19, 19, 34, 19, 22, 22,
75 19, 23, 19, 22, 22, 19, 23, 19,
76 19, 19, 19, 19, 19, 19, 19, 19,
77 19, 19, 19, 19, 19, 19, 19, 30,
78 19, 19, 19, 34, 19, 37, 19, 22,
79 22, 19, 23, 19, 30, 19, 19, 19,
80 19, 19, 19, 19, 19, 19, 19, 19,
81 19, 19, 19, 30, 19, 22, 22, 19,
82 23, 19, 19, 19, 19, 19, 19, 19,
83 19, 19, 38, 19, 19, 19, 19, 19,
84 19, 30, 19, 22, 22, 19, 23, 19,
85 19, 19, 19, 19, 19, 19, 19, 19,
86 19, 19, 19, 19, 19, 19, 19, 30,
87 19, 20, 19, 22, 22, 19, 23, 19,
88 24, 19, 19, 19, 19, 19, 19, 19,
89 39, 19, 19, 39, 19, 19, 19, 30,
90 40, 19, 19, 34, 19, 20, 19, 22,
91 22, 19, 23, 19, 24, 19, 19, 19,
92 19, 19, 19, 19, 19, 19, 19, 19,
93 19, 19, 19, 30, 19, 19, 19, 34,
94 19, 20, 19, 22, 22, 19, 23, 19,
95 24, 19, 19, 19, 19, 19, 19, 19,
96 39, 19, 19, 19, 19, 19, 19, 30,
97 40, 19, 19, 34, 19, 20, 19, 22,
98 22, 19, 23, 19, 24, 19, 19, 19,
99 19, 19, 19, 19, 19, 19, 19, 19,
100 19, 19, 19, 30, 40, 19, 19, 34,
101 19, 1, 1, 19, 19, 19, 19, 19,
102 19, 19, 19, 19, 19, 19, 19, 19,
103 1, 19, 20, 19, 22, 22, 19, 23,
104 19, 24, 19, 19, 19, 19, 19, 19,
105 19, 25, 19, 19, 26, 27, 28, 29,
106 30, 31, 32, 33, 34, 19, 20, 19,
107 22, 22, 19, 23, 19, 24, 19, 19,
108 19, 19, 19, 19, 19, 33, 19, 19,
109 19, 19, 19, 19, 30, 31, 32, 33,
110 34, 19, 20, 19, 22, 22, 19, 23,
111 19, 24, 19, 19, 19, 19, 19, 19,
112 19, 19, 19, 19, 19, 19, 19, 19,
113 30, 31, 32, 33, 34, 19, 20, 19,
114 22, 22, 19, 23, 19, 24, 19, 19,
115 19, 19, 19, 19, 19, 19, 19, 19,
116 19, 19, 19, 19, 30, 31, 32, 19,
117 34, 19, 20, 19, 22, 22, 19, 23,
118 19, 24, 19, 19, 19, 19, 19, 19,
119 19, 19, 19, 19, 19, 19, 19, 19,
120 30, 19, 32, 19, 34, 19, 20, 19,
121 22, 22, 19, 23, 19, 24, 19, 19,
122 19, 19, 19, 19, 19, 19, 19, 19,
123 26, 19, 28, 19, 30, 31, 32, 33,
124 34, 19, 20, 19, 22, 22, 19, 23,
125 19, 24, 19, 19, 19, 19, 19, 19,
126 19, 33, 19, 19, 26, 19, 19, 19,
127 30, 31, 32, 33, 34, 19, 20, 19,
128 22, 22, 19, 23, 19, 24, 19, 19,
129 19, 19, 19, 19, 19, 19, 19, 19,
130 26, 27, 28, 19, 30, 31, 32, 33,
131 34, 19, 20, 21, 22, 22, 19, 23,
132 19, 24, 19, 19, 19, 19, 19, 19,
133 19, 25, 19, 19, 26, 27, 28, 29,
134 30, 31, 32, 33, 34, 19, 3, 3,
135 41, 5, 41, 41, 41, 41, 41, 41,
136 41, 41, 41, 42, 41, 41, 41, 41,
137 41, 41, 13, 41, 41, 41, 17, 41,
138 3, 3, 41, 5, 41, 3, 3, 41,
139 5, 41, 41, 41, 41, 41, 41, 41,
140 41, 41, 41, 41, 41, 41, 41, 41,
141 41, 13, 41, 41, 41, 17, 41, 43,
142 41, 3, 3, 41, 5, 41, 13, 41,
143 41, 41, 41, 41, 41, 41, 41, 41,
144 41, 41, 41, 41, 41, 13, 41, 3,
145 3, 41, 5, 41, 41, 41, 41, 41,
146 41, 41, 41, 41, 44, 41, 41, 41,
147 41, 41, 41, 13, 41, 3, 3, 41,
148 5, 41, 41, 41, 41, 41, 41, 41,
149 41, 41, 41, 41, 41, 41, 41, 41,
150 41, 13, 41, 2, 41, 3, 3, 41,
151 5, 41, 6, 41, 41, 41, 41, 41,
152 41, 41, 45, 41, 41, 45, 41, 41,
153 41, 13, 46, 41, 41, 17, 41, 2,
154 41, 3, 3, 41, 5, 41, 6, 41,
155 41, 41, 41, 41, 41, 41, 41, 41,
156 41, 41, 41, 41, 41, 13, 41, 41,
157 41, 17, 41, 2, 41, 3, 3, 41,
158 5, 41, 6, 41, 41, 41, 41, 41,
159 41, 41, 45, 41, 41, 41, 41, 41,
160 41, 13, 46, 41, 41, 17, 41, 2,
161 41, 3, 3, 41, 5, 41, 6, 41,
162 41, 41, 41, 41, 41, 41, 41, 41,
163 41, 41, 41, 41, 41, 13, 46, 41,
164 41, 17, 41, 20, 21, 22, 22, 19,
165 23, 19, 24, 19, 19, 19, 19, 19,
166 19, 19, 47, 19, 19, 26, 27, 28,
167 29, 30, 31, 32, 33, 34, 35, 19,
168 20, 48, 22, 22, 19, 23, 19, 24,
169 19, 19, 19, 19, 19, 19, 19, 25,
170 19, 19, 26, 27, 28, 29, 30, 31,
171 32, 33, 34, 19, 1, 1, 2, 3,
172 3, 3, 41, 5, 41, 6, 41, 1,
173 41, 41, 41, 1, 41, 8, 1, 41,
174 9, 10, 11, 12, 13, 14, 15, 16,
175 17, 18, 41, 2, 41, 3, 3, 41,
176 5, 41, 6, 41, 41, 41, 41, 41,
177 41, 41, 8, 41, 41, 9, 10, 11,
178 12, 13, 14, 15, 16, 17, 41, 2,
179 41, 3, 3, 41, 5, 41, 6, 41,
180 41, 41, 41, 41, 41, 41, 16, 41,
181 41, 41, 41, 41, 41, 13, 14, 15,
182 16, 17, 41, 2, 41, 3, 3, 41,
183 5, 41, 6, 41, 41, 41, 41, 41,
184 41, 41, 41, 41, 41, 41, 41, 41,
185 41, 13, 14, 15, 16, 17, 41, 2,
186 41, 3, 3, 41, 5, 41, 6, 41,
187 41, 41, 41, 41, 41, 41, 41, 41,
188 41, 41, 41, 41, 41, 13, 14, 15,
189 41, 17, 41, 2, 41, 3, 3, 41,
190 5, 41, 6, 41, 41, 41, 41, 41,
191 41, 41, 41, 41, 41, 41, 41, 41,
192 41, 13, 41, 15, 41, 17, 41, 2,
193 41, 3, 3, 41, 5, 41, 6, 41,
194 41, 41, 41, 41, 41, 41, 41, 41,
195 41, 9, 41, 11, 41, 13, 14, 15,
196 16, 17, 41, 2, 41, 3, 3, 41,
197 5, 41, 6, 41, 41, 41, 41, 41,
198 41, 41, 16, 41, 41, 9, 41, 41,
199 41, 13, 14, 15, 16, 17, 41, 2,
200 41, 3, 3, 41, 5, 41, 6, 41,
201 41, 41, 41, 41, 41, 41, 41, 41,
202 41, 9, 10, 11, 41, 13, 14, 15,
203 16, 17, 41, 2, 3, 3, 3, 41,
204 5, 41, 6, 41, 41, 41, 41, 41,
205 41, 41, 8, 41, 41, 9, 10, 11,
206 12, 13, 14, 15, 16, 17, 41, 0
209 static const char _myanmar_syllable_machine_trans_targs
[] = {
210 0, 1, 22, 0, 0, 23, 29, 32,
211 35, 36, 40, 41, 42, 25, 38, 39,
212 37, 28, 43, 0, 2, 12, 0, 3,
213 9, 13, 14, 18, 19, 20, 5, 16,
214 17, 15, 8, 21, 4, 6, 7, 10,
215 11, 0, 24, 26, 27, 30, 31, 33,
219 static const char _myanmar_syllable_machine_trans_actions
[] = {
220 3, 0, 0, 4, 5, 0, 0, 0,
221 0, 0, 0, 0, 0, 0, 0, 0,
222 0, 0, 0, 6, 0, 0, 7, 0,
223 0, 0, 0, 0, 0, 0, 0, 0,
224 0, 0, 0, 0, 0, 0, 0, 0,
225 0, 8, 0, 0, 0, 0, 0, 0,
229 static const char _myanmar_syllable_machine_to_state_actions
[] = {
230 1, 0, 0, 0, 0, 0, 0, 0,
231 0, 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,
238 static const char _myanmar_syllable_machine_from_state_actions
[] = {
239 2, 0, 0, 0, 0, 0, 0, 0,
240 0, 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,
247 static const short _myanmar_syllable_machine_eof_trans
[] = {
248 0, 20, 20, 20, 20, 20, 20, 20,
249 20, 20, 20, 20, 20, 20, 20, 20,
250 20, 20, 20, 20, 20, 20, 42, 42,
251 42, 42, 42, 42, 42, 42, 42, 42,
252 20, 20, 42, 42, 42, 42, 42, 42,
256 static const int myanmar_syllable_machine_start
= 0;
257 static const int myanmar_syllable_machine_first_final
= 0;
258 static const int myanmar_syllable_machine_error
= -1;
260 static const int myanmar_syllable_machine_en_main
= 0;
263 #line 36 "hb-ot-shape-complex-myanmar-machine.rl"
267 #line 90 "hb-ot-shape-complex-myanmar-machine.rl"
270 #define found_syllable(syllable_type) \
272 if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
273 for (unsigned int i = last; i < p+1; i++) \
274 info[i].syllable() = (syllable_serial << 4) | syllable_type; \
277 if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
281 find_syllables (hb_buffer_t
*buffer
)
283 unsigned int p
, pe
, eof
, ts HB_UNUSED
, te HB_UNUSED
, act HB_UNUSED
;
285 hb_glyph_info_t
*info
= buffer
->info
;
287 #line 288 "hb-ot-shape-complex-myanmar-machine.hh.tmp"
289 cs
= myanmar_syllable_machine_start
;
295 #line 111 "hb-ot-shape-complex-myanmar-machine.rl"
299 pe
= eof
= buffer
->len
;
301 unsigned int last
= 0;
302 unsigned int syllable_serial
= 1;
304 #line 305 "hb-ot-shape-complex-myanmar-machine.hh.tmp"
308 const unsigned char *_keys
;
313 switch ( _myanmar_syllable_machine_from_state_actions
[cs
] ) {
318 #line 319 "hb-ot-shape-complex-myanmar-machine.hh.tmp"
321 _keys
= _myanmar_syllable_machine_trans_keys
+ (cs
<<1);
322 _inds
= _myanmar_syllable_machine_indicies
+ _myanmar_syllable_machine_index_offsets
[cs
];
324 _slen
= _myanmar_syllable_machine_key_spans
[cs
];
325 _trans
= _inds
[ _slen
> 0 && _keys
[0] <=( info
[p
].myanmar_category()) &&
326 ( info
[p
].myanmar_category()) <= _keys
[1] ?
327 ( info
[p
].myanmar_category()) - _keys
[0] : _slen
];
330 cs
= _myanmar_syllable_machine_trans_targs
[_trans
];
332 if ( _myanmar_syllable_machine_trans_actions
[_trans
] == 0 )
335 switch ( _myanmar_syllable_machine_trans_actions
[_trans
] ) {
337 #line 83 "hb-ot-shape-complex-myanmar-machine.rl"
338 {te
= p
+1;{ found_syllable (consonant_syllable
); }}
341 #line 84 "hb-ot-shape-complex-myanmar-machine.rl"
342 {te
= p
+1;{ found_syllable (non_myanmar_cluster
); }}
345 #line 85 "hb-ot-shape-complex-myanmar-machine.rl"
346 {te
= p
+1;{ found_syllable (broken_cluster
); }}
349 #line 86 "hb-ot-shape-complex-myanmar-machine.rl"
350 {te
= p
+1;{ found_syllable (non_myanmar_cluster
); }}
353 #line 83 "hb-ot-shape-complex-myanmar-machine.rl"
354 {te
= p
;p
--;{ found_syllable (consonant_syllable
); }}
357 #line 85 "hb-ot-shape-complex-myanmar-machine.rl"
358 {te
= p
;p
--;{ found_syllable (broken_cluster
); }}
360 #line 361 "hb-ot-shape-complex-myanmar-machine.hh.tmp"
364 switch ( _myanmar_syllable_machine_to_state_actions
[cs
] ) {
369 #line 370 "hb-ot-shape-complex-myanmar-machine.hh.tmp"
377 if ( _myanmar_syllable_machine_eof_trans
[cs
] > 0 ) {
378 _trans
= _myanmar_syllable_machine_eof_trans
[cs
] - 1;
385 #line 120 "hb-ot-shape-complex-myanmar-machine.rl"
389 #undef found_syllable
391 #endif /* HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH */