X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=xs-src%2FMouseTypeConstraints.xs;h=6f69f2fdc03ae357c5e018bb0f924d2f80d93b78;hb=80aa5731d6763d8f38ba0fa057729af7026e6580;hp=b88ba95fbd8a625a04aeb2f5ca252a28b7f27143;hpb=a4b901ac53a9eb592740cd6fb20a136e142671db;p=gitmo%2FMouse.git diff --git a/xs-src/MouseTypeConstraints.xs b/xs-src/MouseTypeConstraints.xs index b88ba95..6f69f2f 100644 --- a/xs-src/MouseTypeConstraints.xs +++ b/xs-src/MouseTypeConstraints.xs @@ -188,19 +188,19 @@ mouse_tc_ScalarRef(pTHX_ SV* const data PERL_UNUSED_DECL, SV* const sv) { int mouse_tc_ArrayRef(pTHX_ SV* const data PERL_UNUSED_DECL, SV* const sv) { assert(sv); - return SvROK(sv) && !SvOBJECT(SvRV(sv)) && SvTYPE(SvRV(sv)) == SVt_PVAV; + return IsArrayRef(sv); } int mouse_tc_HashRef(pTHX_ SV* const data PERL_UNUSED_DECL, SV* const sv) { assert(sv); - return SvROK(sv) && !SvOBJECT(SvRV(sv)) && SvTYPE(SvRV(sv)) == SVt_PVHV; + return IsHashRef(sv); } int mouse_tc_CodeRef(pTHX_ SV* const data PERL_UNUSED_DECL, SV* const sv) { assert(sv); - return SvROK(sv) && !SvOBJECT(SvRV(sv))&& SvTYPE(SvRV(sv)) == SVt_PVCV; + return IsCodeRef(sv); } int @@ -244,7 +244,7 @@ mouse_tc_Object(pTHX_ SV* const data PERL_UNUSED_DECL, SV* const sv) { static int mouse_parameterized_ArrayRef(pTHX_ SV* const param, SV* const sv) { - if(mouse_tc_ArrayRef(aTHX_ NULL, sv)){ + if(IsArrayRef(sv)){ AV* const av = (AV*)SvRV(sv); I32 const len = av_len(av) + 1; I32 i; @@ -546,7 +546,7 @@ CODE: { check_fptr_t fptr; SV* const tc_code = mcall0s(param, "_compiled_type_constraint"); - if(!(SvROK(tc_code) && SvTYPE(SvRV(tc_code)) == SVt_PVCV)){ + if(!IsCodeRef(tc_code)){ croak("_compiled_type_constraint didn't return a CODE reference"); } @@ -625,7 +625,7 @@ CODE: I32 len; I32 i; - if(!mouse_tc_ArrayRef(aTHX_ NULL, types_ref)){ + if(!IsArrayRef(types_ref)){ croak("Not an ARRAY reference"); } types = (AV*)SvRV(types_ref);