Branch data Line data Source code
1 : : /* This file was generated automatically by the Snowball to ISO C++ compiler */
2 : :
3 : : #include <limits.h>
4 : : #include "finnish.h"
5 : :
6 : 896 : static int tr_VI(Xapian::StemImplementation * this_ptr) {
7 : 896 : return (static_cast<Xapian::InternalStemFinnish *>(this_ptr))->r_VI();
8 : : }
9 : :
10 : 520 : static int tr_LONG(Xapian::StemImplementation * this_ptr) {
11 : 520 : return (static_cast<Xapian::InternalStemFinnish *>(this_ptr))->r_LONG();
12 : : }
13 : :
14 : : static const among_function af[2] =
15 : : {
16 : : /* 1 */ tr_VI,
17 : : /* 2 */ tr_LONG
18 : : };
19 : :
20 : : static const symbol s_pool[] = {
21 : : #define s_0_0 0
22 : : 'p', 'a',
23 : : #define s_0_1 2
24 : : 's', 't', 'i',
25 : : #define s_0_2 5
26 : : 'k', 'a', 'a', 'n',
27 : : #define s_0_3 9
28 : : 'h', 'a', 'n',
29 : : #define s_0_4 12
30 : : 'k', 'i', 'n',
31 : : #define s_0_5 15
32 : : 'h', 0xC3, 0xA4, 'n',
33 : : #define s_0_6 19
34 : : 'k', 0xC3, 0xA4, 0xC3, 0xA4, 'n',
35 : : #define s_0_7 25
36 : : 'k', 'o',
37 : : #define s_0_8 27
38 : : 'p', 0xC3, 0xA4,
39 : : #define s_0_9 30
40 : : 'k', 0xC3, 0xB6,
41 : : #define s_1_0 33
42 : : 'l', 'l', 'a',
43 : : #define s_1_1 36
44 : : 'n', 'a',
45 : : #define s_1_2 38
46 : : 's', 's', 'a',
47 : : #define s_1_3 (s_1_4 + 1)
48 : : #define s_1_4 41
49 : : 'l', 't', 'a',
50 : : #define s_1_5 44
51 : : 's', 't', 'a',
52 : : #define s_2_0 47
53 : : 'l', 'l', 0xC3, 0xA4,
54 : : #define s_2_1 51
55 : : 'n', 0xC3, 0xA4,
56 : : #define s_2_2 54
57 : : 's', 's', 0xC3, 0xA4,
58 : : #define s_2_3 (s_2_4 + 1)
59 : : #define s_2_4 58
60 : : 'l', 't', 0xC3, 0xA4,
61 : : #define s_2_5 62
62 : : 's', 't', 0xC3, 0xA4,
63 : : #define s_3_0 66
64 : : 'l', 'l', 'e',
65 : : #define s_3_1 69
66 : : 'i', 'n', 'e',
67 : : #define s_4_0 72
68 : : 'n', 's', 'a',
69 : : #define s_4_1 75
70 : : 'm', 'm', 'e',
71 : : #define s_4_2 78
72 : : 'n', 'n', 'e',
73 : : #define s_4_3 81
74 : : 'n', 'i',
75 : : #define s_4_4 83
76 : : 's', 'i',
77 : : #define s_4_5 85
78 : : 'a', 'n',
79 : : #define s_4_6 87
80 : : 'e', 'n',
81 : : #define s_4_7 89
82 : : 0xC3, 0xA4, 'n',
83 : : #define s_4_8 92
84 : : 'n', 's', 0xC3, 0xA4,
85 : : #define s_5_0 96
86 : : 'a', 'a',
87 : : #define s_5_1 98
88 : : 'e', 'e',
89 : : #define s_5_2 100
90 : : 'i', 'i',
91 : : #define s_5_3 102
92 : : 'o', 'o',
93 : : #define s_5_4 104
94 : : 'u', 'u',
95 : : #define s_5_5 106
96 : : 0xC3, 0xA4, 0xC3, 0xA4,
97 : : #define s_5_6 110
98 : : 0xC3, 0xB6, 0xC3, 0xB6,
99 : : #define s_6_0 (s_6_1 + 2)
100 : : #define s_6_1 114
101 : : 'l', 'l', 'a',
102 : : #define s_6_2 117
103 : : 'n', 'a',
104 : : #define s_6_3 119
105 : : 's', 's', 'a',
106 : : #define s_6_4 (s_6_5 + 1)
107 : : #define s_6_5 122
108 : : 'l', 't', 'a',
109 : : #define s_6_6 125
110 : : 's', 't', 'a',
111 : : #define s_6_7 128
112 : : 't', 't', 'a',
113 : : #define s_6_8 131
114 : : 'l', 'l', 'e',
115 : : #define s_6_9 134
116 : : 'i', 'n', 'e',
117 : : #define s_6_10 137
118 : : 'k', 's', 'i',
119 : : #define s_6_11 s_6_2
120 : : #define s_6_12 140
121 : : 'h', 'a', 'n',
122 : : #define s_6_13 143
123 : : 'd', 'e', 'n',
124 : : #define s_6_14 146
125 : : 's', 'e', 'e', 'n',
126 : : #define s_6_15 150
127 : : 'h', 'e', 'n',
128 : : #define s_6_16 153
129 : : 't', 't', 'e', 'n',
130 : : #define s_6_17 157
131 : : 'h', 'i', 'n',
132 : : #define s_6_18 160
133 : : 's', 'i', 'i', 'n',
134 : : #define s_6_19 164
135 : : 'h', 'o', 'n',
136 : : #define s_6_20 167
137 : : 'h', 0xC3, 0xA4, 'n',
138 : : #define s_6_21 171
139 : : 'h', 0xC3, 0xB6, 'n',
140 : : #define s_6_22 (s_6_20 + 1)
141 : : #define s_6_23 175
142 : : 'l', 'l', 0xC3, 0xA4,
143 : : #define s_6_24 179
144 : : 'n', 0xC3, 0xA4,
145 : : #define s_6_25 182
146 : : 's', 's', 0xC3, 0xA4,
147 : : #define s_6_26 (s_6_27 + 1)
148 : : #define s_6_27 186
149 : : 'l', 't', 0xC3, 0xA4,
150 : : #define s_6_28 190
151 : : 's', 't', 0xC3, 0xA4,
152 : : #define s_6_29 194
153 : : 't', 't', 0xC3, 0xA4,
154 : : #define s_7_0 198
155 : : 'e', 'j', 'a',
156 : : #define s_7_1 (s_7_2 + 1)
157 : : #define s_7_2 201
158 : : 'i', 'm', 'm', 'a',
159 : : #define s_7_3 (s_7_4 + 1)
160 : : #define s_7_4 205
161 : : 'i', 'm', 'p', 'a',
162 : : #define s_7_5 (s_7_6 + 1)
163 : : #define s_7_6 209
164 : : 'i', 'm', 'm', 'i',
165 : : #define s_7_7 (s_7_8 + 1)
166 : : #define s_7_8 213
167 : : 'i', 'm', 'p', 'i',
168 : : #define s_7_9 217
169 : : 'e', 'j', 0xC3, 0xA4,
170 : : #define s_7_10 (s_7_11 + 1)
171 : : #define s_7_11 221
172 : : 'i', 'm', 'm', 0xC3, 0xA4,
173 : : #define s_7_12 (s_7_13 + 1)
174 : : #define s_7_13 226
175 : : 'i', 'm', 'p', 0xC3, 0xA4,
176 : : #define s_8_0 231
177 : : 'i',
178 : : #define s_8_1 232
179 : : 'j',
180 : : #define s_9_0 (s_9_1 + 1)
181 : : #define s_9_1 233
182 : : 'i', 'm', 'm', 'a',
183 : : };
184 : :
185 : :
186 : : static const struct among a_0[10] =
187 : : {
188 : : /* 0 */ { 2, s_0_0, -1, 1},
189 : : /* 1 */ { 3, s_0_1, -1, 2},
190 : : /* 2 */ { 4, s_0_2, -1, 1},
191 : : /* 3 */ { 3, s_0_3, -1, 1},
192 : : /* 4 */ { 3, s_0_4, -1, 1},
193 : : /* 5 */ { 4, s_0_5, -1, 1},
194 : : /* 6 */ { 6, s_0_6, -1, 1},
195 : : /* 7 */ { 2, s_0_7, -1, 1},
196 : : /* 8 */ { 3, s_0_8, -1, 1},
197 : : /* 9 */ { 3, s_0_9, -1, 1}
198 : : };
199 : :
200 : :
201 : : static const struct among a_1[6] =
202 : : {
203 : : /* 0 */ { 3, s_1_0, -1, -1},
204 : : /* 1 */ { 2, s_1_1, -1, -1},
205 : : /* 2 */ { 3, s_1_2, -1, -1},
206 : : /* 3 */ { 2, s_1_3, -1, -1},
207 : : /* 4 */ { 3, s_1_4, 3, -1},
208 : : /* 5 */ { 3, s_1_5, 3, -1}
209 : : };
210 : :
211 : :
212 : : static const struct among a_2[6] =
213 : : {
214 : : /* 0 */ { 4, s_2_0, -1, -1},
215 : : /* 1 */ { 3, s_2_1, -1, -1},
216 : : /* 2 */ { 4, s_2_2, -1, -1},
217 : : /* 3 */ { 3, s_2_3, -1, -1},
218 : : /* 4 */ { 4, s_2_4, 3, -1},
219 : : /* 5 */ { 4, s_2_5, 3, -1}
220 : : };
221 : :
222 : :
223 : : static const struct among a_3[2] =
224 : : {
225 : : /* 0 */ { 3, s_3_0, -1, -1},
226 : : /* 1 */ { 3, s_3_1, -1, -1}
227 : : };
228 : :
229 : :
230 : : static const struct among a_4[9] =
231 : : {
232 : : /* 0 */ { 3, s_4_0, -1, 3},
233 : : /* 1 */ { 3, s_4_1, -1, 3},
234 : : /* 2 */ { 3, s_4_2, -1, 3},
235 : : /* 3 */ { 2, s_4_3, -1, 2},
236 : : /* 4 */ { 2, s_4_4, -1, 1},
237 : : /* 5 */ { 2, s_4_5, -1, 4},
238 : : /* 6 */ { 2, s_4_6, -1, 6},
239 : : /* 7 */ { 3, s_4_7, -1, 5},
240 : : /* 8 */ { 4, s_4_8, -1, 3}
241 : : };
242 : :
243 : :
244 : : static const struct among a_5[7] =
245 : : {
246 : : /* 0 */ { 2, s_5_0, -1, -1},
247 : : /* 1 */ { 2, s_5_1, -1, -1},
248 : : /* 2 */ { 2, s_5_2, -1, -1},
249 : : /* 3 */ { 2, s_5_3, -1, -1},
250 : : /* 4 */ { 2, s_5_4, -1, -1},
251 : : /* 5 */ { 4, s_5_5, -1, -1},
252 : : /* 6 */ { 4, s_5_6, -1, -1}
253 : : };
254 : :
255 : :
256 : : static const struct among a_6[30] =
257 : : {
258 : : /* 0 */ { 1, s_6_0, -1, 8},
259 : : /* 1 */ { 3, s_6_1, 0, -1},
260 : : /* 2 */ { 2, s_6_2, 0, -1},
261 : : /* 3 */ { 3, s_6_3, 0, -1},
262 : : /* 4 */ { 2, s_6_4, 0, -1},
263 : : /* 5 */ { 3, s_6_5, 4, -1},
264 : : /* 6 */ { 3, s_6_6, 4, -1},
265 : : /* 7 */ { 3, s_6_7, 4, 9},
266 : : /* 8 */ { 3, s_6_8, -1, -1},
267 : : /* 9 */ { 3, s_6_9, -1, -1},
268 : : /* 10 */ { 3, s_6_10, -1, -1},
269 : : /* 11 */ { 1, s_6_11, -1, 7},
270 : : /* 12 */ { 3, s_6_12, 11, 1},
271 : : /* 13 */ { 3, s_6_13, 11, -1},
272 : : /* 14 */ { 4, s_6_14, 11, -1},
273 : : /* 15 */ { 3, s_6_15, 11, 2},
274 : : /* 16 */ { 4, s_6_16, 11, -1},
275 : : /* 17 */ { 3, s_6_17, 11, 3},
276 : : /* 18 */ { 4, s_6_18, 11, -1},
277 : : /* 19 */ { 3, s_6_19, 11, 4},
278 : : /* 20 */ { 4, s_6_20, 11, 5},
279 : : /* 21 */ { 4, s_6_21, 11, 6},
280 : : /* 22 */ { 2, s_6_22, -1, 8},
281 : : /* 23 */ { 4, s_6_23, 22, -1},
282 : : /* 24 */ { 3, s_6_24, 22, -1},
283 : : /* 25 */ { 4, s_6_25, 22, -1},
284 : : /* 26 */ { 3, s_6_26, 22, -1},
285 : : /* 27 */ { 4, s_6_27, 26, -1},
286 : : /* 28 */ { 4, s_6_28, 26, -1},
287 : : /* 29 */ { 4, s_6_29, 26, 9}
288 : : };
289 : :
290 : : static const unsigned char af_6[30] =
291 : : {
292 : : /* 0 */ 0,
293 : : /* 1 */ 0,
294 : : /* 2 */ 0,
295 : : /* 3 */ 0,
296 : : /* 4 */ 0,
297 : : /* 5 */ 0,
298 : : /* 6 */ 0,
299 : : /* 7 */ 0,
300 : : /* 8 */ 0,
301 : : /* 9 */ 0,
302 : : /* 10 */ 0,
303 : : /* 11 */ 0,
304 : : /* 12 */ 0,
305 : : /* 13 */ 1 /* tr_VI */,
306 : : /* 14 */ 2 /* tr_LONG */,
307 : : /* 15 */ 0,
308 : : /* 16 */ 1 /* tr_VI */,
309 : : /* 17 */ 0,
310 : : /* 18 */ 1 /* tr_VI */,
311 : : /* 19 */ 0,
312 : : /* 20 */ 0,
313 : : /* 21 */ 0,
314 : : /* 22 */ 0,
315 : : /* 23 */ 0,
316 : : /* 24 */ 0,
317 : : /* 25 */ 0,
318 : : /* 26 */ 0,
319 : : /* 27 */ 0,
320 : : /* 28 */ 0,
321 : : /* 29 */ 0
322 : : };
323 : :
324 : :
325 : : static const struct among a_7[14] =
326 : : {
327 : : /* 0 */ { 3, s_7_0, -1, -1},
328 : : /* 1 */ { 3, s_7_1, -1, 1},
329 : : /* 2 */ { 4, s_7_2, 1, -1},
330 : : /* 3 */ { 3, s_7_3, -1, 1},
331 : : /* 4 */ { 4, s_7_4, 3, -1},
332 : : /* 5 */ { 3, s_7_5, -1, 1},
333 : : /* 6 */ { 4, s_7_6, 5, -1},
334 : : /* 7 */ { 3, s_7_7, -1, 1},
335 : : /* 8 */ { 4, s_7_8, 7, -1},
336 : : /* 9 */ { 4, s_7_9, -1, -1},
337 : : /* 10 */ { 4, s_7_10, -1, 1},
338 : : /* 11 */ { 5, s_7_11, 10, -1},
339 : : /* 12 */ { 4, s_7_12, -1, 1},
340 : : /* 13 */ { 5, s_7_13, 12, -1}
341 : : };
342 : :
343 : :
344 : : static const struct among a_8[2] =
345 : : {
346 : : /* 0 */ { 1, s_8_0, -1, -1},
347 : : /* 1 */ { 1, s_8_1, -1, -1}
348 : : };
349 : :
350 : :
351 : : static const struct among a_9[2] =
352 : : {
353 : : /* 0 */ { 3, s_9_0, -1, 1},
354 : : /* 1 */ { 4, s_9_1, 0, -1}
355 : : };
356 : :
357 : : static const unsigned char g_AEI[] = { 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8 };
358 : :
359 : : static const unsigned char g_V1[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 };
360 : :
361 : : static const unsigned char g_V2[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 };
362 : :
363 : : static const unsigned char g_particle_end[] = { 17, 97, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 };
364 : :
365 : : static const symbol s_0[] = { 'k', 's', 'e' };
366 : : static const symbol s_1[] = { 'k', 's', 'i' };
367 : : static const symbol s_2[] = { 0xC3, 0xA4 };
368 : : static const symbol s_3[] = { 0xC3, 0xB6 };
369 : : static const symbol s_4[] = { 'i', 'e' };
370 : : static const symbol s_5[] = { 'p', 'o' };
371 : : static const symbol s_6[] = { 'p', 'o' };
372 : :
373 : 120616 : int Xapian::InternalStemFinnish::r_mark_regions() { /* forwardmode */
374 : 120616 : I_p1 = l; /* p1 = <integer expression>, line 43 */
375 : 120616 : I_p2 = l; /* p2 = <integer expression>, line 44 */
376 [ + + ]: 120616 : if (out_grouping_U(g_V1, 97, 246, 1) < 0) return 0; /* goto */ /* grouping V1, line 46 */
377 : 111685 : { int ret = in_grouping_U(g_V1, 97, 246, 1); /* gopast */ /* non V1, line 46 */
378 [ + + ]: 111685 : if (ret < 0) return 0;
379 : 109429 : c += ret;
380 : : }
381 : 109429 : I_p1 = c; /* setmark p1, line 46 */
382 [ + + ]: 109429 : if (out_grouping_U(g_V1, 97, 246, 1) < 0) return 0; /* goto */ /* grouping V1, line 47 */
383 : 99355 : { int ret = in_grouping_U(g_V1, 97, 246, 1); /* gopast */ /* non V1, line 47 */
384 [ + + ]: 99355 : if (ret < 0) return 0;
385 : 94872 : c += ret;
386 : : }
387 : 94872 : I_p2 = c; /* setmark p2, line 47 */
388 : 120616 : return 1;
389 : : }
390 : :
391 : 386 : int Xapian::InternalStemFinnish::r_R2() { /* backwardmode */
392 [ + + ]: 386 : if (!(I_p2 <= c)) return 0; /* p2 <= <integer expression>, line 52 */
393 : 386 : return 1;
394 : : }
395 : :
396 : 120616 : int Xapian::InternalStemFinnish::r_particle_etc() { /* backwardmode */
397 : : int among_var;
398 : 120616 : { int m1 = l - c; (void)m1; /* setlimit, line 55 */
399 : : int mlimit1;
400 [ - + ]: 120616 : if (c < I_p1) return 0;
401 : 120616 : c = I_p1; /* tomark, line 55 */
402 : 120616 : mlimit1 = lb; lb = c;
403 : 120616 : c = l - m1;
404 : 120616 : ket = c; /* [, line 55 */
405 : 120616 : among_var = find_among_b(s_pool, a_0, 10, 0, 0); /* substring, line 55 */
406 [ + + ]: 120616 : if (!(among_var)) { lb = mlimit1; return 0; }
407 : 1559 : bra = c; /* ], line 55 */
408 : 1559 : lb = mlimit1;
409 : : }
410 [ - + + - ]: 1559 : switch(among_var) { /* among, line 56 */
411 : 0 : case 0: return 0;
412 : : case 1:
413 [ + + ]: 1173 : if (in_grouping_b_U(g_particle_end, 97, 246, 0)) return 0; /* grouping particle_end, line 62 */
414 : 813 : break;
415 : : case 2:
416 : 386 : { int ret = r_R2(); /* call R2, line 64 */
417 [ + + ]: 386 : if (ret <= 0) return ret;
418 : : }
419 : : break;
420 : : }
421 [ - + ]: 1116 : if (slice_del() == -1) return -1; /* delete, line 66 */
422 : 120616 : return 1;
423 : : }
424 : :
425 : 120616 : int Xapian::InternalStemFinnish::r_possessive() { /* backwardmode */
426 : : int among_var;
427 : 120616 : { int m1 = l - c; (void)m1; /* setlimit, line 69 */
428 : : int mlimit1;
429 [ - + ]: 120616 : if (c < I_p1) return 0;
430 : 120616 : c = I_p1; /* tomark, line 69 */
431 : 120616 : mlimit1 = lb; lb = c;
432 : 120616 : c = l - m1;
433 : 120616 : ket = c; /* [, line 69 */
434 : 120616 : among_var = find_among_b(s_pool, a_4, 9, 0, 0); /* substring, line 69 */
435 [ + + ]: 120616 : if (!(among_var)) { lb = mlimit1; return 0; }
436 : 11924 : bra = c; /* ], line 69 */
437 : 11924 : lb = mlimit1;
438 : : }
439 [ - + + + + : 11924 : switch(among_var) { /* among, line 70 */
+ + - ]
440 : 0 : case 0: return 0;
441 : : case 1:
442 : 1231 : { int m2 = l - c; (void)m2; /* not, line 72 */
443 [ + - ][ + + ]: 1231 : if (c <= lb || p[c - 1] != 'k') goto lab0;
444 : 840 : c--;
445 : 840 : return 0;
446 : : lab0:
447 : 391 : c = l - m2;
448 : : }
449 [ - + ]: 391 : if (slice_del() == -1) return -1; /* delete, line 72 */
450 : 391 : break;
451 : : case 2:
452 [ - + ]: 313 : if (slice_del() == -1) return -1; /* delete, line 74 */
453 : 313 : ket = c; /* [, line 74 */
454 [ + + ]: 313 : if (!(eq_s_b(3, s_0))) return 0; /* literal, line 74 */
455 : 15 : bra = c; /* ], line 74 */
456 : 15 : { int ret = slice_from_s(3, s_1); /* <-, line 74 */
457 [ - + ]: 15 : if (ret < 0) return ret;
458 : : }
459 : 15 : break;
460 : : case 3:
461 [ - + ]: 928 : if (slice_del() == -1) return -1; /* delete, line 78 */
462 : 928 : break;
463 : : case 4:
464 [ + - ][ + + ]: 3060 : if (c - 1 <= lb || p[c - 1] != 97) return 0; /* among, line 81 */
465 [ + + ]: 1406 : if (!(find_among_b(s_pool, a_1, 6, 0, 0))) return 0;
466 [ - + ]: 734 : if (slice_del() == -1) return -1; /* delete, line 81 */
467 : 734 : break;
468 : : case 5:
469 [ + + ][ + + ]: 756 : if (c - 2 <= lb || p[c - 1] != 164) return 0; /* among, line 83 */
470 [ + + ]: 441 : if (!(find_among_b(s_pool, a_2, 6, 0, 0))) return 0;
471 [ - + ]: 230 : if (slice_del() == -1) return -1; /* delete, line 84 */
472 : 230 : break;
473 : : case 6:
474 [ + + ][ + + ]: 5636 : if (c - 2 <= lb || p[c - 1] != 101) return 0; /* among, line 86 */
475 [ + + ]: 1048 : if (!(find_among_b(s_pool, a_3, 2, 0, 0))) return 0;
476 [ - + ]: 114 : if (slice_del() == -1) return -1; /* delete, line 86 */
477 : : break;
478 : : }
479 : 120616 : return 1;
480 : : }
481 : :
482 : 135713 : int Xapian::InternalStemFinnish::r_LONG() { /* backwardmode */
483 [ + + ]: 135713 : if (!(find_among_b(s_pool, a_5, 7, 0, 0))) return 0; /* among, line 91 */
484 : 135713 : return 1;
485 : : }
486 : :
487 : 896 : int Xapian::InternalStemFinnish::r_VI() { /* backwardmode */
488 [ + + ][ + + ]: 896 : if (c <= lb || p[c - 1] != 'i') return 0;
489 : 561 : c--;
490 [ + + ]: 561 : if (in_grouping_b_U(g_V2, 97, 246, 0)) return 0; /* grouping V2, line 93 */
491 : 896 : return 1;
492 : : }
493 : :
494 : 120616 : int Xapian::InternalStemFinnish::r_case_ending() { /* backwardmode */
495 : : int among_var;
496 : 120616 : { int m1 = l - c; (void)m1; /* setlimit, line 96 */
497 : : int mlimit1;
498 [ - + ]: 120616 : if (c < I_p1) return 0;
499 : 120616 : c = I_p1; /* tomark, line 96 */
500 : 120616 : mlimit1 = lb; lb = c;
501 : 120616 : c = l - m1;
502 : 120616 : ket = c; /* [, line 96 */
503 : 120616 : among_var = find_among_b(s_pool, a_6, 30, af_6, af); /* substring, line 96 */
504 [ + + ]: 120616 : if (!(among_var)) { lb = mlimit1; return 0; }
505 : 37910 : bra = c; /* ], line 96 */
506 : 37910 : lb = mlimit1;
507 : : }
508 [ - + + + + : 37910 : switch(among_var) { /* among, line 97 */
- + + + +
+ ]
509 : 0 : case 0: return 0;
510 : : case 1:
511 [ + - ][ + - ]: 15 : if (c <= lb || p[c - 1] != 'a') return 0;
512 : 0 : c--;
513 : 0 : break;
514 : : case 2:
515 [ + - ][ + + ]: 34 : if (c <= lb || p[c - 1] != 'e') return 0;
516 : 18 : c--;
517 : 18 : break;
518 : : case 3:
519 [ + - ][ + + ]: 288 : if (c <= lb || p[c - 1] != 'i') return 0;
520 : 227 : c--;
521 : 227 : break;
522 : : case 4:
523 [ + - ][ + - ]: 15 : if (c <= lb || p[c - 1] != 'o') return 0;
524 : 0 : c--;
525 : 0 : break;
526 : : case 5:
527 [ # # ]: 0 : if (!(eq_s_b(2, s_2))) return 0; /* literal, line 102 */
528 : 0 : break;
529 : : case 6:
530 [ - + ]: 12 : if (!(eq_s_b(2, s_3))) return 0; /* literal, line 103 */
531 : 12 : break;
532 : : case 7:
533 : 14577 : { int m2 = l - c; (void)m2; /* try, line 111 */
534 : 14577 : { int m3 = l - c; (void)m3; /* and, line 113 */
535 : 14577 : { int m4 = l - c; (void)m4; /* or, line 112 */
536 : 14577 : { int ret = r_LONG(); /* call LONG, line 111 */
537 [ + + ]: 14577 : if (ret == 0) goto lab2;
538 [ - + ]: 2789 : if (ret < 0) return ret;
539 : : }
540 : 2789 : goto lab1;
541 : : lab2:
542 : 11788 : c = l - m4;
543 [ + + ]: 11788 : if (!(eq_s_b(2, s_4))) { c = l - m2; goto lab0; } /* literal, line 112 */
544 : : }
545 : : lab1:
546 : 3405 : c = l - m3;
547 : 3405 : { int ret = skip_utf8(p, c, lb, 0, -1);
548 [ - + ]: 3405 : if (ret < 0) { c = l - m2; goto lab0; }
549 : 3405 : c = ret; /* next, line 113 */
550 : : }
551 : : }
552 : 3405 : bra = c; /* ], line 113 */
553 : : lab0:
554 : : ;
555 : : }
556 : 14577 : break;
557 : : case 8:
558 [ + + ]: 8846 : if (in_grouping_b_U(g_V1, 97, 246, 0)) return 0; /* grouping V1, line 119 */
559 [ + + ]: 4398 : if (out_grouping_b_U(g_V1, 97, 246, 0)) return 0; /* non V1, line 119 */
560 : 4207 : break;
561 : : case 9:
562 [ + - ][ + + ]: 459 : if (c <= lb || p[c - 1] != 'e') return 0;
563 : 139 : c--;
564 : : break;
565 : : }
566 [ - + ]: 32844 : if (slice_del() == -1) return -1; /* delete, line 138 */
567 : 32844 : B_ending_removed = 1; /* set ending_removed, line 139 */
568 : 120616 : return 1;
569 : : }
570 : :
571 : 120616 : int Xapian::InternalStemFinnish::r_other_endings() { /* backwardmode */
572 : : int among_var;
573 : 120616 : { int m1 = l - c; (void)m1; /* setlimit, line 142 */
574 : : int mlimit1;
575 [ + + ]: 120616 : if (c < I_p2) return 0;
576 : 113903 : c = I_p2; /* tomark, line 142 */
577 : 113903 : mlimit1 = lb; lb = c;
578 : 113903 : c = l - m1;
579 : 113903 : ket = c; /* [, line 142 */
580 : 113903 : among_var = find_among_b(s_pool, a_7, 14, 0, 0); /* substring, line 142 */
581 [ + + ]: 113903 : if (!(among_var)) { lb = mlimit1; return 0; }
582 : 480 : bra = c; /* ], line 142 */
583 : 480 : lb = mlimit1;
584 : : }
585 [ - + + ]: 480 : switch(among_var) { /* among, line 143 */
586 : 0 : case 0: return 0;
587 : : case 1:
588 : 219 : { int m2 = l - c; (void)m2; /* not, line 146 */
589 [ + + ]: 219 : if (!(eq_s_b(2, s_5))) goto lab0; /* literal, line 146 */
590 : 16 : return 0;
591 : : lab0:
592 : 203 : c = l - m2;
593 : : }
594 : : break;
595 : : }
596 [ - + ]: 464 : if (slice_del() == -1) return -1; /* delete, line 151 */
597 : 120616 : return 1;
598 : : }
599 : :
600 : 32844 : int Xapian::InternalStemFinnish::r_i_plural() { /* backwardmode */
601 : 32844 : { int m1 = l - c; (void)m1; /* setlimit, line 154 */
602 : : int mlimit1;
603 [ - + ]: 32844 : if (c < I_p1) return 0;
604 : 32844 : c = I_p1; /* tomark, line 154 */
605 : 32844 : mlimit1 = lb; lb = c;
606 : 32844 : c = l - m1;
607 : 32844 : ket = c; /* [, line 154 */
608 [ + + ][ + + ]: 32844 : if (c <= lb || (p[c - 1] != 105 && p[c - 1] != 106)) { lb = mlimit1; return 0; } /* substring, line 154 */
[ + + ]
609 [ - + ]: 11593 : if (!(find_among_b(s_pool, a_8, 2, 0, 0))) { lb = mlimit1; return 0; }
610 : 11593 : bra = c; /* ], line 154 */
611 : 11593 : lb = mlimit1;
612 : : }
613 [ - + ]: 11593 : if (slice_del() == -1) return -1; /* delete, line 158 */
614 : 32844 : return 1;
615 : : }
616 : :
617 : 87772 : int Xapian::InternalStemFinnish::r_t_plural() { /* backwardmode */
618 : : int among_var;
619 : 87772 : { int m1 = l - c; (void)m1; /* setlimit, line 161 */
620 : : int mlimit1;
621 [ - + ]: 87772 : if (c < I_p1) return 0;
622 : 87772 : c = I_p1; /* tomark, line 161 */
623 : 87772 : mlimit1 = lb; lb = c;
624 : 87772 : c = l - m1;
625 : 87772 : ket = c; /* [, line 162 */
626 [ + + ][ + + ]: 87772 : if (c <= lb || p[c - 1] != 't') { lb = mlimit1; return 0; }
627 : 5578 : c--;
628 : 5578 : bra = c; /* ], line 162 */
629 : 5578 : { int m_test2 = l - c; /* test, line 162 */
630 [ + + ]: 5578 : if (in_grouping_b_U(g_V1, 97, 246, 0)) { lb = mlimit1; return 0; } /* grouping V1, line 162 */
631 : 3900 : c = l - m_test2;
632 : : }
633 [ - + ]: 3900 : if (slice_del() == -1) return -1; /* delete, line 163 */
634 : 3900 : lb = mlimit1;
635 : : }
636 : 3900 : { int m3 = l - c; (void)m3; /* setlimit, line 165 */
637 : : int mlimit3;
638 [ + + ]: 3900 : if (c < I_p2) return 0;
639 : 3398 : c = I_p2; /* tomark, line 165 */
640 : 3398 : mlimit3 = lb; lb = c;
641 : 3398 : c = l - m3;
642 : 3398 : ket = c; /* [, line 165 */
643 [ + + ][ + + ]: 3398 : if (c - 2 <= lb || p[c - 1] != 97) { lb = mlimit3; return 0; } /* substring, line 165 */
644 : 728 : among_var = find_among_b(s_pool, a_9, 2, 0, 0);
645 [ + + ]: 728 : if (!(among_var)) { lb = mlimit3; return 0; }
646 : 23 : bra = c; /* ], line 165 */
647 : 23 : lb = mlimit3;
648 : : }
649 [ - + + ]: 23 : switch(among_var) { /* among, line 166 */
650 : 0 : case 0: return 0;
651 : : case 1:
652 : 8 : { int m4 = l - c; (void)m4; /* not, line 167 */
653 [ + - ]: 8 : if (!(eq_s_b(2, s_6))) goto lab0; /* literal, line 167 */
654 : 0 : return 0;
655 : : lab0:
656 : 8 : c = l - m4;
657 : : }
658 : : break;
659 : : }
660 [ - + ]: 23 : if (slice_del() == -1) return -1; /* delete, line 170 */
661 : 87772 : return 1;
662 : : }
663 : :
664 : 120616 : int Xapian::InternalStemFinnish::r_tidy() { /* backwardmode */
665 : 120616 : { int m1 = l - c; (void)m1; /* setlimit, line 173 */
666 : : int mlimit1;
667 [ - + ]: 120616 : if (c < I_p1) return 0;
668 : 120616 : c = I_p1; /* tomark, line 173 */
669 : 120616 : mlimit1 = lb; lb = c;
670 : 120616 : c = l - m1;
671 : 120616 : { int m2 = l - c; (void)m2; /* do, line 174 */
672 : 120616 : { int m3 = l - c; (void)m3; /* and, line 174 */
673 : 120616 : { int ret = r_LONG(); /* call LONG, line 174 */
674 [ + + ]: 120616 : if (ret == 0) goto lab0;
675 [ - + ]: 2071 : if (ret < 0) return ret;
676 : : }
677 : 2071 : c = l - m3;
678 : 2071 : ket = c; /* [, line 174 */
679 : 2071 : { int ret = skip_utf8(p, c, lb, 0, -1);
680 [ - + ]: 2071 : if (ret < 0) goto lab0;
681 : 2071 : c = ret; /* next, line 174 */
682 : : }
683 : 2071 : bra = c; /* ], line 174 */
684 [ - + ]: 2071 : if (slice_del() == -1) return -1; /* delete, line 174 */
685 : : }
686 : : lab0:
687 : 120616 : c = l - m2;
688 : : }
689 : 120616 : { int m4 = l - c; (void)m4; /* do, line 175 */
690 : 120616 : ket = c; /* [, line 175 */
691 [ + + ]: 120616 : if (in_grouping_b_U(g_AEI, 97, 228, 0)) goto lab1; /* grouping AEI, line 175 */
692 : 31324 : bra = c; /* ], line 175 */
693 [ + + ]: 31324 : if (out_grouping_b_U(g_V1, 97, 246, 0)) goto lab1; /* non V1, line 175 */
694 [ - + ]: 26817 : if (slice_del() == -1) return -1; /* delete, line 175 */
695 : : lab1:
696 : 120616 : c = l - m4;
697 : : }
698 : 120616 : { int m5 = l - c; (void)m5; /* do, line 176 */
699 : 120616 : ket = c; /* [, line 176 */
700 [ + + ][ + + ]: 120616 : if (c <= lb || p[c - 1] != 'j') goto lab2;
701 : 4158 : c--;
702 : 4158 : bra = c; /* ], line 176 */
703 : 4158 : { int m6 = l - c; (void)m6; /* or, line 176 */
704 [ + + ][ + + ]: 4158 : if (c <= lb || p[c - 1] != 'o') goto lab4;
705 : 616 : c--;
706 : 616 : goto lab3;
707 : : lab4:
708 : 3542 : c = l - m6;
709 [ + + ][ + + ]: 3542 : if (c <= lb || p[c - 1] != 'u') goto lab2;
710 : 296 : c--;
711 : : }
712 : : lab3:
713 [ - + ]: 912 : if (slice_del() == -1) return -1; /* delete, line 176 */
714 : : lab2:
715 : 120616 : c = l - m5;
716 : : }
717 : 120616 : { int m7 = l - c; (void)m7; /* do, line 177 */
718 : 120616 : ket = c; /* [, line 177 */
719 [ + + ][ + + ]: 120616 : if (c <= lb || p[c - 1] != 'o') goto lab5;
720 : 6930 : c--;
721 : 6930 : bra = c; /* ], line 177 */
722 [ + + ][ + + ]: 6930 : if (c <= lb || p[c - 1] != 'j') goto lab5;
723 : 240 : c--;
724 [ - + ]: 240 : if (slice_del() == -1) return -1; /* delete, line 177 */
725 : : lab5:
726 : 120616 : c = l - m7;
727 : : }
728 : 120616 : lb = mlimit1;
729 : : }
730 [ + + ]: 120616 : if (in_grouping_b_U(g_V1, 97, 246, 1) < 0) return 0; /* goto */ /* non V1, line 179 */
731 : 120155 : ket = c; /* [, line 179 */
732 : 120155 : { int ret = skip_utf8(p, c, lb, 0, -1);
733 [ - + ]: 120155 : if (ret < 0) return 0;
734 : 120155 : c = ret; /* next, line 179 */
735 : : }
736 : 120155 : bra = c; /* ], line 179 */
737 : 120155 : { symbol * ret = slice_to(S_x); /* -> x, line 179 */
738 [ - + ]: 120155 : if (ret == 0) return -1;
739 : 120155 : S_x = ret;
740 : : }
741 [ + + ]: 120155 : if (!(eq_v_b(S_x))) return 0; /* name x, line 179 */
742 [ - + ]: 7809 : if (slice_del() == -1) return -1; /* delete, line 179 */
743 : 120616 : return 1;
744 : : }
745 : :
746 : 120616 : int Xapian::InternalStemFinnish::stem() { /* forwardmode */
747 : 120616 : { int c1 = c; /* do, line 185 */
748 : 120616 : { int ret = r_mark_regions(); /* call mark_regions, line 185 */
749 [ + + ]: 120616 : if (ret == 0) goto lab0;
750 [ - + ]: 94872 : if (ret < 0) return ret;
751 : : }
752 : : lab0:
753 : 120616 : c = c1;
754 : : }
755 : 120616 : B_ending_removed = 0; /* unset ending_removed, line 186 */
756 : 120616 : lb = c; c = l; /* backwards, line 187 */
757 : :
758 : 120616 : { int m2 = l - c; (void)m2; /* do, line 188 */
759 : 120616 : { int ret = r_particle_etc(); /* call particle_etc, line 188 */
760 [ + + ]: 120616 : if (ret == 0) goto lab1;
761 [ - + ]: 1116 : if (ret < 0) return ret;
762 : : }
763 : : lab1:
764 : 120616 : c = l - m2;
765 : : }
766 : 120616 : { int m3 = l - c; (void)m3; /* do, line 189 */
767 : 120616 : { int ret = r_possessive(); /* call possessive, line 189 */
768 [ + + ]: 120616 : if (ret == 0) goto lab2;
769 [ - + ]: 2412 : if (ret < 0) return ret;
770 : : }
771 : : lab2:
772 : 120616 : c = l - m3;
773 : : }
774 : 120616 : { int m4 = l - c; (void)m4; /* do, line 190 */
775 : 120616 : { int ret = r_case_ending(); /* call case_ending, line 190 */
776 [ + + ]: 120616 : if (ret == 0) goto lab3;
777 [ - + ]: 32844 : if (ret < 0) return ret;
778 : : }
779 : : lab3:
780 : 120616 : c = l - m4;
781 : : }
782 : 120616 : { int m5 = l - c; (void)m5; /* do, line 191 */
783 : 120616 : { int ret = r_other_endings(); /* call other_endings, line 191 */
784 [ + + ]: 120616 : if (ret == 0) goto lab4;
785 [ - + ]: 464 : if (ret < 0) return ret;
786 : : }
787 : : lab4:
788 : 120616 : c = l - m5;
789 : : }
790 : 120616 : { int m6 = l - c; (void)m6; /* or, line 192 */
791 [ + + ]: 120616 : if (!(B_ending_removed)) goto lab6; /* Boolean test ending_removed, line 192 */
792 : 32844 : { int m7 = l - c; (void)m7; /* do, line 192 */
793 : 32844 : { int ret = r_i_plural(); /* call i_plural, line 192 */
794 [ + + ]: 32844 : if (ret == 0) goto lab7;
795 [ - + ]: 11593 : if (ret < 0) return ret;
796 : : }
797 : : lab7:
798 : 32844 : c = l - m7;
799 : : }
800 : 32844 : goto lab5;
801 : : lab6:
802 : 87772 : c = l - m6;
803 : 87772 : { int m8 = l - c; (void)m8; /* do, line 192 */
804 : 87772 : { int ret = r_t_plural(); /* call t_plural, line 192 */
805 [ + + ]: 87772 : if (ret == 0) goto lab8;
806 [ - + ]: 23 : if (ret < 0) return ret;
807 : : }
808 : : lab8:
809 : 87772 : c = l - m8;
810 : : }
811 : : }
812 : : lab5:
813 : 120616 : { int m9 = l - c; (void)m9; /* do, line 193 */
814 : 120616 : { int ret = r_tidy(); /* call tidy, line 193 */
815 [ + + ]: 120616 : if (ret == 0) goto lab9;
816 [ - + ]: 7809 : if (ret < 0) return ret;
817 : : }
818 : : lab9:
819 : 120616 : c = l - m9;
820 : : }
821 : 120616 : c = lb;
822 : 120616 : return 1;
823 : : }
824 : :
825 : 3 : Xapian::InternalStemFinnish::InternalStemFinnish()
826 : 3 : : B_ending_removed(0), S_x(0), I_p2(0), I_p1(0)
827 : : {
828 : 3 : S_x = create_s();
829 : 3 : }
830 : :
831 : 3 : Xapian::InternalStemFinnish::~InternalStemFinnish()
832 : : {
833 : 3 : lose_s(S_x);
834 [ + - ][ # # ]: 3 : }
[ # # ]
835 : :
836 : : std::string
837 : 1 : Xapian::InternalStemFinnish::get_description() const
838 : : {
839 : 1 : return "finnish";
840 : : }
|