PostgreSQL Source Code git master
stem_UTF_8_indonesian.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

struct SN_envindonesian_UTF_8_create_env (void)
 
void indonesian_UTF_8_close_env (struct SN_env *z)
 
int indonesian_UTF_8_stem (struct SN_env *z)
 

Function Documentation

◆ indonesian_UTF_8_close_env()

void indonesian_UTF_8_close_env ( struct SN_env z)

Definition at line 465 of file stem_UTF_8_indonesian.c.

465 {
466 SN_delete_env(z);
467}
void SN_delete_env(struct SN_env *z)
Definition: api.c:18

References SN_delete_env().

◆ indonesian_UTF_8_create_env()

struct SN_env * indonesian_UTF_8_create_env ( void  )

Definition at line 456 of file stem_UTF_8_indonesian.c.

456 {
457 struct SN_env * z = SN_new_env(sizeof(SN_local));
458 if (z) {
459 ((SN_local *)z)->i_prefix = 0;
460 ((SN_local *)z)->i_measure = 0;
461 }
462 return z;
463}
struct SN_env * SN_new_env(int alloc_size)
Definition: api.c:5
Definition: api.h:15

References SN_new_env().

◆ indonesian_UTF_8_stem()

int indonesian_UTF_8_stem ( struct SN_env z)

Definition at line 353 of file stem_UTF_8_indonesian.c.

353 {
354 ((SN_local *)z)->i_measure = 0;
355 {
356 int v_1 = z->c;
357 while (1) {
358 int v_2 = z->c;
359 {
360 int ret = out_grouping_U(z, g_vowel, 97, 117, 1);
361 if (ret < 0) goto lab1;
362 z->c += ret;
363 }
364 ((SN_local *)z)->i_measure += 1;
365 continue;
366 lab1:
367 z->c = v_2;
368 break;
369 }
370 z->c = v_1;
371 }
372 if (((SN_local *)z)->i_measure <= 2) return 0;
373 ((SN_local *)z)->i_prefix = 0;
374 z->lb = z->c; z->c = z->l;
375 {
376 int v_3 = z->l - z->c;
377 {
378 int ret = r_remove_particle(z);
379 if (ret < 0) return ret;
380 }
381 z->c = z->l - v_3;
382 }
383 if (((SN_local *)z)->i_measure <= 2) return 0;
384 {
385 int v_4 = z->l - z->c;
386 {
387 int ret = r_remove_possessive_pronoun(z);
388 if (ret < 0) return ret;
389 }
390 z->c = z->l - v_4;
391 }
392 z->c = z->lb;
393 if (((SN_local *)z)->i_measure <= 2) return 0;
394 do {
395 int v_5 = z->c;
396 {
397 int v_6 = z->c;
398 {
399 int ret = r_remove_first_order_prefix(z);
400 if (ret == 0) goto lab2;
401 if (ret < 0) return ret;
402 }
403 {
404 int v_7 = z->c;
405 {
406 int v_8 = z->c;
407 if (((SN_local *)z)->i_measure <= 2) goto lab3;
408 z->lb = z->c; z->c = z->l;
409 {
410 int ret = r_remove_suffix(z);
411 if (ret == 0) goto lab3;
412 if (ret < 0) return ret;
413 }
414 z->c = z->lb;
415 z->c = v_8;
416 }
417 if (((SN_local *)z)->i_measure <= 2) goto lab3;
418 {
419 int ret = r_remove_second_order_prefix(z);
420 if (ret == 0) goto lab3;
421 if (ret < 0) return ret;
422 }
423 lab3:
424 z->c = v_7;
425 }
426 z->c = v_6;
427 }
428 break;
429 lab2:
430 z->c = v_5;
431 {
432 int v_9 = z->c;
433 {
434 int ret = r_remove_second_order_prefix(z);
435 if (ret < 0) return ret;
436 }
437 z->c = v_9;
438 }
439 {
440 int v_10 = z->c;
441 if (((SN_local *)z)->i_measure <= 2) goto lab4;
442 z->lb = z->c; z->c = z->l;
443 {
444 int ret = r_remove_suffix(z);
445 if (ret == 0) goto lab4;
446 if (ret < 0) return ret;
447 }
448 z->c = z->lb;
449 lab4:
450 z->c = v_10;
451 }
452 } while (0);
453 return 1;
454}
static int r_remove_particle(struct SN_env *z)
static int r_remove_first_order_prefix(struct SN_env *z)
static int r_remove_suffix(struct SN_env *z)
static int r_remove_possessive_pronoun(struct SN_env *z)
static int r_remove_second_order_prefix(struct SN_env *z)
static const unsigned char g_vowel[]
int out_grouping_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition: utilities.c:157

References SN_env::c, g_vowel, SN_env::l, SN_env::lb, out_grouping_U(), r_remove_first_order_prefix(), r_remove_particle(), r_remove_possessive_pronoun(), r_remove_second_order_prefix(), and r_remove_suffix().