/[pcre]/code/trunk/pcre_internal.h
ViewVC logotype

Diff of /code/trunk/pcre_internal.h

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

revision 529 by ph10, Mon May 31 17:28:08 2010 UTC revision 579 by ph10, Wed Nov 24 17:39:25 2010 UTC
# Line 408  capturing parenthesis numbers in back re Line 408  capturing parenthesis numbers in back re
408    
409  /* When UTF-8 encoding is being used, a character is no longer just a single  /* When UTF-8 encoding is being used, a character is no longer just a single
410  byte. The macros for character handling generate simple sequences when used in  byte. The macros for character handling generate simple sequences when used in
411  byte-mode, and more complicated ones for UTF-8 characters. BACKCHAR should  byte-mode, and more complicated ones for UTF-8 characters. GETCHARLENTEST is
412  never be called in byte mode. To make sure it can never even appear when UTF-8  not used when UTF-8 is not supported, so it is not defined, and BACKCHAR should
413  support is omitted, we don't even define it. */  never be called in byte mode. To make sure they can never even appear when
414    UTF-8 support is omitted, we don't even define them. */
415    
416  #ifndef SUPPORT_UTF8  #ifndef SUPPORT_UTF8
417  #define GETCHAR(c, eptr) c = *eptr;  #define GETCHAR(c, eptr) c = *eptr;
# Line 418  support is omitted, we don't even define Line 419  support is omitted, we don't even define
419  #define GETCHARINC(c, eptr) c = *eptr++;  #define GETCHARINC(c, eptr) c = *eptr++;
420  #define GETCHARINCTEST(c, eptr) c = *eptr++;  #define GETCHARINCTEST(c, eptr) c = *eptr++;
421  #define GETCHARLEN(c, eptr, len) c = *eptr;  #define GETCHARLEN(c, eptr, len) c = *eptr;
422    /* #define GETCHARLENTEST(c, eptr, len) */
423  /* #define BACKCHAR(eptr) */  /* #define BACKCHAR(eptr) */
424    
425  #else   /* SUPPORT_UTF8 */  #else   /* SUPPORT_UTF8 */
426    
427    /* These macros were originally written in the form of loops that used data
428    from the tables whose names start with _pcre_utf8_table. They were rewritten by
429    a user so as not to use loops, because in some environments this gives a
430    significant performance advantage, and it seems never to do any harm. */
431    
432    /* Base macro to pick up the remaining bytes of a UTF-8 character, not
433    advancing the pointer. */
434    
435    #define GETUTF8(c, eptr) \
436        { \
437        if ((c & 0x20) == 0) \
438          c = ((c & 0x1f) << 6) | (eptr[1] & 0x3f); \
439        else if ((c & 0x10) == 0) \
440          c = ((c & 0x0f) << 12) | ((eptr[1] & 0x3f) << 6) | (eptr[2] & 0x3f); \
441        else if ((c & 0x08) == 0) \
442          c = ((c & 0x07) << 18) | ((eptr[1] & 0x3f) << 12) | \
443          ((eptr[2] & 0x3f) << 6) | (eptr[3] & 0x3f); \
444        else if ((c & 0x04) == 0) \
445          c = ((c & 0x03) << 24) | ((eptr[1] & 0x3f) << 18) | \
446              ((eptr[2] & 0x3f) << 12) | ((eptr[3] & 0x3f) << 6) | \
447              (eptr[4] & 0x3f); \
448        else \
449          c = ((c & 0x01) << 30) | ((eptr[1] & 0x3f) << 24) | \
450              ((eptr[2] & 0x3f) << 18) | ((eptr[3] & 0x3f) << 12) | \
451              ((eptr[4] & 0x3f) << 6) | (eptr[5] & 0x3f); \
452        }
453    
454  /* Get the next UTF-8 character, not advancing the pointer. This is called when  /* Get the next UTF-8 character, not advancing the pointer. This is called when
455  we know we are in UTF-8 mode. */  we know we are in UTF-8 mode. */
456    
457  #define GETCHAR(c, eptr) \  #define GETCHAR(c, eptr) \
458    c = *eptr; \    c = *eptr; \
459    if (c >= 0xc0) \    if (c >= 0xc0) GETUTF8(c, eptr);
     { \  
     int gcii; \  
     int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \  
     int gcss = 6*gcaa; \  
     c = (c & _pcre_utf8_table3[gcaa]) << gcss; \  
     for (gcii = 1; gcii <= gcaa; gcii++) \  
       { \  
       gcss -= 6; \  
       c |= (eptr[gcii] & 0x3f) << gcss; \  
       } \  
     }  
