#endif
#define CvFILEGV(sv) (gv_fetchfile(CvFILE(sv)))
#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
-# define CvDEPTH(sv) (*({const CV *_cv = (CV *)sv; \
- assert(SvTYPE(_cv) == SVt_PVCV || \
- SvTYPE(_cv) == SVt_PVFM); \
- &((XPVCV*)SvANY(_cv))->xiv_u.xivu_i32; \
+# define CvDEPTH(sv) (*({const CV *_cvdepth = (CV *)sv; \
+ assert(SvTYPE(_cvdepth) == SVt_PVCV || \
+ SvTYPE(_cvdepth) == SVt_PVFM); \
+ &((XPVCV*)SvANY(_cvdepth))->xiv_u.xivu_i32; \
}))
#else
# define CvDEPTH(sv) ((XPVCV*)SvANY(sv))->xiv_u.xivu_i32
/* BEWARE - something that calls this macro passes (r) which has a side
effect. */
#define PM_SETRE(o,r) STMT_START { \
- const REGEXP *const whap = (r); \
- assert(whap); \
- PL_regex_pad[(o)->op_pmoffset] = (SV*)whap; \
+ const REGEXP *const _pm_setre = (r); \
+ assert(_pm_setre); \
+ PL_regex_pad[(o)->op_pmoffset] = (SV*)_pm_setre; \
} STMT_END
#else
#define PM_GETRE(o) ((o)->op_pmregexp)
#endif
#define NOT_IN_PAD ((PADOFFSET) -1)
-/* B.xs needs these for the benefit of B::Deparse */
+/* B.xs needs these for the benefit of B::Deparse */
/* Low range end is exclusive (valid from the cop seq after this one) */
/* High range end is inclusive (valid up to this cop seq) */
#if defined (DEBUGGING) && defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
# define COP_SEQ_RANGE_LOW(sv) \
- (({ SV *const _svi = (SV *) (sv); \
- assert(SvTYPE(_svi) == SVt_NV || SvTYPE(_svi) >= SVt_PVNV); \
- assert(SvTYPE(_svi) != SVt_PVAV); \
- assert(SvTYPE(_svi) != SVt_PVHV); \
- assert(SvTYPE(_svi) != SVt_PVCV); \
- assert(SvTYPE(_svi) != SVt_PVFM); \
- assert(!isGV_with_GP(_svi)); \
- ((XPVNV*) SvANY(_svi))->xnv_u.xpad_cop_seq.xlow; \
+ (({ SV *const _sv_cop_seq_range_low = (SV *) (sv); \
+ assert(SvTYPE(_sv_cop_seq_range_low) == SVt_NV \
+ || SvTYPE(_sv_cop_seq_range_low) >= SVt_PVNV); \
+ assert(SvTYPE(_sv_cop_seq_range_low) != SVt_PVAV); \
+ assert(SvTYPE(_sv_cop_seq_range_low) != SVt_PVHV); \
+ assert(SvTYPE(_sv_cop_seq_range_low) != SVt_PVCV); \
+ assert(SvTYPE(_sv_cop_seq_range_low) != SVt_PVFM); \
+ assert(!isGV_with_GP(_sv_cop_seq_range_low)); \
+ ((XPVNV*) SvANY(_sv_cop_seq_range_low))->xnv_u.xpad_cop_seq.xlow; \
}))
# define COP_SEQ_RANGE_HIGH(sv) \
- (({ SV *const _svi = (SV *) (sv); \
- assert(SvTYPE(_svi) == SVt_NV || SvTYPE(_svi) >= SVt_PVNV); \
- assert(SvTYPE(_svi) != SVt_PVAV); \
- assert(SvTYPE(_svi) != SVt_PVHV); \
- assert(SvTYPE(_svi) != SVt_PVCV); \
- assert(SvTYPE(_svi) != SVt_PVFM); \
- assert(!isGV_with_GP(_svi)); \
- ((XPVNV*) SvANY(_svi))->xnv_u.xpad_cop_seq.xhigh; \
+ (({ SV *const _sv_cop_seq_range_high = (SV *) (sv); \
+ assert(SvTYPE(_sv_cop_seq_range_high) == SVt_NV \
+ || SvTYPE(_sv_cop_seq_range_high) >= SVt_PVNV); \
+ assert(SvTYPE(_sv_cop_seq_range_high) != SVt_PVAV); \
+ assert(SvTYPE(_sv_cop_seq_range_high) != SVt_PVHV); \
+ assert(SvTYPE(_sv_cop_seq_range_high) != SVt_PVCV); \
+ assert(SvTYPE(_sv_cop_seq_range_high) != SVt_PVFM); \
+ assert(!isGV_with_GP(_sv_cop_seq_range_high)); \
+ ((XPVNV*) SvANY(_sv_cop_seq_range_high))->xnv_u.xpad_cop_seq.xhigh; \
}))
# define PARENT_PAD_INDEX(sv) \
- (({ SV *const _svi = (SV *) (sv); \
- assert(SvTYPE(_svi) == SVt_NV || SvTYPE(_svi) >= SVt_PVNV); \
- assert(SvTYPE(_svi) != SVt_PVAV); \
- assert(SvTYPE(_svi) != SVt_PVHV); \
- assert(SvTYPE(_svi) != SVt_PVCV); \
- assert(SvTYPE(_svi) != SVt_PVFM); \
- assert(!isGV_with_GP(_svi)); \
- ((XPVNV*) SvANY(_svi))->xnv_u.xpad_cop_seq.xlow; \
+ (({ SV *const _sv_parent_pad_index = (SV *) (sv); \
+ assert(SvTYPE(_sv_parent_pad_index) == SVt_NV \
+ || SvTYPE(_sv_parent_pad_index) >= SVt_PVNV); \
+ assert(SvTYPE(_sv_parent_pad_index) != SVt_PVAV); \
+ assert(SvTYPE(_sv_parent_pad_index) != SVt_PVHV); \
+ assert(SvTYPE(_sv_parent_pad_index) != SVt_PVCV); \
+ assert(SvTYPE(_sv_parent_pad_index) != SVt_PVFM); \
+ assert(!isGV_with_GP(_sv_parent_pad_index)); \
+ ((XPVNV*) SvANY(_sv_parent_pad_index))->xnv_u.xpad_cop_seq.xlow; \
}))
# define PARENT_FAKELEX_FLAGS(sv) \
- (({ SV *const _svi = (SV *) (sv); \
- assert(SvTYPE(_svi) == SVt_NV || SvTYPE(_svi) >= SVt_PVNV); \
- assert(SvTYPE(_svi) != SVt_PVAV); \
- assert(SvTYPE(_svi) != SVt_PVHV); \
- assert(SvTYPE(_svi) != SVt_PVCV); \
- assert(SvTYPE(_svi) != SVt_PVFM); \
- assert(!isGV_with_GP(_svi)); \
- ((XPVNV*) SvANY(_svi))->xnv_u.xpad_cop_seq.xhigh; \
+ (({ SV *const _sv_parent_fakelex_flags = (SV *) (sv); \
+ assert(SvTYPE(_sv_parent_fakelex_flags) == SVt_NV \
+ || SvTYPE(_sv_parent_fakelex_flags) >= SVt_PVNV); \
+ assert(SvTYPE(_sv_parent_fakelex_flags) != SVt_PVAV); \
+ assert(SvTYPE(_sv_parent_fakelex_flags) != SVt_PVHV); \
+ assert(SvTYPE(_sv_parent_fakelex_flags) != SVt_PVCV); \
+ assert(SvTYPE(_sv_parent_fakelex_flags) != SVt_PVFM); \
+ assert(!isGV_with_GP(_sv_parent_fakelex_flags)); \
+ ((XPVNV*) SvANY(_sv_parent_fakelex_flags))->xnv_u.xpad_cop_seq.xhigh; \
}))
#else
# define COP_SEQ_RANGE_LOW(sv) \
#endif
/* Flags set in the SvIVX field of FAKE namesvs */
-
+
#define PAD_FAKELEX_ANON 1 /* the lex is declared in an ANON, or ... */
#define PAD_FAKELEX_MULTI 2 /* the lex can be instantiated multiple times */
#define PAD_BASE_SV(padlist, po) \
(AvARRAY(padlist)[1]) \
? AvARRAY((AV*)(AvARRAY(padlist)[1]))[po] : NULL;
-
+
#define PAD_SET_CUR_NOSAVE(padlist,nth) \
PL_comppad = (PAD*) (AvARRAY(padlist)[nth]); \
/* Whether this is being called from a re:: function */
#define RXapif_REGNAME 0x0400
#define RXapif_REGNAMES 0x0800
-#define RXapif_REGNAMES_COUNT 0x1000
+#define RXapif_REGNAMES_COUNT 0x1000
/*
=head1 REGEXP Functions
#define SvRXOK(sv) (Perl_get_re_arg(aTHX_ sv) ? TRUE : FALSE)
-/* Flags stored in regexp->extflags
+/* Flags stored in regexp->extflags
* These are used by code external to the regexp engine
*
* Note that flags starting with RXf_PMf_ have exact equivalents
* 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.
+ * so that regnodes.h is updated with the changes.
*
*/
/*
* NOTE: if you modify any RXf flags you should run regen.pl or regcomp.pl
- * so that regnodes.h is updated with the changes.
+ * so that regnodes.h is updated with the changes.
*
*/
/*
* NOTE: if you modify any RXf flags you should run regen.pl or regcomp.pl
- * so that regnodes.h is updated with the changes.
+ * so that regnodes.h is updated with the changes.
*
*/
#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
# define RX_EXTFLAGS(prog) \
(*({ \
- const REGEXP *const thwape = (prog); \
- assert(SvTYPE(thwape) == SVt_REGEXP); \
- &RXp_EXTFLAGS(SvANY(thwape)); \
+ const REGEXP *const _rx_extflags = (prog); \
+ assert(SvTYPE(_rx_extflags) == SVt_REGEXP); \
+ &RXp_EXTFLAGS(SvANY(_rx_extflags)); \
}))
# define RX_ENGINE(prog) \
(*({ \
- const REGEXP *const thwape = (prog); \
- assert(SvTYPE(thwape) == SVt_REGEXP); \
- &SvANY(thwape)->engine; \
+ const REGEXP *const _rx_engine = (prog); \
+ assert(SvTYPE(_rx_engine) == SVt_REGEXP); \
+ &SvANY(_rx_engine)->engine; \
}))
# define RX_SUBBEG(prog) \
(*({ \
- const REGEXP *const thwape = (prog); \
- assert(SvTYPE(thwape) == SVt_REGEXP); \
- &SvANY(thwape)->subbeg; \
+ const REGEXP *const _rx_subbeg = (prog); \
+ assert(SvTYPE(_rx_subbeg) == SVt_REGEXP); \
+ &SvANY(_rx_subbeg)->subbeg; \
}))
# define RX_OFFS(prog) \
(*({ \
- const REGEXP *const thwape = (prog); \
- assert(SvTYPE(thwape) == SVt_REGEXP); \
- &SvANY(thwape)->offs; \
+ const REGEXP *const _rx_offs = (prog); \
+ assert(SvTYPE(_rx_offs) == SVt_REGEXP); \
+ &SvANY(_rx_offs)->offs; \
}))
# define RX_NPARENS(prog) \
(*({ \
- const REGEXP *const thwape = (prog); \
- assert(SvTYPE(thwape) == SVt_REGEXP); \
- &SvANY(thwape)->nparens; \
+ const REGEXP *const _rx_nparens = (prog); \
+ assert(SvTYPE(_rx_nparens) == SVt_REGEXP); \
+ &SvANY(_rx_nparens)->nparens; \
}))
#else
# define RX_EXTFLAGS(prog) RXp_EXTFLAGS((struct regexp *)SvANY(prog))
/* Whether the pattern stored at RX_WRAPPED is in UTF-8 */
#define RX_UTF8(prog) SvUTF8(prog)
-
+
#define REXEC_COPY_STR 0x01 /* Need to copy the string. */
#define REXEC_CHECKED 0x02 /* check_substr already checked. */
#define REXEC_SCREAM 0x04 /* use scream table. */
# define ReREFCNT_inc(re) \
({ \
/* This is here to generate a casting warning if incorrect. */ \
- REGEXP *const zwapp = (re); \
- assert(SvTYPE(zwapp) == SVt_REGEXP); \
- SvREFCNT_inc(zwapp); \
- zwapp; \
+ REGEXP *const _rerefcnt_inc = (re); \
+ assert(SvTYPE(_rerefcnt_inc) == SVt_REGEXP); \
+ SvREFCNT_inc(_rerefcnt_inc); \
+ _rerefcnt_inc; \
})
# define ReREFCNT_dec(re) \
({ \
/* This is here to generate a casting warning if incorrect. */ \
- REGEXP *const boff = (re); \
- SvREFCNT_dec(boff); \
+ REGEXP *const _rerefcnt_dec = (re); \
+ SvREFCNT_dec(_rerefcnt_dec); \
})
#else
# define ReREFCNT_dec(re) SvREFCNT_dec(re)