X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=xs%2FPackage.xs;h=ce8d390054f9d853feaa442841397df8a7a16cf6;hb=dca0c6172ee6967b99f95e24dc1afe1e18fb0b5e;hp=7bc25cae555d151a3c1d0834f48255966de1cf96;hpb=d846ade3f993c0e6c140bb28284022e602b8988e;p=gitmo%2FClass-MOP.git diff --git a/xs/Package.xs b/xs/Package.xs index 7bc25ca..ce8d390 100644 --- a/xs/Package.xs +++ b/xs/Package.xs @@ -1,7 +1,5 @@ #include "mop.h" -NEEDS_KEY(package); - MODULE = Class::MOP::Package PACKAGE = Class::MOP::Package PROTOTYPES: DISABLE @@ -25,7 +23,7 @@ get_all_package_symbols(self, filter=TYPE_FILTER_NONE) PUTBACK; - if ( (he = hv_fetch_ent((HV *)SvRV(self), key_package, 0, hash_package)) ) { + if ( (he = hv_fetch_ent((HV *)SvRV(self), KEY_FOR(package), 0, HASH_FOR(package))) ) { stash = gv_stashsv(HeVAL(he), 0); } @@ -34,20 +32,8 @@ get_all_package_symbols(self, filter=TYPE_FILTER_NONE) XSRETURN_UNDEF; } - symbols = get_all_package_symbols(stash, filter); + symbols = mop_get_all_package_symbols(stash, filter); PUSHs(sv_2mortal(newRV_noinc((SV *)symbols))); -void -name(self) - SV *self - PREINIT: - register HE *he; - PPCODE: - if ( ! SvROK(self) ) { - die("Cannot call name as a class method"); - } - - if ( (he = hv_fetch_ent((HV *)SvRV(self), key_package, 0, hash_package)) ) - XPUSHs(HeVAL(he)); - else - ST(0) = &PL_sv_undef; +BOOT: + INSTALL_SIMPLE_READER_WITH_KEY(Package, name, package);