00001
00002
00003 #include <limits.h>
00004 #include "hungarian.h"
00005
00006 static const symbol s_pool[] = {
00007 #define s_0_0 0
00008 'c', 's',
00009 #define s_0_1 2
00010 'd', 'z', 's',
00011 #define s_0_2 5
00012 'g', 'y',
00013 #define s_0_3 7
00014 'l', 'y',
00015 #define s_0_4 9
00016 'n', 'y',
00017 #define s_0_5 11
00018 's', 'z',
00019 #define s_0_6 13
00020 't', 'y',
00021 #define s_0_7 (s_0_1 + 1)
00022 #define s_1_0 15
00023 0xC3, 0xA1,
00024 #define s_1_1 17
00025 0xC3, 0xA9,
00026 #define s_2_0 19
00027 'b', 'b',
00028 #define s_2_1 s_2_12
00029 #define s_2_2 21
00030 'd', 'd',
00031 #define s_2_3 23
00032 'f', 'f',
00033 #define s_2_4 s_2_17
00034 #define s_2_5 25
00035 'j', 'j',
00036 #define s_2_6 27
00037 'k', 'k',
00038 #define s_2_7 s_2_18
00039 #define s_2_8 29
00040 'm', 'm',
00041 #define s_2_9 s_2_19
00042 #define s_2_10 31
00043 'p', 'p',
00044 #define s_2_11 33
00045 'r', 'r',
00046 #define s_2_12 35
00047 'c', 'c', 's',
00048 #define s_2_13 s_2_21
00049 #define s_2_14 38
00050 'z', 'z', 's',
00051 #define s_2_15 s_2_20
00052 #define s_2_16 41
00053 'v', 'v',
00054 #define s_2_17 43
00055 'g', 'g', 'y',
00056 #define s_2_18 46
00057 'l', 'l', 'y',
00058 #define s_2_19 49
00059 'n', 'n', 'y',
00060 #define s_2_20 52
00061 't', 't', 'y',
00062 #define s_2_21 55
00063 's', 's', 'z',
00064 #define s_2_22 s_2_14
00065 #define s_3_0 58
00066 'a', 'l',
00067 #define s_3_1 60
00068 'e', 'l',
00069 #define s_4_0 s_4_21
00070 #define s_4_1 62
00071 'r', 'a',
00072 #define s_4_2 s_4_23
00073 #define s_4_3 64
00074 'r', 'e',
00075 #define s_4_4 66
00076 'i', 'g',
00077 #define s_4_5 68
00078 'n', 'a', 'k',
00079 #define s_4_6 71
00080 'n', 'e', 'k',
00081 #define s_4_7 74
00082 'v', 'a', 'l',
00083 #define s_4_8 77
00084 'v', 'e', 'l',
00085 #define s_4_9 80
00086 'u', 'l',
00087 #define s_4_10 82
00088 'n', 0xC3, 0xA1, 'l',
00089 #define s_4_11 86
00090 'n', 0xC3, 0xA9, 'l',
00091 #define s_4_12 90
00092 'b', 0xC3, 0xB3, 'l',
00093 #define s_4_13 94
00094 'r', 0xC3, 0xB3, 'l',
00095 #define s_4_14 98
00096 't', 0xC3, 0xB3, 'l',
00097 #define s_4_15 102
00098 'b', 0xC3, 0xB5, 'l',
00099 #define s_4_16 106
00100 'r', 0xC3, 0xB5, 'l',
00101 #define s_4_17 110
00102 't', 0xC3, 0xB5, 'l',
00103 #define s_4_18 114
00104 0xC3, 0xBC, 'l',
00105 #define s_4_19 s_4_5
00106 #define s_4_20 (s_4_21 + 1)
00107 #define s_4_21 117
00108 'b', 'a', 'n',
00109 #define s_4_22 (s_4_23 + 1)
00110 #define s_4_23 120
00111 'b', 'e', 'n',
00112 #define s_4_24 123
00113 'k', 0xC3, 0xA9, 'p', 'p', 'e', 'n',
00114 #define s_4_25 s_4_35
00115 #define s_4_26 130
00116 0xC3, 0xB6, 'n',
00117 #define s_4_27 s_4_24
00118 #define s_4_28 133
00119 'k', 'o', 'r',
00120 #define s_4_29 s_4_14
00121 #define s_4_30 136
00122 'a', 't',
00123 #define s_4_31 138
00124 'e', 't',
00125 #define s_4_32 (s_4_33 + 2)
00126 #define s_4_33 140
00127 'a', 'n', 'k', 0xC3, 0xA9, 'n', 't',
00128 #define s_4_34 147
00129 'e', 'n', 'k', 0xC3, 0xA9, 'n', 't',
00130 #define s_4_35 154
00131 'o', 'n', 'k', 0xC3, 0xA9, 'n', 't',
00132 #define s_4_36 161
00133 'o', 't',
00134 #define s_4_37 163
00135 0xC3, 0xA9, 'r', 't',
00136 #define s_4_38 167
00137 0xC3, 0xB6, 't',
00138 #define s_4_39 170
00139 'h', 'e', 'z',
00140 #define s_4_40 173
00141 'h', 'o', 'z',
00142 #define s_4_41 176
00143 'h', 0xC3, 0xB6, 'z',
00144 #define s_4_42 180
00145 'v', 0xC3, 0xA1,
00146 #define s_4_43 183
00147 'v', 0xC3, 0xA9,
00148 #define s_5_0 s_5_2
00149 #define s_5_1 (s_5_2 + 4)
00150 #define s_5_2 186
00151 0xC3, 0xA1, 'n', 'k', 0xC3, 0xA9, 'n', 't',
00152 #define s_6_0 (s_6_1 + 1)
00153 #define s_6_1 194
00154 'a', 's', 't', 'u', 'l',
00155 #define s_6_2 199
00156 0xC3, 0xA1, 's', 't', 'u', 'l',
00157 #define s_6_3 (s_6_4 + 1)
00158 #define s_6_4 205
00159 'e', 's', 't', 0xC3, 0xBC, 'l',
00160 #define s_6_5 211
00161 0xC3, 0xA9, 's', 't', 0xC3, 0xBC, 'l',
00162 #define s_7_0 218
00163 0xC3, 0xA1,
00164 #define s_7_1 220
00165 0xC3, 0xA9,
00166 #define s_8_0 (s_8_1 + 1)
00167 #define s_8_1 222
00168 'a', 'k',
00169 #define s_8_2 224
00170 'e', 'k',
00171 #define s_8_3 226
00172 'o', 'k',
00173 #define s_8_4 228
00174 0xC3, 0xA1, 'k',
00175 #define s_8_5 231
00176 0xC3, 0xA9, 'k',
00177 #define s_8_6 234
00178 0xC3, 0xB6, 'k',
00179 #define s_9_0 (s_9_1 + 2)
00180 #define s_9_1 237
00181 0xC3, 0xA1, 0xC3, 0xA9, 'i',
00182 #define s_9_2 242
00183 0xC3, 0xA9, 0xC3, 0xA9, 'i',
00184 #define s_9_3 s_9_0
00185 #define s_9_4 (s_9_5 + 1)
00186 #define s_9_5 247
00187 'a', 'k', 0xC3, 0xA9,
00188 #define s_9_6 251
00189 'e', 'k', 0xC3, 0xA9,
00190 #define s_9_7 255
00191 'o', 'k', 0xC3, 0xA9,
00192 #define s_9_8 259
00193 0xC3, 0xA1, 'k', 0xC3, 0xA9,
00194 #define s_9_9 264
00195 0xC3, 0xA9, 'k', 0xC3, 0xA9,
00196 #define s_9_10 269
00197 0xC3, 0xB6, 'k', 0xC3, 0xA9,
00198 #define s_9_11 s_9_2
00199 #define s_10_0 (s_10_1 + 1)
00200 #define s_10_1 274
00201 'j', 'a',
00202 #define s_10_2 (s_10_3 + 1)
00203 #define s_10_3 276
00204 'a', 'd',
00205 #define s_10_4 278
00206 'e', 'd',
00207 #define s_10_5 280
00208 'o', 'd',
00209 #define s_10_6 282
00210 0xC3, 0xA1, 'd',
00211 #define s_10_7 285
00212 0xC3, 0xA9, 'd',
00213 #define s_10_8 288
00214 0xC3, 0xB6, 'd',
00215 #define s_10_9 s_10_4
00216 #define s_10_10 291
00217 'j', 'e',
00218 #define s_10_11 (s_10_12 + 1)
00219 #define s_10_12 293
00220 'u', 'n', 'k',
00221 #define s_10_13 296
00222 0xC3, 0xA1, 'n', 'k',
00223 #define s_10_14 300
00224 0xC3, 0xA9, 'n', 'k',
00225 #define s_10_15 304
00226 0xC3, 0xBC, 'n', 'k',
00227 #define s_10_16 (s_10_17 + 1)
00228 #define s_10_17 (s_10_18 + 2)
00229 #define s_10_18 308
00230 0xC3, 0xA1, 'j', 'u', 'k',
00231 #define s_10_19 (s_10_20 + 1)
00232 #define s_10_20 (s_10_21 + 2)
00233 #define s_10_21 313
00234 0xC3, 0xA9, 'j', 0xC3, 0xBC, 'k',
00235 #define s_10_22 (s_10_23 + 1)
00236 #define s_10_23 319
00237 'a', 'm',
00238 #define s_10_24 321
00239 'e', 'm',
00240 #define s_10_25 323
00241 'o', 'm',
00242 #define s_10_26 325
00243 0xC3, 0xA1, 'm',
00244 #define s_10_27 328
00245 0xC3, 0xA9, 'm',
00246 #define s_10_28 s_10_5
00247 #define s_10_29 s_10_6
00248 #define s_10_30 s_10_7
00249 #define s_11_0 (s_11_1 + 1)
00250 #define s_11_1 (s_11_2 + 1)
00251 #define s_11_2 331
00252 'j', 'a', 'i', 'd',
00253 #define s_11_3 (s_11_4 + 1)
00254 #define s_11_4 335
00255 'j', 'e', 'i', 'd',
00256 #define s_11_5 339
00257 0xC3, 0xA1, 'i', 'd',
00258 #define s_11_6 343
00259 0xC3, 0xA9, 'i', 'd',
00260 #define s_11_7 s_11_0
00261 #define s_11_8 s_11_1
00262 #define s_11_9 s_11_2
00263 #define s_11_10 s_11_3
00264 #define s_11_11 s_11_4
00265 #define s_11_12 s_11_5
00266 #define s_11_13 s_11_6
00267 #define s_11_14 (s_11_15 + 1)
00268 #define s_11_15 (s_11_16 + 1)
00269 #define s_11_16 347
00270 'j', 'e', 'i', 't', 'e', 'k',
00271 #define s_11_17 353
00272 0xC3, 0xA9, 'i', 't', 'e', 'k',
00273 #define s_11_18 (s_11_19 + 1)
00274 #define s_11_19 (s_11_20 + 1)
00275 #define s_11_20 359
00276 'j', 'a', 'i', 'k',
00277 #define s_11_21 (s_11_22 + 1)
00278 #define s_11_22 363
00279 'j', 'e', 'i', 'k',
00280 #define s_11_23 367
00281 0xC3, 0xA1, 'i', 'k',
00282 #define s_11_24 371
00283 0xC3, 0xA9, 'i', 'k',
00284 #define s_11_25 (s_11_26 + 1)
00285 #define s_11_26 (s_11_27 + 1)
00286 #define s_11_27 375
00287 'j', 'a', 'i', 'n', 'k',
00288 #define s_11_28 (s_11_29 + 1)
00289 #define s_11_29 380
00290 'j', 'e', 'i', 'n', 'k',
00291 #define s_11_30 385
00292 0xC3, 0xA1, 'i', 'n', 'k',
00293 #define s_11_31 390
00294 0xC3, 0xA9, 'i', 'n', 'k',
00295 #define s_11_32 (s_11_33 + 1)
00296 #define s_11_33 395
00297 'j', 'a', 'i', 't', 'o', 'k',
00298 #define s_11_34 401
00299 0xC3, 0xA1, 'i', 't', 'o', 'k',
00300 #define s_11_35 (s_11_36 + 1)
00301 #define s_11_36 (s_11_37 + 1)
00302 #define s_11_37 407
00303 'j', 'a', 'i', 'm',
00304 #define s_11_38 (s_11_39 + 1)
00305 #define s_11_39 411
00306 'j', 'e', 'i', 'm',
00307 #define s_11_40 415
00308 0xC3, 0xA1, 'i', 'm',
00309 #define s_11_41 419
00310 0xC3, 0xA9, 'i', 'm',
00311 };
00312
00313
00314 static const struct among a_0[8] =
00315 {
00316 { 2, s_0_0, -1, -1},
00317 { 3, s_0_1, -1, -1},
00318 { 2, s_0_2, -1, -1},
00319 { 2, s_0_3, -1, -1},
00320 { 2, s_0_4, -1, -1},
00321 { 2, s_0_5, -1, -1},
00322 { 2, s_0_6, -1, -1},
00323 { 2, s_0_7, -1, -1}
00324 };
00325
00326
00327 static const struct among a_1[2] =
00328 {
00329 { 2, s_1_0, -1, 1},
00330 { 2, s_1_1, -1, 2}
00331 };
00332
00333
00334 static const struct among a_2[23] =
00335 {
00336 { 2, s_2_0, -1, -1},
00337 { 2, s_2_1, -1, -1},
00338 { 2, s_2_2, -1, -1},
00339 { 2, s_2_3, -1, -1},
00340 { 2, s_2_4, -1, -1},
00341 { 2, s_2_5, -1, -1},
00342 { 2, s_2_6, -1, -1},
00343 { 2, s_2_7, -1, -1},
00344 { 2, s_2_8, -1, -1},
00345 { 2, s_2_9, -1, -1},
00346 { 2, s_2_10, -1, -1},
00347 { 2, s_2_11, -1, -1},
00348 { 3, s_2_12, -1, -1},
00349 { 2, s_2_13, -1, -1},
00350 { 3, s_2_14, -1, -1},
00351 { 2, s_2_15, -1, -1},
00352 { 2, s_2_16, -1, -1},
00353 { 3, s_2_17, -1, -1},
00354 { 3, s_2_18, -1, -1},
00355 { 3, s_2_19, -1, -1},
00356 { 3, s_2_20, -1, -1},
00357 { 3, s_2_21, -1, -1},
00358 { 2, s_2_22, -1, -1}
00359 };
00360
00361
00362 static const struct among a_3[2] =
00363 {
00364 { 2, s_3_0, -1, 1},
00365 { 2, s_3_1, -1, 2}
00366 };
00367
00368
00369 static const struct among a_4[44] =
00370 {
00371 { 2, s_4_0, -1, -1},
00372 { 2, s_4_1, -1, -1},
00373 { 2, s_4_2, -1, -1},
00374 { 2, s_4_3, -1, -1},
00375 { 2, s_4_4, -1, -1},
00376 { 3, s_4_5, -1, -1},
00377 { 3, s_4_6, -1, -1},
00378 { 3, s_4_7, -1, -1},
00379 { 3, s_4_8, -1, -1},
00380 { 2, s_4_9, -1, -1},
00381 { 4, s_4_10, -1, -1},
00382 { 4, s_4_11, -1, -1},
00383 { 4, s_4_12, -1, -1},
00384 { 4, s_4_13, -1, -1},
00385 { 4, s_4_14, -1, -1},
00386 { 4, s_4_15, -1, -1},
00387 { 4, s_4_16, -1, -1},
00388 { 4, s_4_17, -1, -1},
00389 { 3, s_4_18, -1, -1},
00390 { 1, s_4_19, -1, -1},
00391 { 2, s_4_20, 19, -1},
00392 { 3, s_4_21, 20, -1},
00393 { 2, s_4_22, 19, -1},
00394 { 3, s_4_23, 22, -1},
00395 { 7, s_4_24, 22, -1},
00396 { 2, s_4_25, 19, -1},
00397 { 3, s_4_26, 19, -1},
00398 { 5, s_4_27, -1, -1},
00399 { 3, s_4_28, -1, -1},
00400 { 1, s_4_29, -1, -1},
00401 { 2, s_4_30, 29, -1},
00402 { 2, s_4_31, 29, -1},
00403 { 5, s_4_32, 29, -1},
00404 { 7, s_4_33, 32, -1},
00405 { 7, s_4_34, 32, -1},
00406 { 7, s_4_35, 32, -1},
00407 { 2, s_4_36, 29, -1},
00408 { 4, s_4_37, 29, -1},
00409 { 3, s_4_38, 29, -1},
00410 { 3, s_4_39, -1, -1},
00411 { 3, s_4_40, -1, -1},
00412 { 4, s_4_41, -1, -1},
00413 { 3, s_4_42, -1, -1},
00414 { 3, s_4_43, -1, -1}
00415 };
00416
00417
00418 static const struct among a_5[3] =
00419 {
00420 { 3, s_5_0, -1, 2},
00421 { 3, s_5_1, -1, 1},
00422 { 8, s_5_2, -1, 3}
00423 };
00424
00425
00426 static const struct among a_6[6] =
00427 {
00428 { 4, s_6_0, -1, 2},
00429 { 5, s_6_1, 0, 1},
00430 { 6, s_6_2, 0, 3},
00431 { 5, s_6_3, -1, 2},
00432 { 6, s_6_4, 3, 1},
00433 { 7, s_6_5, 3, 4}
00434 };
00435
00436
00437 static const struct among a_7[2] =
00438 {
00439 { 2, s_7_0, -1, 1},
00440 { 2, s_7_1, -1, 2}
00441 };
00442
00443
00444 static const struct among a_8[7] =
00445 {
00446 { 1, s_8_0, -1, 7},
00447 { 2, s_8_1, 0, 4},
00448 { 2, s_8_2, 0, 6},
00449 { 2, s_8_3, 0, 5},
00450 { 3, s_8_4, 0, 1},
00451 { 3, s_8_5, 0, 2},
00452 { 3, s_8_6, 0, 3}
00453 };
00454
00455
00456 static const struct among a_9[12] =
00457 {
00458 { 3, s_9_0, -1, 7},
00459 { 5, s_9_1, 0, 6},
00460 { 5, s_9_2, 0, 5},
00461 { 2, s_9_3, -1, 9},
00462 { 3, s_9_4, 3, 4},
00463 { 4, s_9_5, 4, 1},
00464 { 4, s_9_6, 4, 1},
00465 { 4, s_9_7, 4, 1},
00466 { 5, s_9_8, 4, 3},
00467 { 5, s_9_9, 4, 2},
00468 { 5, s_9_10, 4, 1},
00469 { 4, s_9_11, 3, 8}
00470 };
00471
00472
00473 static const struct among a_10[31] =
00474 {
00475 { 1, s_10_0, -1, 18},
00476 { 2, s_10_1, 0, 17},
00477 { 1, s_10_2, -1, 16},
00478 { 2, s_10_3, 2, 13},
00479 { 2, s_10_4, 2, 13},
00480 { 2, s_10_5, 2, 13},
00481 { 3, s_10_6, 2, 14},
00482 { 3, s_10_7, 2, 15},
00483 { 3, s_10_8, 2, 13},
00484 { 1, s_10_9, -1, 18},
00485 { 2, s_10_10, 9, 17},
00486 { 2, s_10_11, -1, 4},
00487 { 3, s_10_12, 11, 1},
00488 { 4, s_10_13, 11, 2},
00489 { 4, s_10_14, 11, 3},
00490 { 4, s_10_15, 11, 1},
00491 { 2, s_10_16, -1, 8},
00492 { 3, s_10_17, 16, 7},
00493 { 5, s_10_18, 17, 5},
00494 { 3, s_10_19, -1, 8},
00495 { 4, s_10_20, 19, 7},
00496 { 6, s_10_21, 20, 6},
00497 { 1, s_10_22, -1, 12},
00498 { 2, s_10_23, 22, 9},
00499 { 2, s_10_24, 22, 9},
00500 { 2, s_10_25, 22, 9},
00501 { 3, s_10_26, 22, 10},
00502 { 3, s_10_27, 22, 11},
00503 { 1, s_10_28, -1, 18},
00504 { 2, s_10_29, -1, 19},
00505 { 2, s_10_30, -1, 20}
00506 };
00507
00508
00509 static const struct among a_11[42] =
00510 {
00511 { 2, s_11_0, -1, 10},
00512 { 3, s_11_1, 0, 9},
00513 { 4, s_11_2, 1, 6},
00514 { 3, s_11_3, 0, 9},
00515 { 4, s_11_4, 3, 6},
00516 { 4, s_11_5, 0, 7},
00517 { 4, s_11_6, 0, 8},
00518 { 1, s_11_7, -1, 15},
00519 { 2, s_11_8, 7, 14},
00520 { 3, s_11_9, 8, 11},
00521 { 2, s_11_10, 7, 14},
00522 { 3, s_11_11, 10, 11},
00523 { 3, s_11_12, 7, 12},
00524 { 3, s_11_13, 7, 13},
00525 { 4, s_11_14, -1, 24},
00526 { 5, s_11_15, 14, 21},
00527 { 6, s_11_16, 15, 20},
00528 { 6, s_11_17, 14, 23},
00529 { 2, s_11_18, -1, 29},
00530 { 3, s_11_19, 18, 26},
00531 { 4, s_11_20, 19, 25},
00532 { 3, s_11_21, 18, 26},
00533 { 4, s_11_22, 21, 25},
00534 { 4, s_11_23, 18, 27},
00535 { 4, s_11_24, 18, 28},
00536 { 3, s_11_25, -1, 20},
00537 { 4, s_11_26, 25, 17},
00538 { 5, s_11_27, 26, 16},
00539 { 4, s_11_28, 25, 17},
00540 { 5, s_11_29, 28, 16},
00541 { 5, s_11_30, 25, 18},
00542 { 5, s_11_31, 25, 19},
00543 { 5, s_11_32, -1, 21},
00544 { 6, s_11_33, 32, 20},
00545 { 6, s_11_34, -1, 22},
00546 { 2, s_11_35, -1, 5},
00547 { 3, s_11_36, 35, 4},
00548 { 4, s_11_37, 36, 1},
00549 { 3, s_11_38, 35, 4},
00550 { 4, s_11_39, 38, 1},
00551 { 4, s_11_40, 35, 2},
00552 { 4, s_11_41, 35, 3}
00553 };
00554
00555 static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 52, 14 };
00556
00557 static const symbol s_0[] = { 'a' };
00558 static const symbol s_1[] = { 'e' };
00559 static const symbol s_2[] = { 'e' };
00560 static const symbol s_3[] = { 'a' };
00561 static const symbol s_4[] = { 'a' };
00562 static const symbol s_5[] = { 'a' };
00563 static const symbol s_6[] = { 'e' };
00564 static const symbol s_7[] = { 'a' };
00565 static const symbol s_8[] = { 'e' };
00566 static const symbol s_9[] = { 'e' };
00567 static const symbol s_10[] = { 'a' };
00568 static const symbol s_11[] = { 'e' };
00569 static const symbol s_12[] = { 'a' };
00570 static const symbol s_13[] = { 'e' };
00571 static const symbol s_14[] = { 'a' };
00572 static const symbol s_15[] = { 'e' };
00573 static const symbol s_16[] = { 'a' };
00574 static const symbol s_17[] = { 'e' };
00575 static const symbol s_18[] = { 'a' };
00576 static const symbol s_19[] = { 'e' };
00577 static const symbol s_20[] = { 'a' };
00578 static const symbol s_21[] = { 'e' };
00579 static const symbol s_22[] = { 'a' };
00580 static const symbol s_23[] = { 'e' };
00581 static const symbol s_24[] = { 'a' };
00582 static const symbol s_25[] = { 'e' };
00583 static const symbol s_26[] = { 'a' };
00584 static const symbol s_27[] = { 'e' };
00585 static const symbol s_28[] = { 'a' };
00586 static const symbol s_29[] = { 'e' };
00587 static const symbol s_30[] = { 'a' };
00588 static const symbol s_31[] = { 'e' };
00589 static const symbol s_32[] = { 'a' };
00590 static const symbol s_33[] = { 'e' };
00591 static const symbol s_34[] = { 'a' };
00592 static const symbol s_35[] = { 'e' };
00593
00594 int Xapian::InternalStemHungarian::r_mark_regions() {
00595 I_p1 = l;
00596 { int c1 = c;
00597 if (in_grouping_U(g_v, 97, 252, 0)) goto lab1;
00598 if (in_grouping_U(g_v, 97, 252, 1) < 0) goto lab1;
00599 { int c2 = c;
00600 if (c + 1 >= l || p[c + 1] >> 5 != 3 || !((101187584 >> (p[c + 1] & 0x1f)) & 1)) goto lab3;
00601 if (!(find_among(s_pool, a_0, 8, 0, 0))) goto lab3;
00602 goto lab2;
00603 lab3:
00604 c = c2;
00605 { int ret = skip_utf8(p, c, 0, l, 1);
00606 if (ret < 0) goto lab1;
00607 c = ret;
00608 }
00609 }
00610 lab2:
00611 I_p1 = c;
00612 goto lab0;
00613 lab1:
00614 c = c1;
00615 if (out_grouping_U(g_v, 97, 252, 0)) return 0;
00616 { int ret = out_grouping_U(g_v, 97, 252, 1);
00617 if (ret < 0) return 0;
00618 c += ret;
00619 }
00620 I_p1 = c;
00621 }
00622 lab0:
00623 return 1;
00624 }
00625
00626 int Xapian::InternalStemHungarian::r_R1() {
00627 if (!(I_p1 <= c)) return 0;
00628 return 1;
00629 }
00630
00631 int Xapian::InternalStemHungarian::r_v_ending() {
00632 int among_var;
00633 ket = c;
00634 if (c - 1 <= lb || (p[c - 1] != 161 && p[c - 1] != 169)) return 0;
00635 among_var = find_among_b(s_pool, a_1, 2, 0, 0);
00636 if (!(among_var)) return 0;
00637 bra = c;
00638 { int ret = r_R1();
00639 if (ret <= 0) return ret;
00640 }
00641 switch(among_var) {
00642 case 0: return 0;
00643 case 1:
00644 { int ret = slice_from_s(1, s_0);
00645 if (ret < 0) return ret;
00646 }
00647 break;
00648 case 2:
00649 { int ret = slice_from_s(1, s_1);
00650 if (ret < 0) return ret;
00651 }
00652 break;
00653 }
00654 return 1;
00655 }
00656
00657 int Xapian::InternalStemHungarian::r_double() {
00658 { int m_test1 = l - c;
00659 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((106790108 >> (p[c - 1] & 0x1f)) & 1)) return 0;
00660 if (!(find_among_b(s_pool, a_2, 23, 0, 0))) return 0;
00661 c = l - m_test1;
00662 }
00663 return 1;
00664 }
00665
00666 int Xapian::InternalStemHungarian::r_undouble() {
00667 { int ret = skip_utf8(p, c, lb, 0, -1);
00668 if (ret < 0) return 0;
00669 c = ret;
00670 }
00671 ket = c;
00672 { int ret = skip_utf8(p, c, lb, l, - 1);
00673 if (ret < 0) return 0;
00674 c = ret;
00675 }
00676 bra = c;
00677 if (slice_del() == -1) return -1;
00678 return 1;
00679 }
00680
00681 int Xapian::InternalStemHungarian::r_instrum() {
00682 int among_var;
00683 ket = c;
00684 if (c - 1 <= lb || p[c - 1] != 108) return 0;
00685 among_var = find_among_b(s_pool, a_3, 2, 0, 0);
00686 if (!(among_var)) return 0;
00687 bra = c;
00688 { int ret = r_R1();
00689 if (ret <= 0) return ret;
00690 }
00691 switch(among_var) {
00692 case 0: return 0;
00693 case 1:
00694 { int ret = r_double();
00695 if (ret <= 0) return ret;
00696 }
00697 break;
00698 case 2:
00699 { int ret = r_double();
00700 if (ret <= 0) return ret;
00701 }
00702 break;
00703 }
00704 if (slice_del() == -1) return -1;
00705 { int ret = r_undouble();
00706 if (ret <= 0) return ret;
00707 }
00708 return 1;
00709 }
00710
00711 int Xapian::InternalStemHungarian::r_case() {
00712 ket = c;
00713 if (!(find_among_b(s_pool, a_4, 44, 0, 0))) return 0;
00714 bra = c;
00715 { int ret = r_R1();
00716 if (ret <= 0) return ret;
00717 }
00718 if (slice_del() == -1) return -1;
00719 { int ret = r_v_ending();
00720 if (ret <= 0) return ret;
00721 }
00722 return 1;
00723 }
00724
00725 int Xapian::InternalStemHungarian::r_case_special() {
00726 int among_var;
00727 ket = c;
00728 if (c - 2 <= lb || (p[c - 1] != 110 && p[c - 1] != 116)) return 0;
00729 among_var = find_among_b(s_pool, a_5, 3, 0, 0);
00730 if (!(among_var)) return 0;
00731 bra = c;
00732 { int ret = r_R1();
00733 if (ret <= 0) return ret;
00734 }
00735 switch(among_var) {
00736 case 0: return 0;
00737 case 1:
00738 { int ret = slice_from_s(1, s_2);
00739 if (ret < 0) return ret;
00740 }
00741 break;
00742 case 2:
00743 { int ret = slice_from_s(1, s_3);
00744 if (ret < 0) return ret;
00745 }
00746 break;
00747 case 3:
00748 { int ret = slice_from_s(1, s_4);
00749 if (ret < 0) return ret;
00750 }
00751 break;
00752 }
00753 return 1;
00754 }
00755
00756 int Xapian::InternalStemHungarian::r_case_other() {
00757 int among_var;
00758 ket = c;
00759 if (c - 3 <= lb || p[c - 1] != 108) return 0;
00760 among_var = find_among_b(s_pool, a_6, 6, 0, 0);
00761 if (!(among_var)) return 0;
00762 bra = c;
00763 { int ret = r_R1();
00764 if (ret <= 0) return ret;
00765 }
00766 switch(among_var) {
00767 case 0: return 0;
00768 case 1:
00769 if (slice_del() == -1) return -1;
00770 break;
00771 case 2:
00772 if (slice_del() == -1) return -1;
00773 break;
00774 case 3:
00775 { int ret = slice_from_s(1, s_5);
00776 if (ret < 0) return ret;
00777 }
00778 break;
00779 case 4:
00780 { int ret = slice_from_s(1, s_6);
00781 if (ret < 0) return ret;
00782 }
00783 break;
00784 }
00785 return 1;
00786 }
00787
00788 int Xapian::InternalStemHungarian::r_factive() {
00789 int among_var;
00790 ket = c;
00791 if (c - 1 <= lb || (p[c - 1] != 161 && p[c - 1] != 169)) return 0;
00792 among_var = find_among_b(s_pool, a_7, 2, 0, 0);
00793 if (!(among_var)) return 0;
00794 bra = c;
00795 { int ret = r_R1();
00796 if (ret <= 0) return ret;
00797 }
00798 switch(among_var) {
00799 case 0: return 0;
00800 case 1:
00801 { int ret = r_double();
00802 if (ret <= 0) return ret;
00803 }
00804 break;
00805 case 2:
00806 { int ret = r_double();
00807 if (ret <= 0) return ret;
00808 }
00809 break;
00810 }
00811 if (slice_del() == -1) return -1;
00812 { int ret = r_undouble();
00813 if (ret <= 0) return ret;
00814 }
00815 return 1;
00816 }
00817
00818 int Xapian::InternalStemHungarian::r_plural() {
00819 int among_var;
00820 ket = c;
00821 if (c <= lb || p[c - 1] != 107) return 0;
00822 among_var = find_among_b(s_pool, a_8, 7, 0, 0);
00823 if (!(among_var)) return 0;
00824 bra = c;
00825 { int ret = r_R1();
00826 if (ret <= 0) return ret;
00827 }
00828 switch(among_var) {
00829 case 0: return 0;
00830 case 1:
00831 { int ret = slice_from_s(1, s_7);
00832 if (ret < 0) return ret;
00833 }
00834 break;
00835 case 2:
00836 { int ret = slice_from_s(1, s_8);
00837 if (ret < 0) return ret;
00838 }
00839 break;
00840 case 3:
00841 if (slice_del() == -1) return -1;
00842 break;
00843 case 4:
00844 if (slice_del() == -1) return -1;
00845 break;
00846 case 5:
00847 if (slice_del() == -1) return -1;
00848 break;
00849 case 6:
00850 if (slice_del() == -1) return -1;
00851 break;
00852 case 7:
00853 if (slice_del() == -1) return -1;
00854 break;
00855 }
00856 return 1;
00857 }
00858
00859 int Xapian::InternalStemHungarian::r_owned() {
00860 int among_var;
00861 ket = c;
00862 if (c - 1 <= lb || (p[c - 1] != 105 && p[c - 1] != 169)) return 0;
00863 among_var = find_among_b(s_pool, a_9, 12, 0, 0);
00864 if (!(among_var)) return 0;
00865 bra = c;
00866 { int ret = r_R1();
00867 if (ret <= 0) return ret;
00868 }
00869 switch(among_var) {
00870 case 0: return 0;
00871 case 1:
00872 if (slice_del() == -1) return -1;
00873 break;
00874 case 2:
00875 { int ret = slice_from_s(1, s_9);
00876 if (ret < 0) return ret;
00877 }
00878 break;
00879 case 3:
00880 { int ret = slice_from_s(1, s_10);
00881 if (ret < 0) return ret;
00882 }
00883 break;
00884 case 4:
00885 if (slice_del() == -1) return -1;
00886 break;
00887 case 5:
00888 { int ret = slice_from_s(1, s_11);
00889 if (ret < 0) return ret;
00890 }
00891 break;
00892 case 6:
00893 { int ret = slice_from_s(1, s_12);
00894 if (ret < 0) return ret;
00895 }
00896 break;
00897 case 7:
00898 if (slice_del() == -1) return -1;
00899 break;
00900 case 8:
00901 { int ret = slice_from_s(1, s_13);
00902 if (ret < 0) return ret;
00903 }
00904 break;
00905 case 9:
00906 if (slice_del() == -1) return -1;
00907 break;
00908 }
00909 return 1;
00910 }
00911
00912 int Xapian::InternalStemHungarian::r_sing_owner() {
00913 int among_var;
00914 ket = c;
00915 among_var = find_among_b(s_pool, a_10, 31, 0, 0);
00916 if (!(among_var)) return 0;
00917 bra = c;
00918 { int ret = r_R1();
00919 if (ret <= 0) return ret;
00920 }
00921 switch(among_var) {
00922 case 0: return 0;
00923 case 1:
00924 if (slice_del() == -1) return -1;
00925 break;
00926 case 2:
00927 { int ret = slice_from_s(1, s_14);
00928 if (ret < 0) return ret;
00929 }
00930 break;
00931 case 3:
00932 { int ret = slice_from_s(1, s_15);
00933 if (ret < 0) return ret;
00934 }
00935 break;
00936 case 4:
00937 if (slice_del() == -1) return -1;
00938 break;
00939 case 5:
00940 { int ret = slice_from_s(1, s_16);
00941 if (ret < 0) return ret;
00942 }
00943 break;
00944 case 6:
00945 { int ret = slice_from_s(1, s_17);
00946 if (ret < 0) return ret;
00947 }
00948 break;
00949 case 7:
00950 if (slice_del() == -1) return -1;
00951 break;
00952 case 8:
00953 if (slice_del() == -1) return -1;
00954 break;
00955 case 9:
00956 if (slice_del() == -1) return -1;
00957 break;
00958 case 10:
00959 { int ret = slice_from_s(1, s_18);
00960 if (ret < 0) return ret;
00961 }
00962 break;
00963 case 11:
00964 { int ret = slice_from_s(1, s_19);
00965 if (ret < 0) return ret;
00966 }
00967 break;
00968 case 12:
00969 if (slice_del() == -1) return -1;
00970 break;
00971 case 13:
00972 if (slice_del() == -1) return -1;
00973 break;
00974 case 14:
00975 { int ret = slice_from_s(1, s_20);
00976 if (ret < 0) return ret;
00977 }
00978 break;
00979 case 15:
00980 { int ret = slice_from_s(1, s_21);
00981 if (ret < 0) return ret;
00982 }
00983 break;
00984 case 16:
00985 if (slice_del() == -1) return -1;
00986 break;
00987 case 17:
00988 if (slice_del() == -1) return -1;
00989 break;
00990 case 18:
00991 if (slice_del() == -1) return -1;
00992 break;
00993 case 19:
00994 { int ret = slice_from_s(1, s_22);
00995 if (ret < 0) return ret;
00996 }
00997 break;
00998 case 20:
00999 { int ret = slice_from_s(1, s_23);
01000 if (ret < 0) return ret;
01001 }
01002 break;
01003 }
01004 return 1;
01005 }
01006
01007 int Xapian::InternalStemHungarian::r_plur_owner() {
01008 int among_var;
01009 ket = c;
01010 if (c <= lb || p[c - 1] >> 5 != 3 || !((10768 >> (p[c - 1] & 0x1f)) & 1)) return 0;
01011 among_var = find_among_b(s_pool, a_11, 42, 0, 0);
01012 if (!(among_var)) return 0;
01013 bra = c;
01014 { int ret = r_R1();
01015 if (ret <= 0) return ret;
01016 }
01017 switch(among_var) {
01018 case 0: return 0;
01019 case 1:
01020 if (slice_del() == -1) return -1;
01021 break;
01022 case 2:
01023 { int ret = slice_from_s(1, s_24);
01024 if (ret < 0) return ret;
01025 }
01026 break;
01027 case 3:
01028 { int ret = slice_from_s(1, s_25);
01029 if (ret < 0) return ret;
01030 }
01031 break;
01032 case 4:
01033 if (slice_del() == -1) return -1;
01034 break;
01035 case 5:
01036 if (slice_del() == -1) return -1;
01037 break;
01038 case 6:
01039 if (slice_del() == -1) return -1;
01040 break;
01041 case 7:
01042 { int ret = slice_from_s(1, s_26);
01043 if (ret < 0) return ret;
01044 }
01045 break;
01046 case 8:
01047 { int ret = slice_from_s(1, s_27);
01048 if (ret < 0) return ret;
01049 }
01050 break;
01051 case 9:
01052 if (slice_del() == -1) return -1;
01053 break;
01054 case 10:
01055 if (slice_del() == -1) return -1;
01056 break;
01057 case 11:
01058 if (slice_del() == -1) return -1;
01059 break;
01060 case 12:
01061 { int ret = slice_from_s(1, s_28);
01062 if (ret < 0) return ret;
01063 }
01064 break;
01065 case 13:
01066 { int ret = slice_from_s(1, s_29);
01067 if (ret < 0) return ret;
01068 }
01069 break;
01070 case 14:
01071 if (slice_del() == -1) return -1;
01072 break;
01073 case 15:
01074 if (slice_del() == -1) return -1;
01075 break;
01076 case 16:
01077 if (slice_del() == -1) return -1;
01078 break;
01079 case 17:
01080 if (slice_del() == -1) return -1;
01081 break;
01082 case 18:
01083 { int ret = slice_from_s(1, s_30);
01084 if (ret < 0) return ret;
01085 }
01086 break;
01087 case 19:
01088 { int ret = slice_from_s(1, s_31);
01089 if (ret < 0) return ret;
01090 }
01091 break;
01092 case 20:
01093 if (slice_del() == -1) return -1;
01094 break;
01095 case 21:
01096 if (slice_del() == -1) return -1;
01097 break;
01098 case 22:
01099 { int ret = slice_from_s(1, s_32);
01100 if (ret < 0) return ret;
01101 }
01102 break;
01103 case 23:
01104 { int ret = slice_from_s(1, s_33);
01105 if (ret < 0) return ret;
01106 }
01107 break;
01108 case 24:
01109 if (slice_del() == -1) return -1;
01110 break;
01111 case 25:
01112 if (slice_del() == -1) return -1;
01113 break;
01114 case 26:
01115 if (slice_del() == -1) return -1;
01116 break;
01117 case 27:
01118 { int ret = slice_from_s(1, s_34);
01119 if (ret < 0) return ret;
01120 }
01121 break;
01122 case 28:
01123 { int ret = slice_from_s(1, s_35);
01124 if (ret < 0) return ret;
01125 }
01126 break;
01127 case 29:
01128 if (slice_del() == -1) return -1;
01129 break;
01130 }
01131 return 1;
01132 }
01133
01134 int Xapian::InternalStemHungarian::stem() {
01135 { int c1 = c;
01136 { int ret = r_mark_regions();
01137 if (ret == 0) goto lab0;
01138 if (ret < 0) return ret;
01139 }
01140 lab0:
01141 c = c1;
01142 }
01143 lb = c; c = l;
01144
01145 { int m2 = l - c; (void)m2;
01146 { int ret = r_instrum();
01147 if (ret == 0) goto lab1;
01148 if (ret < 0) return ret;
01149 }
01150 lab1:
01151 c = l - m2;
01152 }
01153 { int m3 = l - c; (void)m3;
01154 { int ret = r_case();
01155 if (ret == 0) goto lab2;
01156 if (ret < 0) return ret;
01157 }
01158 lab2:
01159 c = l - m3;
01160 }
01161 { int m4 = l - c; (void)m4;
01162 { int ret = r_case_special();
01163 if (ret == 0) goto lab3;
01164 if (ret < 0) return ret;
01165 }
01166 lab3:
01167 c = l - m4;
01168 }
01169 { int m5 = l - c; (void)m5;
01170 { int ret = r_case_other();
01171 if (ret == 0) goto lab4;
01172 if (ret < 0) return ret;
01173 }
01174 lab4:
01175 c = l - m5;
01176 }
01177 { int m6 = l - c; (void)m6;
01178 { int ret = r_factive();
01179 if (ret == 0) goto lab5;
01180 if (ret < 0) return ret;
01181 }
01182 lab5:
01183 c = l - m6;
01184 }
01185 { int m7 = l - c; (void)m7;
01186 { int ret = r_owned();
01187 if (ret == 0) goto lab6;
01188 if (ret < 0) return ret;
01189 }
01190 lab6:
01191 c = l - m7;
01192 }
01193 { int m8 = l - c; (void)m8;
01194 { int ret = r_sing_owner();
01195 if (ret == 0) goto lab7;
01196 if (ret < 0) return ret;
01197 }
01198 lab7:
01199 c = l - m8;
01200 }
01201 { int m9 = l - c; (void)m9;
01202 { int ret = r_plur_owner();
01203 if (ret == 0) goto lab8;
01204 if (ret < 0) return ret;
01205 }
01206 lab8:
01207 c = l - m9;
01208 }
01209 { int m10 = l - c; (void)m10;
01210 { int ret = r_plural();
01211 if (ret == 0) goto lab9;
01212 if (ret < 0) return ret;
01213 }
01214 lab9:
01215 c = l - m10;
01216 }
01217 c = lb;
01218 return 1;
01219 }
01220
01221 Xapian::InternalStemHungarian::InternalStemHungarian()
01222 : I_p1(0)
01223 {
01224 }
01225
01226 Xapian::InternalStemHungarian::~InternalStemHungarian()
01227 {
01228 }
01229
01230 std::string
01231 Xapian::InternalStemHungarian::get_description() const
01232 {
01233 return "hungarian";
01234 }