5 HV *_get_namespace(SV *self)
14 call_method("namespace", G_SCALAR);
20 return (HV*)SvRV(ret);
23 MODULE = Package::Stash PACKAGE = Package::Stash
28 new(class, package_name)
35 if (!SvPOK(package_name))
36 croak("The constructor argument must be the name of a package");
40 hv_store(instance, "name", 4, package_name, 0);
41 namespace = gv_stashpv(SvPV_nolen(package_name), GV_ADD);
42 hv_store(instance, "namespace", 9, newRV((SV*)namespace), 0);
44 RETVAL = sv_bless(newRV((SV*)instance), gv_stashpv(class, 0));
54 if (!sv_isobject(self))
55 croak("Can't call name as a class method");
56 slot = hv_fetch((HV*)SvRV(self), "name", 4, 0);
57 RETVAL = slot ? SvREFCNT_inc(*slot) : &PL_sv_undef;
67 if (!sv_isobject(self))
68 croak("Can't call namespace as a class method");
69 slot = hv_fetch((HV*)SvRV(self), "namespace", 9, 0);
70 RETVAL = slot ? SvREFCNT_inc(*slot) : &PL_sv_undef;
75 remove_package_glob(self, name)
81 hv_delete(_get_namespace(self), name, strlen(name), G_DISCARD);