start the conversion to xs
[gitmo/Package-Stash-XS.git] / Stash.xs
CommitLineData
59017825 1#include "EXTERN.h"
2#include "perl.h"
3#include "XSUB.h"
4
5MODULE = Package::Stash PACKAGE = Package::Stash
6
7SV*
8new(class, package_name)
9 char *class
10 SV *package_name
11 INIT:
12 HV *instance;
13 HV *namespace;
14 CODE:
15 if (!SvPOK(package_name))
16 croak("The constructor argument must be the name of a package");
17
18 instance = newHV();
19
20 hv_store(instance, "name", 4, package_name, 0);
21 namespace = gv_stashpv(SvPV_nolen(package_name), GV_ADD);
22 hv_store(instance, "namespace", 9, newRV((SV*)namespace), 0);
23
24 RETVAL = sv_bless(newRV((SV*)instance), gv_stashpv(class, 0));
25 OUTPUT:
26 RETVAL