X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=xs-src%2FMouseUtil.xs;h=c1d4d91cba7df1fdf66c17d63b2c45be0283d14a;hp=2e7f50bd83bcdbdf8ed7d16faf777951d9c5bc6b;hb=aa2d2e2c0621cdcb8b2ec7cf49beb3a9de11803c;hpb=5ecfc2defd2955d68c9cbc3ad048ce80bd1020da diff --git a/xs-src/MouseUtil.xs b/xs-src/MouseUtil.xs index 2e7f50b..c1d4d91 100644 --- a/xs-src/MouseUtil.xs +++ b/xs-src/MouseUtil.xs @@ -197,11 +197,19 @@ mouse_call1 (pTHX_ SV *const self, SV *const method, SV* const arg1) } SV* -mouse_get_metaclass_by_name(pTHX_ SV* const metaclass_name){ +mouse_get_metaclass(pTHX_ SV* metaclass_name){ CV* const get_metaclass = get_cvs("Mouse::Util::get_metaclass_by_name", TRUE); SV* metaclass; dSP; + assert(metaclass_name); + if(IsObject(metaclass_name)){ + HV* const stash = SvSTASH(metaclass_name); + + metaclass_name = newSVpvn_share(HvNAME_get(stash), HvNAMELEN_get(stash), 0U); + sv_2mortal(metaclass_name); + } + PUSHMARK(SP); XPUSHs(metaclass_name); PUTBACK;