*/
U32 extflags; /* Flags used both externally and internally */
+ U32 nparens; /* number of capture buffers */
SSize_t minlen; /* minimum possible number of chars in string to match */
SSize_t minlenret; /* mininum possible number of chars in $& */
STRLEN gofs; /* chars left of pos that we search from */
/* substring data about strings that must appear in
* the final match, used for optimisations */
struct reg_substr_data *substrs;
- U32 nparens; /* number of capture buffers */
/* private engine specific data */
- U32 intflags; /* Engine Specific Internal flags */
void *pprivate; /* Data private to the regex engine which
* created this object. */
+ U32 intflags; /* Engine Specific Internal flags */
/*----------------------------------------------------------------------
* Data about the last/current match. These are modified during matching
*/
U32 lastparen; /* highest close paren matched ($+) */
- U32 lastcloseparen; /* last close paren matched ($^N) */
regexp_paren_pair *offs; /* Array of offsets for (@-) and (@+) */
char **recurse_locinput; /* used to detect infinite recursion, XXX: move to internal */
+ U32 lastcloseparen; /* last close paren matched ($^N) */
+
+ /*---------------------------------------------------------------------- */
+
+ /* offset from wrapped to the start of precomp */
+ PERL_BITFIELD32 pre_prefix:4;
+
+ /* original flags used to compile the pattern, may differ from
+ * extflags in various ways */
+ PERL_BITFIELD32 compflags:9;
/*---------------------------------------------------------------------- */
SSize_t sublen; /* Length of string pointed by subbeg */
SSize_t suboffset; /* byte offset of subbeg from logical start of str */
SSize_t subcoffset; /* suboffset equiv, but in chars (for @-/@+) */
-
- /* Information about the match that isn't often used */
-
SSize_t maxlen; /* minimum possible number of chars in string to match */
/*---------------------------------------------------------------------- */
- /* offset from wrapped to the start of precomp */
- PERL_BITFIELD32 pre_prefix:4;
-
- /* original flags used to compile the pattern, may differ from
- * extflags in various ways */
- PERL_BITFIELD32 compflags:9;
-
- /*---------------------------------------------------------------------- */
CV *qr_anoncv; /* the anon sub wrapped round qr/(?{..})/ */
} regexp;
# define ReREFCNT_dec(re) SvREFCNT_dec(re)
# define ReREFCNT_inc(re) ((REGEXP *) SvREFCNT_inc(re))
#endif
-#define ReANY(re) S_ReANY((const REGEXP *)(re))
+#define ReANY(re) Perl_ReANY((const REGEXP *)(re))
/* FIXME for plugins. */
STRLEN sublen; /* saved sublen field from rex */
STRLEN suboffset; /* saved suboffset field from rex */
STRLEN subcoffset; /* saved subcoffset field from rex */
+ SV *sv; /* $_ during (?{}) */
MAGIC *pos_magic; /* pos() magic attached to $_ */
SSize_t pos; /* the original value of pos() in pos_magic */
U8 pos_flags; /* flags to be restored; currently only MGf_BYTES*/
typedef struct regmatch_state {
int resume_state; /* where to jump to on return */
char *locinput; /* where to backtrack in string on failure */
+ char *loceol;
+ U8 *sr0; /* position of start of script run, or NULL */
union {
struct regmatch_state *prev_yes_state;
I32 wanted;
I32 logical; /* saved copy of 'logical' var */
+ U8 count; /* number of beginning positions */
+ char *start;
+ char *end;
regnode *me; /* the IFMATCH/SUSPEND/UNLESSM node */
} ifmatch; /* and SUSPEND/UNLESSM */