gfx/harfbuzz/src/hb-ot-shape-complex-sea-machine.hh

Fri, 16 Jan 2015 18:13:44 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 18:13:44 +0100
branch
TOR_BUG_9701
changeset 14
925c144e1f1f
permissions
-rw-r--r--

Integrate suggestion from review to improve consistency with existing code.

     2 #line 1 "../../src/hb-ot-shape-complex-sea-machine.rl"
     3 /*
     4  * Copyright © 2011,2012,2013  Google, Inc.
     5  *
     6  *  This is part of HarfBuzz, a text shaping library.
     7  *
     8  * Permission is hereby granted, without written agreement and without
     9  * license or royalty fees, to use, copy, modify, and distribute this
    10  * software and its documentation for any purpose, provided that the
    11  * above copyright notice and the following two paragraphs appear in
    12  * all copies of this software.
    13  *
    14  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
    15  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
    16  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
    17  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
    18  * DAMAGE.
    19  *
    20  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
    21  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
    22  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
    23  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
    24  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
    25  *
    26  * Google Author(s): Behdad Esfahbod
    27  */
    29 #ifndef HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH
    30 #define HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH
    32 #include "hb-private.hh"
    35 #line 36 "hb-ot-shape-complex-sea-machine.hh.tmp"
    36 static const unsigned char _sea_syllable_machine_trans_keys[] = {
    37 	1u, 1u, 1u, 1u, 1u, 29u, 3u, 29u, 3u, 29u, 1u, 1u, 0
    38 };
    40 static const char _sea_syllable_machine_key_spans[] = {
    41 	1, 1, 29, 27, 27, 1
    42 };
    44 static const char _sea_syllable_machine_index_offsets[] = {
    45 	0, 2, 4, 34, 62, 90
    46 };
    48 static const char _sea_syllable_machine_indicies[] = {
    49 	1, 0, 3, 2, 1, 1, 3, 5, 
    50 	4, 4, 4, 4, 4, 3, 4, 1, 
    51 	4, 4, 4, 4, 3, 4, 4, 4, 
    52 	4, 3, 4, 4, 4, 3, 3, 3, 
    53 	3, 4, 1, 7, 6, 6, 6, 6, 
    54 	6, 1, 6, 6, 6, 6, 6, 6, 
    55 	1, 6, 6, 6, 6, 1, 6, 6, 
    56 	6, 1, 1, 1, 1, 6, 3, 9, 
    57 	8, 8, 8, 8, 8, 3, 8, 8, 
    58 	8, 8, 8, 8, 3, 8, 8, 8, 
    59 	8, 3, 8, 8, 8, 3, 3, 3, 
    60 	3, 8, 3, 10, 0
    61 };
    63 static const char _sea_syllable_machine_trans_targs[] = {
    64 	2, 3, 2, 4, 2, 5, 2, 0, 
    65 	2, 1, 2
    66 };
    68 static const char _sea_syllable_machine_trans_actions[] = {
    69 	1, 2, 3, 2, 6, 0, 7, 0, 
    70 	8, 0, 9
    71 };
    73 static const char _sea_syllable_machine_to_state_actions[] = {
    74 	0, 0, 4, 0, 0, 0
    75 };
    77 static const char _sea_syllable_machine_from_state_actions[] = {
    78 	0, 0, 5, 0, 0, 0
    79 };
    81 static const char _sea_syllable_machine_eof_trans[] = {
    82 	1, 3, 0, 7, 9, 11
    83 };
    85 static const int sea_syllable_machine_start = 2;
    86 static const int sea_syllable_machine_first_final = 2;
    87 static const int sea_syllable_machine_error = -1;
    89 static const int sea_syllable_machine_en_main = 2;
    92 #line 36 "../../src/hb-ot-shape-complex-sea-machine.rl"
    96 #line 67 "../../src/hb-ot-shape-complex-sea-machine.rl"
    99 #define found_syllable(syllable_type) \
   100   HB_STMT_START { \
   101     if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
   102     for (unsigned int i = last; i < p+1; i++) \
   103       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
   104     last = p+1; \
   105     syllable_serial++; \
   106     if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
   107   } HB_STMT_END
   109 static void
   110 find_syllables (hb_buffer_t *buffer)
   111 {
   112   unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
   113   int cs;
   114   hb_glyph_info_t *info = buffer->info;
   116 #line 117 "hb-ot-shape-complex-sea-machine.hh.tmp"
   117 	{
   118 	cs = sea_syllable_machine_start;
   119 	ts = 0;
   120 	te = 0;
   121 	act = 0;
   122 	}
   124 #line 88 "../../src/hb-ot-shape-complex-sea-machine.rl"
   127   p = 0;
   128   pe = eof = buffer->len;
   130   unsigned int last = 0;
   131   unsigned int syllable_serial = 1;
   133 #line 134 "hb-ot-shape-complex-sea-machine.hh.tmp"
   134 	{
   135 	int _slen;
   136 	int _trans;
   137 	const unsigned char *_keys;
   138 	const char *_inds;
   139 	if ( p == pe )
   140 		goto _test_eof;
   141 _resume:
   142 	switch ( _sea_syllable_machine_from_state_actions[cs] ) {
   143 	case 5:
   144 #line 1 "NONE"
   145 	{ts = p;}
   146 	break;
   147 #line 148 "hb-ot-shape-complex-sea-machine.hh.tmp"
   148 	}
   150 	_keys = _sea_syllable_machine_trans_keys + (cs<<1);
   151 	_inds = _sea_syllable_machine_indicies + _sea_syllable_machine_index_offsets[cs];
   153 	_slen = _sea_syllable_machine_key_spans[cs];
   154 	_trans = _inds[ _slen > 0 && _keys[0] <=( info[p].sea_category()) &&
   155 		( info[p].sea_category()) <= _keys[1] ?
   156 		( info[p].sea_category()) - _keys[0] : _slen ];
   158 _eof_trans:
   159 	cs = _sea_syllable_machine_trans_targs[_trans];
   161 	if ( _sea_syllable_machine_trans_actions[_trans] == 0 )
   162 		goto _again;
   164 	switch ( _sea_syllable_machine_trans_actions[_trans] ) {
   165 	case 2:
   166 #line 1 "NONE"
   167 	{te = p+1;}
   168 	break;
   169 	case 6:
   170 #line 63 "../../src/hb-ot-shape-complex-sea-machine.rl"
   171 	{te = p+1;{ found_syllable (non_sea_cluster); }}
   172 	break;
   173 	case 7:
   174 #line 61 "../../src/hb-ot-shape-complex-sea-machine.rl"
   175 	{te = p;p--;{ found_syllable (consonant_syllable); }}
   176 	break;
   177 	case 8:
   178 #line 62 "../../src/hb-ot-shape-complex-sea-machine.rl"
   179 	{te = p;p--;{ found_syllable (broken_cluster); }}
   180 	break;
   181 	case 9:
   182 #line 63 "../../src/hb-ot-shape-complex-sea-machine.rl"
   183 	{te = p;p--;{ found_syllable (non_sea_cluster); }}
   184 	break;
   185 	case 1:
   186 #line 61 "../../src/hb-ot-shape-complex-sea-machine.rl"
   187 	{{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
   188 	break;
   189 	case 3:
   190 #line 62 "../../src/hb-ot-shape-complex-sea-machine.rl"
   191 	{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
   192 	break;
   193 #line 194 "hb-ot-shape-complex-sea-machine.hh.tmp"
   194 	}
   196 _again:
   197 	switch ( _sea_syllable_machine_to_state_actions[cs] ) {
   198 	case 4:
   199 #line 1 "NONE"
   200 	{ts = 0;}
   201 	break;
   202 #line 203 "hb-ot-shape-complex-sea-machine.hh.tmp"
   203 	}
   205 	if ( ++p != pe )
   206 		goto _resume;
   207 	_test_eof: {}
   208 	if ( p == eof )
   209 	{
   210 	if ( _sea_syllable_machine_eof_trans[cs] > 0 ) {
   211 		_trans = _sea_syllable_machine_eof_trans[cs] - 1;
   212 		goto _eof_trans;
   213 	}
   214 	}
   216 	}
   218 #line 97 "../../src/hb-ot-shape-complex-sea-machine.rl"
   220 }
   222 #undef found_syllable
   224 #endif /* HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH */

mercurial