10ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
29fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 1 "../../src/hb-ot-shape-complex-sea-machine.rl"
30ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien/*
40ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * Copyright © 2011,2012,2013  Google, Inc.
50ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
60ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *  This is part of HarfBuzz, a text shaping library.
70ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
80ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * Permission is hereby granted, without written agreement and without
90ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * license or royalty fees, to use, copy, modify, and distribute this
100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * software and its documentation for any purpose, provided that the
110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * above copyright notice and the following two paragraphs appear in
120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * all copies of this software.
130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * DAMAGE.
190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * Google Author(s): Behdad Esfahbod
270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien */
280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#ifndef HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH
300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#define HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH
310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
320ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#include "hb-private.hh"
330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
350ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 36 "hb-ot-shape-complex-sea-machine.hh.tmp"
360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const unsigned char _sea_syllable_machine_trans_keys[] = {
370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1u, 1u, 1u, 1u, 1u, 29u, 3u, 29u, 3u, 29u, 1u, 1u, 0
380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _sea_syllable_machine_key_spans[] = {
410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 29, 27, 27, 1
420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
440ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _sea_syllable_machine_index_offsets[] = {
450ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 2, 4, 34, 62, 90
460ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
470ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
480ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _sea_syllable_machine_indicies[] = {
490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 0, 3, 2, 1, 1, 3, 5,
500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 4, 4, 3, 4, 1,
510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 4, 3, 4, 4, 4,
520ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 3, 4, 4, 4, 3, 3, 3,
530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	3, 4, 1, 7, 6, 6, 6, 6,
540ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	6, 1, 6, 6, 6, 6, 6, 6,
550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 6, 6, 6, 6, 1, 6, 6,
560ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	6, 1, 1, 1, 1, 6, 3, 9,
570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	8, 8, 8, 8, 8, 3, 8, 8,
580ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	8, 8, 8, 8, 3, 8, 8, 8,
590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	8, 3, 8, 8, 8, 3, 3, 3,
600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	3, 8, 3, 10, 0
610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
630ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _sea_syllable_machine_trans_targs[] = {
640ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	2, 3, 2, 4, 2, 5, 2, 0,
650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	2, 1, 2
660ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
680ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _sea_syllable_machine_trans_actions[] = {
690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 2, 3, 2, 6, 0, 7, 0,
700ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	8, 0, 9
710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
720ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
730ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _sea_syllable_machine_to_state_actions[] = {
740ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 4, 0, 0, 0
750ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
760ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
770ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _sea_syllable_machine_from_state_actions[] = {
780ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 5, 0, 0, 0
790ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
800ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
810ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _sea_syllable_machine_eof_trans[] = {
820ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 3, 0, 7, 9, 11
830ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
840ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
850ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const int sea_syllable_machine_start = 2;
860ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const int sea_syllable_machine_first_final = 2;
870ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const int sea_syllable_machine_error = -1;
880ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
890ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const int sea_syllable_machine_en_main = 2;
900ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
910ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
929fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 36 "../../src/hb-ot-shape-complex-sea-machine.rl"
930ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
940ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
950ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
969fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 67 "../../src/hb-ot-shape-complex-sea-machine.rl"
970ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
980ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
990ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#define found_syllable(syllable_type) \
1000ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  HB_STMT_START { \
1010ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien    if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
1020ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien    for (unsigned int i = last; i < p+1; i++) \
1030ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien      info[i].syllable() = (syllable_serial << 4) | syllable_type; \
1040ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien    last = p+1; \
1050ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien    syllable_serial++; \
1060ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien    if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
1070ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  } HB_STMT_END
1080ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
1090ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic void
1100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienfind_syllables (hb_buffer_t *buffer)
1110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien{
1120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
1130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  int cs;
1140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  hb_glyph_info_t *info = buffer->info;
1150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
1160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 117 "hb-ot-shape-complex-sea-machine.hh.tmp"
1170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
1180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	cs = sea_syllable_machine_start;
1190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	ts = 0;
1200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	te = 0;
1210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	act = 0;
1220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
1230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
1249fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 88 "../../src/hb-ot-shape-complex-sea-machine.rl"
1250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
1260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
1270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  p = 0;
1280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  pe = eof = buffer->len;
1290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
1300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  unsigned int last = 0;
1310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  unsigned int syllable_serial = 1;
1320ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
1330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 134 "hb-ot-shape-complex-sea-machine.hh.tmp"
1340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
1350ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	int _slen;
1360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	int _trans;
1370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	const unsigned char *_keys;
1380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	const char *_inds;
1390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( p == pe )
1400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _test_eof;
1410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien_resume:
1420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	switch ( _sea_syllable_machine_from_state_actions[cs] ) {
1430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 5:
1440ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 1 "NONE"
1450ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ts = p;}
1460ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
1470ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 148 "hb-ot-shape-complex-sea-machine.hh.tmp"
1480ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
1490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
1500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_keys = _sea_syllable_machine_trans_keys + (cs<<1);
1510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_inds = _sea_syllable_machine_indicies + _sea_syllable_machine_index_offsets[cs];
1520ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
1530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_slen = _sea_syllable_machine_key_spans[cs];
1540ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_trans = _inds[ _slen > 0 && _keys[0] <=( info[p].sea_category()) &&
1550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		( info[p].sea_category()) <= _keys[1] ?
1560ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		( info[p].sea_category()) - _keys[0] : _slen ];
1570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
1580ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien_eof_trans:
1590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	cs = _sea_syllable_machine_trans_targs[_trans];
1600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
1610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( _sea_syllable_machine_trans_actions[_trans] == 0 )
1620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _again;
1630ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
1640ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	switch ( _sea_syllable_machine_trans_actions[_trans] ) {
1650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 2:
1660ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 1 "NONE"
1670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{te = p+1;}
1680ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
1690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 6:
1709fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 63 "../../src/hb-ot-shape-complex-sea-machine.rl"
1710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{te = p+1;{ found_syllable (non_sea_cluster); }}
1720ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
1730ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 7:
1749fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 61 "../../src/hb-ot-shape-complex-sea-machine.rl"
1750ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{te = p;p--;{ found_syllable (consonant_syllable); }}
1760ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
1770ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 8:
1789fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 62 "../../src/hb-ot-shape-complex-sea-machine.rl"
1790ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{te = p;p--;{ found_syllable (broken_cluster); }}
1800ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
1810ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 9:
1829fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 63 "../../src/hb-ot-shape-complex-sea-machine.rl"
1830ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{te = p;p--;{ found_syllable (non_sea_cluster); }}
1840ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
1850ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 1:
1869fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 61 "../../src/hb-ot-shape-complex-sea-machine.rl"
1870ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
1880ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
1890ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 3:
1909fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 62 "../../src/hb-ot-shape-complex-sea-machine.rl"
1910ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
1920ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
1930ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 194 "hb-ot-shape-complex-sea-machine.hh.tmp"
1940ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
1950ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
1960ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien_again:
1970ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	switch ( _sea_syllable_machine_to_state_actions[cs] ) {
1980ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 4:
1990ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 1 "NONE"
2000ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ts = 0;}
2010ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
2020ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 203 "hb-ot-shape-complex-sea-machine.hh.tmp"
2030ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
2040ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
2050ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( ++p != pe )
2060ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _resume;
2070ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_test_eof: {}
2080ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( p == eof )
2090ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
2100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( _sea_syllable_machine_eof_trans[cs] > 0 ) {
2110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		_trans = _sea_syllable_machine_eof_trans[cs] - 1;
2120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _eof_trans;
2130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
2140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
2150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
2160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
2170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
2189fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 97 "../../src/hb-ot-shape-complex-sea-machine.rl"
2190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
2200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
2210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
2220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#undef found_syllable
2230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
2240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#endif /* HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH */
225