/[pcre]/code/trunk/pcre_dfa_exec.c
ViewVC logotype

Diff of /code/trunk/pcre_dfa_exec.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1015 by ph10, Sun Aug 26 16:07:14 2012 UTC revision 1046 by ph10, Tue Sep 25 16:27:58 2012 UTC
# Line 1060  for (;;) Line 1060  for (;;)
1060        if (clen > 0)        if (clen > 0)
1061          {          {
1062          BOOL OK;          BOOL OK;
1063            const pcre_uint32 *cp;
1064          const ucd_record * prop = GET_UCD(c);          const ucd_record * prop = GET_UCD(c);
1065          switch(code[1])          switch(code[1])
1066            {            {
# Line 1107  for (;;) Line 1108  for (;;)
1108                 PRIV(ucp_gentype)[prop->chartype] == ucp_N ||                 PRIV(ucp_gentype)[prop->chartype] == ucp_N ||
1109                 c == CHAR_UNDERSCORE;                 c == CHAR_UNDERSCORE;
1110            break;            break;
1111    
1112              case PT_CLIST:
1113              cp = PRIV(ucd_caseless_sets) + prop->caseset;
1114              for (;;)
1115                {
1116                if (c < *cp) { OK = FALSE; break; }
1117                if (c == *cp++) { OK = TRUE; break; }
1118                }
1119              break;
1120    
1121            /* Should never occur, but keep compilers from grumbling. */            /* Should never occur, but keep compilers from grumbling. */
1122    
# Line 1294  for (;;) Line 1304  for (;;)
1304        if (clen > 0)        if (clen > 0)
1305          {          {
1306          BOOL OK;          BOOL OK;
1307            const pcre_uint32 *cp;
1308          const ucd_record * prop = GET_UCD(c);          const ucd_record * prop = GET_UCD(c);
1309          switch(code[2])          switch(code[2])
1310            {            {
# Line 1342  for (;;) Line 1353  for (;;)
1353                 c == CHAR_UNDERSCORE;                 c == CHAR_UNDERSCORE;
1354            break;            break;
1355    
1356              case PT_CLIST:
1357              cp = PRIV(ucd_caseless_sets) + prop->caseset;
1358              for (;;)
1359                {
1360                if (c < *cp) { OK = FALSE; break; }
1361                if (c == *cp++) { OK = TRUE; break; }
1362                }
1363              break;
1364    
1365            /* Should never occur, but keep compilers from grumbling. */            /* Should never occur, but keep compilers from grumbling. */
1366    
1367            default:            default:
# Line 1370  for (;;) Line 1390  for (;;)
1390        if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }        if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
1391        if (clen > 0)        if (clen > 0)
1392          {          {
1393          int lgb, rgb;          int lgb, rgb;
1394          const pcre_uchar *nptr = ptr + clen;          const pcre_uchar *nptr = ptr + clen;
1395          int ncount = 0;          int ncount = 0;
1396          if (count > 0 && codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSPLUS)          if (count > 0 && codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSPLUS)
# Line 1378  for (;;) Line 1398  for (;;)
1398            active_count--;           /* Remove non-match possibility */            active_count--;           /* Remove non-match possibility */
1399            next_active_state--;            next_active_state--;
1400            }            }
1401          lgb = UCD_GRAPHBREAK(c);          lgb = UCD_GRAPHBREAK(c);
1402          while (nptr < end_subject)          while (nptr < end_subject)
1403            {            {
1404            dlen = 1;            dlen = 1;
1405            if (!utf) d = *nptr; else { GETCHARLEN(d, nptr, dlen); }            if (!utf) d = *nptr; else { GETCHARLEN(d, nptr, dlen); }
1406            rgb = UCD_GRAPHBREAK(d);            rgb = UCD_GRAPHBREAK(d);
1407            if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;            if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;
1408            ncount++;            ncount++;
1409            lgb = rgb;            lgb = rgb;
1410            nptr += dlen;            nptr += dlen;
1411            }            }
1412          count++;          count++;
# Line 1406  for (;;) Line 1426  for (;;)
1426          int ncount = 0;          int ncount = 0;
1427          switch (c)          switch (c)
1428            {            {
1429            case 0x000b:            case CHAR_VT:
1430            case 0x000c:            case CHAR_FF:
1431            case 0x0085:            case CHAR_NEL:
1432    #ifndef EBCDIC
1433            case 0x2028:            case 0x2028:
1434            case 0x2029:            case 0x2029:
1435    #endif  /* Not EBCDIC */
1436            if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break;            if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break;
1437            goto ANYNL01;            goto ANYNL01;
1438    
1439            case 0x000d:            case CHAR_CR:
1440            if (ptr + 1 < end_subject && ptr[1] == 0x0a) ncount = 1;            if (ptr + 1 < end_subject && ptr[1] == CHAR_LF) ncount = 1;
1441            /* Fall through */            /* Fall through */
1442    
1443            ANYNL01:            ANYNL01:
1444            case 0x000a:            case CHAR_LF:
1445            if (count > 0 && codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSPLUS)            if (count > 0 && codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSPLUS)
1446              {              {
1447              active_count--;           /* Remove non-match possibility */              active_count--;           /* Remove non-match possibility */
# Line 1446  for (;;) Line 1468  for (;;)
1468          BOOL OK;          BOOL OK;
1469          switch (c)          switch (c)
1470            {            {
1471            case 0x000a:            VSPACE_CASES:
           case 0x000b:  
           case 0x000c:  
           case 0x000d:  
           case 0x0085:  
           case 0x2028:  
           case 0x2029:  
1472            OK = TRUE;            OK = TRUE;
1473            break;            break;
1474    
# Line 1485  for (;;) Line 1501  for (;;)
1501          BOOL OK;          BOOL OK;
1502          switch (c)          switch (c)
1503            {            {
1504            case 0x09:      /* HT */            HSPACE_CASES:
           case 0x20:      /* SPACE */  
           case 0xa0:      /* NBSP */  
           case 0x1680:    /* OGHAM SPACE MARK */  
           case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  
           case 0x2000:    /* EN QUAD */  
           case 0x2001:    /* EM QUAD */  
           case 0x2002:    /* EN SPACE */  
           case 0x2003:    /* EM SPACE */  
           case 0x2004:    /* THREE-PER-EM SPACE */  
           case 0x2005:    /* FOUR-PER-EM SPACE */  
           case 0x2006:    /* SIX-PER-EM SPACE */  
           case 0x2007:    /* FIGURE SPACE */  
           case 0x2008:    /* PUNCTUATION SPACE */  
           case 0x2009:    /* THIN SPACE */  
           case 0x200A:    /* HAIR SPACE */  
           case 0x202f:    /* NARROW NO-BREAK SPACE */  
           case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
           case 0x3000:    /* IDEOGRAPHIC SPACE */  
1505            OK = TRUE;            OK = TRUE;
1506            break;            break;
1507    
# Line 1544  for (;;) Line 1542  for (;;)
1542        if (clen > 0)        if (clen > 0)
1543          {          {
1544          BOOL OK;          BOOL OK;
1545            const pcre_uint32 *cp;
1546          const ucd_record * prop = GET_UCD(c);          const ucd_record * prop = GET_UCD(c);
1547          switch(code[2])          switch(code[2])
1548            {            {
# Line 1592  for (;;) Line 1591  for (;;)
1591                 c == CHAR_UNDERSCORE;                 c == CHAR_UNDERSCORE;
1592            break;            break;
1593    
1594              case PT_CLIST:
1595              cp = PRIV(ucd_caseless_sets) + prop->caseset;
1596              for (;;)
1597                {
1598                if (c < *cp) { OK = FALSE; break; }
1599                if (c == *cp++) { OK = TRUE; break; }
1600                }
1601              break;
1602    
1603            /* Should never occur, but keep compilers from grumbling. */            /* Should never occur, but keep compilers from grumbling. */
1604    
1605            default:            default:
# Line 1629  for (;;) Line 1637  for (;;)
1637        ADD_ACTIVE(state_offset + 2, 0);        ADD_ACTIVE(state_offset + 2, 0);
1638        if (clen > 0)        if (clen > 0)
1639          {          {
1640          int lgb, rgb;          int lgb, rgb;
1641          const pcre_uchar *nptr = ptr + clen;          const pcre_uchar *nptr = ptr + clen;
1642          int ncount = 0;          int ncount = 0;
1643          if (codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSSTAR ||          if (codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSSTAR ||
# Line 1638  for (;;) Line 1646  for (;;)
1646            active_count--;           /* Remove non-match possibility */            active_count--;           /* Remove non-match possibility */
1647            next_active_state--;            next_active_state--;
1648            }            }
1649          lgb = UCD_GRAPHBREAK(c);          lgb = UCD_GRAPHBREAK(c);
1650          while (nptr < end_subject)          while (nptr < end_subject)
1651            {            {
1652            dlen = 1;            dlen = 1;
1653            if (!utf) d = *nptr; else { GETCHARLEN(d, nptr, dlen); }            if (!utf) d = *nptr; else { GETCHARLEN(d, nptr, dlen); }
1654            rgb = UCD_GRAPHBREAK(d);            rgb = UCD_GRAPHBREAK(d);
1655            if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;            if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;
1656            ncount++;            ncount++;
1657            lgb = rgb;            lgb = rgb;
1658            nptr += dlen;            nptr += dlen;
1659            }            }
1660          ADD_NEW_DATA(-(state_offset + count), 0, ncount);          ADD_NEW_DATA(-(state_offset + count), 0, ncount);
# Line 1673  for (;;) Line 1681  for (;;)
1681          int ncount = 0;          int ncount = 0;
1682          switch (c)          switch (c)
1683            {            {
1684            case 0x000b:            case CHAR_VT:
1685            case 0x000c:            case CHAR_FF:
1686            case 0x0085:            case CHAR_NEL:
1687    #ifndef EBCDIC
1688            case 0x2028:            case 0x2028:
1689            case 0x2029:            case 0x2029:
1690    #endif  /* Not EBCDIC */
1691            if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break;            if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break;
1692            goto ANYNL02;            goto ANYNL02;
1693    
1694            case 0x000d:            case CHAR_CR:
1695            if (ptr + 1 < end_subject && ptr[1] == 0x0a) ncount = 1;            if (ptr + 1 < end_subject && ptr[1] == CHAR_LF) ncount = 1;
1696            /* Fall through */            /* Fall through */
1697    
1698            ANYNL02:            ANYNL02:
1699            case 0x000a:            case CHAR_LF:
1700            if (codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSSTAR ||            if (codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSSTAR ||
1701                codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSQUERY)                codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSQUERY)
1702              {              {
# Line 1721  for (;;) Line 1731  for (;;)
1731          BOOL OK;          BOOL OK;
1732          switch (c)          switch (c)
1733            {            {
1734            case 0x000a:            VSPACE_CASES:
           case 0x000b:  
           case 0x000c:  
           case 0x000d:  
           case 0x0085:  
           case 0x2028:  
           case 0x2029:  
1735            OK = TRUE;            OK = TRUE;
1736            break;            break;
1737    
# Line 1767  for (;;) Line 1771  for (;;)
1771          BOOL OK;          BOOL OK;
1772          switch (c)          switch (c)
1773            {            {
1774            case 0x09:      /* HT */            HSPACE_CASES:
           case 0x20:      /* SPACE */  
           case 0xa0:      /* NBSP */  
           case 0x1680:    /* OGHAM SPACE MARK */  
           case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  
           case 0x2000:    /* EN QUAD */  
           case 0x2001:    /* EM QUAD */  
           case 0x2002:    /* EN SPACE */  
           case 0x2003:    /* EM SPACE */  
           case 0x2004:    /* THREE-PER-EM SPACE */  
           case 0x2005:    /* FOUR-PER-EM SPACE */  
           case 0x2006:    /* SIX-PER-EM SPACE */  
           case 0x2007:    /* FIGURE SPACE */  
           case 0x2008:    /* PUNCTUATION SPACE */  
           case 0x2009:    /* THIN SPACE */  
           case 0x200A:    /* HAIR SPACE */  
           case 0x202f:    /* NARROW NO-BREAK SPACE */  
           case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
           case 0x3000:    /* IDEOGRAPHIC SPACE */  
1775            OK = TRUE;            OK = TRUE;
1776            break;            break;
1777    
# Line 1819  for (;;) Line 1805  for (;;)
1805        if (clen > 0)        if (clen > 0)
1806          {          {
1807          BOOL OK;          BOOL OK;
1808            const pcre_uint32 *cp;
1809          const ucd_record * prop = GET_UCD(c);          const ucd_record * prop = GET_UCD(c);
1810          switch(code[1 + IMM2_SIZE + 1])          switch(code[1 + IMM2_SIZE + 1])
1811            {            {
# Line 1867  for (;;) Line 1854  for (;;)
1854                 c == CHAR_UNDERSCORE;                 c == CHAR_UNDERSCORE;
1855            break;            break;
1856    
1857              case PT_CLIST:
1858              cp = PRIV(ucd_caseless_sets) + prop->caseset;
1859              for (;;)
1860                {
1861                if (c < *cp) { OK = FALSE; break; }
1862                if (c == *cp++) { OK = TRUE; break; }
1863                }
1864              break;
1865    
1866            /* Should never occur, but keep compilers from grumbling. */            /* Should never occur, but keep compilers from grumbling. */
1867    
1868            default:            default:
# Line 1899  for (;;) Line 1895  for (;;)
1895        count = current_state->count;  /* Number already matched */        count = current_state->count;  /* Number already matched */
1896        if (clen > 0)        if (clen > 0)
1897          {          {
1898          int lgb, rgb;          int lgb, rgb;
1899          const pcre_uchar *nptr = ptr + clen;          const pcre_uchar *nptr = ptr + clen;
1900          int ncount = 0;          int ncount = 0;
1901          if (codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSUPTO)          if (codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSUPTO)
# Line 1907  for (;;) Line 1903  for (;;)
1903            active_count--;           /* Remove non-match possibility */            active_count--;           /* Remove non-match possibility */
1904            next_active_state--;            next_active_state--;
1905            }            }
1906          lgb = UCD_GRAPHBREAK(c);          lgb = UCD_GRAPHBREAK(c);
1907          while (nptr < end_subject)          while (nptr < end_subject)
1908            {            {
1909            dlen = 1;            dlen = 1;
1910            if (!utf) d = *nptr; else { GETCHARLEN(d, nptr, dlen); }            if (!utf) d = *nptr; else { GETCHARLEN(d, nptr, dlen); }
1911            rgb = UCD_GRAPHBREAK(d);            rgb = UCD_GRAPHBREAK(d);
1912            if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;            if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;
1913            ncount++;            ncount++;
1914            lgb = rgb;            lgb = rgb;
1915            nptr += dlen;            nptr += dlen;
1916            }            }
1917          if (nptr >= end_subject && (md->moptions & PCRE_PARTIAL_HARD) != 0)          if (nptr >= end_subject && (md->moptions & PCRE_PARTIAL_HARD) != 0)
# Line 1941  for (;;) Line 1937  for (;;)
1937          int ncount = 0;          int ncount = 0;
1938          switch (c)          switch (c)
1939            {            {
1940            case 0x000b:            case CHAR_VT:
1941            case 0x000c:            case CHAR_FF:
1942            case 0x0085:            case CHAR_NEL:
1943    #ifndef EBCDIC
1944            case 0x2028:            case 0x2028:
1945            case 0x2029:            case 0x2029:
1946    #endif  /* Not EBCDIC */
1947            if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break;            if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break;
1948            goto ANYNL03;            goto ANYNL03;
1949    
1950            case 0x000d:            case CHAR_CR:
1951            if (ptr + 1 < end_subject && ptr[1] == 0x0a) ncount = 1;            if (ptr + 1 < end_subject && ptr[1] == CHAR_LF) ncount = 1;
1952            /* Fall through */            /* Fall through */
1953    
1954            ANYNL03:            ANYNL03:
1955            case 0x000a:            case CHAR_LF:
1956            if (codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSUPTO)            if (codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSUPTO)
1957              {              {
1958              active_count--;           /* Remove non-match possibility */              active_count--;           /* Remove non-match possibility */
# Line 1985  for (;;) Line 1983  for (;;)
1983          BOOL OK;          BOOL OK;
1984          switch (c)          switch (c)
1985            {            {
1986            case 0x000a:            VSPACE_CASES:
           case 0x000b:  
           case 0x000c:  
           case 0x000d:  
           case 0x0085:  
           case 0x2028:  
           case 0x2029:  
1987            OK = TRUE;            OK = TRUE;
1988            break;            break;
1989    
# Line 2027  for (;;) Line 2019  for (;;)
2019          BOOL OK;          BOOL OK;
2020          switch (c)          switch (c)
2021            {            {
2022            case 0x09:      /* HT */            HSPACE_CASES:
           case 0x20:      /* SPACE */  
           case 0xa0:      /* NBSP */  
           case 0x1680:    /* OGHAM SPACE MARK */  
           case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  
           case 0x2000:    /* EN QUAD */  
           case 0x2001:    /* EM QUAD */  
           case 0x2002:    /* EN SPACE */  
           case 0x2003:    /* EM SPACE */  
           case 0x2004:    /* THREE-PER-EM SPACE */  
           case 0x2005:    /* FOUR-PER-EM SPACE */  
           case 0x2006:    /* SIX-PER-EM SPACE */  
           case 0x2007:    /* FIGURE SPACE */  
           case 0x2008:    /* PUNCTUATION SPACE */  
           case 0x2009:    /* THIN SPACE */  
           case 0x200A:    /* HAIR SPACE */  
           case 0x202f:    /* NARROW NO-BREAK SPACE */  
           case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
           case 0x3000:    /* IDEOGRAPHIC SPACE */  
2023            OK = TRUE;            OK = TRUE;
2024            break;            break;
2025    
# Line 2123  for (;;) Line 2097  for (;;)
2097        case OP_EXTUNI:        case OP_EXTUNI:
2098        if (clen > 0)        if (clen > 0)
2099          {          {
2100          int lgb, rgb;          int lgb, rgb;
2101          const pcre_uchar *nptr = ptr + clen;          const pcre_uchar *nptr = ptr + clen;
2102          int ncount = 0;          int ncount = 0;
2103          lgb = UCD_GRAPHBREAK(c);          lgb = UCD_GRAPHBREAK(c);
2104          while (nptr < end_subject)          while (nptr < end_subject)
2105            {            {
2106            dlen = 1;            dlen = 1;
2107            if (!utf) d = *nptr; else { GETCHARLEN(d, nptr, dlen); }            if (!utf) d = *nptr; else { GETCHARLEN(d, nptr, dlen); }
2108            rgb = UCD_GRAPHBREAK(d);            rgb = UCD_GRAPHBREAK(d);
2109            if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;            if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;
2110            ncount++;            ncount++;
2111            lgb = rgb;            lgb = rgb;
2112            nptr += dlen;            nptr += dlen;
2113            }            }
2114          if (nptr >= end_subject && (md->moptions & PCRE_PARTIAL_HARD) != 0)          if (nptr >= end_subject && (md->moptions & PCRE_PARTIAL_HARD) != 0)
# Line 2152  for (;;) Line 2126  for (;;)
2126        case OP_ANYNL:        case OP_ANYNL:
2127        if (clen > 0) switch(c)        if (clen > 0) switch(c)
2128          {          {
2129          case 0x000b:          case CHAR_VT:
2130          case 0x000c:          case CHAR_FF:
2131          case 0x0085:          case CHAR_NEL:
2132    #ifndef EBCDIC
2133          case 0x2028:          case 0x2028:
2134          case 0x2029:          case 0x2029:
2135    #endif  /* Not EBCDIC */
2136          if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break;          if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break;
2137    
2138          case 0x000a:          case CHAR_LF:
2139          ADD_NEW(state_offset + 1, 0);          ADD_NEW(state_offset + 1, 0);
2140          break;          break;
2141    
2142          case 0x000d:          case CHAR_CR:
2143          if (ptr + 1 >= end_subject)          if (ptr + 1 >= end_subject)
2144            {            {
2145            ADD_NEW(state_offset + 1, 0);            ADD_NEW(state_offset + 1, 0);
2146            if ((md->moptions & PCRE_PARTIAL_HARD) != 0)            if ((md->moptions & PCRE_PARTIAL_HARD) != 0)
2147              reset_could_continue = TRUE;              reset_could_continue = TRUE;
2148            }            }
2149          else if (ptr[1] == 0x0a)          else if (ptr[1] == CHAR_LF)
2150            {            {
2151            ADD_NEW_DATA(-(state_offset + 1), 0, 1);            ADD_NEW_DATA(-(state_offset + 1), 0, 1);
2152            }            }
# Line 2186  for (;;) Line 2162  for (;;)
2162        case OP_NOT_VSPACE:        case OP_NOT_VSPACE:
2163        if (clen > 0) switch(c)        if (clen > 0) switch(c)
2164          {          {
2165          case 0x000a:          VSPACE_CASES:
         case 0x000b:  
         case 0x000c:  
         case 0x000d:  
         case 0x0085:  
         case 0x2028:  
         case 0x2029:  
2166          break;          break;
2167    
2168          default:          default:
# Line 2205  for (;;) Line 2175  for (;;)
2175        case OP_VSPACE:        case OP_VSPACE:
2176        if (clen > 0) switch(c)        if (clen > 0) switch(c)
2177          {          {
2178          case 0x000a:          VSPACE_CASES:
         case 0x000b:  
         case 0x000c:  
         case 0x000d:  
         case 0x0085:  
         case 0x2028:  
         case 0x2029:  
2179          ADD_NEW(state_offset + 1, 0);          ADD_NEW(state_offset + 1, 0);
2180          break;          break;
2181    
2182          default: break;          default:
2183            break;
2184          }          }
2185        break;        break;
2186    
# Line 2223  for (;;) Line 2188  for (;;)
2188        case OP_NOT_HSPACE:        case OP_NOT_HSPACE:
2189        if (clen > 0) switch(c)        if (clen > 0) switch(c)
2190          {          {
2191          case 0x09:      /* HT */          HSPACE_CASES:
         case 0x20:      /* SPACE */  
         case 0xa0:      /* NBSP */  
         case 0x1680:    /* OGHAM SPACE MARK */  
         case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  
         case 0x2000:    /* EN QUAD */  
         case 0x2001:    /* EM QUAD */  
         case 0x2002:    /* EN SPACE */  
         case 0x2003:    /* EM SPACE */  
         case 0x2004:    /* THREE-PER-EM SPACE */  
         case 0x2005:    /* FOUR-PER-EM SPACE */  
         case 0x2006:    /* SIX-PER-EM SPACE */  
         case 0x2007:    /* FIGURE SPACE */  
         case 0x2008:    /* PUNCTUATION SPACE */  
         case 0x2009:    /* THIN SPACE */  
         case 0x200A:    /* HAIR SPACE */  
         case 0x202f:    /* NARROW NO-BREAK SPACE */  
         case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
         case 0x3000:    /* IDEOGRAPHIC SPACE */  
2192          break;          break;
2193    
2194          default:          default:
# Line 2254  for (;;) Line 2201  for (;;)
2201        case OP_HSPACE:        case OP_HSPACE:
2202        if (clen > 0) switch(c)        if (clen > 0) switch(c)
2203          {          {
2204          case 0x09:      /* HT */          HSPACE_CASES:
         case 0x20:      /* SPACE */  
         case 0xa0:      /* NBSP */  
         case 0x1680:    /* OGHAM SPACE MARK */  
         case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  
         case 0x2000:    /* EN QUAD */  
         case 0x2001:    /* EM QUAD */  
         case 0x2002:    /* EN SPACE */  
         case 0x2003:    /* EM SPACE */  
         case 0x2004:    /* THREE-PER-EM SPACE */  
         case 0x2005:    /* FOUR-PER-EM SPACE */  
         case 0x2006:    /* SIX-PER-EM SPACE */  
         case 0x2007:    /* FIGURE SPACE */  
         case 0x2008:    /* PUNCTUATION SPACE */  
         case 0x2009:    /* THIN SPACE */  
         case 0x200A:    /* HAIR SPACE */  
         case 0x202f:    /* NARROW NO-BREAK SPACE */  
         case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
         case 0x3000:    /* IDEOGRAPHIC SPACE */  
2205          ADD_NEW(state_offset + 1, 0);          ADD_NEW(state_offset + 1, 0);
2206          break;          break;
2207    
2208            default:
2209            break;
2210          }          }
2211        break;        break;
2212    

Legend:
Removed from v.1015  
changed lines
  Added in v.1046

  ViewVC Help
Powered by ViewVC 1.1.5