#include "mop.h"
MODULE = Class::MOP::Package PACKAGE = Class::MOP::Package
PROTOTYPES: DISABLE
void
get_all_package_symbols(self, filter=TYPE_FILTER_NONE)
SV *self
type_filter_t filter
PREINIT:
HV *stash = NULL;
HV *symbols = NULL;
register HE *he;
PPCODE:
if ( ! SvROK(self) ) {
die("Cannot call get_all_package_symbols as a class method");
}
if (GIMME_V == G_VOID) {
XSRETURN_EMPTY;
}
PUTBACK;
if ( (he = hv_fetch_ent((HV *)SvRV(self), KEY_FOR(package), 0, HASH_FOR(package))) ) {
stash = gv_stashsv(HeVAL(he), 0);
}
if (!stash) {
XSRETURN_UNDEF;
}
symbols = mop_get_all_package_symbols(stash, filter);
PUSHs(sv_2mortal(newRV_noinc((SV *)symbols)));
BOOT:
INSTALL_SIMPLE_READER_WITH_KEY(Package, name, package);