Skip to main content

harfrust/hb/
ot_shaper_indic_machine.rs

1#![allow(
2    dead_code,
3    non_upper_case_globals,
4    unused_assignments,
5    unused_parens,
6    while_true,
7    clippy::assign_op_pattern,
8    clippy::comparison_chain,
9    clippy::double_parens,
10    clippy::unnecessary_cast,
11    clippy::single_match,
12    clippy::never_loop
13)]
14
15use super::buffer::{hb_buffer_t, HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE};
16
17static _indic_syllable_machine_trans_keys: [u8; 278] = [
18    7, 19, 3, 19, 4, 19, 4, 19, 12, 12, 3, 19, 3, 19, 3, 19, 7, 19, 4, 19, 4, 19, 12, 12, 3, 19, 3,
19    19, 3, 19, 3, 19, 7, 19, 4, 19, 4, 19, 12, 12, 3, 19, 3, 19, 3, 19, 7, 19, 4, 19, 4, 19, 12,
20    12, 3, 19, 3, 19, 4, 19, 7, 19, 0, 19, 2, 19, 2, 19, 3, 19, 0, 19, 4, 19, 4, 19, 8, 8, 4, 8, 0,
21    19, 0, 19, 0, 19, 2, 19, 3, 19, 4, 19, 4, 19, 3, 19, 4, 19, 2, 19, 4, 19, 2, 19, 2, 19, 2, 19,
22    2, 19, 3, 19, 0, 19, 2, 19, 2, 19, 3, 19, 0, 19, 4, 19, 8, 8, 4, 8, 0, 19, 0, 19, 2, 19, 3, 19,
23    4, 19, 4, 19, 3, 19, 4, 19, 4, 19, 2, 19, 4, 19, 2, 19, 2, 19, 3, 19, 2, 19, 2, 19, 3, 19, 0,
24    19, 2, 19, 0, 19, 4, 19, 8, 8, 4, 8, 0, 19, 0, 19, 2, 19, 3, 19, 4, 19, 4, 19, 2, 19, 3, 19, 4,
25    19, 4, 19, 2, 19, 4, 19, 2, 19, 3, 19, 3, 19, 2, 19, 2, 19, 3, 19, 0, 19, 2, 19, 0, 19, 4, 19,
26    8, 8, 4, 8, 0, 19, 0, 19, 2, 19, 3, 19, 4, 19, 4, 19, 2, 19, 3, 19, 4, 19, 4, 19, 2, 19, 4, 19,
27    0, 19, 2, 19, 0, 19, 3, 19, 4, 19, 4, 19, 8, 8, 4, 8, 0, 19, 2, 19, 4, 19, 4, 19, 8, 8, 4, 8,
28    0, 14, 0, 0,
29];
30static _indic_syllable_machine_char_class: [i8; 59] = [
31    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18,
32    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
33    18, 18, 18, 18, 18, 18, 19, 0, 0,
34];
35static _indic_syllable_machine_index_offsets: [i16; 140] = [
36    0, 13, 30, 46, 62, 63, 80, 97, 114, 127, 143, 159, 160, 177, 194, 211, 228, 241, 257, 273, 274,
37    291, 308, 325, 338, 354, 370, 371, 388, 405, 421, 434, 454, 472, 490, 507, 527, 543, 559, 560,
38    565, 585, 605, 625, 643, 660, 676, 692, 709, 725, 743, 759, 777, 795, 813, 831, 848, 868, 886,
39    904, 921, 941, 957, 958, 963, 983, 1003, 1021, 1038, 1054, 1070, 1087, 1103, 1119, 1137, 1153,
40    1171, 1189, 1206, 1224, 1242, 1259, 1279, 1297, 1317, 1333, 1334, 1339, 1359, 1379, 1397, 1414,
41    1430, 1446, 1464, 1481, 1497, 1513, 1531, 1547, 1565, 1582, 1599, 1617, 1635, 1652, 1672, 1690,
42    1710, 1726, 1727, 1732, 1752, 1772, 1790, 1807, 1823, 1839, 1857, 1874, 1890, 1906, 1924, 1940,
43    1960, 1978, 1998, 2015, 2031, 2047, 2048, 2053, 2073, 2091, 2107, 2123, 2124, 2129, 0, 0,
44];
45static _indic_syllable_machine_indices: [i16; 2146] = [
46    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 4, 5, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 3, 3,
47    4, 6, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 6, 3, 3, 4, 5, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 4, 7,
48    3, 3, 4, 5, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 2, 3, 3, 4, 5, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0,
49    5, 10, 11, 11, 12, 13, 9, 9, 9, 9, 12, 9, 9, 9, 9, 9, 9, 13, 14, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
50    9, 14, 11, 11, 12, 15, 9, 9, 9, 9, 12, 9, 9, 9, 9, 9, 9, 15, 11, 11, 12, 13, 9, 9, 9, 9, 12, 9,
51    9, 9, 9, 9, 9, 13, 12, 16, 11, 11, 12, 13, 9, 9, 9, 9, 12, 9, 9, 9, 9, 9, 9, 13, 10, 11, 11,
52    12, 13, 9, 9, 9, 17, 12, 9, 9, 9, 9, 9, 9, 13, 10, 11, 11, 12, 13, 9, 9, 9, 18, 12, 9, 9, 9, 9,
53    9, 9, 13, 20, 21, 21, 22, 23, 19, 19, 19, 24, 22, 19, 19, 19, 19, 19, 19, 23, 25, 19, 19, 19,
54    19, 19, 19, 19, 19, 19, 19, 19, 25, 21, 21, 22, 27, 26, 26, 26, 26, 22, 26, 26, 26, 26, 26, 26,
55    27, 21, 21, 22, 23, 19, 19, 19, 19, 22, 19, 19, 19, 19, 19, 19, 23, 22, 20, 21, 21, 22, 23, 19,
56    19, 19, 19, 22, 19, 19, 19, 19, 19, 19, 23, 28, 21, 21, 22, 23, 19, 19, 19, 19, 22, 19, 19, 19,
57    19, 19, 19, 23, 30, 31, 31, 32, 33, 29, 29, 29, 34, 32, 29, 29, 29, 29, 29, 29, 33, 35, 29, 29,
58    29, 29, 29, 29, 29, 29, 29, 29, 29, 35, 31, 31, 32, 36, 29, 29, 29, 29, 32, 29, 29, 29, 29, 29,
59    29, 36, 31, 31, 32, 33, 29, 29, 29, 29, 32, 29, 29, 29, 29, 29, 29, 33, 32, 30, 31, 31, 32, 33,
60    29, 29, 29, 29, 32, 29, 29, 29, 29, 29, 29, 33, 37, 31, 31, 32, 33, 29, 29, 29, 29, 32, 29, 29,
61    29, 29, 29, 29, 33, 21, 21, 22, 38, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 38, 40, 39, 39, 39, 39,
62    39, 39, 39, 39, 39, 39, 39, 40, 43, 44, 45, 46, 47, 48, 22, 23, 49, 50, 50, 24, 22, 51, 52, 53,
63    54, 55, 42, 56, 58, 59, 60, 61, 4, 5, 62, 57, 57, 8, 4, 57, 57, 63, 57, 57, 57, 5, 64, 59, 65,
64    65, 4, 5, 62, 57, 57, 57, 4, 57, 57, 63, 57, 57, 57, 5, 59, 65, 65, 4, 5, 62, 57, 57, 57, 4,
65    57, 57, 63, 57, 57, 57, 5, 43, 57, 57, 57, 66, 67, 57, 1, 62, 57, 57, 57, 57, 57, 43, 57, 57,
66    57, 57, 1, 68, 68, 57, 1, 62, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 1, 62, 57, 57, 69, 62,
67    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 69, 62, 62, 57, 57, 57, 62, 43, 57, 70, 57, 68, 68, 57,
68    1, 62, 57, 57, 57, 57, 57, 43, 57, 57, 57, 57, 1, 43, 57, 57, 57, 68, 68, 57, 1, 62, 57, 57,
69    57, 57, 57, 43, 57, 57, 57, 57, 1, 43, 57, 57, 57, 68, 67, 57, 1, 62, 57, 57, 57, 57, 57, 43,
70    57, 57, 57, 57, 1, 71, 72, 73, 73, 4, 5, 62, 57, 57, 57, 4, 57, 57, 57, 57, 57, 57, 5, 72, 73,
71    73, 4, 5, 62, 57, 57, 57, 4, 57, 57, 57, 57, 57, 57, 5, 73, 73, 4, 5, 62, 57, 57, 57, 4, 57,
72    57, 57, 57, 57, 57, 5, 62, 57, 57, 69, 62, 57, 57, 57, 4, 57, 57, 57, 57, 57, 57, 69, 74, 75,
73    75, 4, 5, 62, 57, 57, 57, 4, 57, 57, 57, 57, 57, 57, 5, 66, 76, 57, 1, 62, 57, 57, 57, 57, 57,
74    57, 57, 57, 57, 57, 1, 66, 57, 68, 68, 57, 1, 62, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 1,
75    68, 76, 57, 1, 62, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 1, 58, 59, 65, 65, 4, 5, 62, 57, 57,
76    57, 4, 57, 57, 63, 57, 57, 57, 5, 58, 59, 60, 65, 4, 5, 62, 57, 57, 8, 4, 57, 57, 63, 57, 57,
77    57, 5, 78, 79, 80, 81, 12, 13, 82, 77, 77, 18, 12, 77, 77, 83, 77, 77, 77, 13, 84, 79, 85, 81,
78    12, 13, 82, 77, 77, 77, 12, 77, 77, 83, 77, 77, 77, 13, 79, 85, 81, 12, 13, 82, 77, 77, 77, 12,
79    77, 77, 83, 77, 77, 77, 13, 86, 77, 77, 77, 87, 88, 77, 14, 82, 77, 77, 77, 77, 77, 86, 77, 77,
80    77, 77, 14, 89, 79, 90, 91, 12, 13, 82, 77, 77, 17, 12, 77, 77, 83, 77, 77, 77, 13, 92, 79, 85,
81    85, 12, 13, 82, 77, 77, 77, 12, 77, 77, 83, 77, 77, 77, 13, 79, 85, 85, 12, 13, 82, 77, 77, 77,
82    12, 77, 77, 83, 77, 77, 77, 13, 86, 77, 77, 77, 93, 88, 77, 14, 82, 77, 77, 77, 77, 77, 86, 77,
83    77, 77, 77, 14, 82, 77, 77, 94, 82, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 94, 82, 82, 77, 77,
84    77, 82, 86, 77, 95, 77, 93, 93, 77, 14, 82, 77, 77, 77, 77, 77, 86, 77, 77, 77, 77, 14, 86, 77,
85    77, 77, 93, 93, 77, 14, 82, 77, 77, 77, 77, 77, 86, 77, 77, 77, 77, 14, 96, 97, 98, 98, 12, 13,
86    82, 77, 77, 77, 12, 77, 77, 77, 77, 77, 77, 13, 97, 98, 98, 12, 13, 82, 77, 77, 77, 12, 77, 77,
87    77, 77, 77, 77, 13, 98, 98, 12, 13, 82, 77, 77, 77, 12, 77, 77, 77, 77, 77, 77, 13, 82, 77, 77,
88    94, 82, 77, 77, 77, 12, 77, 77, 77, 77, 77, 77, 94, 99, 100, 100, 12, 13, 82, 77, 77, 77, 12,
89    77, 77, 77, 77, 77, 77, 13, 87, 101, 77, 14, 82, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 14,
90    93, 93, 77, 14, 82, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 14, 87, 77, 93, 93, 77, 14, 82, 77,
91    77, 77, 77, 77, 77, 77, 77, 77, 77, 14, 93, 101, 77, 14, 82, 77, 77, 77, 77, 77, 77, 77, 77,
92    77, 77, 14, 89, 79, 85, 85, 12, 13, 82, 77, 77, 77, 12, 77, 77, 83, 77, 77, 77, 13, 89, 79, 90,
93    85, 12, 13, 82, 77, 77, 17, 12, 77, 77, 83, 77, 77, 77, 13, 10, 11, 11, 12, 13, 77, 77, 77, 77,
94    12, 77, 77, 77, 77, 77, 77, 13, 78, 79, 85, 81, 12, 13, 82, 77, 77, 77, 12, 77, 77, 83, 77, 77,
95    77, 13, 103, 46, 104, 104, 22, 23, 49, 102, 102, 102, 22, 102, 102, 53, 102, 102, 102, 23, 46,
96    104, 104, 22, 23, 49, 102, 102, 102, 22, 102, 102, 53, 102, 102, 102, 23, 105, 102, 102, 102,
97    106, 107, 102, 25, 49, 102, 102, 102, 102, 102, 105, 102, 102, 102, 102, 25, 45, 46, 108, 109,
98    22, 23, 49, 102, 102, 24, 22, 102, 102, 53, 102, 102, 102, 23, 105, 102, 102, 102, 110, 107,
99    102, 25, 49, 102, 102, 102, 102, 102, 105, 102, 102, 102, 102, 25, 49, 102, 102, 111, 49, 102,
100    102, 102, 102, 102, 102, 102, 102, 102, 102, 111, 49, 49, 102, 102, 102, 49, 105, 102, 112,
101    102, 110, 110, 102, 25, 49, 102, 102, 102, 102, 102, 105, 102, 102, 102, 102, 25, 105, 102,
102    102, 102, 110, 110, 102, 25, 49, 102, 102, 102, 102, 102, 105, 102, 102, 102, 102, 25, 113,
103    114, 115, 115, 22, 23, 49, 102, 102, 102, 22, 102, 102, 102, 102, 102, 102, 23, 114, 115, 115,
104    22, 23, 49, 102, 102, 102, 22, 102, 102, 102, 102, 102, 102, 23, 115, 115, 22, 23, 49, 102,
105    102, 102, 22, 102, 102, 102, 102, 102, 102, 23, 49, 26, 26, 111, 49, 26, 26, 26, 22, 26, 26,
106    26, 26, 26, 26, 111, 45, 46, 104, 104, 22, 23, 49, 102, 102, 102, 22, 102, 102, 53, 102, 102,
107    102, 23, 116, 117, 117, 22, 23, 49, 102, 102, 102, 22, 102, 102, 102, 102, 102, 102, 23, 106,
108    118, 102, 25, 49, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 25, 110, 110, 102, 25, 49,
109    102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 25, 106, 102, 110, 110, 102, 25, 49, 102,
110    102, 102, 102, 102, 102, 102, 102, 102, 102, 25, 110, 118, 102, 25, 49, 102, 102, 102, 102,
111    102, 102, 102, 102, 102, 102, 25, 45, 46, 108, 104, 22, 23, 49, 102, 102, 24, 22, 102, 102, 53,
112    102, 102, 102, 23, 20, 21, 21, 22, 23, 119, 119, 119, 24, 22, 119, 119, 119, 119, 119, 119, 23,
113    20, 21, 21, 22, 23, 119, 119, 119, 119, 22, 119, 119, 119, 119, 119, 119, 23, 121, 122, 123,
114    124, 32, 33, 125, 120, 120, 34, 32, 120, 120, 126, 120, 120, 120, 33, 127, 122, 124, 124, 32,
115    33, 125, 120, 120, 120, 32, 120, 120, 126, 120, 120, 120, 33, 122, 124, 124, 32, 33, 125, 120,
116    120, 120, 32, 120, 120, 126, 120, 120, 120, 33, 128, 120, 120, 120, 129, 130, 120, 35, 125,
117    120, 120, 120, 120, 120, 128, 120, 120, 120, 120, 35, 121, 122, 123, 50, 32, 33, 125, 120, 120,
118    34, 32, 120, 120, 126, 120, 120, 120, 33, 128, 120, 120, 120, 131, 130, 120, 35, 125, 120, 120,
119    120, 120, 120, 128, 120, 120, 120, 120, 35, 125, 120, 120, 132, 125, 120, 120, 120, 120, 120,
120    120, 120, 120, 120, 120, 132, 125, 125, 120, 120, 120, 125, 128, 120, 133, 120, 131, 131, 120,
121    35, 125, 120, 120, 120, 120, 120, 128, 120, 120, 120, 120, 35, 128, 120, 120, 120, 131, 131,
122    120, 35, 125, 120, 120, 120, 120, 120, 128, 120, 120, 120, 120, 35, 134, 135, 136, 136, 32, 33,
123    125, 120, 120, 120, 32, 120, 120, 120, 120, 120, 120, 33, 135, 136, 136, 32, 33, 125, 120, 120,
124    120, 32, 120, 120, 120, 120, 120, 120, 33, 136, 136, 32, 33, 125, 120, 120, 120, 32, 120, 120,
125    120, 120, 120, 120, 33, 125, 120, 120, 132, 125, 120, 120, 120, 32, 120, 120, 120, 120, 120,
126    120, 132, 121, 122, 124, 124, 32, 33, 125, 120, 120, 120, 32, 120, 120, 126, 120, 120, 120, 33,
127    137, 138, 138, 32, 33, 125, 120, 120, 120, 32, 120, 120, 120, 120, 120, 120, 33, 129, 139, 120,
128    35, 125, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 35, 131, 131, 120, 35, 125, 120,
129    120, 120, 120, 120, 120, 120, 120, 120, 120, 35, 129, 120, 131, 131, 120, 35, 125, 120, 120,
130    120, 120, 120, 120, 120, 120, 120, 120, 35, 131, 139, 120, 35, 125, 120, 120, 120, 120, 120,
131    120, 120, 120, 120, 120, 35, 43, 44, 45, 46, 108, 104, 22, 23, 49, 50, 50, 24, 22, 102, 43, 53,
132    102, 102, 102, 23, 58, 140, 60, 61, 4, 5, 62, 57, 57, 8, 4, 57, 57, 63, 57, 57, 57, 5, 43, 44,
133    45, 46, 141, 142, 22, 143, 144, 57, 50, 24, 22, 57, 43, 53, 57, 57, 57, 143, 20, 145, 145, 22,
134    143, 62, 57, 57, 24, 22, 57, 57, 57, 57, 57, 57, 143, 62, 57, 57, 69, 62, 57, 57, 57, 22, 57,
135    57, 57, 57, 57, 57, 69, 144, 57, 57, 146, 144, 57, 57, 57, 22, 57, 57, 57, 57, 57, 57, 146,
136    144, 144, 57, 57, 57, 144, 43, 57, 70, 20, 145, 145, 22, 143, 62, 57, 57, 57, 22, 57, 43, 57,
137    57, 57, 57, 143, 148, 147, 149, 149, 147, 40, 150, 147, 147, 147, 147, 147, 147, 147, 147, 147,
138    147, 40, 149, 149, 147, 40, 150, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 40, 150,
139    147, 147, 151, 150, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 151, 150, 150, 147, 147,
140    147, 150, 43, 119, 119, 119, 119, 119, 119, 119, 119, 50, 119, 119, 119, 119, 43, 0, 0,
141];
142static _indic_syllable_machine_index_defaults: [i16; 140] = [
143    0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 19, 19, 26, 19, 26, 19, 19, 29, 29, 29, 29, 29,
144    29, 29, 0, 39, 42, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
145    57, 57, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
146    77, 77, 77, 77, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 26, 102, 102,
147    102, 102, 102, 102, 102, 119, 119, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
148    120, 120, 120, 120, 120, 120, 120, 120, 120, 102, 57, 57, 57, 57, 57, 57, 57, 57, 147, 147,
149    147, 147, 147, 119, 0, 0,
150];
151static _indic_syllable_machine_cond_targs: [i16; 154] = [
152    31, 37, 42, 2, 43, 46, 4, 50, 51, 31, 60, 9, 66, 69, 61, 11, 74, 75, 78, 31, 83, 17, 89, 92,
153    93, 84, 31, 19, 98, 31, 107, 24, 113, 116, 117, 108, 26, 122, 127, 31, 134, 31, 31, 32, 53, 79,
154    81, 100, 101, 85, 102, 123, 124, 94, 132, 137, 92, 31, 33, 35, 6, 52, 38, 47, 34, 1, 36, 40, 0,
155    39, 41, 44, 45, 3, 48, 5, 49, 31, 54, 56, 14, 77, 62, 70, 55, 7, 57, 72, 64, 58, 13, 76, 59, 8,
156    63, 65, 67, 68, 10, 71, 12, 73, 31, 80, 20, 82, 96, 87, 15, 99, 16, 86, 88, 90, 91, 18, 95, 21,
157    97, 31, 31, 103, 105, 22, 27, 109, 118, 104, 106, 120, 111, 23, 110, 112, 114, 115, 25, 119,
158    28, 121, 125, 126, 131, 128, 129, 29, 130, 31, 133, 30, 135, 136, 0, 0,
159];
160static _indic_syllable_machine_cond_actions: [i8; 154] = [
161    1, 0, 2, 0, 2, 0, 0, 2, 2, 3, 2, 0, 2, 0, 0, 0, 2, 2, 2, 4, 2, 0, 5, 5, 5, 0, 6, 0, 2, 7, 2, 0,
162    2, 0, 2, 0, 0, 2, 0, 8, 0, 0, 11, 2, 2, 5, 0, 12, 12, 0, 2, 5, 2, 5, 2, 0, 13, 14, 2, 0, 0, 2,
163    0, 2, 2, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 2, 15, 2, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2,
164    0, 0, 2, 2, 2, 0, 0, 0, 2, 16, 5, 0, 5, 2, 2, 0, 5, 0, 0, 2, 5, 5, 0, 0, 0, 2, 17, 18, 2, 0, 0,
165    0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 2, 0, 19, 19, 0, 0, 0, 0, 20, 2, 0, 0, 0, 0, 0,
166];
167static _indic_syllable_machine_to_state_actions: [i8; 140] = [
168    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, 9,
169    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,
170    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,
171    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,
172    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
173];
174static _indic_syllable_machine_from_state_actions: [i8; 140] = [
175    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,
176    10, 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,
177    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,
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,
180];
181static _indic_syllable_machine_eof_trans: [i16; 140] = [
182    1, 1, 1, 1, 1, 1, 1, 10, 10, 10, 10, 10, 10, 10, 10, 20, 20, 27, 20, 27, 20, 20, 30, 30, 30,
183    30, 30, 30, 30, 1, 40, 42, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
184    58, 58, 58, 58, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
185    78, 78, 78, 78, 78, 78, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 27,
186    103, 103, 103, 103, 103, 103, 103, 120, 120, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
187    121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 103, 58, 58, 58, 58, 58, 58, 58, 58,
188    148, 148, 148, 148, 148, 120, 0, 0,
189];
190static indic_syllable_machine_start: i32 = 31;
191static indic_syllable_machine_first_final: i32 = 31;
192static indic_syllable_machine_error: i32 = -1;
193static indic_syllable_machine_en_main: i32 = 31;
194#[derive(Clone, Copy)]
195pub enum SyllableType {
196    ConsonantSyllable = 0,
197    VowelSyllable,
198    StandaloneCluster,
199    SymbolCluster,
200    BrokenCluster,
201    NonIndicCluster,
202}
203
204pub fn find_syllables_indic(buffer: &mut hb_buffer_t) {
205    let mut cs = 0;
206    let mut ts = 0;
207    let mut te = 0;
208    let mut act = 0;
209    let mut p = 0;
210    let pe = buffer.len;
211    let eof = buffer.len;
212    let mut syllable_serial = 1u8;
213
214    macro_rules! found_syllable {
215        ($kind:expr) => {{
216            found_syllable(ts, te, &mut syllable_serial, $kind, buffer)
217        }};
218    }
219
220    {
221        cs = (indic_syllable_machine_start) as i32;
222        ts = 0;
223        te = 0;
224        act = 0;
225    }
226
227    {
228        let mut _trans = 0;
229        let mut _keys: i32 = 0;
230        let mut _inds: i32 = 0;
231        let mut _ic = 0;
232        '_resume: while (p != pe || p == eof) {
233            '_again: while (true) {
234                match (_indic_syllable_machine_from_state_actions[(cs) as usize]) {
235                    10 => {
236                        ts = p;
237                    }
238
239                    _ => {}
240                }
241                if (p == eof) {
242                    {
243                        if (_indic_syllable_machine_eof_trans[(cs) as usize] > 0) {
244                            {
245                                _trans =
246                                    (_indic_syllable_machine_eof_trans[(cs) as usize]) as u32 - 1;
247                            }
248                        }
249                    }
250                } else {
251                    {
252                        _keys = (cs << 1) as i32;
253                        _inds = (_indic_syllable_machine_index_offsets[(cs) as usize]) as i32;
254                        if ((buffer.info[p].indic_category() as u8) <= 57
255                            && (buffer.info[p].indic_category() as u8) >= 1)
256                        {
257                            {
258                                _ic = (_indic_syllable_machine_char_class
259                                    [((buffer.info[p].indic_category() as u8) as i32 - 1) as usize])
260                                    as i32;
261                                if (_ic
262                                    <= (_indic_syllable_machine_trans_keys[(_keys + 1) as usize])
263                                        as i32
264                                    && _ic
265                                        >= (_indic_syllable_machine_trans_keys[(_keys) as usize])
266                                            as i32)
267                                {
268                                    _trans = (_indic_syllable_machine_indices[(_inds
269                                        + (_ic
270                                            - (_indic_syllable_machine_trans_keys[(_keys) as usize])
271                                                as i32)
272                                            as i32)
273                                        as usize])
274                                        as u32;
275                                } else {
276                                    _trans = (_indic_syllable_machine_index_defaults[(cs) as usize])
277                                        as u32;
278                                }
279                            }
280                        } else {
281                            {
282                                _trans =
283                                    (_indic_syllable_machine_index_defaults[(cs) as usize]) as u32;
284                            }
285                        }
286                    }
287                }
288                cs = (_indic_syllable_machine_cond_targs[(_trans) as usize]) as i32;
289                if (_indic_syllable_machine_cond_actions[(_trans) as usize] != 0) {
290                    {
291                        match (_indic_syllable_machine_cond_actions[(_trans) as usize]) {
292                            2 => {
293                                te = p + 1;
294                            }
295                            11 => {
296                                te = p + 1;
297                                {
298                                    found_syllable!(SyllableType::NonIndicCluster);
299                                }
300                            }
301                            14 => {
302                                te = p;
303                                p = p - 1;
304                                {
305                                    found_syllable!(SyllableType::ConsonantSyllable);
306                                }
307                            }
308                            15 => {
309                                te = p;
310                                p = p - 1;
311                                {
312                                    found_syllable!(SyllableType::VowelSyllable);
313                                }
314                            }
315                            18 => {
316                                te = p;
317                                p = p - 1;
318                                {
319                                    found_syllable!(SyllableType::StandaloneCluster);
320                                }
321                            }
322                            20 => {
323                                te = p;
324                                p = p - 1;
325                                {
326                                    found_syllable!(SyllableType::SymbolCluster);
327                                }
328                            }
329                            16 => {
330                                te = p;
331                                p = p - 1;
332                                {
333                                    found_syllable!(SyllableType::BrokenCluster);
334                                    buffer.scratch_flags |=
335                                        HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE;
336                                }
337                            }
338                            17 => {
339                                te = p;
340                                p = p - 1;
341                                {
342                                    found_syllable!(SyllableType::NonIndicCluster);
343                                }
344                            }
345                            1 => {
346                                p = (te) - 1;
347                                {
348                                    found_syllable!(SyllableType::ConsonantSyllable);
349                                }
350                            }
351                            3 => {
352                                p = (te) - 1;
353                                {
354                                    found_syllable!(SyllableType::VowelSyllable);
355                                }
356                            }
357                            7 => {
358                                p = (te) - 1;
359                                {
360                                    found_syllable!(SyllableType::StandaloneCluster);
361                                }
362                            }
363                            8 => {
364                                p = (te) - 1;
365                                {
366                                    found_syllable!(SyllableType::SymbolCluster);
367                                }
368                            }
369                            4 => {
370                                p = (te) - 1;
371                                {
372                                    found_syllable!(SyllableType::BrokenCluster);
373                                    buffer.scratch_flags |=
374                                        HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE;
375                                }
376                            }
377                            6 => match (act) {
378                                1 => {
379                                    p = (te) - 1;
380                                    {
381                                        found_syllable!(SyllableType::ConsonantSyllable);
382                                    }
383                                }
384                                5 => {
385                                    p = (te) - 1;
386                                    {
387                                        found_syllable!(SyllableType::NonIndicCluster);
388                                    }
389                                }
390                                6 => {
391                                    p = (te) - 1;
392                                    {
393                                        found_syllable!(SyllableType::BrokenCluster);
394                                        buffer.scratch_flags |=
395                                            HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE;
396                                    }
397                                }
398                                7 => {
399                                    p = (te) - 1;
400                                    {
401                                        found_syllable!(SyllableType::NonIndicCluster);
402                                    }
403                                }
404
405                                _ => {}
406                            },
407                            19 => {
408                                {
409                                    {
410                                        te = p + 1;
411                                    }
412                                }
413                                {
414                                    {
415                                        act = 1;
416                                    }
417                                }
418                            }
419                            13 => {
420                                {
421                                    {
422                                        te = p + 1;
423                                    }
424                                }
425                                {
426                                    {
427                                        act = 5;
428                                    }
429                                }
430                            }
431                            5 => {
432                                {
433                                    {
434                                        te = p + 1;
435                                    }
436                                }
437                                {
438                                    {
439                                        act = 6;
440                                    }
441                                }
442                            }
443                            12 => {
444                                {
445                                    {
446                                        te = p + 1;
447                                    }
448                                }
449                                {
450                                    {
451                                        act = 7;
452                                    }
453                                }
454                            }
455
456                            _ => {}
457                        }
458                    }
459                }
460                break '_again;
461            }
462            if (p == eof) {
463                {
464                    if (cs >= 31) {
465                        break '_resume;
466                    }
467                }
468            } else {
469                {
470                    match (_indic_syllable_machine_to_state_actions[(cs) as usize]) {
471                        9 => {
472                            ts = 0;
473                        }
474
475                        _ => {}
476                    }
477                    p += 1;
478                    continue '_resume;
479                }
480            }
481            break '_resume;
482        }
483    }
484}
485
486#[inline]
487fn found_syllable(
488    start: usize,
489    end: usize,
490    syllable_serial: &mut u8,
491    kind: SyllableType,
492    buffer: &mut hb_buffer_t,
493) {
494    for i in start..end {
495        buffer.info[i].set_syllable((*syllable_serial << 4) | kind as u8);
496    }
497
498    *syllable_serial += 1;
499
500    if *syllable_serial == 16 {
501        *syllable_serial = 1;
502    }
503}