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 "swedish.h"
5 : :
6 : : #define s_0_0 (s_0_1 + 3)
7 : : #define s_0_1 s_0_23
8 : : #define s_0_2 (s_0_3 + 3)
9 : : static const symbol s_pool[] = {
10 : : #define s_0_3 0
11 : : 'h', 'e', 't', 'e', 'r', 'n', 'a',
12 : : #define s_0_4 s_0_25
13 : : #define s_0_5 s_0_7
14 : : #define s_0_6 s_0_2
15 : : #define s_0_7 s_0_27
16 : : #define s_0_8 s_0_13
17 : : #define s_0_9 7
18 : : 'a', 'r', 'n', 'e',
19 : : #define s_0_10 s_0_14
20 : : #define s_0_11 11
21 : : 'a', 's', 't', 'e',
22 : : #define s_0_12 (s_0_13 + 3)
23 : : #define s_0_13 15
24 : : 'a', 'n', 'd', 'e', 'n',
25 : : #define s_0_14 s_0_30
26 : : #define s_0_15 s_0_31
27 : : #define s_0_16 s_0_2
28 : : #define s_0_17 s_0_1
29 : : #define s_0_18 s_0_2
30 : : #define s_0_19 s_0_3
31 : : #define s_0_20 s_0_4
32 : : #define s_0_21 (s_0_11 + 1)
33 : : #define s_0_22 s_0_11
34 : : #define s_0_23 20
35 : : 'a', 'r', 'n', 'a', 's',
36 : : #define s_0_24 25
37 : : 'e', 'r', 'n', 'a', 's',
38 : : #define s_0_25 30
39 : : 'o', 'r', 'n', 'a', 's',
40 : : #define s_0_26 (s_0_27 + 2)
41 : : #define s_0_27 35
42 : : 'a', 'd', 'e', 's',
43 : : #define s_0_28 39
44 : : 'a', 'n', 'd', 'e', 's',
45 : : #define s_0_29 (s_0_30 + 2)
46 : : #define s_0_30 44
47 : : 'a', 'r', 'e', 'n', 's',
48 : : #define s_0_31 49
49 : : 'h', 'e', 't', 'e', 'n', 's',
50 : : #define s_0_32 55
51 : : 'e', 'r', 'n', 's',
52 : : #define s_0_33 59
53 : : 'a', 't',
54 : : #define s_0_34 61
55 : : 'a', 'n', 'd', 'e', 't',
56 : : #define s_0_35 s_0_3
57 : : #define s_0_36 s_0_11
58 : : #define s_1_0 66
59 : : 'd', 'd',
60 : : #define s_1_1 68
61 : : 'g', 'd',
62 : : #define s_1_2 70
63 : : 'n', 'n',
64 : : #define s_1_3 72
65 : : 'd', 't',
66 : : #define s_1_4 74
67 : : 'g', 't',
68 : : #define s_1_5 76
69 : : 'k', 't',
70 : : #define s_1_6 78
71 : : 't', 't',
72 : : #define s_2_0 (s_2_1 + 1)
73 : : #define s_2_1 80
74 : : 'l', 'i', 'g',
75 : : #define s_2_2 83
76 : : 'e', 'l', 's',
77 : : #define s_2_3 86
78 : : 'f', 'u', 'l', 'l', 't',
79 : : #define s_2_4 91
80 : : 'l', 0xC3, 0xB6, 's', 't',
81 : : };
82 : :
83 : :
84 : : static const struct among a_0[37] =
85 : : {
86 : : /* 0 */ { 1, s_0_0, -1, 1},
87 : : /* 1 */ { 4, s_0_1, 0, 1},
88 : : /* 2 */ { 4, s_0_2, 0, 1},
89 : : /* 3 */ { 7, s_0_3, 2, 1},
90 : : /* 4 */ { 4, s_0_4, 0, 1},
91 : : /* 5 */ { 2, s_0_5, -1, 1},
92 : : /* 6 */ { 1, s_0_6, -1, 1},
93 : : /* 7 */ { 3, s_0_7, 6, 1},
94 : : /* 8 */ { 4, s_0_8, 6, 1},
95 : : /* 9 */ { 4, s_0_9, 6, 1},
96 : : /* 10 */ { 3, s_0_10, 6, 1},
97 : : /* 11 */ { 4, s_0_11, 6, 1},
98 : : /* 12 */ { 2, s_0_12, -1, 1},
99 : : /* 13 */ { 5, s_0_13, 12, 1},
100 : : /* 14 */ { 4, s_0_14, 12, 1},
101 : : /* 15 */ { 5, s_0_15, 12, 1},
102 : : /* 16 */ { 3, s_0_16, -1, 1},
103 : : /* 17 */ { 2, s_0_17, -1, 1},
104 : : /* 18 */ { 2, s_0_18, -1, 1},
105 : : /* 19 */ { 5, s_0_19, 18, 1},
106 : : /* 20 */ { 2, s_0_20, -1, 1},
107 : : /* 21 */ { 1, s_0_21, -1, 2},
108 : : /* 22 */ { 2, s_0_22, 21, 1},
109 : : /* 23 */ { 5, s_0_23, 22, 1},
110 : : /* 24 */ { 5, s_0_24, 22, 1},
111 : : /* 25 */ { 5, s_0_25, 22, 1},
112 : : /* 26 */ { 2, s_0_26, 21, 1},
113 : : /* 27 */ { 4, s_0_27, 26, 1},
114 : : /* 28 */ { 5, s_0_28, 26, 1},
115 : : /* 29 */ { 3, s_0_29, 21, 1},
116 : : /* 30 */ { 5, s_0_30, 29, 1},
117 : : /* 31 */ { 6, s_0_31, 29, 1},
118 : : /* 32 */ { 4, s_0_32, 21, 1},
119 : : /* 33 */ { 2, s_0_33, -1, 1},
120 : : /* 34 */ { 5, s_0_34, -1, 1},
121 : : /* 35 */ { 3, s_0_35, -1, 1},
122 : : /* 36 */ { 3, s_0_36, -1, 1}
123 : : };
124 : :
125 : :
126 : : static const struct among a_1[7] =
127 : : {
128 : : /* 0 */ { 2, s_1_0, -1, -1},
129 : : /* 1 */ { 2, s_1_1, -1, -1},
130 : : /* 2 */ { 2, s_1_2, -1, -1},
131 : : /* 3 */ { 2, s_1_3, -1, -1},
132 : : /* 4 */ { 2, s_1_4, -1, -1},
133 : : /* 5 */ { 2, s_1_5, -1, -1},
134 : : /* 6 */ { 2, s_1_6, -1, -1}
135 : : };
136 : :
137 : :
138 : : static const struct among a_2[5] =
139 : : {
140 : : /* 0 */ { 2, s_2_0, -1, 1},
141 : : /* 1 */ { 3, s_2_1, 0, 1},
142 : : /* 2 */ { 3, s_2_2, -1, 1},
143 : : /* 3 */ { 5, s_2_3, -1, 3},
144 : : /* 4 */ { 5, s_2_4, -1, 2}
145 : : };
146 : :
147 : : 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 };
148 : :
149 : : static const unsigned char g_s_ending[] = { 119, 127, 149 };
150 : :
151 : : static const symbol s_0[] = { 'l', 0xC3, 0xB6, 's' };
152 : : static const symbol s_1[] = { 'f', 'u', 'l', 'l' };
153 : :
154 : 101239 : int Xapian::InternalStemSwedish::r_mark_regions() { /* forwardmode */
155 : 101239 : I_p1 = l; /* p1 = <integer expression>, line 28 */
156 : 101239 : { int c_test1 = c; /* test, line 29 */
157 : 101239 : { int ret = skip_utf8(p, c, 0, l, + 3); /* hop, line 29 */
158 [ + + ]: 101239 : if (ret < 0) return 0;
159 : 97161 : c = ret;
160 : : }
161 : 97161 : I_x = c; /* setmark x, line 29 */
162 : 97161 : c = c_test1;
163 : : }
164 [ + + ]: 97161 : if (out_grouping_U(g_v, 97, 246, 1) < 0) return 0; /* goto */ /* grouping v, line 30 */
165 : 91208 : { int ret = in_grouping_U(g_v, 97, 246, 1); /* gopast */ /* non v, line 30 */
166 [ + + ]: 91208 : if (ret < 0) return 0;
167 : 89660 : c += ret;
168 : : }
169 : 89660 : I_p1 = c; /* setmark p1, line 30 */
170 : : /* try, line 31 */
171 [ + + ]: 89660 : if (!(I_p1 < I_x)) goto lab0; /* p1 < <integer expression>, line 31 */
172 : 14759 : I_p1 = I_x; /* p1 = <integer expression>, line 31 */
173 : : lab0:
174 : 101239 : return 1;
175 : : }
176 : :
177 : 101239 : int Xapian::InternalStemSwedish::r_main_suffix() { /* backwardmode */
178 : : int among_var;
179 : 101239 : { int m1 = l - c; (void)m1; /* setlimit, line 37 */
180 : : int mlimit1;
181 [ - + ]: 101239 : if (c < I_p1) return 0;
182 : 101239 : c = I_p1; /* tomark, line 37 */
183 : 101239 : mlimit1 = lb; lb = c;
184 : 101239 : c = l - m1;
185 : 101239 : ket = c; /* [, line 37 */
186 [ + + ][ + + ]: 101239 : if (c <= lb || p[c - 1] >> 5 != 3 || !((1851442 >> (p[c - 1] & 0x1f)) & 1)) { lb = mlimit1; return 0; } /* substring, line 37 */
[ + + ]
187 : 36544 : among_var = find_among_b(s_pool, a_0, 37, 0, 0);
188 [ + + ]: 36544 : if (!(among_var)) { lb = mlimit1; return 0; }
189 : 24322 : bra = c; /* ], line 37 */
190 : 24322 : lb = mlimit1;
191 : : }
192 [ - + + - ]: 24322 : switch(among_var) { /* among, line 38 */
193 : 0 : case 0: return 0;
194 : : case 1:
195 [ - + ]: 21596 : if (slice_del() == -1) return -1; /* delete, line 44 */
196 : 21596 : break;
197 : : case 2:
198 [ + + ]: 2726 : if (in_grouping_b_U(g_s_ending, 98, 121, 0)) return 0; /* grouping s_ending, line 46 */
199 [ - + ]: 1811 : if (slice_del() == -1) return -1; /* delete, line 46 */
200 : : break;
201 : : }
202 : 101239 : return 1;
203 : : }
204 : :
205 : 101239 : int Xapian::InternalStemSwedish::r_consonant_pair() { /* backwardmode */
206 : 101239 : { int m1 = l - c; (void)m1; /* setlimit, line 50 */
207 : : int mlimit1;
208 [ - + ]: 101239 : if (c < I_p1) return 0;
209 : 101239 : c = I_p1; /* tomark, line 50 */
210 : 101239 : mlimit1 = lb; lb = c;
211 : 101239 : c = l - m1;
212 : 101239 : { int m2 = l - c; (void)m2; /* and, line 52 */
213 [ + + ][ + + ]: 101239 : if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((1064976 >> (p[c - 1] & 0x1f)) & 1)) { lb = mlimit1; return 0; } /* among, line 51 */
[ + + ]
214 [ + + ]: 14212 : if (!(find_among_b(s_pool, a_1, 7, 0, 0))) { lb = mlimit1; return 0; }
215 : 2486 : c = l - m2;
216 : 2486 : ket = c; /* [, line 52 */
217 : 2486 : { int ret = skip_utf8(p, c, lb, 0, -1);
218 [ - + ]: 2486 : if (ret < 0) { lb = mlimit1; return 0; }
219 : 2486 : c = ret; /* next, line 52 */
220 : : }
221 : 2486 : bra = c; /* ], line 52 */
222 [ - + ]: 2486 : if (slice_del() == -1) return -1; /* delete, line 52 */
223 : : }
224 : 2486 : lb = mlimit1;
225 : : }
226 : 101239 : return 1;
227 : : }
228 : :
229 : 101239 : int Xapian::InternalStemSwedish::r_other_suffix() { /* backwardmode */
230 : : int among_var;
231 : 101239 : { int m1 = l - c; (void)m1; /* setlimit, line 55 */
232 : : int mlimit1;
233 [ - + ]: 101239 : if (c < I_p1) return 0;
234 : 101239 : c = I_p1; /* tomark, line 55 */
235 : 101239 : mlimit1 = lb; lb = c;
236 : 101239 : c = l - m1;
237 : 101239 : ket = c; /* [, line 56 */
238 [ + + ][ + + ]: 101239 : if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((1572992 >> (p[c - 1] & 0x1f)) & 1)) { lb = mlimit1; return 0; } /* substring, line 56 */
[ + + ]
239 : 12780 : among_var = find_among_b(s_pool, a_2, 5, 0, 0);
240 [ + + ]: 12780 : if (!(among_var)) { lb = mlimit1; return 0; }
241 : 2486 : bra = c; /* ], line 56 */
242 [ - + + + : 2486 : switch(among_var) { /* among, line 56 */
- ]
243 : 0 : case 0: { lb = mlimit1; return 0; }
244 : : case 1:
245 [ - + ]: 2416 : if (slice_del() == -1) return -1; /* delete, line 57 */
246 : 2416 : break;
247 : : case 2:
248 : 39 : { int ret = slice_from_s(4, s_0); /* <-, line 58 */
249 [ - + ]: 39 : if (ret < 0) return ret;
250 : : }
251 : 39 : break;
252 : : case 3:
253 : 31 : { int ret = slice_from_s(4, s_1); /* <-, line 59 */
254 [ - + ]: 31 : if (ret < 0) return ret;
255 : : }
256 : : break;
257 : : }
258 : 2486 : lb = mlimit1;
259 : : }
260 : 101239 : return 1;
261 : : }
262 : :
263 : 101239 : int Xapian::InternalStemSwedish::stem() { /* forwardmode */
264 : 101239 : { int c1 = c; /* do, line 66 */
265 : 101239 : { int ret = r_mark_regions(); /* call mark_regions, line 66 */
266 [ + + ]: 101239 : if (ret == 0) goto lab0;
267 [ - + ]: 89660 : if (ret < 0) return ret;
268 : : }
269 : : lab0:
270 : 101239 : c = c1;
271 : : }
272 : 101239 : lb = c; c = l; /* backwards, line 67 */
273 : :
274 : 101239 : { int m2 = l - c; (void)m2; /* do, line 68 */
275 : 101239 : { int ret = r_main_suffix(); /* call main_suffix, line 68 */
276 [ + + ]: 101239 : if (ret == 0) goto lab1;
277 [ - + ]: 23407 : if (ret < 0) return ret;
278 : : }
279 : : lab1:
280 : 101239 : c = l - m2;
281 : : }
282 : 101239 : { int m3 = l - c; (void)m3; /* do, line 69 */
283 : 101239 : { int ret = r_consonant_pair(); /* call consonant_pair, line 69 */
284 [ + + ]: 101239 : if (ret == 0) goto lab2;
285 [ - + ]: 2486 : if (ret < 0) return ret;
286 : : }
287 : : lab2:
288 : 101239 : c = l - m3;
289 : : }
290 : 101239 : { int m4 = l - c; (void)m4; /* do, line 70 */
291 : 101239 : { int ret = r_other_suffix(); /* call other_suffix, line 70 */
292 [ + + ]: 101239 : if (ret == 0) goto lab3;
293 [ - + ]: 2486 : if (ret < 0) return ret;
294 : : }
295 : : lab3:
296 : 101239 : c = l - m4;
297 : : }
298 : 101239 : c = lb;
299 : 101239 : return 1;
300 : : }
301 : :
302 : 3 : Xapian::InternalStemSwedish::InternalStemSwedish()
303 : 3 : : I_x(0), I_p1(0)
304 : : {
305 : 3 : }
306 : :
307 : 3 : Xapian::InternalStemSwedish::~InternalStemSwedish()
308 : : {
309 [ + - ][ # # ]: 3 : }
[ # # ]
310 : :
311 : : std::string
312 : 1 : Xapian::InternalStemSwedish::get_description() const
313 : : {
314 : 1 : return "swedish";
315 : : }
|