9 #define s_0_1 (s_0_2 + 2)
17 #define s_0_6 (s_0_7 + 3)
27 'h',
'e',
't',
'e',
'r',
28 #define s_0_14 (s_0_15 + 1)
30 #define s_0_16 (s_0_17 + 2)
34 'e',
'n',
'd',
'e',
's',
35 #define s_0_19 (s_0_20 + 3)
37 'h',
'e',
't',
'e',
'n',
'e',
's',
38 #define s_0_21 (s_0_22 + 3)
40 'h',
'e',
't',
'e',
'n',
's',
45 #define s_0_25 (s_0_7 + 1)
54 #define s_2_0 (s_2_1 + 1)
57 #define s_2_2 (s_2_3 + 1)
60 #define s_2_4 (s_2_5 + 1)
65 #define s_2_7 (s_2_8 + 1)
68 #define s_2_9 (s_2_10 + 3)
70 'h',
'e',
't',
's',
'l',
'o',
'v',
130 static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 };
132 static const unsigned char g_s_ending[] = { 119, 125, 149, 1 };
140 if (ret < 0)
return 0;
148 if (ret < 0)
return 0;
153 if (ret < 0)
return 0;
168 if (c < I_p1)
return 0;
169 mlimit1 = lb; lb = I_p1;
171 if (c <= lb || p[c - 1] >> 5 != 3 || !((1851426 >> (p[c - 1] & 0x1f)) & 1)) { lb = mlimit1;
return 0; }
172 among_var = find_among_b(
s_pool,
a_0, 29, 0, 0);
173 if (!(among_var)) { lb = mlimit1;
return 0; }
179 {
int ret = slice_del();
180 if (ret < 0)
return ret;
184 {
int m2 = l - c; (void)m2;
185 if (in_grouping_b_U(
g_s_ending, 98, 122, 0))
goto lab1;
189 if (c <= lb || p[c - 1] !=
'k')
return 0;
191 if (out_grouping_b_U(
g_v, 97, 248, 0))
return 0;
194 {
int ret = slice_del();
195 if (ret < 0)
return ret;
199 {
int ret = slice_from_s(2,
s_0);
200 if (ret < 0)
return ret;
208 {
int m_test1 = l - c;
211 if (c < I_p1)
return 0;
212 mlimit2 = lb; lb = I_p1;
214 if (c - 1 <= lb || p[c - 1] != 116) { lb = mlimit2;
return 0; }
215 if (!(find_among_b(
s_pool,
a_1, 2, 0, 0))) { lb = mlimit2;
return 0; }
221 {
int ret = skip_utf8(p, c, lb, 0, -1);
222 if (ret < 0)
return 0;
226 {
int ret = slice_del();
227 if (ret < 0)
return ret;
235 if (c < I_p1)
return 0;
236 mlimit1 = lb; lb = I_p1;
238 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((4718720 >> (p[c - 1] & 0x1f)) & 1)) { lb = mlimit1;
return 0; }
239 if (!(find_among_b(
s_pool,
a_2, 11, 0, 0))) { lb = mlimit1;
return 0; }
243 {
int ret = slice_del();
244 if (ret < 0)
return ret;
251 {
int ret = r_mark_regions();
252 if (ret < 0)
return ret;
258 {
int m2 = l - c; (void)m2;
259 {
int ret = r_main_suffix();
260 if (ret < 0)
return ret;
264 {
int m3 = l - c; (void)m3;
265 {
int ret = r_consonant_pair();
266 if (ret < 0)
return ret;
270 {
int m4 = l - c; (void)m4;
271 {
int ret = r_other_suffix();
272 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_1[2]
static const struct among a_2[11]
static const symbol s_pool[]
static const struct among a_0[29]
static const unsigned char g_v[]
static const unsigned char g_s_ending[]
static const symbol s_0[]