3 /* equivalent to "blessed($x) && $x->isa($klass)" */
5 mouse_is_instance_of(pTHX_ SV* const sv, SV* const klass){
9 if(IsObject(sv) && SvOK(klass)){
15 ok = SvTRUEx(mcall1s(sv, "isa", klass));
28 mouse_is_class_loaded(pTHX_ SV * const klass){
33 if (!(SvPOKp(klass) && SvCUR(klass))) { /* XXX: SvPOK does not work with magical scalars */
37 stash = gv_stashsv(klass, FALSE);
42 if (( gvp = (GV**)hv_fetchs(stash, "VERSION", FALSE) )) {
43 if(isGV(*gvp) && GvSV(*gvp) && SvOK(GvSV(*gvp))){
48 if (( gvp = (GV**)hv_fetchs(stash, "ISA", FALSE) )) {
49 if(isGV(*gvp) && GvAV(*gvp) && av_len(GvAV(*gvp)) != -1){
55 while(( he = hv_iternext(stash) )){
56 GV* const gv = (GV*)HeVAL(he);
72 mouse_call0 (pTHX_ SV *const self, SV *const method)
81 call_sv(method, G_SCALAR | G_METHOD);
91 mouse_call1 (pTHX_ SV *const self, SV *const method, SV* const arg1)
102 call_sv(method, G_SCALAR | G_METHOD);