-#ifndef MUTABLE_PTR
-# if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
-# define MUTABLE_PTR(p) ({ void *_p = (p); _p; })
-# else
-# define MUTABLE_PTR(p) ((void *) (p))
-# endif
-
-# define MUTABLE_AV(p) ((AV *)MUTABLE_PTR(p))
-# define MUTABLE_CV(p) ((CV *)MUTABLE_PTR(p))
-# define MUTABLE_GV(p) ((GV *)MUTABLE_PTR(p))
-# define MUTABLE_HV(p) ((HV *)MUTABLE_PTR(p))
-# define MUTABLE_IO(p) ((IO *)MUTABLE_PTR(p))
-# define MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p))
-#endif
-
-#ifndef SvPVx_nolen_const
-# if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
-# define SvPVx_nolen_const(sv) ({SV *_sv = (sv); SvPV_nolen_const(_sv); })
-# else
-# define SvPVx_nolen_const(sv) (SvPV_nolen_const(sv))
-# endif
-#endif
-
-#ifndef PERL_ARGS_ASSERT_CK_WARNER
-static void Perl_ck_warner(pTHX_ U32 err, const char* pat, ...);
-
-# ifdef vwarner
-static
-void
-Perl_ck_warner(pTHX_ U32 err, const char* pat, ...)
-{
- va_list args;
-
- PERL_UNUSED_ARG(err);
- if (ckWARN(err)) {
- va_list args;
- va_start(args, pat);
- vwarner(err, pat, &args);
- va_end(args);
- }
-}
-# else
-/* yes this replicates my_warner */
-static
-void
-Perl_ck_warner(pTHX_ U32 err, const char* pat, ...)
-{
- SV *sv;
- va_list args;
-
- PERL_UNUSED_ARG(err);
-
- va_start(args, pat);
- sv = vnewSVpvf(pat, &args);
- va_end(args);
- sv_2mortal(sv);
- warn("%s", SvPV_nolen(sv));
-}
-# endif
-#endif
-
-#define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s)
-#define PERL_DECIMAL_VERSION \
- PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION)
-#define PERL_VERSION_LT(r,v,s) \
- (PERL_DECIMAL_VERSION < PERL_VERSION_DECIMAL(r,v,s))
-#define PERL_VERSION_GE(r,v,s) \
- (PERL_DECIMAL_VERSION >= PERL_VERSION_DECIMAL(r,v,s))
-