460    
461  /* Get the next UTF-8 character, testing for UTF-8 mode, and not advancing the  /* Get the next UTF-8 character, testing for UTF-8 mode, and not advancing the
462  pointer. */  pointer. */
463    
464  #define GETCHARTEST(c, eptr) \  #define GETCHARTEST(c, eptr) \
465    c = *eptr; \    c = *eptr; \
466    if (utf8 && c >= 0xc0) \    if (utf8 && c >= 0xc0) GETUTF8(c, eptr);
467    
468    /* Base macro to pick up the remaining bytes of a UTF-8 character, advancing
469    the pointer. */
470    
471    #define GETUTF8INC(c, eptr) \
472      { \      { \
473      int gcii; \      if ((c & 0x20) == 0) \
474      int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \        c = ((c & 0x1f) << 6) | (*eptr++ & 0x3f); \
475      int gcss = 6*gcaa; \      else if ((c & 0x10) == 0) \
476      c = (c & _pcre_utf8_table3[gcaa]) << gcss; \        { \
477      for (gcii = 1; gcii <= gcaa; gcii++) \        c = ((c & 0x0f) << 12) | ((*eptr & 0x3f) << 6) | (eptr[1] & 0x3f); \
478          eptr += 2; \
479          } \
480        else if ((c & 0x08) == 0) \
481          { \
482          c = ((c & 0x07) << 18) | ((*eptr & 0x3f) << 12) | \
483              ((eptr[1] & 0x3f) << 6) | (eptr[2] & 0x3f); \
484          eptr += 3; \
485          } \
486        else if ((c & 0x04) == 0) \
487        { \        { \
488        gcss -= 6; \        c = ((c & 0x03) << 24) | ((*eptr & 0x3f) << 18) | \
489        c |= (eptr[gcii] & 0x3f) << gcss; \            ((eptr[1] & 0x3f) << 12) | ((eptr[2] & 0x3f) << 6) | \
490              (eptr[3] & 0x3f); \
491          eptr += 4; \
492          } \
493        else \
494          { \
495          c = ((c & 0x01) << 30) | ((*eptr & 0x3f) << 24) | \
496              ((eptr[1] & 0x3f) << 18) | ((eptr[2] & 0x3f) << 12) | \
497              ((eptr[3] & 0x3f) << 6) | (eptr[4] & 0x3f); \
498          eptr += 5; \
499        } \        } \
500      }      }
501    
# Line 463  know we are in UTF-8 mode. */ Line 504  know we are in UTF-8 mode. */
504    
505  #define GETCHARINC(c, eptr) \  #define GETCHARINC(c, eptr) \
506    c = *eptr++; \    c = *eptr++; \
507    if (c >= 0xc0) \    if (c >= 0xc0) GETUTF8INC(c, eptr);
     { \  
     int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \  
     int gcss = 6*gcaa; \  
     c = (c & _pcre_utf8_table3[gcaa]) << gcss; \  
     while (gcaa-- > 0) \  
       { \  
       gcss -= 6; \  
       c |= (*eptr++ & 0x3f) << gcss; \  
       } \  
     }  
