Upgrade to Test-Simple-0.70
[p5sagit/p5-mst-13.2.git] / regexp.h
index f6d3c7b..9cf324f 100644 (file)
--- a/regexp.h
+++ b/regexp.h
@@ -31,6 +31,7 @@ struct reg_substr_data;
 struct reg_data;
 
 struct regexp_engine;
+struct regexp;
 
 struct reg_substr_datum {
     I32 min_offset;
@@ -48,11 +49,19 @@ struct reg_substr_data {
 #else
 #define SV_SAVED_COPY
 #endif
+
+/* swap buffer for paren structs */
+typedef struct regexp_paren_ofs {
+    I32 *startp;
+    I32 *endp;
+} regexp_paren_ofs;
+
 /* this is ordered such that the most commonly used 
    fields are at the start of the struct */
 typedef struct regexp {
         /* what engine created this regexp? */
        const struct regexp_engine* engine; 
+       struct regexp* mother_re; /* what re is this a lightweight copy of? */
        
        /* Information about the match that the perl core uses to manage things */
        U32 extflags;           /* Flags used both externally and internally */
@@ -71,8 +80,10 @@ typedef struct regexp {
         /* Data about the last/current match. These are modified during matching*/
         U32 lastparen;         /* last open paren matched */
        U32 lastcloseparen;     /* last close paren matched */
+        regexp_paren_ofs *swap; /* Swap copy of *startp / *endp */ 
         I32 *startp;            /* Array of offsets from start of string (@-) */
        I32 *endp;              /* Array of offsets from start of string (@+) */
+
        char *subbeg;           /* saved or original string 
                                   so \digit works forever. */
        I32 sublen;             /* Length of string pointed by subbeg */
@@ -216,7 +227,6 @@ typedef struct regexp_engine {
 #define RXf_TAINTED_SEEN       0x20000000
 /* two bits here  */
 
-
 #define RX_HAS_CUTGROUP(prog) ((prog)->intflags & PREGf_CUTGROUP_SEEN)
 #define RX_MATCH_TAINTED(prog) ((prog)->extflags & RXf_TAINTED_SEEN)
 #define RX_MATCH_TAINTED_on(prog) ((prog)->extflags |= RXf_TAINTED_SEEN)
@@ -300,7 +310,7 @@ typedef struct {
 /* structures for holding and saving the state maintained by regmatch() */
 
 #ifndef MAX_RECURSE_EVAL_NOCHANGE_DEPTH
-#define MAX_RECURSE_EVAL_NOCHANGE_DEPTH 50
+#define MAX_RECURSE_EVAL_NOCHANGE_DEPTH 1000
 #endif
 
 typedef I32 CHECKPOINT;