This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Start a new test category: uni. Much of t/op/pat
[perl5.git] / regexp.h
index 5d787e0..6217aaa 100644 (file)
--- a/regexp.h
+++ b/regexp.h
@@ -19,6 +19,8 @@ typedef struct regnode regnode;
 
 struct reg_substr_data;
 
+struct reg_data;
+
 typedef struct regexp {
        I32 *startp;
        I32 *endp;
@@ -28,12 +30,14 @@ typedef struct regexp {
         struct reg_data *data; /* Additional data. */
        char *subbeg;           /* saved or original string 
                                   so \digit works forever. */
+        U32 *offsets;           /* offset annotations 20001228 MJD */
        I32 sublen;             /* Length of string pointed by subbeg */
        I32 refcnt;
        I32 minlen;             /* mininum possible length of $& */
        I32 prelen;             /* length of precomp */
        U32 nparens;            /* number of parentheses */
        U32 lastparen;          /* last paren matched */
+       U32 lastcloseparen;     /* last paren matched */
        U32 reganch;            /* Internal use only +
                                   Tainted information used by regexec? */
        regnode program[1];     /* Unwarranted chumminess with compiler. */
@@ -52,13 +56,15 @@ typedef struct regexp {
 #define ROPT_CHECK_ALL         0x00100
 #define ROPT_LOOKBEHIND_SEEN   0x00200
 #define ROPT_EVAL_SEEN         0x00400
-#define ROPT_TAINTED_SEEN      0x00800
+#define ROPT_CANY_SEEN         0x00800
+#define ROPT_SANY_SEEN         ROPT_CANY_SEEN /* src bckwrd cmpt */
 
 /* 0xf800 of reganch is used by PMf_COMPILETIME */
 
 #define ROPT_UTF8              0x10000
 #define ROPT_NAUGHTY           0x20000 /* how exponential is this pattern? */
 #define ROPT_COPY_DONE         0x40000 /* subbeg is a copy of the string */
+#define ROPT_TAINTED_SEEN      0x80000
 
 #define RE_USE_INTUIT_NOML     0x0100000 /* Best to intuit before matching */
 #define RE_USE_INTUIT_ML       0x0200000
@@ -94,7 +100,7 @@ typedef struct regexp {
 #define REXEC_NOT_FIRST        0x10            /* This is another iteration of //g. */
 #define REXEC_ML       0x20            /* $* was set. */
 
-#define ReREFCNT_inc(re) ((re && re->refcnt++), re)
+#define ReREFCNT_inc(re) ((void)(re && re->refcnt++), re)
 #define ReREFCNT_dec(re) CALLREGFREE(aTHX_ re)
 
 #define FBMcf_TAIL_DOLLAR      1