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. */
+# 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
HV *stash;
char *key;
I32 keylen;
- GV *gv;
+ SV *gv;
PPCODE:
if (!SvPOK(klass) || !SvCUR(klass)) {
XSRETURN_NO;
}
(void)hv_iterinit(stash);
- while ((gv = (GV *)hv_iternextsv(stash, &key, &keylen))) {
+ while ((gv = hv_iternextsv(stash, &key, &keylen))) {
if (keylen <= 0) {
continue;
}
continue;
}
- if (GvCV(gv)) {
+ if (!isGV(gv) || GvCV(gv)) {
XSRETURN_YES;
}
}
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)