/* regexp.h
*
* Copyright (C) 1993, 1994, 1996, 1997, 1999, 2000, 2001, 2003,
- * 2005, 2006 by Larry Wall and others
+ * 2005, 2006, 2007, by Larry Wall and others
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
paren name. >= 1 is reserved for actual numbered captures, i.e. $1,
$2 etc.
*/
-#define RXf_PREMATCH -2 /* $` / ${^PREMATCH} */
-#define RXf_POSTMATCH -1 /* $' / ${^POSTMATCH} */
-#define RXf_MATCH 0 /* $& / ${^MATCH} */
+#define RX_BUFF_IDX_PREMATCH -2 /* $` / ${^PREMATCH} */
+#define RX_BUFF_IDX_POSTMATCH -1 /* $' / ${^POSTMATCH} */
+#define RX_BUFF_IDX_FULLMATCH 0 /* $& / ${^MATCH} */
/*
Flags that are passed to the named_buff and named_buff_iter
*/
/* The Tie::Hash::NamedCapture operation this is part of, if any */
-#define RXf_HASH_FETCH 0x0001
-#define RXf_HASH_STORE 0x0002
-#define RXf_HASH_DELETE 0x0004
-#define RXf_HASH_CLEAR 0x0008
-#define RXf_HASH_EXISTS 0x0010
-#define RXf_HASH_SCALAR 0x0020
-#define RXf_HASH_FIRSTKEY 0x0040
-#define RXf_HASH_NEXTKEY 0x0080
+#define RXapif_FETCH 0x0001
+#define RXapif_STORE 0x0002
+#define RXapif_DELETE 0x0004
+#define RXapif_CLEAR 0x0008
+#define RXapif_EXISTS 0x0010
+#define RXapif_SCALAR 0x0020
+#define RXapif_FIRSTKEY 0x0040
+#define RXapif_NEXTKEY 0x0080
/* Whether %+ or %- is being operated on */
-#define RXf_HASH_ONE 0x0100 /* %+ */
-#define RXf_HASH_ALL 0x0200 /* %- */
+#define RXapif_ONE 0x0100 /* %+ */
+#define RXapif_ALL 0x0200 /* %- */
/* Whether this is being called from a re:: function */
-#define RXf_HASH_REGNAME 0x0400
-#define RXf_HASH_REGNAMES 0x0800
-#define RXf_HASH_REGNAMES_COUNT 0x1000
+#define RXapif_REGNAME 0x0400
+#define RXapif_REGNAMES 0x0800
+#define RXapif_REGNAMES_COUNT 0x1000
/*
=head1 REGEXP Functions
* Note that flags starting with RXf_PMf_ have exact equivalents
* stored in op_pmflags and which are defined in op.h, they are defined
* numerically here only for clarity.
+ *
+ * NOTE: if you modify any RXf flags you should run regen.pl or regcomp.pl
+ * so that regnodes.h is updated with the changes.
+ *
*/
/* Anchor and GPOS related stuff */
#define RXf_SKIPWHITE 0x00000100 /* Pattern is for a split / / */
#define RXf_START_ONLY 0x00000200 /* Pattern is /^/ */
#define RXf_WHITE 0x00000400 /* Pattern is /\s+/ */
+#define RXf_NULL 0x40000000 /* Pattern is // */
/* 0x1F800 of extflags is used by (RXf_)PMf_COMPILETIME */
#define RXf_PMf_LOCALE 0x00000800 /* use locale */
#define RXf_PMf_SINGLELINE 0x00002000 /* /s */
#define RXf_PMf_FOLD 0x00004000 /* /i */
#define RXf_PMf_EXTENDED 0x00008000 /* /x */
-#define RXf_PMf_KEEPCOPY 0x00010000 /* /k */
+#define RXf_PMf_KEEPCOPY 0x00010000 /* /p */
/* these flags are transfered from the PMOP->op_pmflags member during compilation */
#define RXf_PMf_STD_PMMOD (RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_FOLD|RXf_PMf_EXTENDED)
#define RXf_PMf_COMPILETIME (RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_LOCALE|RXf_PMf_FOLD|RXf_PMf_EXTENDED|RXf_PMf_KEEPCOPY)
#define M_PAT_MODS QR_PAT_MODS LOOP_PAT_MODS
#define S_PAT_MODS M_PAT_MODS EXEC_PAT_MODS
+/*
+ * NOTE: if you modify any RXf flags you should run regen.pl or regcomp.pl
+ * so that regnodes.h is updated with the changes.
+ *
+ */
/* What we have seen */
#define RXf_LOOKBEHIND_SEEN 0x00020000
#define RXf_USE_INTUIT_NOML 0x01000000
#define RXf_USE_INTUIT_ML 0x02000000
#define RXf_INTUIT_TAIL 0x04000000
-/* one bit here */
+
+/*
+ Set in Perl_pmruntime if op_flags & OPf_SPECIAL, i.e. split. Will
+ be used by regex engines to check whether they should set
+ RXf_SKIPWHITE
+*/
+#define RXf_SPLIT 0x08000000
+
#define RXf_USE_INTUIT (RXf_USE_INTUIT_NOML|RXf_USE_INTUIT_ML)
/* Copy and tainted info */
#define RXf_TAINTED_SEEN 0x20000000
#define RXf_TAINTED 0x80000000 /* this pattern is tainted */
+/*
+ * NOTE: if you modify any RXf flags you should run regen.pl or regcomp.pl
+ * so that regnodes.h is updated with the changes.
+ *
+ */
#define RX_HAS_CUTGROUP(prog) ((prog)->intflags & PREGf_CUTGROUP_SEEN)
#define RX_MATCH_TAINTED(prog) ((prog)->extflags & RXf_TAINTED_SEEN)