Make parser_free() be called slightly later,
[p5sagit/p5-mst-13.2.git] / regcomp.h
index 51b14b7..a13d487 100644 (file)
--- a/regcomp.h
+++ b/regcomp.h
@@ -101,11 +101,7 @@ typedef OP OP_4tree;                       /* Will be redefined later. */
 /* This is the stuff that used to live in regexp.h that was truly
    private to the engine itself. It now lives here. */
 
-/* swap buffer for paren structs */
-typedef struct regexp_paren_ofs {
-    I32 *startp;
-    I32 *endp;
-} regexp_paren_ofs;
+
 
  typedef struct regexp_internal {
         int name_list_idx;     /* Optional data index of an array of paren names */
@@ -118,7 +114,6 @@ typedef struct regexp_paren_ofs {
             U32 proglen;
         } u;
 
-        regexp_paren_ofs *swap; /* Swap copy of *startp / *endp */                                   
         regnode *regstclass;    /* Optional startclass as identified or constructed
                                    by the optimiser */
         struct reg_data *data; /* Additional miscellaneous data used by the program.
@@ -414,6 +409,7 @@ struct regnode_charclass_class {    /* has [[:blah:]] classes */
 #define REG_TOP_LEVEL_BRANCHES  0x00000040
 #define REG_SEEN_VERBARG        0x00000080
 #define REG_SEEN_CUTGROUP       0x00000100
+#define REG_SEEN_RUN_ON_COMMENT 0x00000200
 
 START_EXTERN_C
 
@@ -462,6 +458,8 @@ EXTCONST regexp_engine PL_core_reg_engine = {
         Perl_re_intuit_start,
         Perl_re_intuit_string, 
         Perl_regfree_internal, 
+        Perl_reg_numbered_buff_get,
+        Perl_reg_named_buff_get,
 #if defined(USE_ITHREADS)        
         Perl_regdupe_internal
 #endif        
@@ -563,20 +561,20 @@ typedef struct _reg_trie_trans    reg_trie_trans;
    optimisation in Perl_regdupe.  */
 struct _reg_trie_data {
     U32             refcount;        /* number of times this trie is referenced */
-    U16             uniquecharcount; /* unique chars in trie (width of trans table) */
     U32             lasttrans;       /* last valid transition element */
     U16             *charmap;        /* byte to charid lookup array */
     reg_trie_state  *states;         /* state data */
     reg_trie_trans  *trans;          /* array of transition elements */
     char            *bitmap;         /* stclass bitmap */
-    U32             startstate;      /* initial state - used for common prefix optimisation */
-    STRLEN          minlen;          /* minimum length of words in trie - build/opt only? */
-    STRLEN          maxlen;          /* maximum length of words in trie - build/opt only? */
     U32             *wordlen;        /* array of lengths of words */
     U16            *jump;           /* optional 1 indexed array of offsets before tail 
                                         for the node following a given word. */
     U16                    *nextword;       /* optional 1 indexed array to support linked list
                                         of duplicate wordnums */
+    U16             uniquecharcount; /* unique chars in trie (width of trans table) */
+    U32             startstate;      /* initial state - used for common prefix optimisation */
+    STRLEN          minlen;          /* minimum length of words in trie - build/opt only? */
+    STRLEN          maxlen;          /* maximum length of words in trie - build/opt only? */
     U32             statecount;      /* Build only - number of states in the states array 
                                         (including the unused zero state) */
     U32             wordcount;       /* Build only */
@@ -602,9 +600,9 @@ typedef struct _reg_trie_data reg_trie_data;
    optimisation in Perl_regdupe.  */
 struct _reg_ac_data {
     U32              refcount;
+    U32              trie;
     U32              *fail;
     reg_trie_state   *states;
-    U32              trie;
 };
 typedef struct _reg_ac_data reg_ac_data;
 
@@ -692,6 +690,7 @@ re.pm, especially to the documentation.
 #define RE_DEBUG_EXTRA_OFFDEBUG    0x040000
 #define RE_DEBUG_EXTRA_STATE       0x080000
 #define RE_DEBUG_EXTRA_OPTIMISE    0x100000
+#define RE_DEBUG_EXTRA_BUFFERS     0x400000
 /* combined */
 #define RE_DEBUG_EXTRA_STACK       0x280000
 
@@ -729,6 +728,9 @@ re.pm, especially to the documentation.
     if (re_debug_flags & RE_DEBUG_EXTRA_STATE) x )
 #define DEBUG_STACK_r(x) DEBUG_r( \
     if (re_debug_flags & RE_DEBUG_EXTRA_STACK) x )
+#define DEBUG_BUFFERS_r(x) DEBUG_r( \
+    if (re_debug_flags & RE_DEBUG_EXTRA_BUFFERS) x )
+
 #define DEBUG_OPTIMISE_MORE_r(x) DEBUG_r( \
     if ((RE_DEBUG_EXTRA_OPTIMISE|RE_DEBUG_COMPILE_OPTIMISE) == \
          (re_debug_flags & (RE_DEBUG_EXTRA_OPTIMISE|RE_DEBUG_COMPILE_OPTIMISE)) ) x )