X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=Magic.xs;h=4e62500715cb6773dc93d95741278332e6e3f31d;hb=40d1b68c7d0fb47f788579639d0712dd801339f6;hp=85d7c85133e4df513efd0fddb77fee7e22758594;hpb=c01835268b81dbfdc578a5d6c0e782c376a30923;p=perl%2Fmodules%2FVariable-Magic.git diff --git a/Magic.xs b/Magic.xs index 85d7c85..4e62500 100644 --- a/Magic.xs +++ b/Magic.xs @@ -30,6 +30,10 @@ # endif #endif +#define VMG_HAS_PERL_OR(P, R, V, S) ((VMG_PERL_PATCHLEVEL >= (P)) || (!VMG_PERL_PATCHLEVEL && PERL_VERSION_GE((R), (V), (S)))) + +#define VMG_HAS_PERL_AND(P, R, V, S) (PERL_VERSION_GE((R), (V), (S)) && (!VMG_PERL_PATCHLEVEL || (VMG_PERL_PATCHLEVEL >= (P)))) + /* --- Compatibility ------------------------------------------------------- */ #ifndef Newx @@ -68,26 +72,26 @@ #endif /* uvar magic and Hash::Util::FieldHash were commited with p28419 */ -#if (VMG_PERL_PATCHLEVEL >= 28419) || (!VMG_PERL_PATCHLEVEL && PERL_VERSION_GE(5, 9, 4)) +#if VMG_HAS_PERL_AND(28419, 5, 9, 4) # define VMG_UVAR 1 #else # define VMG_UVAR 0 #endif -#if (VMG_PERL_PATCHLEVEL >= 25854) || (!VMG_PERL_PATCHLEVEL && PERL_VERSION_GE(5, 9, 3)) +#if !defined(VMG_COMPAT_ARRAY_PUSH_NOLEN) && VMG_HAS_PERL_OR(25854, 5, 9, 3) # define VMG_COMPAT_ARRAY_PUSH_NOLEN 1 #else # define VMG_COMPAT_ARRAY_PUSH_NOLEN 0 #endif /* since 5.9.5 - see #43357 */ -#if (VMG_PERL_PATCHLEVEL >= 31473) || (!VMG_PERL_PATCHLEVEL && PERL_VERSION_GE(5, 9, 5)) +#if VMG_HAS_PERL_OR(31473, 5, 9, 5) # define VMG_COMPAT_ARRAY_UNDEF_CLEAR 1 #else # define VMG_COMPAT_ARRAY_UNDEF_CLEAR 0 #endif -#if (VMG_PERL_PATCHLEVEL >= 32969) || (!VMG_PERL_PATCHLEVEL && PERL_VERSION_GE(5, 11, 0)) +#if VMG_HAS_PERL_OR(32969, 5, 11, 0) # define VMG_COMPAT_SCALAR_LENGTH_NOLEN 1 #else # define VMG_COMPAT_SCALAR_LENGTH_NOLEN 0 @@ -508,7 +512,7 @@ STATIC int vmg_svt_free(pTHX_ SV *sv, MAGIC *mg) { #if MGf_COPY STATIC int vmg_svt_copy(pTHX_ SV *sv, MAGIC *mg, SV *nsv, const char *key, -# if (VMG_PERL_PATCHLEVEL >= 33256) || (!VMG_PERL_PATCHLEVEL && PERL_API_VERSION_GE(5, 11, 0)) +# if VMG_HAS_PERL_AND(33256, 5, 11, 0) I32 keylen # else int keylen