This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
It's possible to write the dup of struct reg_substr_datum with a
[perl5.git] / op.h
diff --git a/op.h b/op.h
index f84f123..3c77999 100644 (file)
--- a/op.h
+++ b/op.h
@@ -111,6 +111,8 @@ Deprecated.  Use C<GIMME_V> instead.
 #define OPf_STACKED    64      /* Some arg is arriving on the stack. */
 #define OPf_SPECIAL    128     /* Do something weird for this op: */
                                /*  On local LVAL, don't init local value. */
+                               /*  On OP_CONST, value is the hints hash for
+                                   eval, so return a copy from pp_const() */
                                /*  On OP_SORT, subroutine is inlined. */
                                /*  On OP_NOT, inversion was implicit. */
                                /*  On OP_LEAVE, don't restore curpm. */
@@ -203,14 +205,14 @@ Deprecated.  Use C<GIMME_V> instead.
 #define OPpLVAL_DEFER          16      /* Defer creation of array/hash elem */
   /* OP_RV2?V, OP_GVSV, OP_ENTERITER only */
 #define OPpOUR_INTRO           16      /* Variable was in an our() */
-  /* OP_RV2[AH]V, OP_PAD[AH]V, OP_[AH]ELEM */
+  /* OP_RV2[AGH]V, OP_PAD[AH]V, OP_[AH]ELEM */
 #define OPpMAYBE_LVSUB         8       /* We might be an lvalue to return */
   /* OP_PADSV only */
 #define OPpPAD_STATE           16      /* is a "state" pad */
   /* for OP_RV2?V, lower bits carry hints (currently only HINT_STRICT_REFS) */
 
   /* OP_RV2GV only */
-#define OPpDONT_INIT_GV                8       /* Call gv_fetchpv with GV_NOINIT */
+#define OPpDONT_INIT_GV                4       /* Call gv_fetchpv with GV_NOINIT */
 /* (Therefore will return whatever is currently in the symbol table, not
    guaranteed to be a PVGV)  */
 
@@ -367,16 +369,19 @@ struct pmop {
 #define PMf_GLOBAL     0x0100          /* pattern had a g modifier */
 #define PMf_CONTINUE   0x0200          /* don't reset pos() if //g fails */
 #define PMf_EVAL       0x0400          /* evaluating replacement as expr */
-#define PMf_LOCALE     0x0800          /* use locale for character types */
-#define PMf_MULTILINE  0x1000          /* assume multiple lines */
-#define PMf_SINGLELINE 0x2000          /* assume single line */
-#define PMf_FOLD       0x4000          /* case insensitivity */
-#define PMf_EXTENDED   0x8000          /* chuck embedded whitespace */
-
-/* mask of bits stored in regexp->extflags
-   these all are also called RXf_PMf_xyz
+
+/* The following flags have exact equivalents in regcomp.h with the prefix RXf_
+ * which are stored in the regexp->extflags member.
  */
-#define PMf_COMPILETIME        (PMf_MULTILINE|PMf_SINGLELINE|PMf_LOCALE|PMf_FOLD|PMf_EXTENDED)
+#define PMf_LOCALE     0x00800         /* use locale for character types */
+#define PMf_MULTILINE  0x01000         /* assume multiple lines */
+#define PMf_SINGLELINE 0x02000         /* assume single line */
+#define PMf_FOLD       0x04000         /* case insensitivity */
+#define PMf_EXTENDED   0x08000         /* chuck embedded whitespace */
+#define PMf_KEEPCOPY   0x10000         /* copy the string when matching */
+
+/* mask of bits that need to be transfered to re->extflags */
+#define PMf_COMPILETIME        (PMf_MULTILINE|PMf_SINGLELINE|PMf_LOCALE|PMf_FOLD|PMf_EXTENDED|PMf_KEEPCOPY)
 
 #ifdef USE_ITHREADS
 
@@ -575,7 +580,8 @@ struct loop {
 
 /* no longer used anywhere in core */
 #ifndef PERL_CORE
-#define cv_ckproto(cv, gv, p) cv_ckproto_len(cv, gv, p, p ? strlen(p) : 0)
+#define cv_ckproto(cv, gv, p) \
+   cv_ckproto_len((cv), (gv), (p), (p) ? strlen(p) : 0)
 #endif
 
 #ifdef USE_REENTRANT_API