Commit | Line | Data |
59017825 |
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 |