508    
509  /* Get the next character, testing for UTF-8 mode, and advancing the pointer.  /* Get the next character, testing for UTF-8 mode, and advancing the pointer.
510  This is called when we don't know if we are in UTF-8 mode. */  This is called when we don't know if we are in UTF-8 mode. */
511    
512  #define GETCHARINCTEST(c, eptr) \  #define GETCHARINCTEST(c, eptr) \
513    c = *eptr++; \    c = *eptr++; \
514    if (utf8 && c >= 0xc0) \    if (utf8 && c >= 0xc0) GETUTF8INC(c, eptr);
515    
516    /* Base macro to pick up the remaining bytes of a UTF-8 character, not
517    advancing the pointer, incrementing the length. */
518    
519    #define GETUTF8LEN(c, eptr, len) \
520      { \      { \
521      int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \      if ((c & 0x20) == 0) \
522      int gcss = 6*gcaa; \        { \
523      c = (c & _pcre_utf8_table3[gcaa]) << gcss; \        c = ((c & 0x1f) << 6) | (eptr[1] & 0x3f); \
524      while (gcaa-- > 0) \        len++; \
525          } \
526        else if ((c & 0x10)  == 0) \
527        { \        { \
528        gcss -= 6; \        c = ((c & 0x0f) << 12) | ((eptr[1] & 0x3f) << 6) | (eptr[2] & 0x3f); \
529        c |= (*eptr++ & 0x3f) << gcss; \        len += 2; \
530          } \
531        else if ((c & 0x08)  == 0) \
532          {\
533          c = ((c & 0x07) << 18) | ((eptr[1] & 0x3f) << 12) | \
534              ((eptr[2] & 0x3f) << 6) | (eptr[3] & 0x3f); \
535          len += 3; \
536          } \
537        else if ((c & 0x04)  == 0) \
538          { \
539          c = ((c & 0x03) << 24) | ((eptr[1] & 0x3f) << 18) | \
540              ((eptr[2] & 0x3f) << 12) | ((eptr[3] & 0x3f) << 6) | \
541              (eptr[4] & 0x3f); \
542          len += 4; \
543          } \
544        else \
545          {\
546          c = ((c & 0x01) << 30) | ((eptr[1] & 0x3f) << 24) | \
547              ((eptr[2] & 0x3f) << 18) | ((eptr[3] & 0x3f) << 12) | \
548              ((eptr[4] & 0x3f) << 6) | (eptr[5] & 0x3f); \
549          len += 5; \
550        } \        } \
551      }      }
552    
# Line 497  if there are extra bytes. This is called Line 555  if there are extra bytes. This is called
555    
556  #define GETCHARLEN(c, eptr, len) \  #define GETCHARLEN(c, eptr, len) \
557    c = *eptr; \    c = *eptr; \
558    if (c >= 0xc0) \    if (c >= 0xc0) GETUTF8LEN(c, eptr, len);
     { \  
     int gcii; \  
     int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \  
     int gcss = 6*gcaa; \  
     c = (c & _pcre_utf8_table3[gcaa]) << gcss; \  
     for (gcii = 1; gcii <= gcaa; gcii++) \  
       { \  
       gcss -= 6; \  
       c |= (eptr[gcii] & 0x3f) << gcss; \  
       } \  
     len += gcaa; \  
     }  
559    
560  /* Get the next UTF-8 character, testing for UTF-8 mode, not advancing the  /* Get the next UTF-8 character, testing for UTF-8 mode, not advancing the
561  pointer, incrementing length if there are extra bytes. This is called when we  pointer, incrementing length if there are extra bytes. This is called when we
# Line 517  do not know if we are in UTF-8 mode. */ Line 563  do not know if we are in UTF-8 mode. */
563    
564  #define GETCHARLENTEST(c, eptr, len) \  #define GETCHARLENTEST(c, eptr, len) \
565    c = *eptr; \    c = *eptr; \
566    if (utf8 && c >= 0xc0) \    if (utf8 && c >= 0xc0) GETUTF8LEN(c, eptr, len);
     { \  
     int gcii; \  
     int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \  
     int gcss = 6*gcaa; \  
     c = (c & _pcre_utf8_table3[gcaa]) << gcss; \  
     for (gcii = 1; gcii <= gcaa; gcii++) \  
       { \  
       gcss -= 6; \  
       c |= (eptr[gcii] & 0x3f) << gcss; \  
       } \  
     len += gcaa; \  
     }  
