PUSHs(newSVpv(name, 0));
}
+# This is some pretty grotty logic. It _should_ be parallel to the
+# pure Perl version in lib/Class/MOP.pm, so if you want to understand
+# it we suggest you start there.
void
is_class_loaded(klass=&PL_sv_undef)
SV *klass
XSRETURN_EMPTY;
}
-
PUTBACK;
if ( (he = hv_fetch_ent((HV *)SvRV(self), key_package, 0, hash_package)) ) {
if (!stash) {
- switch (GIMME_V) {
- case G_SCALAR: XSRETURN_UNDEF; break;
- case G_ARRAY: XSRETURN_EMPTY; break;
- }
+ XSRETURN_UNDEF;
}
symbols = get_all_package_symbols(stash, filter);
-
- switch (GIMME_V) {
- case G_SCALAR:
- PUSHs(sv_2mortal(newRV_inc((SV *)symbols)));
- break;
- case G_ARRAY:
- warn("Class::MOP::Package::get_all_package_symbols in list context is deprecated. use scalar context instead.");
-
- EXTEND(SP, HvKEYS(symbols) * 2);
-
- while ((he = hv_iternext(symbols))) {
- PUSHs(hv_iterkeysv(he));
- PUSHs(sv_2mortal(SvREFCNT_inc(HeVAL(he))));
- }
-
- break;
- default:
- break;
- }
-
- SvREFCNT_dec((SV *)symbols);
+ PUSHs(sv_2mortal(newRV_noinc((SV *)symbols)));
void
name(self)