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}