rustybuzz/hb/
ot_shape_complex_use_machine.rs

1// This file is autogenerated. Do not edit it!
2//
3// See docs/ragel.md for details.
4
5#![allow(
6    dead_code,
7    non_upper_case_globals,
8    unused_assignments,
9    unused_parens,
10    while_true,
11    clippy::assign_op_pattern,
12    clippy::collapsible_if,
13    clippy::comparison_chain,
14    clippy::double_parens,
15    clippy::unnecessary_cast,
16    clippy::single_match,
17    clippy::never_loop
18)]
19
20use core::cell::Cell;
21
22use super::buffer::hb_buffer_t;
23use super::hb_glyph_info_t;
24use super::machine_cursor::MachineCursor;
25use super::ot_layout::*;
26use super::ot_shape_complex_use::category;
27
28static _use_syllable_machine_trans_keys: [u8; 226] = [
29    0, 36, 5, 33, 5, 33, 1, 33, 10, 33, 11, 32, 12, 32, 13, 32, 30, 31, 31, 31, 11, 33, 11, 33, 11,
30    33, 1, 1, 11, 33, 9, 33, 10, 33, 10, 33, 10, 33, 6, 33, 6, 33, 6, 33, 6, 33, 5, 33, 1, 1, 5,
31    33, 26, 27, 27, 27, 5, 33, 5, 33, 1, 33, 10, 33, 11, 32, 12, 32, 13, 32, 30, 31, 31, 31, 11,
32    33, 11, 33, 11, 33, 1, 1, 11, 33, 9, 33, 10, 33, 10, 33, 10, 33, 6, 33, 6, 33, 6, 33, 6, 33, 5,
33    33, 1, 1, 7, 7, 3, 3, 5, 33, 5, 33, 1, 33, 10, 33, 11, 32, 12, 32, 13, 32, 30, 31, 31, 31, 11,
34    33, 11, 33, 11, 33, 1, 1, 11, 33, 9, 33, 10, 33, 10, 33, 10, 33, 6, 33, 6, 33, 6, 33, 6, 33, 5,
35    33, 1, 1, 5, 33, 5, 33, 1, 33, 10, 33, 11, 32, 12, 32, 13, 32, 30, 31, 31, 31, 11, 33, 11, 33,
36    11, 33, 1, 1, 11, 33, 9, 33, 10, 33, 10, 33, 10, 33, 6, 33, 6, 33, 6, 33, 6, 33, 5, 33, 1, 1,
37    3, 3, 7, 7, 1, 33, 5, 33, 26, 27, 27, 27, 1, 4, 35, 37, 34, 37, 34, 36, 0, 0,
38];
39static _use_syllable_machine_char_class: [i8; 55] = [
40    0, 1, 2, 2, 3, 4, 2, 2, 2, 2, 2, 5, 6, 7, 2, 2, 2, 2, 8, 2, 2, 2, 9, 10, 11, 12, 13, 14, 15,
41    16, 17, 18, 19, 20, 21, 22, 2, 23, 24, 25, 2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
42    0, 0,
43];
44static _use_syllable_machine_index_offsets: [i16; 114] = [
45    0, 37, 66, 95, 128, 152, 174, 195, 215, 217, 218, 241, 264, 287, 288, 311, 336, 360, 384, 408,
46    436, 464, 492, 520, 549, 550, 579, 581, 582, 611, 640, 673, 697, 719, 740, 760, 762, 763, 786,
47    809, 832, 833, 856, 881, 905, 929, 953, 981, 1009, 1037, 1065, 1094, 1095, 1096, 1097, 1126,
48    1155, 1188, 1212, 1234, 1255, 1275, 1277, 1278, 1301, 1324, 1347, 1348, 1371, 1396, 1420, 1444,
49    1468, 1496, 1524, 1552, 1580, 1609, 1610, 1639, 1668, 1701, 1725, 1747, 1768, 1788, 1790, 1791,
50    1814, 1837, 1860, 1861, 1884, 1909, 1933, 1957, 1981, 2009, 2037, 2065, 2093, 2122, 2123, 2124,
51    2125, 2158, 2187, 2189, 2190, 2194, 2197, 2201, 0, 0,
52];
53static _use_syllable_machine_indices: [i8; 2206] = [
54    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
55    27, 28, 29, 30, 31, 32, 33, 30, 34, 3, 35, 37, 38, 36, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47,
56    48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 36, 58, 59, 60, 61, 58, 37, 38, 36, 36, 39, 40, 41, 42,
57    43, 44, 45, 46, 47, 49, 49, 50, 51, 52, 53, 54, 55, 36, 36, 36, 58, 59, 60, 61, 58, 37, 36, 36,
58    36, 36, 36, 36, 36, 36, 40, 41, 42, 43, 36, 36, 36, 36, 36, 36, 36, 36, 36, 53, 54, 55, 36, 36,
59    36, 36, 59, 60, 61, 62, 40, 41, 42, 43, 36, 36, 36, 36, 36, 36, 36, 36, 36, 53, 54, 55, 36, 36,
60    36, 36, 59, 60, 61, 62, 41, 42, 43, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
61    36, 59, 60, 61, 42, 43, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 59, 60,
62    61, 43, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 59, 60, 61, 59, 60, 60,
63    41, 42, 43, 36, 36, 36, 36, 36, 36, 36, 36, 36, 53, 54, 55, 36, 36, 36, 36, 59, 60, 61, 62, 41,
64    42, 43, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 54, 55, 36, 36, 36, 36, 59, 60, 61, 62, 41, 42,
65    43, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 55, 36, 36, 36, 36, 59, 60, 61, 62, 63, 41, 42,
66    43, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 59, 60, 61, 62, 39, 40, 41,
67    42, 43, 36, 36, 36, 36, 36, 36, 50, 51, 52, 53, 54, 55, 36, 36, 36, 36, 59, 60, 61, 62, 40, 41,
68    42, 43, 36, 36, 36, 36, 36, 36, 50, 51, 52, 53, 54, 55, 36, 36, 36, 36, 59, 60, 61, 62, 40, 41,
69    42, 43, 36, 36, 36, 36, 36, 36, 36, 51, 52, 53, 54, 55, 36, 36, 36, 36, 59, 60, 61, 62, 40, 41,
70    42, 43, 36, 36, 36, 36, 36, 36, 36, 36, 52, 53, 54, 55, 36, 36, 36, 36, 59, 60, 61, 62, 40, 36,
71    36, 39, 40, 41, 42, 43, 36, 45, 46, 36, 36, 36, 50, 51, 52, 53, 54, 55, 36, 36, 36, 36, 59, 60,
72    61, 62, 40, 36, 36, 39, 40, 41, 42, 43, 36, 36, 46, 36, 36, 36, 50, 51, 52, 53, 54, 55, 36, 36,
73    36, 36, 59, 60, 61, 62, 40, 36, 36, 39, 40, 41, 42, 43, 36, 36, 36, 36, 36, 36, 50, 51, 52, 53,
74    54, 55, 36, 36, 36, 36, 59, 60, 61, 62, 40, 36, 36, 39, 40, 41, 42, 43, 44, 45, 46, 36, 36, 36,
75    50, 51, 52, 53, 54, 55, 36, 36, 36, 36, 59, 60, 61, 62, 37, 38, 36, 36, 39, 40, 41, 42, 43, 44,
76    45, 46, 47, 36, 49, 50, 51, 52, 53, 54, 55, 36, 36, 36, 58, 59, 60, 61, 58, 37, 37, 38, 36, 36,
77    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 36, 36, 36, 58, 59, 60, 61,
78    58, 56, 57, 57, 65, 66, 64, 64, 67, 68, 69, 70, 71, 72, 73, 74, 75, 2, 76, 77, 78, 79, 80, 81,
79    82, 64, 64, 64, 83, 84, 85, 86, 87, 65, 66, 64, 64, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 76,
80    77, 78, 79, 80, 81, 82, 64, 64, 64, 83, 84, 85, 86, 87, 65, 64, 64, 64, 64, 64, 64, 64, 64, 68,
81    69, 70, 71, 64, 64, 64, 64, 64, 64, 64, 64, 64, 80, 81, 82, 64, 64, 64, 64, 84, 85, 86, 88, 68,
82    69, 70, 71, 64, 64, 64, 64, 64, 64, 64, 64, 64, 80, 81, 82, 64, 64, 64, 64, 84, 85, 86, 88, 69,
83    70, 71, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 84, 85, 86, 70, 71, 64,
84    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 84, 85, 86, 71, 64, 64, 64, 64, 64,
85    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 84, 85, 86, 84, 85, 85, 69, 70, 71, 64, 64, 64, 64,
86    64, 64, 64, 64, 64, 80, 81, 82, 64, 64, 64, 64, 84, 85, 86, 88, 69, 70, 71, 64, 64, 64, 64, 64,
87    64, 64, 64, 64, 64, 81, 82, 64, 64, 64, 64, 84, 85, 86, 88, 69, 70, 71, 64, 64, 64, 64, 64, 64,
88    64, 64, 64, 64, 64, 82, 64, 64, 64, 64, 84, 85, 86, 88, 90, 69, 70, 71, 64, 64, 64, 64, 64, 64,
89    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 84, 85, 86, 88, 67, 68, 69, 70, 71, 64, 64, 64, 64, 64,
90    64, 77, 78, 79, 80, 81, 82, 64, 64, 64, 64, 84, 85, 86, 88, 68, 69, 70, 71, 64, 64, 64, 64, 64,
91    64, 77, 78, 79, 80, 81, 82, 64, 64, 64, 64, 84, 85, 86, 88, 68, 69, 70, 71, 64, 64, 64, 64, 64,
92    64, 64, 78, 79, 80, 81, 82, 64, 64, 64, 64, 84, 85, 86, 88, 68, 69, 70, 71, 64, 64, 64, 64, 64,
93    64, 64, 64, 79, 80, 81, 82, 64, 64, 64, 64, 84, 85, 86, 88, 68, 64, 64, 67, 68, 69, 70, 71, 64,
94    73, 74, 64, 64, 64, 77, 78, 79, 80, 81, 82, 64, 64, 64, 64, 84, 85, 86, 88, 68, 64, 64, 67, 68,
95    69, 70, 71, 64, 64, 74, 64, 64, 64, 77, 78, 79, 80, 81, 82, 64, 64, 64, 64, 84, 85, 86, 88, 68,
96    64, 64, 67, 68, 69, 70, 71, 64, 64, 64, 64, 64, 64, 77, 78, 79, 80, 81, 82, 64, 64, 64, 64, 84,
97    85, 86, 88, 68, 64, 64, 67, 68, 69, 70, 71, 72, 73, 74, 64, 64, 64, 77, 78, 79, 80, 81, 82, 64,
98    64, 64, 64, 84, 85, 86, 88, 65, 66, 64, 64, 67, 68, 69, 70, 71, 72, 73, 74, 75, 64, 76, 77, 78,
99    79, 80, 81, 82, 64, 64, 64, 83, 84, 85, 86, 87, 65, 93, 4, 95, 96, 64, 64, 97, 98, 99, 100,
100    101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 56, 57, 64, 114, 115, 116, 86,
101    117, 95, 96, 64, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 107, 107, 108, 109, 110, 111,
102    112, 113, 64, 64, 64, 114, 115, 116, 86, 117, 95, 64, 64, 64, 64, 64, 64, 64, 64, 98, 99, 100,
103    101, 64, 64, 64, 64, 64, 64, 64, 64, 64, 111, 112, 113, 64, 64, 64, 64, 115, 116, 86, 118, 98,
104    99, 100, 101, 64, 64, 64, 64, 64, 64, 64, 64, 64, 111, 112, 113, 64, 64, 64, 64, 115, 116, 86,
105    118, 99, 100, 101, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 115, 116,
106    86, 100, 101, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 115, 116, 86,
107    101, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 115, 116, 86, 115, 116,
108    116, 99, 100, 101, 64, 64, 64, 64, 64, 64, 64, 64, 64, 111, 112, 113, 64, 64, 64, 64, 115, 116,
109    86, 118, 99, 100, 101, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 112, 113, 64, 64, 64, 64, 115,
110    116, 86, 118, 99, 100, 101, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 113, 64, 64, 64, 64,
111    115, 116, 86, 118, 119, 99, 100, 101, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
112    64, 64, 115, 116, 86, 118, 97, 98, 99, 100, 101, 64, 64, 64, 64, 64, 64, 108, 109, 110, 111,
113    112, 113, 64, 64, 64, 64, 115, 116, 86, 118, 98, 99, 100, 101, 64, 64, 64, 64, 64, 64, 108,
114    109, 110, 111, 112, 113, 64, 64, 64, 64, 115, 116, 86, 118, 98, 99, 100, 101, 64, 64, 64, 64,
115    64, 64, 64, 109, 110, 111, 112, 113, 64, 64, 64, 64, 115, 116, 86, 118, 98, 99, 100, 101, 64,
116    64, 64, 64, 64, 64, 64, 64, 110, 111, 112, 113, 64, 64, 64, 64, 115, 116, 86, 118, 98, 64, 64,
117    97, 98, 99, 100, 101, 64, 103, 104, 64, 64, 64, 108, 109, 110, 111, 112, 113, 64, 64, 64, 64,
118    115, 116, 86, 118, 98, 64, 64, 97, 98, 99, 100, 101, 64, 64, 104, 64, 64, 64, 108, 109, 110,
119    111, 112, 113, 64, 64, 64, 64, 115, 116, 86, 118, 98, 64, 64, 97, 98, 99, 100, 101, 64, 64, 64,
120    64, 64, 64, 108, 109, 110, 111, 112, 113, 64, 64, 64, 64, 115, 116, 86, 118, 98, 64, 64, 97,
121    98, 99, 100, 101, 102, 103, 104, 64, 64, 64, 108, 109, 110, 111, 112, 113, 64, 64, 64, 64, 115,
122    116, 86, 118, 95, 96, 64, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 64, 107, 108, 109, 110,
123    111, 112, 113, 64, 64, 64, 114, 115, 116, 86, 117, 95, 95, 96, 64, 64, 97, 98, 99, 100, 101,
124    102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 64, 64, 64, 114, 115, 116, 86, 117,
125    6, 7, 120, 120, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 20, 21, 22, 23, 24, 25, 26, 120, 120,
126    120, 30, 31, 32, 33, 30, 6, 120, 120, 120, 120, 120, 120, 120, 120, 11, 12, 13, 14, 120, 120,
127    120, 120, 120, 120, 120, 120, 120, 24, 25, 26, 120, 120, 120, 120, 31, 32, 33, 121, 11, 12, 13,
128    14, 120, 120, 120, 120, 120, 120, 120, 120, 120, 24, 25, 26, 120, 120, 120, 120, 31, 32, 33,
129    121, 12, 13, 14, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
130    120, 31, 32, 33, 13, 14, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
131    120, 120, 31, 32, 33, 14, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
132    120, 120, 31, 32, 33, 31, 32, 32, 12, 13, 14, 120, 120, 120, 120, 120, 120, 120, 120, 120, 24,
133    25, 26, 120, 120, 120, 120, 31, 32, 33, 121, 12, 13, 14, 120, 120, 120, 120, 120, 120, 120,
134    120, 120, 120, 25, 26, 120, 120, 120, 120, 31, 32, 33, 121, 12, 13, 14, 120, 120, 120, 120,
135    120, 120, 120, 120, 120, 120, 120, 26, 120, 120, 120, 120, 31, 32, 33, 121, 122, 12, 13, 14,
136    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 31, 32, 33,
137    121, 10, 11, 12, 13, 14, 120, 120, 120, 120, 120, 120, 21, 22, 23, 24, 25, 26, 120, 120, 120,
138    120, 31, 32, 33, 121, 11, 12, 13, 14, 120, 120, 120, 120, 120, 120, 21, 22, 23, 24, 25, 26,
139    120, 120, 120, 120, 31, 32, 33, 121, 11, 12, 13, 14, 120, 120, 120, 120, 120, 120, 120, 22, 23,
140    24, 25, 26, 120, 120, 120, 120, 31, 32, 33, 121, 11, 12, 13, 14, 120, 120, 120, 120, 120, 120,
141    120, 120, 23, 24, 25, 26, 120, 120, 120, 120, 31, 32, 33, 121, 11, 120, 120, 10, 11, 12, 13,
142    14, 120, 16, 17, 120, 120, 120, 21, 22, 23, 24, 25, 26, 120, 120, 120, 120, 31, 32, 33, 121,
143    11, 120, 120, 10, 11, 12, 13, 14, 120, 120, 17, 120, 120, 120, 21, 22, 23, 24, 25, 26, 120,
144    120, 120, 120, 31, 32, 33, 121, 11, 120, 120, 10, 11, 12, 13, 14, 120, 120, 120, 120, 120, 120,
145    21, 22, 23, 24, 25, 26, 120, 120, 120, 120, 31, 32, 33, 121, 11, 120, 120, 10, 11, 12, 13, 14,
146    15, 16, 17, 120, 120, 120, 21, 22, 23, 24, 25, 26, 120, 120, 120, 120, 31, 32, 33, 121, 6, 7,
147    120, 120, 10, 11, 12, 13, 14, 15, 16, 17, 18, 120, 20, 21, 22, 23, 24, 25, 26, 120, 120, 120,
148    30, 31, 32, 33, 30, 6, 123, 8, 2, 120, 120, 2, 6, 7, 8, 120, 10, 11, 12, 13, 14, 15, 16, 17,
149    18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 120, 30, 31, 32, 33, 30, 6, 7, 120, 120, 10, 11,
150    12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 120, 120, 120, 30, 31, 32, 33, 30,
151    27, 28, 28, 2, 124, 124, 2, 126, 125, 34, 34, 126, 125, 126, 34, 125, 35, 0, 0,
152];
153static _use_syllable_machine_index_defaults: [i8; 114] = [
154    3, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
155    36, 36, 36, 36, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 89, 64, 64, 64, 64, 64, 64, 64,
156    64, 64, 64, 91, 92, 94, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 89, 64, 64, 64, 64, 64,
157    64, 64, 64, 64, 64, 91, 64, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
158    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 124, 125, 125,
159    125, 0, 0,
160];
161static _use_syllable_machine_cond_targs: [i8; 129] = [
162    0, 1, 28, 0, 52, 54, 79, 80, 102, 104, 92, 81, 82, 83, 84, 96, 97, 98, 99, 105, 100, 93, 94,
163    95, 87, 88, 89, 106, 107, 108, 101, 85, 86, 0, 109, 111, 0, 2, 3, 15, 4, 5, 6, 7, 19, 20, 21,
164    22, 25, 23, 16, 17, 18, 10, 11, 12, 26, 27, 24, 8, 9, 0, 13, 14, 0, 29, 30, 42, 31, 32, 33, 34,
165    46, 47, 48, 49, 50, 43, 44, 45, 37, 38, 39, 51, 35, 36, 0, 51, 40, 0, 41, 0, 0, 53, 0, 55, 56,
166    68, 57, 58, 59, 60, 72, 73, 74, 75, 78, 76, 69, 70, 71, 63, 64, 65, 77, 61, 62, 77, 66, 67, 0,
167    90, 91, 103, 0, 0, 110, 0, 0,
168];
169static _use_syllable_machine_cond_actions: [i8; 129] = [
170    0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
171    0, 4, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0,
172    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 9, 10, 0, 11, 0, 12, 13, 0,
173    14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 10, 0, 0, 15, 0, 0, 0,
174    16, 17, 0, 0, 0,
175];
176static _use_syllable_machine_to_state_actions: [i8; 114] = [
177    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
178    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
179    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
180    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
181];
182static _use_syllable_machine_from_state_actions: [i8; 114] = [
183    2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
184    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
185    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
186    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
187];
188static _use_syllable_machine_eof_trans: [i8; 114] = [
189    1, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
190    37, 37, 37, 37, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 90, 65, 65, 65, 65, 65, 65, 65,
191    65, 65, 65, 92, 93, 95, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 90, 65, 65, 65, 65, 65,
192    65, 65, 65, 65, 65, 92, 65, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
193    121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 125, 126, 126,
194    126, 0, 0,
195];
196static use_syllable_machine_start: i32 = 0;
197static use_syllable_machine_first_final: i32 = 0;
198static use_syllable_machine_error: i32 = -1;
199static use_syllable_machine_en_main: i32 = 0;
200#[derive(Clone, Copy)]
201pub enum SyllableType {
202    IndependentCluster,
203    ViramaTerminatedCluster,
204    SakotTerminatedCluster,
205    StandardCluster,
206    NumberJoinerTerminatedCluster,
207    NumeralCluster,
208    SymbolCluster,
209    HieroglyphCluster,
210    BrokenCluster,
211    NonCluster,
212}
213
214pub fn find_syllables(buffer: &mut hb_buffer_t) {
215    let mut cs = 0;
216    let infos = Cell::as_slice_of_cells(Cell::from_mut(&mut buffer.info));
217    let p0 = MachineCursor::new(infos, included);
218    let mut p = p0;
219    let mut ts = p0;
220    let mut te = p0;
221    let mut act = p0;
222    let pe = p.end();
223    let eof = p.end();
224    let mut syllable_serial = 1u8;
225
226    // Please manually replace assignments of 0 to p, ts, and te
227    // to use p0 instead
228
229    macro_rules! found_syllable {
230        ($kind:expr) => {{
231            found_syllable(ts.index(), te.index(), &mut syllable_serial, $kind, infos);
232        }};
233    }
234
235    {
236        cs = (use_syllable_machine_start) as i32;
237        ts = p0;
238        te = p0;
239        act = p0;
240    }
241
242    {
243        let mut _trans = 0;
244        let mut _keys: i32 = 0;
245        let mut _inds: i32 = 0;
246        let mut _ic = 0;
247        '_resume: while (p != pe || p == eof) {
248            '_again: while (true) {
249                match (_use_syllable_machine_from_state_actions[(cs) as usize]) {
250                    2 => {
251                        ts = p;
252                    }
253
254                    _ => {}
255                }
256                if (p == eof) {
257                    {
258                        if (_use_syllable_machine_eof_trans[(cs) as usize] > 0) {
259                            {
260                                _trans =
261                                    (_use_syllable_machine_eof_trans[(cs) as usize]) as u32 - 1;
262                            }
263                        }
264                    }
265                } else {
266                    {
267                        _keys = (cs << 1) as i32;
268                        _inds = (_use_syllable_machine_index_offsets[(cs) as usize]) as i32;
269                        if ((infos[p.index()].get().use_category() as u8) <= 52) {
270                            {
271                                _ic = (_use_syllable_machine_char_class[((infos[p.index()]
272                                    .get()
273                                    .use_category()
274                                    as u8)
275                                    as i32
276                                    - 0)
277                                    as usize]) as i32;
278                                if (_ic
279                                    <= (_use_syllable_machine_trans_keys[(_keys + 1) as usize])
280                                        as i32
281                                    && _ic
282                                        >= (_use_syllable_machine_trans_keys[(_keys) as usize])
283                                            as i32)
284                                {
285                                    _trans = (_use_syllable_machine_indices[(_inds
286                                        + (_ic
287                                            - (_use_syllable_machine_trans_keys[(_keys) as usize])
288                                                as i32)
289                                            as i32)
290                                        as usize])
291                                        as u32;
292                                } else {
293                                    _trans = (_use_syllable_machine_index_defaults[(cs) as usize])
294                                        as u32;
295                                }
296                            }
297                        } else {
298                            {
299                                _trans =
300                                    (_use_syllable_machine_index_defaults[(cs) as usize]) as u32;
301                            }
302                        }
303                    }
304                }
305                cs = (_use_syllable_machine_cond_targs[(_trans) as usize]) as i32;
306                if (_use_syllable_machine_cond_actions[(_trans) as usize] != 0) {
307                    {
308                        match (_use_syllable_machine_cond_actions[(_trans) as usize]) {
309                            9 => {
310                                te = p + 1;
311                                {
312                                    found_syllable!(SyllableType::StandardCluster);
313                                }
314                            }
315                            6 => {
316                                te = p + 1;
317                                {
318                                    found_syllable!(SyllableType::SymbolCluster);
319                                }
320                            }
321                            4 => {
322                                te = p + 1;
323                                {
324                                    found_syllable!(SyllableType::BrokenCluster);
325                                }
326                            }
327                            3 => {
328                                te = p + 1;
329                                {
330                                    found_syllable!(SyllableType::NonCluster);
331                                }
332                            }
333                            11 => {
334                                te = p;
335                                p = p - 1;
336                                {
337                                    found_syllable!(SyllableType::SakotTerminatedCluster);
338                                }
339                            }
340                            7 => {
341                                te = p;
342                                p = p - 1;
343                                {
344                                    found_syllable!(SyllableType::StandardCluster);
345                                }
346                            }
347                            14 => {
348                                te = p;
349                                p = p - 1;
350                                {
351                                    found_syllable!(SyllableType::NumberJoinerTerminatedCluster);
352                                }
353                            }
354                            13 => {
355                                te = p;
356                                p = p - 1;
357                                {
358                                    found_syllable!(SyllableType::NumeralCluster);
359                                }
360                            }
361                            5 => {
362                                te = p;
363                                p = p - 1;
364                                {
365                                    found_syllable!(SyllableType::SymbolCluster);
366                                }
367                            }
368                            17 => {
369                                te = p;
370                                p = p - 1;
371                                {
372                                    found_syllable!(SyllableType::HieroglyphCluster);
373                                }
374                            }
375                            15 => {
376                                te = p;
377                                p = p - 1;
378                                {
379                                    found_syllable!(SyllableType::BrokenCluster);
380                                }
381                            }
382                            16 => {
383                                te = p;
384                                p = p - 1;
385                                {
386                                    found_syllable!(SyllableType::NonCluster);
387                                }
388                            }
389                            12 => match (act).index() {
390                                1 => {
391                                    p = (te) - 1;
392                                    {
393                                        found_syllable!(SyllableType::ViramaTerminatedCluster);
394                                    }
395                                }
396                                2 => {
397                                    p = (te) - 1;
398                                    {
399                                        found_syllable!(SyllableType::SakotTerminatedCluster);
400                                    }
401                                }
402
403                                _ => {}
404                            },
405                            8 => {
406                                {
407                                    {
408                                        te = p + 1;
409                                    }
410                                }
411                                {
412                                    {
413                                        act = p + 1;
414                                    }
415                                }
416                            }
417                            10 => {
418                                {
419                                    {
420                                        te = p + 1;
421                                    }
422                                }
423                                {
424                                    {
425                                        act = p + 2;
426                                    }
427                                }
428                            }
429
430                            _ => {}
431                        }
432                    }
433                }
434                break '_again;
435            }
436            if (p == eof) {
437                {
438                    if (cs >= 0) {
439                        break '_resume;
440                    }
441                }
442            } else {
443                {
444                    match (_use_syllable_machine_to_state_actions[(cs) as usize]) {
445                        1 => {
446                            ts = p0;
447                        }
448
449                        _ => {}
450                    }
451                    p += 1;
452                    continue '_resume;
453                }
454            }
455            break '_resume;
456        }
457    }
458}
459
460#[inline]
461fn found_syllable(
462    start: usize,
463    end: usize,
464    syllable_serial: &mut u8,
465    kind: SyllableType,
466    buffer: &[Cell<hb_glyph_info_t>],
467) {
468    for i in start..end {
469        let mut glyph = buffer[i].get();
470        glyph.set_syllable((*syllable_serial << 4) | kind as u8);
471        buffer[i].set(glyph);
472    }
473
474    *syllable_serial += 1;
475
476    if *syllable_serial == 16 {
477        *syllable_serial = 1;
478    }
479}
480
481fn not_ccs_default_ignorable(i: &hb_glyph_info_t) -> bool {
482    i.use_category() != category::CGJ
483}
484
485fn included(infos: &[Cell<hb_glyph_info_t>], i: usize) -> bool {
486    let glyph = infos[i].get();
487    if !not_ccs_default_ignorable(&glyph) {
488        return false;
489    }
490    if glyph.use_category() == category::ZWNJ {
491        for glyph2 in &infos[i + 1..] {
492            if not_ccs_default_ignorable(&glyph2.get()) {
493                return !_hb_glyph_info_is_unicode_mark(&glyph2.get());
494            }
495        }
496    }
497    true
498}