1 
   2 #line 1 "hb-ot-shape-complex-use-machine.rl"
   3 /*
   4  * Copyright © 2015  Mozilla Foundation.
   5  * Copyright © 2015  Google, Inc.
   6  *
   7  *  This is part of HarfBuzz, a text shaping library.
   8  *
   9  * Permission is hereby granted, without written agreement and without
  10  * license or royalty fees, to use, copy, modify, and distribute this
  11  * software and its documentation for any purpose, provided that the
  12  * above copyright notice and the following two paragraphs appear in
  13  * all copies of this software.
  14  *
  15  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
  16  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
  17  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
  18  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
  19  * DAMAGE.
  20  *
  21  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
  22  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  23  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
  24  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
  25  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  26  *
  27  * Mozilla Author(s): Jonathan Kew
  28  * Google Author(s): Behdad Esfahbod
  29  */
  30 
  31 #ifndef HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
  32 #define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
  33 
  34 #include "hb.hh"
  35 
  36 
  37 #line 38 "hb-ot-shape-complex-use-machine.hh"
  38 static const unsigned char _use_syllable_machine_trans_keys[] = {
  39         12u, 44u, 1u, 15u, 1u, 1u, 12u, 44u, 0u, 44u, 21u, 21u, 8u, 44u, 8u, 44u,
  40         1u, 15u, 1u, 1u, 8u, 44u, 8u, 44u, 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u,
  41         8u, 39u, 8u, 39u, 8u, 39u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u,
  42         8u, 44u, 8u, 44u, 8u, 44u, 1u, 39u, 8u, 44u, 13u, 21u, 4u, 4u, 13u, 13u,
  43         8u, 44u, 8u, 44u, 8u, 44u, 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u, 8u, 39u,
  44         8u, 39u, 8u, 39u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u,
  45         8u, 44u, 8u, 44u, 1u, 39u, 1u, 15u, 12u, 44u, 1u, 44u, 8u, 44u, 21u, 42u,
  46         41u, 42u, 42u, 42u, 1u, 5u, 0
  47 };
  48 
  49 static const char _use_syllable_machine_key_spans[] = {
  50         33, 15, 1, 33, 45, 1, 37, 37,
  51         15, 1, 37, 37, 32, 19, 19, 19,
  52         32, 32, 32, 37, 37, 37, 37, 37,
  53         37, 37, 37, 39, 37, 9, 1, 1,
  54         37, 37, 37, 32, 19, 19, 19, 32,
  55         32, 32, 37, 37, 37, 37, 37, 37,
  56         37, 37, 39, 15, 33, 44, 37, 22,
  57         2, 1, 5
  58 };
  59 
  60 static const short _use_syllable_machine_index_offsets[] = {
  61         0, 34, 50, 52, 86, 132, 134, 172,
  62         210, 226, 228, 266, 304, 337, 357, 377,
  63         397, 430, 463, 496, 534, 572, 610, 648,
  64         686, 724, 762, 800, 840, 878, 888, 890,
  65         892, 930, 968, 1006, 1039, 1059, 1079, 1099,
  66         1132, 1165, 1198, 1236, 1274, 1312, 1350, 1388,
  67         1426, 1464, 1502, 1542, 1558, 1592, 1637, 1675,
  68         1698, 1701, 1703
  69 };
  70 
  71 static const char _use_syllable_machine_indicies[] = {
  72         1, 0, 0, 0, 0, 0, 0, 0,
  73         0, 0, 0, 0, 0, 0, 0, 0,
  74         0, 0, 0, 0, 0, 0, 0, 0,
  75         0, 0, 0, 0, 0, 0, 0, 0,
  76         1, 0, 3, 2, 2, 2, 2, 2,
  77         2, 2, 2, 2, 2, 2, 2, 2,
  78         4, 2, 3, 2, 6, 5, 5, 5,
  79         5, 5, 5, 5, 5, 5, 5, 5,
  80         5, 5, 5, 5, 5, 5, 5, 5,
  81         5, 5, 5, 5, 5, 5, 5, 5,
  82         5, 5, 5, 5, 6, 5, 7, 8,
  83         9, 7, 10, 8, 9, 9, 11, 9,
  84         9, 3, 12, 9, 9, 13, 7, 7,
  85         14, 15, 9, 9, 16, 17, 18, 19,
  86         20, 21, 22, 16, 23, 24, 25, 26,
  87         27, 28, 9, 29, 30, 31, 9, 9,
  88         9, 32, 33, 9, 35, 34, 37, 36,
  89         36, 38, 1, 36, 36, 39, 36, 36,
  90         36, 36, 36, 40, 41, 42, 43, 44,
  91         45, 46, 47, 41, 48, 40, 49, 50,
  92         51, 52, 36, 53, 54, 55, 36, 36,
  93         36, 36, 56, 36, 37, 36, 36, 38,
  94         1, 36, 36, 39, 36, 36, 36, 36,
  95         36, 57, 41, 42, 43, 44, 45, 46,
  96         47, 41, 48, 49, 49, 50, 51, 52,
  97         36, 53, 54, 55, 36, 36, 36, 36,
  98         56, 36, 38, 58, 58, 58, 58, 58,
  99         58, 58, 58, 58, 58, 58, 58, 58,
 100         59, 58, 38, 58, 37, 36, 36, 38,
 101         1, 36, 36, 39, 36, 36, 36, 36,
 102         36, 36, 41, 42, 43, 44, 45, 46,
 103         47, 41, 48, 49, 49, 50, 51, 52,
 104         36, 53, 54, 55, 36, 36, 36, 36,
 105         56, 36, 37, 36, 36, 36, 36, 36,
 106         36, 36, 36, 36, 36, 36, 36, 36,
 107         41, 42, 43, 44, 45, 36, 36, 36,
 108         36, 36, 36, 50, 51, 52, 36, 53,
 109         54, 55, 36, 36, 36, 36, 42, 36,
 110         37, 36, 36, 36, 36, 36, 36, 36,
 111         36, 36, 36, 36, 36, 36, 36, 42,
 112         43, 44, 45, 36, 36, 36, 36, 36,
 113         36, 36, 36, 36, 36, 53, 54, 55,
 114         36, 37, 36, 36, 36, 36, 36, 36,
 115         36, 36, 36, 36, 36, 36, 36, 36,
 116         36, 43, 44, 45, 36, 37, 36, 36,
 117         36, 36, 36, 36, 36, 36, 36, 36,
 118         36, 36, 36, 36, 36, 36, 44, 45,
 119         36, 37, 36, 36, 36, 36, 36, 36,
 120         36, 36, 36, 36, 36, 36, 36, 36,
 121         36, 36, 36, 45, 36, 37, 36, 36,
 122         36, 36, 36, 36, 36, 36, 36, 36,
 123         36, 36, 36, 36, 36, 43, 44, 45,
 124         36, 36, 36, 36, 36, 36, 36, 36,
 125         36, 36, 53, 54, 55, 36, 37, 36,
 126         36, 36, 36, 36, 36, 36, 36, 36,
 127         36, 36, 36, 36, 36, 36, 43, 44,
 128         45, 36, 36, 36, 36, 36, 36, 36,
 129         36, 36, 36, 36, 54, 55, 36, 37,
 130         36, 36, 36, 36, 36, 36, 36, 36,
 131         36, 36, 36, 36, 36, 36, 36, 43,
 132         44, 45, 36, 36, 36, 36, 36, 36,
 133         36, 36, 36, 36, 36, 36, 55, 36,
 134         37, 36, 36, 36, 36, 36, 36, 36,
 135         36, 36, 36, 36, 36, 36, 36, 42,
 136         43, 44, 45, 36, 36, 36, 36, 36,
 137         36, 50, 51, 52, 36, 53, 54, 55,
 138         36, 36, 36, 36, 42, 36, 37, 36,
 139         36, 36, 36, 36, 36, 36, 36, 36,
 140         36, 36, 36, 36, 36, 42, 43, 44,
 141         45, 36, 36, 36, 36, 36, 36, 36,
 142         51, 52, 36, 53, 54, 55, 36, 36,
 143         36, 36, 42, 36, 37, 36, 36, 36,
 144         36, 36, 36, 36, 36, 36, 36, 36,
 145         36, 36, 36, 42, 43, 44, 45, 36,
 146         36, 36, 36, 36, 36, 36, 36, 52,
 147         36, 53, 54, 55, 36, 36, 36, 36,
 148         42, 36, 37, 36, 36, 36, 36, 36,
 149         36, 36, 36, 36, 36, 36, 36, 36,
 150         41, 42, 43, 44, 45, 36, 47, 41,
 151         36, 36, 36, 50, 51, 52, 36, 53,
 152         54, 55, 36, 36, 36, 36, 42, 36,
 153         37, 36, 36, 36, 36, 36, 36, 36,
 154         36, 36, 36, 36, 36, 36, 41, 42,
 155         43, 44, 45, 36, 60, 41, 36, 36,
 156         36, 50, 51, 52, 36, 53, 54, 55,
 157         36, 36, 36, 36, 42, 36, 37, 36,
 158         36, 36, 36, 36, 36, 36, 36, 36,
 159         36, 36, 36, 36, 41, 42, 43, 44,
 160         45, 36, 36, 41, 36, 36, 36, 50,
 161         51, 52, 36, 53, 54, 55, 36, 36,
 162         36, 36, 42, 36, 37, 36, 36, 36,
 163         36, 36, 36, 36, 36, 36, 36, 36,
 164         36, 36, 41, 42, 43, 44, 45, 46,
 165         47, 41, 36, 36, 36, 50, 51, 52,
 166         36, 53, 54, 55, 36, 36, 36, 36,
 167         42, 36, 37, 36, 36, 38, 1, 36,
 168         36, 39, 36, 36, 36, 36, 36, 36,
 169         41, 42, 43, 44, 45, 46, 47, 41,
 170         48, 36, 49, 50, 51, 52, 36, 53,
 171         54, 55, 36, 36, 36, 36, 56, 36,
 172         38, 58, 58, 58, 58, 58, 58, 37,
 173         58, 58, 58, 58, 58, 58, 59, 58,
 174         58, 58, 58, 58, 58, 58, 42, 43,
 175         44, 45, 58, 58, 58, 58, 58, 58,
 176         58, 58, 58, 58, 53, 54, 55, 58,
 177         37, 36, 36, 38, 1, 36, 36, 39,
 178         36, 36, 36, 36, 36, 36, 41, 42,
 179         43, 44, 45, 46, 47, 41, 48, 40,
 180         49, 50, 51, 52, 36, 53, 54, 55,
 181         36, 36, 36, 36, 56, 36, 62, 61,
 182         61, 61, 61, 61, 61, 61, 63, 61,
 183         10, 64, 62, 61, 11, 65, 65, 3,
 184         6, 65, 65, 66, 65, 65, 65, 65,
 185         65, 67, 16, 17, 18, 19, 20, 21,
 186         22, 16, 23, 25, 25, 26, 27, 28,
 187         65, 29, 30, 31, 65, 65, 65, 65,
 188         33, 65, 11, 65, 65, 3, 6, 65,
 189         65, 66, 65, 65, 65, 65, 65, 65,
 190         16, 17, 18, 19, 20, 21, 22, 16,
 191         23, 25, 25, 26, 27, 28, 65, 29,
 192         30, 31, 65, 65, 65, 65, 33, 65,
 193         11, 65, 65, 65, 65, 65, 65, 65,
 194         65, 65, 65, 65, 65, 65, 16, 17,
 195         18, 19, 20, 65, 65, 65, 65, 65,
 196         65, 26, 27, 28, 65, 29, 30, 31,
 197         65, 65, 65, 65, 17, 65, 11, 65,
 198         65, 65, 65, 65, 65, 65, 65, 65,
 199         65, 65, 65, 65, 65, 17, 18, 19,
 200         20, 65, 65, 65, 65, 65, 65, 65,
 201         65, 65, 65, 29, 30, 31, 65, 11,
 202         65, 65, 65, 65, 65, 65, 65, 65,
 203         65, 65, 65, 65, 65, 65, 65, 18,
 204         19, 20, 65, 11, 65, 65, 65, 65,
 205         65, 65, 65, 65, 65, 65, 65, 65,
 206         65, 65, 65, 65, 19, 20, 65, 11,
 207         65, 65, 65, 65, 65, 65, 65, 65,
 208         65, 65, 65, 65, 65, 65, 65, 65,
 209         65, 20, 65, 11, 65, 65, 65, 65,
 210         65, 65, 65, 65, 65, 65, 65, 65,
 211         65, 65, 65, 18, 19, 20, 65, 65,
 212         65, 65, 65, 65, 65, 65, 65, 65,
 213         29, 30, 31, 65, 11, 65, 65, 65,
 214         65, 65, 65, 65, 65, 65, 65, 65,
 215         65, 65, 65, 65, 18, 19, 20, 65,
 216         65, 65, 65, 65, 65, 65, 65, 65,
 217         65, 65, 30, 31, 65, 11, 65, 65,
 218         65, 65, 65, 65, 65, 65, 65, 65,
 219         65, 65, 65, 65, 65, 18, 19, 20,
 220         65, 65, 65, 65, 65, 65, 65, 65,
 221         65, 65, 65, 65, 31, 65, 11, 65,
 222         65, 65, 65, 65, 65, 65, 65, 65,
 223         65, 65, 65, 65, 65, 17, 18, 19,
 224         20, 65, 65, 65, 65, 65, 65, 26,
 225         27, 28, 65, 29, 30, 31, 65, 65,
 226         65, 65, 17, 65, 11, 65, 65, 65,
 227         65, 65, 65, 65, 65, 65, 65, 65,
 228         65, 65, 65, 17, 18, 19, 20, 65,
 229         65, 65, 65, 65, 65, 65, 27, 28,
 230         65, 29, 30, 31, 65, 65, 65, 65,
 231         17, 65, 11, 65, 65, 65, 65, 65,
 232         65, 65, 65, 65, 65, 65, 65, 65,
 233         65, 17, 18, 19, 20, 65, 65, 65,
 234         65, 65, 65, 65, 65, 28, 65, 29,
 235         30, 31, 65, 65, 65, 65, 17, 65,
 236         11, 65, 65, 65, 65, 65, 65, 65,
 237         65, 65, 65, 65, 65, 65, 16, 17,
 238         18, 19, 20, 65, 22, 16, 65, 65,
 239         65, 26, 27, 28, 65, 29, 30, 31,
 240         65, 65, 65, 65, 17, 65, 11, 65,
 241         65, 65, 65, 65, 65, 65, 65, 65,
 242         65, 65, 65, 65, 16, 17, 18, 19,
 243         20, 65, 68, 16, 65, 65, 65, 26,
 244         27, 28, 65, 29, 30, 31, 65, 65,
 245         65, 65, 17, 65, 11, 65, 65, 65,
 246         65, 65, 65, 65, 65, 65, 65, 65,
 247         65, 65, 16, 17, 18, 19, 20, 65,
 248         65, 16, 65, 65, 65, 26, 27, 28,
 249         65, 29, 30, 31, 65, 65, 65, 65,
 250         17, 65, 11, 65, 65, 65, 65, 65,
 251         65, 65, 65, 65, 65, 65, 65, 65,
 252         16, 17, 18, 19, 20, 21, 22, 16,
 253         65, 65, 65, 26, 27, 28, 65, 29,
 254         30, 31, 65, 65, 65, 65, 17, 65,
 255         11, 65, 65, 3, 6, 65, 65, 66,
 256         65, 65, 65, 65, 65, 65, 16, 17,
 257         18, 19, 20, 21, 22, 16, 23, 65,
 258         25, 26, 27, 28, 65, 29, 30, 31,
 259         65, 65, 65, 65, 33, 65, 3, 65,
 260         65, 65, 65, 65, 65, 11, 65, 65,
 261         65, 65, 65, 65, 4, 65, 65, 65,
 262         65, 65, 65, 65, 17, 18, 19, 20,
 263         65, 65, 65, 65, 65, 65, 65, 65,
 264         65, 65, 29, 30, 31, 65, 3, 69,
 265         69, 69, 69, 69, 69, 69, 69, 69,
 266         69, 69, 69, 69, 4, 69, 6, 69,
 267         69, 69, 69, 69, 69, 69, 69, 69,
 268         69, 69, 69, 69, 69, 69, 69, 69,
 269         69, 69, 69, 69, 69, 69, 69, 69,
 270         69, 69, 69, 69, 69, 69, 6, 69,
 271         8, 65, 65, 65, 8, 65, 65, 11,
 272         65, 65, 3, 6, 65, 65, 66, 65,
 273         65, 65, 65, 65, 65, 16, 17, 18,
 274         19, 20, 21, 22, 16, 23, 24, 25,
 275         26, 27, 28, 65, 29, 30, 31, 65,
 276         65, 65, 65, 33, 65, 11, 65, 65,
 277         3, 6, 65, 65, 66, 65, 65, 65,
 278         65, 65, 65, 16, 17, 18, 19, 20,
 279         21, 22, 16, 23, 24, 25, 26, 27,
 280         28, 65, 29, 30, 31, 65, 65, 65,
 281         65, 33, 65, 71, 70, 70, 70, 70,
 282         70, 70, 70, 70, 70, 70, 70, 70,
 283         70, 70, 70, 70, 70, 70, 70, 71,
 284         72, 70, 71, 72, 70, 72, 70, 8,
 285         69, 69, 69, 8, 69, 0
 286 };
 287 
 288 static const char _use_syllable_machine_trans_targs[] = {
 289         4, 8, 4, 32, 2, 4, 1, 5,
 290         6, 4, 29, 4, 51, 52, 53, 55,
 291         34, 35, 36, 37, 38, 45, 46, 48,
 292         54, 49, 42, 43, 44, 39, 40, 41,
 293         58, 50, 4, 4, 4, 4, 7, 0,
 294         28, 11, 12, 13, 14, 15, 22, 23,
 295         25, 26, 19, 20, 21, 16, 17, 18,
 296         27, 10, 4, 9, 24, 4, 30, 31,
 297         4, 4, 3, 33, 47, 4, 4, 56,
 298         57
 299 };
 300 
 301 static const char _use_syllable_machine_trans_actions[] = {
 302         1, 0, 2, 3, 0, 4, 0, 0,
 303         7, 8, 0, 9, 10, 10, 3, 0,
 304         0, 0, 0, 0, 0, 0, 0, 0,
 305         3, 3, 0, 0, 0, 0, 0, 0,
 306         0, 3, 11, 12, 13, 14, 7, 0,
 307         7, 0, 0, 0, 0, 0, 0, 0,
 308         0, 7, 0, 0, 0, 0, 0, 0,
 309         0, 7, 15, 0, 0, 16, 0, 0,
 310         17, 18, 0, 3, 0, 19, 20, 0,
 311         0
 312 };
 313 
 314 static const char _use_syllable_machine_to_state_actions[] = {
 315         0, 0, 0, 0, 5, 0, 0, 0,
 316         0, 0, 0, 0, 0, 0, 0, 0,
 317         0, 0, 0, 0, 0, 0, 0, 0,
 318         0, 0, 0, 0, 0, 0, 0, 0,
 319         0, 0, 0, 0, 0, 0, 0, 0,
 320         0, 0, 0, 0, 0, 0, 0, 0,
 321         0, 0, 0, 0, 0, 0, 0, 0,
 322         0, 0, 0
 323 };
 324 
 325 static const char _use_syllable_machine_from_state_actions[] = {
 326         0, 0, 0, 0, 6, 0, 0, 0,
 327         0, 0, 0, 0, 0, 0, 0, 0,
 328         0, 0, 0, 0, 0, 0, 0, 0,
 329         0, 0, 0, 0, 0, 0, 0, 0,
 330         0, 0, 0, 0, 0, 0, 0, 0,
 331         0, 0, 0, 0, 0, 0, 0, 0,
 332         0, 0, 0, 0, 0, 0, 0, 0,
 333         0, 0, 0
 334 };
 335 
 336 static const short _use_syllable_machine_eof_trans[] = {
 337         1, 3, 3, 6, 0, 35, 37, 37,
 338         59, 59, 37, 37, 37, 37, 37, 37,
 339         37, 37, 37, 37, 37, 37, 37, 37,
 340         37, 37, 37, 59, 37, 62, 65, 62,
 341         66, 66, 66, 66, 66, 66, 66, 66,
 342         66, 66, 66, 66, 66, 66, 66, 66,
 343         66, 66, 66, 70, 70, 66, 66, 71,
 344         71, 71, 70
 345 };
 346 
 347 static const int use_syllable_machine_start = 4;
 348 static const int use_syllable_machine_first_final = 4;
 349 static const int use_syllable_machine_error = -1;
 350 
 351 static const int use_syllable_machine_en_main = 4;
 352 
 353 
 354 #line 38 "hb-ot-shape-complex-use-machine.rl"
 355 
 356 
 357 
 358 #line 143 "hb-ot-shape-complex-use-machine.rl"
 359 
 360 
 361 #define found_syllable(syllable_type) \
 362   HB_STMT_START { \
 363     if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \
 364     for (unsigned int i = ts; i < te; i++) \
 365       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
 366     syllable_serial++; \
 367     if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
 368   } HB_STMT_END
 369 
 370 static void
 371 find_syllables (hb_buffer_t *buffer)
 372 {
 373   unsigned int p, pe, eof, ts, te, act;
 374   int cs;
 375   hb_glyph_info_t *info = buffer->info;
 376 
 377 #line 378 "hb-ot-shape-complex-use-machine.hh"
 378         {
 379         cs = use_syllable_machine_start;
 380         ts = 0;
 381         te = 0;
 382         act = 0;
 383         }
 384 
 385 #line 163 "hb-ot-shape-complex-use-machine.rl"
 386 
 387 
 388   p = 0;
 389   pe = eof = buffer->len;
 390 
 391   unsigned int syllable_serial = 1;
 392 
 393 #line 394 "hb-ot-shape-complex-use-machine.hh"
 394         {
 395         int _slen;
 396         int _trans;
 397         const unsigned char *_keys;
 398         const char *_inds;
 399         if ( p == pe )
 400                 goto _test_eof;
 401 _resume:
 402         switch ( _use_syllable_machine_from_state_actions[cs] ) {
 403         case 6:
 404 #line 1 "NONE"
 405         {ts = p;}
 406         break;
 407 #line 408 "hb-ot-shape-complex-use-machine.hh"
 408         }
 409 
 410         _keys = _use_syllable_machine_trans_keys + (cs<<1);
 411         _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
 412 
 413         _slen = _use_syllable_machine_key_spans[cs];
 414         _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].use_category()) &&
 415                 ( info[p].use_category()) <= _keys[1] ?
 416                 ( info[p].use_category()) - _keys[0] : _slen ];
 417 
 418 _eof_trans:
 419         cs = _use_syllable_machine_trans_targs[_trans];
 420 
 421         if ( _use_syllable_machine_trans_actions[_trans] == 0 )
 422                 goto _again;
 423 
 424         switch ( _use_syllable_machine_trans_actions[_trans] ) {
 425         case 7:
 426 #line 1 "NONE"
 427         {te = p+1;}
 428         break;
 429         case 12:
 430 #line 132 "hb-ot-shape-complex-use-machine.rl"
 431         {te = p+1;{ found_syllable (independent_cluster); }}
 432         break;
 433         case 14:
 434 #line 134 "hb-ot-shape-complex-use-machine.rl"
 435         {te = p+1;{ found_syllable (standard_cluster); }}
 436         break;
 437         case 9:
 438 #line 138 "hb-ot-shape-complex-use-machine.rl"
 439         {te = p+1;{ found_syllable (broken_cluster); }}
 440         break;
 441         case 8:
 442 #line 139 "hb-ot-shape-complex-use-machine.rl"
 443         {te = p+1;{ found_syllable (non_cluster); }}
 444         break;
 445         case 11:
 446 #line 132 "hb-ot-shape-complex-use-machine.rl"
 447         {te = p;p--;{ found_syllable (independent_cluster); }}
 448         break;
 449         case 15:
 450 #line 133 "hb-ot-shape-complex-use-machine.rl"
 451         {te = p;p--;{ found_syllable (virama_terminated_cluster); }}
 452         break;
 453         case 13:
 454 #line 134 "hb-ot-shape-complex-use-machine.rl"
 455         {te = p;p--;{ found_syllable (standard_cluster); }}
 456         break;
 457         case 17:
 458 #line 135 "hb-ot-shape-complex-use-machine.rl"
 459         {te = p;p--;{ found_syllable (number_joiner_terminated_cluster); }}
 460         break;
 461         case 16:
 462 #line 136 "hb-ot-shape-complex-use-machine.rl"
 463         {te = p;p--;{ found_syllable (numeral_cluster); }}
 464         break;
 465         case 20:
 466 #line 137 "hb-ot-shape-complex-use-machine.rl"
 467         {te = p;p--;{ found_syllable (symbol_cluster); }}
 468         break;
 469         case 18:
 470 #line 138 "hb-ot-shape-complex-use-machine.rl"
 471         {te = p;p--;{ found_syllable (broken_cluster); }}
 472         break;
 473         case 19:
 474 #line 139 "hb-ot-shape-complex-use-machine.rl"
 475         {te = p;p--;{ found_syllable (non_cluster); }}
 476         break;
 477         case 1:
 478 #line 134 "hb-ot-shape-complex-use-machine.rl"
 479         {{p = ((te))-1;}{ found_syllable (standard_cluster); }}
 480         break;
 481         case 4:
 482 #line 138 "hb-ot-shape-complex-use-machine.rl"
 483         {{p = ((te))-1;}{ found_syllable (broken_cluster); }}
 484         break;
 485         case 2:
 486 #line 1 "NONE"
 487         {       switch( act ) {
 488         case 7:
 489         {{p = ((te))-1;} found_syllable (broken_cluster); }
 490         break;
 491         case 8:
 492         {{p = ((te))-1;} found_syllable (non_cluster); }
 493         break;
 494         }
 495         }
 496         break;
 497         case 3:
 498 #line 1 "NONE"
 499         {te = p+1;}
 500 #line 138 "hb-ot-shape-complex-use-machine.rl"
 501         {act = 7;}
 502         break;
 503         case 10:
 504 #line 1 "NONE"
 505         {te = p+1;}
 506 #line 139 "hb-ot-shape-complex-use-machine.rl"
 507         {act = 8;}
 508         break;
 509 #line 510 "hb-ot-shape-complex-use-machine.hh"
 510         }
 511 
 512 _again:
 513         switch ( _use_syllable_machine_to_state_actions[cs] ) {
 514         case 5:
 515 #line 1 "NONE"
 516         {ts = 0;}
 517         break;
 518 #line 519 "hb-ot-shape-complex-use-machine.hh"
 519         }
 520 
 521         if ( ++p != pe )
 522                 goto _resume;
 523         _test_eof: {}
 524         if ( p == eof )
 525         {
 526         if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
 527                 _trans = _use_syllable_machine_eof_trans[cs] - 1;
 528                 goto _eof_trans;
 529         }
 530         }
 531 
 532         }
 533 
 534 #line 171 "hb-ot-shape-complex-use-machine.rl"
 535 
 536 }
 537 
 538 #undef found_syllable
 539 
 540 #endif /* HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH */