LCOV - code coverage report
Current view: top level - languages - finnish.cc (source / functions) Hit Total Coverage
Test: Test Coverage for xapian-core eba1a2e3082b Lines: 289 296 97.6 %
Date: 2019-06-13 13:35:36 Functions: 17 17 100.0 %
Branches: 207 263 78.7 %

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

Generated by: LCOV version 1.11