PostgreSQL Source Code git master
stem_UTF_8_arabic.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_envarabic_UTF_8_create_env (void)
 
void arabic_UTF_8_close_env (struct SN_env *z)
 
int arabic_UTF_8_stem (struct SN_env *z)
 

Function Documentation

◆ arabic_UTF_8_close_env()

void arabic_UTF_8_close_env ( struct SN_env z)

Definition at line 1723 of file stem_UTF_8_arabic.c.

1723 {
1724 SN_delete_env(z);
1725}
void SN_delete_env(struct SN_env *z)
Definition: api.c:18

References SN_delete_env().

◆ arabic_UTF_8_create_env()

struct SN_env * arabic_UTF_8_create_env ( void  )

Definition at line 1713 of file stem_UTF_8_arabic.c.

1713 {
1714 struct SN_env * z = SN_new_env(sizeof(SN_local));
1715 if (z) {
1716 ((SN_local *)z)->b_is_defined = 0;
1717 ((SN_local *)z)->b_is_verb = 0;
1718 ((SN_local *)z)->b_is_noun = 0;
1719 }
1720 return z;
1721}
struct SN_env * SN_new_env(int alloc_size)
Definition: api.c:5
Definition: api.h:15

References SN_new_env().

◆ arabic_UTF_8_stem()

int arabic_UTF_8_stem ( struct SN_env z)

Definition at line 1438 of file stem_UTF_8_arabic.c.

