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 1663 of file stem_UTF_8_arabic.c.

1663 { SN_close_env(z, 0); }
void SN_close_env(struct SN_env *z, int S_size)
Definition: api.c:34

References SN_close_env().

◆ arabic_UTF_8_create_env()

struct SN_env* arabic_UTF_8_create_env ( void  )

Definition at line 1661 of file stem_UTF_8_arabic.c.

1661 { return SN_create_env(0, 3); }
struct SN_env * SN_create_env(int S_size, int I_size)
Definition: api.c:3

References SN_create_env().

◆ arabic_UTF_8_stem()

int arabic_UTF_8_stem ( struct SN_env z)

Definition at line 1414 of file stem_UTF_8_arabic.c.

1414  {
1415  z->I[2] = 1;
1416  z->I[1] = 1;
1417  z->I[0] = 0;
1418  { int c1 = z->c;
1419  { int ret = r_Checks1(z);
1420  if (ret < 0) return ret;
1421  }
1422  z->c = c1;
1423  }
1424 
1425  { int ret = r_Normalize_pre(z);
1426  if (ret < 0) return ret;
1427  }
1428  z->lb = z->c; z->c = z->l;
1429 
1430  { int m2 = z->l - z->c; (void)m2;
1431  { int m3 = z->l - z->c; (void)m3;
1432  if (!(z->I[1])) goto lab2;
1433  { int m4 = z->l - z->c; (void)m4;
1434  { int i = 1;
1435  while(1) {
1436  int m5 = z->l - z->c; (void)m5;
1437  { int ret = r_Suffix_Verb_Step1(z);
1438  if (ret == 0) goto lab5;
1439  if (ret < 0) return ret;
1440  }
1441  i--;
1442  continue;
1443  lab5:
1444  z->c = z->l - m5;
1445  break;
1446  }
1447  if (i > 0) goto lab4;
1448  }
1449  { int m6 = z->l - z->c; (void)m6;
1450  { int ret = r_Suffix_Verb_Step2a(z);
1451  if (ret == 0) goto lab7;
1452  if (ret < 0) return ret;
1453  }
1454  goto lab6;
1455  lab7:
1456  z->c = z->l - m6;
1457  { int ret = r_Suffix_Verb_Step2c(z);
1458  if (ret == 0) goto lab8;
1459  if (ret < 0) return ret;
1460  }
1461  goto lab6;
1462  lab8:
1463  z->c = z->l - m6;
1464  { int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
1465  if (ret < 0) goto lab4;
1466  z->c = ret;
1467  }
1468  }
1469  lab6:
1470  goto lab3;
1471  lab4:
1472  z->c = z->l - m4;
1473  { int ret = r_Suffix_Verb_Step2b(z);
1474  if (ret == 0) goto lab9;
1475  if (ret < 0) return ret;
1476  }
1477  goto lab3;
1478  lab9:
1479  z->c = z->l - m4;
1480  { int ret = r_Suffix_Verb_Step2a(z);
1481  if (ret == 0) goto lab2;
1482  if (ret < 0) return ret;
1483  }
1484  }
1485  lab3:
1486  goto lab1;
1487  lab2:
1488  z->c = z->l - m3;
1489  if (!(z->I[2])) goto lab10;
1490  { int m7 = z->l - z->c; (void)m7;
1491  { int m8 = z->l - z->c; (void)m8;
1492  { int ret = r_Suffix_Noun_Step2c2(z);
1493  if (ret == 0) goto lab13;
1494  if (ret < 0) return ret;
1495  }
1496  goto lab12;
1497  lab13:
1498  z->c = z->l - m8;
1499 
1500  if (!(z->I[0])) goto lab15;
1501  goto lab14;
1502  lab15:
1503  { int ret = r_Suffix_Noun_Step1a(z);
1504  if (ret == 0) goto lab14;
1505  if (ret < 0) return ret;
1506  }
1507  { int m9 = z->l - z->c; (void)m9;
1508  { int ret = r_Suffix_Noun_Step2a(z);
1509  if (ret == 0) goto lab17;
1510  if (ret < 0) return ret;
1511  }
1512  goto lab16;
1513  lab17:
1514  z->c = z->l - m9;
1515  { int ret = r_Suffix_Noun_Step2b(z);
1516  if (ret == 0) goto lab18;
1517  if (ret < 0) return ret;
1518  }
1519  goto lab16;
1520  lab18:
1521  z->c = z->l - m9;
1522  { int ret = r_Suffix_Noun_Step2c1(z);
1523  if (ret == 0) goto lab19;
1524  if (ret < 0) return ret;
1525  }
1526  goto lab16;
1527  lab19:
1528  z->c = z->l - m9;
1529  { int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
1530  if (ret < 0) goto lab14;
1531  z->c = ret;
1532  }
1533  }
1534  lab16:
1535  goto lab12;
1536  lab14:
1537  z->c = z->l - m8;
1538  { int ret = r_Suffix_Noun_Step1b(z);
1539  if (ret == 0) goto lab20;
1540  if (ret < 0) return ret;
1541  }
1542  { int m10 = z->l - z->c; (void)m10;
1543  { int ret = r_Suffix_Noun_Step2a(z);
1544  if (ret == 0) goto lab22;
1545  if (ret < 0) return ret;
1546  }
1547  goto lab21;
1548  lab22:
1549  z->c = z->l - m10;
1550  { int ret = r_Suffix_Noun_Step2b(z);
1551  if (ret == 0) goto lab23;
1552  if (ret < 0) return ret;
1553  }
1554  goto lab21;
1555  lab23:
1556  z->c = z->l - m10;
1557  { int ret = r_Suffix_Noun_Step2c1(z);
1558  if (ret == 0) goto lab20;
1559  if (ret < 0) return ret;
1560  }
1561  }
1562  lab21:
1563  goto lab12;
1564  lab20:
1565  z->c = z->l - m8;
1566 
1567  if (!(z->I[0])) goto lab25;
1568  goto lab24;
1569  lab25:
1570  { int ret = r_Suffix_Noun_Step2a(z);
1571  if (ret == 0) goto lab24;
1572  if (ret < 0) return ret;
1573  }
1574  goto lab12;
1575  lab24:
1576  z->c = z->l - m8;
1577  { int ret = r_Suffix_Noun_Step2b(z);
1578  if (ret == 0) { z->c = z->l - m7; goto lab11; }
1579  if (ret < 0) return ret;
1580  }
1581  }
1582  lab12:
1583  lab11:
1584  ;
1585  }
1586  { int ret = r_Suffix_Noun_Step3(z);
1587  if (ret == 0) goto lab10;
1588  if (ret < 0) return ret;
1589  }
1590  goto lab1;
1591  lab10:
1592  z->c = z->l - m3;
1593  { int ret = r_Suffix_All_alef_maqsura(z);
1594  if (ret == 0) goto lab0;
1595  if (ret < 0) return ret;
1596  }
1597  }
1598  lab1:
1599  lab0:
1600  z->c = z->l - m2;
1601  }
1602  z->c = z->lb;
1603  { int c11 = z->c;
1604  { int c12 = z->c;
1605  { int ret = r_Prefix_Step1(z);
1606  if (ret == 0) { z->c = c12; goto lab27; }
1607  if (ret < 0) return ret;
1608  }
1609  lab27:
1610  ;
1611  }
1612  { int c13 = z->c;
1613  { int ret = r_Prefix_Step2(z);
1614  if (ret == 0) { z->c = c13; goto lab28; }
1615  if (ret < 0) return ret;
1616  }
1617  lab28:
1618  ;
1619  }
1620  { int c14 = z->c;
1621  { int ret = r_Prefix_Step3a_Noun(z);
1622  if (ret == 0) goto lab30;
1623  if (ret < 0) return ret;
1624  }
1625  goto lab29;
1626  lab30:
1627  z->c = c14;
1628  if (!(z->I[2])) goto lab31;
1629  { int ret = r_Prefix_Step3b_Noun(z);
1630  if (ret == 0) goto lab31;
1631  if (ret < 0) return ret;
1632  }
1633  goto lab29;
1634  lab31:
1635  z->c = c14;
1636  if (!(z->I[1])) goto lab26;
1637  { int c15 = z->c;
1638  { int ret = r_Prefix_Step3_Verb(z);
1639  if (ret == 0) { z->c = c15; goto lab32; }
1640  if (ret < 0) return ret;
1641  }
1642  lab32:
1643  ;
1644  }
1645  { int ret = r_Prefix_Step4_Verb(z);
1646  if (ret == 0) goto lab26;
1647  if (ret < 0) return ret;
1648  }
1649  }
1650  lab29:
1651  lab26:
1652  z->c = c11;
1653  }
1654 
1655  { int ret = r_Normalize_post(z);
1656  if (ret < 0) return ret;
1657  }
1658  return 1;
1659 }
int i
Definition: isn.c:73
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 lb
Definition: api.h:16
symbol * p
Definition: api.h:15
int * I
Definition: api.h:18
int c
Definition: api.h:16
int l
Definition: api.h:16
int skip_b_utf8(const symbol *p, int c, int limit, int n)
Definition: utilities.c:52

References SN_env::c, i, SN_env::I, SN_env::l, SN_env::lb, SN_env::p, 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().