8 #define s_0_0 (s_0_1 + 3)
10 #define s_0_2 (s_0_3 + 3)
13 'h',
'e',
't',
'e',
'r',
'n',
'a',
24 #define s_0_12 (s_0_13 + 3)
26 'a',
'n',
'd',
'e',
'n',
34 #define s_0_21 (s_0_11 + 1)
37 'a',
'r',
'n',
'a',
's',
39 'e',
'r',
'n',
'a',
's',
41 'o',
'r',
'n',
'a',
's',
42 #define s_0_26 (s_0_27 + 2)
46 'a',
'n',
'd',
'e',
's',
47 #define s_0_29 (s_0_30 + 2)
49 'a',
'r',
'e',
'n',
's',
51 'h',
'e',
't',
'e',
'n',
's',
57 'a',
'n',
'd',
'e',
't',
74 #define s_2_0 (s_2_1 + 1)
80 'f',
'u',
'l',
'l',
't',
82 'l', 0xC3, 0xB6,
's',
't',
149 static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32 };
160 if (ret < 0)
return 0;
168 if (ret < 0)
return 0;
173 if (ret < 0)
return 0;
188 if (c < I_p1)
return 0;
189 mlimit1 = lb; lb = I_p1;
191 if (c <= lb || p[c - 1] >> 5 != 3 || !((1851442 >> (p[c - 1] & 0x1f)) & 1)) { lb = mlimit1;
return 0; }
192 among_var = find_among_b(
s_pool,
a_0, 37, 0, 0);
193 if (!(among_var)) { lb = mlimit1;
return 0; }
199 {
int ret = slice_del();
200 if (ret < 0)
return ret;
204 if (in_grouping_b_U(
g_s_ending, 98, 121, 0))
return 0;
205 {
int ret = slice_del();
206 if (ret < 0)
return ret;
216 if (c < I_p1)
return 0;
217 mlimit1 = lb; lb = I_p1;
218 {
int m2 = l - c; (void)m2;
219 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((1064976 >> (p[c - 1] & 0x1f)) & 1)) { lb = mlimit1;
return 0; }
220 if (!(find_among_b(
s_pool,
a_1, 7, 0, 0))) { lb = mlimit1;
return 0; }
223 {
int ret = skip_utf8(p, c, lb, 0, -1);
224 if (ret < 0) { lb = mlimit1;
return 0; }
228 {
int ret = slice_del();
229 if (ret < 0)
return ret;
241 if (c < I_p1)
return 0;
242 mlimit1 = lb; lb = I_p1;
244 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((1572992 >> (p[c - 1] & 0x1f)) & 1)) { lb = mlimit1;
return 0; }
245 among_var = find_among_b(
s_pool,
a_2, 5, 0, 0);
246 if (!(among_var)) { lb = mlimit1;
return 0; }
250 {
int ret = slice_del();
251 if (ret < 0)
return ret;
255 {
int ret = slice_from_s(4,
s_0);
256 if (ret < 0)
return ret;
260 {
int ret = slice_from_s(4,
s_1);
261 if (ret < 0)
return ret;
272 {
int ret = r_mark_regions();
273 if (ret < 0)
return ret;
279 {
int m2 = l - c; (void)m2;
280 {
int ret = r_main_suffix();
281 if (ret < 0)
return ret;
285 {
int m3 = l - c; (void)m3;
286 {
int ret = r_consonant_pair();
287 if (ret < 0)
return ret;
291 {
int m4 = l - c; (void)m4;
292 {
int ret = r_other_suffix();
293 if (ret < 0)
return ret;
std::string get_description() const
Return a string describing this object.
int stem()
Virtual method implemented by the subclass to actually do the work.
int out_grouping_U(const unsigned char *s, int min, int max, int repeat)
int in_grouping_U(const unsigned char *s, int min, int max, int repeat)
static int skip_utf8(const symbol *p, int c, int lb, int l, int n)
static const struct among a_2[5]
static const struct among a_1[7]
static const struct among a_0[37]
static const symbol s_1[]
static const symbol s_pool[]
static const unsigned char g_v[]
static const unsigned char g_s_ending[]
static const symbol s_0[]