1438 {
1439 ((SN_local *)z)->b_is_noun = 1;
1440 ((SN_local *)z)->b_is_verb = 1;
1441 ((SN_local *)z)->b_is_defined = 0;
1442 {
1443 int v_1 = z->c;
1444 {
1445 int ret = r_Checks1(z);
1446 if (ret < 0) return ret;
1447 }
1448 z->c = v_1;
1449 }
1450 {
1451 int ret = r_Normalize_pre(z);
1452 if (ret < 0) return ret;
1453 }
1454 z->lb = z->c; z->c = z->l;
1455 {
1456 int v_2 = z->l - z->c;
1457 do {
1458 int v_3 = z->l - z->c;
1459 if (!((SN_local *)z)->b_is_verb) goto lab1;
1460 do {
1461 int v_4 = z->l - z->c;
1462 {
1463 int v_5 = 1;
1464 while (1) {
1465 int v_6 = z->l - z->c;
1466 {
1467 int ret = r_Suffix_Verb_Step1(z);
1468 if (ret == 0) goto lab3;
1469 if (ret < 0) return ret;
1470 }
1471 v_5--;
1472 continue;
1473 lab3:
1474 z->c = z->l - v_6;
1475 break;
1476 }
1477 if (v_5 > 0) goto lab2;
1478 }
1479 do {
1480 int v_7 = z->l - z->c;
1481 {
1482 int ret = r_Suffix_Verb_Step2a(z);
1483 if (ret == 0) goto lab4;
1484 if (ret < 0) return ret;
1485 }
1486 break;
1487 lab4:
1488 z->c = z->l - v_7;
1489 {
1490 int ret = r_Suffix_Verb_Step2c(z);
1491 if (ret == 0) goto lab5;
1492 if (ret < 0) return ret;
1493 }
1494 break;
1495 lab5:
1496 z->c = z->l - v_7;
1497 {
1498 int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
1499 if (ret < 0) goto lab2;
1500 z->c = ret;
1501 }
1502 } while (0);
1503 break;
1504 lab2:
1505 z->c = z->l - v_4;
1506 {
1507 int ret = r_Suffix_Verb_Step2b(z);
1508 if (ret == 0) goto lab6;
1509 if (ret < 0) return ret;
1510 }
1511 break;
1512 lab6:
1513 z->c = z->l - v_4;
1514 {
1515 int ret = r_Suffix_Verb_Step2a(z);
1516 if (ret == 0) goto lab1;
1517 if (ret < 0) return ret;
1518 }
1519 } while (0);
1520 break;
1521 lab1:
1522 z->c = z->l - v_3;
1523 if (!((SN_local *)z)->b_is_noun) goto lab7;
1524 {
1525 int v_8 = z->l - z->c;
1526 do {
1527 int v_9 = z->l - z->c;
1528 {
1529 int ret = r_Suffix_Noun_Step2c2(z);
1530 if (ret == 0) goto lab9;
1531 if (ret < 0) return ret;
1532 }
1533 break;
1534 lab9:
1535 z->c = z->l - v_9;
1536 if (((SN_local *)z)->b_is_defined) goto lab10;
1537 {
1538 int ret = r_Suffix_Noun_Step1a(z);
1539 if (ret == 0) goto lab10;
1540 if (ret < 0) return ret;
1541 }
1542 do {
1543 int v_10 = z->l - z->c;
1544 {
1545 int ret = r_Suffix_Noun_Step2a(z);
1546 if (ret == 0) goto lab11;
1547 if (ret < 0) return ret;
1548 }
1549 break;
1550 lab11:
1551 z->c = z->l - v_10;
1552 {
1553 int ret = r_Suffix_Noun_Step2b(z);
1554 if (ret == 0) goto lab12;
1555 if (ret < 0) return ret;
1556 }
1557 break;
1558 lab12:
1559 z->c = z->l - v_10;
1560 {
1561 int ret = r_Suffix_Noun_Step2c1(z);
1562 if (ret == 0) goto lab13;
1563 if (ret < 0) return ret;
1564 }
1565 break;
1566 lab13:
1567 z->c = z->l - v_10;
1568 {
1569 int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
1570 if (ret < 0) goto lab10;
1571 z->c = ret;
1572 }
1573 } while (0);
1574 break;
1575 lab10:
1576 z->c = z->l - v_9;
1577 {
1578 int ret = r_Suffix_Noun_Step1b(z);
1579 if (ret == 0) goto lab14;
1580 if (ret < 0) return ret;
1581 }
1582 do {
1583 int v_11 = z->l - z->c;
1584 {
1585 int ret = r_Suffix_Noun_Step2a(z);
1586 if (ret == 0) goto lab15;
1587 if (ret < 0) return ret;
1588 }
1589 break;
1590 lab15:
1591 z->c = z->l - v_11;
1592 {
1593 int ret = r_Suffix_Noun_Step2b(z);
1594 if (ret == 0) goto lab16;
1595 if (ret < 0) return ret;
1596 }
1597 break;
1598 lab16:
1599 z->c = z->l - v_11;
1600 {
1601 int ret = r_Suffix_Noun_Step2c1(z);
1602 if (ret == 0) goto lab14;
1603 if (ret < 0) return ret;
1604 }
1605 } while (0);
1606 break;
1607 lab14:
1608 z->c = z->l - v_9;
1609 if (((SN_local *)z)->b_is_defined) goto lab17;
1610 {
1611 int ret = r_Suffix_Noun_Step2a(z);
1612 if (ret == 0) goto lab17;
1613 if (ret < 0) return ret;
1614 }
1615 break;
1616 lab17:
1617 z->c = z->l - v_9;
1618 {
1619 int ret = r_Suffix_Noun_Step2b(z);
1620 if (ret == 0) { z->c = z->l - v_8; goto lab8; }
1621 if (ret < 0) return ret;
1622 }
1623 } while (0);
1624 lab8:
1625 ;
1626 }
1627 {
1628 int ret = r_Suffix_Noun_Step3(z);
1629 if (ret == 0) goto lab7;
1630 if (ret < 0) return ret;
1631 }
1632 break;
1633 lab7:
1634 z->c = z->l - v_3;
1635 {
1636 int ret = r_Suffix_All_alef_maqsura(z);
1637 if (ret == 0) goto lab0;
1638 if (ret < 0) return ret;
1639 }
1640 } while (0);
1641 lab0:
1642 z->c = z->l - v_2;
1643 }
1644 z->c = z->lb;
1645 {
1646 int v_12 = z->c;
1647 {
1648 int v_13 = z->c;
1649 {
1650 int ret = r_Prefix_Step1(z);
1651 if (ret == 0) { z->c = v_13; goto lab19; }
1652 if (ret < 0) return ret;
1653 }
1654 lab19:
1655 ;
1656 }
1657 {
1658 int v_14 = z->c;
1659 {
1660 int ret = r_Prefix_Step2(z);
1661 if (ret == 0) { z->c = v_14; goto lab20; }
1662 if (ret < 0) return ret;
1663 }
1664 lab20:
1665 ;
1666 }
1667 do {
1668 int v_15 = z->c;
1669 {
1670 int ret = r_Prefix_Step3a_Noun(z);
1671 if (ret == 0) goto lab21;
1672 if (ret < 0) return ret;
1673 }
1674 break;
1675 lab21:
1676 z->c = v_15;
1677 if (!((SN_local *)z)->b_is_noun) goto lab22;
1678 {
1679 int ret = r_Prefix_Step3b_Noun(z);
1680 if (ret == 0) goto lab22;
1681 if (ret < 0) return ret;
1682 }
1683 break;
1684 lab22:
1685 z->c = v_15;
1686 if (!((SN_local *)z)->b_is_verb) goto lab18;
1687 {
1688 int v_16 = z->c;
1689 {
1690 int ret = r_Prefix_Step3_Verb(z);
1691 if (ret == 0) { z->c = v_16; goto lab23; }
1692 if (ret < 0) return ret;
1693 }
1694 lab23:
1695 ;
1696 }
1697 {
1698 int ret = r_Prefix_Step4_Verb(z);
1699 if (ret == 0) goto lab18;
1700 if (ret < 0) return ret;
1701 }
1702 } while (0);
1703 lab18:
1704 z->c = v_12;
1705 }
1706 {
1707 int ret = r_Normalize_post(z);
1708 if (ret < 0) return ret;
1709 }
1710 return 1;
1711}
static int r_Prefix_Step2(struct SN_env *z)
static int r_Prefix_Step3b_Noun(struct SN_env *z)
static int r_Suffix_Noun_Step2c2(struct SN_env *z)
static int r_Prefix_Step3a_Noun(struct SN_env *z)
static int r_Suffix_Noun_Step2c1(struct SN_env *z)
static int r_Suffix_Verb_Step2c(struct SN_env *z)
static int r_Suffix_Verb_Step2b(struct SN_env *z)
static int r_Prefix_Step1(struct SN_env *z)
static int r_Suffix_Verb_Step1(struct SN_env *z)
static int r_Checks1(struct SN_env *z)
static int r_Suffix_Noun_Step3(struct SN_env *z)
static int r_Prefix_Step4_Verb(struct SN_env *z)
static int r_Prefix_Step3_Verb(struct SN_env *z)
static int r_Normalize_pre(struct SN_env *z)
static int r_Suffix_Noun_Step2a(struct SN_env *z)
static int r_Suffix_Verb_Step2a(struct SN_env *z)
static int r_Suffix_Noun_Step1a(struct SN_env *z)
static int r_Suffix_Noun_Step1b(struct SN_env *z)
static int r_Suffix_All_alef_maqsura(struct SN_env *z)
static int r_Suffix_Noun_Step2b(struct SN_env *z)
static int r_Normalize_post(struct SN_env *z)
int skip_b_utf8(const symbol *p, int c, int limit, int n)
Definition: utilities.c:68

References SN_env::c, SN_env::l, SN_env::lb, r_Checks1(), r_Normalize_post(), r_Normalize_pre(), r_Prefix_Step1(), r_Prefix_Step2(), r_Prefix_Step3_Verb(), r_Prefix_Step3a_Noun(), r_Prefix_Step3b_Noun(), r_Prefix_Step4_Verb(), r_Suffix_All_alef_maqsura(), r_Suffix_Noun_Step1a(), r_Suffix_Noun_Step1b(), r_Suffix_Noun_Step2a(), r_Suffix_Noun_Step2b(), r_Suffix_Noun_Step2c1(), r_Suffix_Noun_Step2c2(), r_Suffix_Noun_Step3(), r_Suffix_Verb_Step1(), r_Suffix_Verb_Step2a(), r_Suffix_Verb_Step2b(), r_Suffix_Verb_Step2c(), and skip_b_utf8().