start the conversion to xs
[gitmo/Package-Stash-XS.git] / Stash.xs
1 #include "EXTERN.h"
2 #include "perl.h"
3 #include "XSUB.h"
4
5 MODULE = Package::Stash  PACKAGE = Package::Stash
6
7 SV*
8 new(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