5 HV *_get_namespace(SV *self)
14 call_method("namespace", G_SCALAR);
20 return (HV*)SvRV(ret);
23 MODULE = Package::Stash PACKAGE = Package::Stash
26 new(class, package_name)
33 if (!SvPOK(package_name))
34 croak("The constructor argument must be the name of a package");
38 hv_store(instance, "name", 4, package_name, 0);
39 namespace = gv_stashpv(SvPV_nolen(package_name), GV_ADD);
40 hv_store(instance, "namespace", 9, newRV((SV*)namespace), 0);
42 RETVAL = sv_bless(newRV((SV*)instance), gv_stashpv(class, 0));
52 if (!sv_isobject(self))
53 croak("Can't call name as a class method");
54 slot = hv_fetch((HV*)SvRV(self), "name", 4, 0);
55 RETVAL = slot ? SvREFCNT_inc(*slot) : &PL_sv_undef;
65 if (!sv_isobject(self))
66 croak("Can't call namespace as a class method");
67 slot = hv_fetch((HV*)SvRV(self), "namespace", 9, 0);
68 RETVAL = slot ? SvREFCNT_inc(*slot) : &PL_sv_undef;
73 remove_package_glob(self, name)
79 hv_delete(_get_namespace(self), name, strlen(name), G_DISCARD);