567    
568  /* If the pointer is not at the start of a character, move it back until  /* If the pointer is not at the start of a character, move it back until
569  it is. This is called only in UTF-8 mode - we don't put a test within the macro  it is. This is called only in UTF-8 mode - we don't put a test within the macro
# Line 537  because almost all calls are already wit Line 571  because almost all calls are already wit
571    
572  #define BACKCHAR(eptr) while((*eptr & 0xc0) == 0x80) eptr--  #define BACKCHAR(eptr) while((*eptr & 0xc0) == 0x80) eptr--
573    
574  #endif  #endif  /* SUPPORT_UTF8 */
575    
576    
577  /* In case there is no definition of offsetof() provided - though any proper  /* In case there is no definition of offsetof() provided - though any proper
# Line 581  time, run time, or study time, respectiv Line 615  time, run time, or study time, respectiv
615     PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8| \     PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8| \
616     PCRE_NO_AUTO_CAPTURE|PCRE_NO_UTF8_CHECK|PCRE_AUTO_CALLOUT|PCRE_FIRSTLINE| \     PCRE_NO_AUTO_CAPTURE|PCRE_NO_UTF8_CHECK|PCRE_AUTO_CALLOUT|PCRE_FIRSTLINE| \
617     PCRE_DUPNAMES|PCRE_NEWLINE_BITS|PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE| \     PCRE_DUPNAMES|PCRE_NEWLINE_BITS|PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE| \
618     PCRE_JAVASCRIPT_COMPAT|PCRE_UCP)     PCRE_JAVASCRIPT_COMPAT|PCRE_UCP|PCRE_NO_START_OPTIMIZE)
619    
620  #define PUBLIC_EXEC_OPTIONS \  #define PUBLIC_EXEC_OPTIONS \
621    (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NOTEMPTY_ATSTART| \    (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NOTEMPTY_ATSTART| \
# Line 898  so that PCRE works on both ASCII and EBC Line 932  so that PCRE works on both ASCII and EBC
932    
933  #define STRING_DEFINE               "DEFINE"  #define STRING_DEFINE               "DEFINE"
934    
935  #define STRING_CR_RIGHTPAR          "CR)"  #define STRING_CR_RIGHTPAR             "CR)"
936  #define STRING_LF_RIGHTPAR          "LF)"  #define STRING_LF_RIGHTPAR             "LF)"
937  #define STRING_CRLF_RIGHTPAR        "CRLF)"  #define STRING_CRLF_RIGHTPAR           "CRLF)"
938  #define STRING_ANY_RIGHTPAR         "ANY)"  #define STRING_ANY_RIGHTPAR            "ANY)"
939  #define STRING_ANYCRLF_RIGHTPAR     "ANYCRLF)"  #define STRING_ANYCRLF_RIGHTPAR        "ANYCRLF)"
940  #define STRING_BSR_ANYCRLF_RIGHTPAR "BSR_ANYCRLF)"  #define STRING_BSR_ANYCRLF_RIGHTPAR    "BSR_ANYCRLF)"
941  #define STRING_BSR_UNICODE_RIGHTPAR "BSR_UNICODE)"  #define STRING_BSR_UNICODE_RIGHTPAR    "BSR_UNICODE)"
942  #define STRING_UTF8_RIGHTPAR        "UTF8)"  #define STRING_UTF8_RIGHTPAR           "UTF8)"
943  #define STRING_UCP_RIGHTPAR         "UCP)"  #define STRING_UCP_RIGHTPAR            "UCP)"
944    #define STRING_NO_START_OPT_RIGHTPAR   "NO_START_OPT)"
945    
946  #else  /* SUPPORT_UTF8 */  #else  /* SUPPORT_UTF8 */
947    
# Line 1152  only. */ Line 1187  only. */
1187    
1188  #define STRING_DEFINE               STR_D STR_E STR_F STR_I STR_N STR_E  #define STRING_DEFINE               STR_D STR_E STR_F STR_I STR_N STR_E
1189    
1190  #define STRING_CR_RIGHTPAR          STR_C STR_R STR_RIGHT_PARENTHESIS  #define STRING_CR_RIGHTPAR             STR_C STR_R STR_RIGHT_PARENTHESIS
1191  #define STRING_LF_RIGHTPAR          STR_L STR_F STR_RIGHT_PARENTHESIS  #define STRING_LF_RIGHTPAR             STR_L STR_F STR_RIGHT_PARENTHESIS
1192  #define STRING_CRLF_RIGHTPAR        STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS  #define STRING_CRLF_RIGHTPAR           STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS
1193  #define STRING_ANY_RIGHTPAR         STR_A STR_N STR_Y STR_RIGHT_PARENTHESIS  #define STRING_ANY_RIGHTPAR            STR_A STR_N STR_Y STR_RIGHT_PARENTHESIS
1194  #define STRING_ANYCRLF_RIGHTPAR     STR_A STR_N STR_Y STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS  #define STRING_ANYCRLF_RIGHTPAR        STR_A STR_N STR_Y STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS
1195  #define STRING_BSR_ANYCRLF_RIGHTPAR STR_B STR_S STR_R STR_UNDERSCORE STR_A STR_N STR_Y STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS  #define STRING_BSR_ANYCRLF_RIGHTPAR    STR_B STR_S STR_R STR_UNDERSCORE STR_A STR_N STR_Y STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS
1196  #define STRING_BSR_UNICODE_RIGHTPAR STR_B STR_S STR_R STR_UNDERSCORE STR_U STR_N STR_I STR_C STR_O STR_D STR_E STR_RIGHT_PARENTHESIS  #define STRING_BSR_UNICODE_RIGHTPAR    STR_B STR_S STR_R STR_UNDERSCORE STR_U STR_N STR_I STR_C STR_O STR_D STR_E STR_RIGHT_PARENTHESIS
1197  #define STRING_UTF8_RIGHTPAR        STR_U STR_T STR_F STR_8 STR_RIGHT_PARENTHESIS  #define STRING_UTF8_RIGHTPAR           STR_U STR_T STR_F STR_8 STR_RIGHT_PARENTHESIS
1198  #define STRING_UCP_RIGHTPAR         STR_U STR_C STR_P STR_RIGHT_PARENTHESIS  #define STRING_UCP_RIGHTPAR            STR_U STR_C STR_P STR_RIGHT_PARENTHESIS
1199    #define STRING_NO_START_OPT_RIGHTPAR   STR_N STR_O STR_UNDERSCORE STR_S STR_T STR_A STR_R STR_T STR_UNDERSCORE STR_O STR_P STR_T STR_RIGHT_PARENTHESIS
1200    
1201  #endif  /* SUPPORT_UTF8 */  #endif  /* SUPPORT_UTF8 */
1202    
# Line 1218  value such as \n. They must have non-zer Line 1254  value such as \n. They must have non-zer
1254  their negation. Also, they must appear in the same order as in the opcode  their negation. Also, they must appear in the same order as in the opcode
1255  definitions below, up to ESC_z. There's a dummy for OP_ALLANY because it  definitions below, up to ESC_z. There's a dummy for OP_ALLANY because it
1256  corresponds to "." in DOTALL mode rather than an escape sequence. It is also  corresponds to "." in DOTALL mode rather than an escape sequence. It is also
1257  used for [^] in JavaScript compatibility mode. In non-DOTALL mode, "." behaves  used for [^] in JavaScript compatibility mode. In non-DOTALL mode, "." behaves
1258  like \N.  like \N.
1259    
1260  The special values ESC_DU, ESC_du, etc. are used instead of ESC_D, ESC_d, etc.  The special values ESC_DU, ESC_du, etc. are used instead of ESC_D, ESC_d, etc.
# Line 1235  put in between that don't consume a char Line 1271  put in between that don't consume a char
1271    
1272  enum { ESC_A = 1, ESC_G, ESC_K, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s,  enum { ESC_A = 1, ESC_G, ESC_K, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s,
1273         ESC_W, ESC_w, ESC_N, ESC_dum, ESC_C, ESC_P, ESC_p, ESC_R, ESC_H,         ESC_W, ESC_w, ESC_N, ESC_dum, ESC_C, ESC_P, ESC_p, ESC_R, ESC_H,
1274         ESC_h, ESC_V, ESC_v, ESC_X, ESC_Z, ESC_z,         ESC_h, ESC_V, ESC_v, ESC_X, ESC_Z, ESC_z,
1275         ESC_E, ESC_Q, ESC_g, ESC_k,         ESC_E, ESC_Q, ESC_g, ESC_k,
1276         ESC_DU, ESC_du, ESC_SU, ESC_su, ESC_WU, ESC_wu,         ESC_DU, ESC_du, ESC_SU, ESC_su, ESC_WU, ESC_wu,
1277         ESC_REF };         ESC_REF };
1278    
1279  /* Opcode table: Starting from 1 (i.e. after OP_END), the values up to  /* Opcode table: Starting from 1 (i.e. after OP_END), the values up to
# Line 1514  in UTF-8 mode. The code that uses this t Line 1550  in UTF-8 mode. The code that uses this t
1550    3, 3,                          /* RREF, NRREF                            */ \    3, 3,                          /* RREF, NRREF                            */ \
1551    1,                             /* DEF                                    */ \    1,                             /* DEF                                    */ \
1552    1, 1,                          /* BRAZERO, BRAMINZERO                    */ \    1, 1,                          /* BRAZERO, BRAMINZERO                    */ \
1553    3, 1, 3,                       /* MARK, PRUNE, PRUNE_ARG,                */ \    3, 1, 3,                       /* MARK, PRUNE, PRUNE_ARG                 */ \
1554    1, 3, 1, 3,                    /* SKIP, SKIP_ARG, THEN, THEN_ARG,        */ \    1, 3,                          /* SKIP, SKIP_ARG                         */ \
1555      1+LINK_SIZE, 3+LINK_SIZE,      /* THEN, THEN_ARG                         */ \
1556    1, 1, 1, 3, 1                  /* COMMIT, FAIL, ACCEPT, CLOSE, SKIPZERO  */    1, 1, 1, 3, 1                  /* COMMIT, FAIL, ACCEPT, CLOSE, SKIPZERO  */
1557    
1558    
# Line 1534  enum { ERR0,  ERR1,  ERR2,  ERR3,  ERR4, Line 1571  enum { ERR0,  ERR1,  ERR2,  ERR3,  ERR4,
1571         ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39,         ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39,
1572         ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47, ERR48, ERR49,         ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47, ERR48, ERR49,
1573         ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59,         ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59,
1574         ERR60, ERR61, ERR62, ERR63, ERR64, ERR65, ERR66, ERR67, ERRCOUNT };         ERR60, ERR61, ERR62, ERR63, ERR64, ERR65, ERR66, ERR67, ERR68,
1575           ERRCOUNT };
1576    
1577  /* The real format of the start of the pcre block; the index of names and the  /* The real format of the start of the pcre block; the index of names and the
1578  code vector run on as long as necessary after the end. We store an explicit  code vector run on as long as necessary after the end. We store an explicit
# Line 1677  typedef struct match_data { Line 1715  typedef struct match_data {
1715    BOOL   noteol;                /* NOTEOL flag */    BOOL   noteol;                /* NOTEOL flag */
1716    BOOL   utf8;                  /* UTF8 flag */    BOOL   utf8;                  /* UTF8 flag */
1717    BOOL   jscript_compat;        /* JAVASCRIPT_COMPAT flag */    BOOL   jscript_compat;        /* JAVASCRIPT_COMPAT flag */
1718    BOOL   use_ucp;               /* PCRE_UCP flag */    BOOL   use_ucp;               /* PCRE_UCP flag */
1719    BOOL   endonly;               /* Dollar not before final \n */    BOOL   endonly;               /* Dollar not before final \n */
1720    BOOL   notempty;              /* Empty string match not wanted */    BOOL   notempty;              /* Empty string match not wanted */
1721    BOOL   notempty_atstart;      /* Empty string match at start not wanted */    BOOL   notempty_atstart;      /* Empty string match at start not wanted */

Legend:
Removed from v.529  
changed lines
  Added in v.579

  ViewVC Help
Powered by ViewVC 1.1.5