Add first XS implementation
[gitmo/Mouse.git] / xs-src / Mouse.xs
1 #include "mouse.h"
2
3 MODULE = Mouse  PACKAGE = Mouse::Util
4
5 PROTOTYPES: DISABLE
6
7 bool
8 is_class_loaded(SV* sv = &PL_sv_undef)
9
10 void
11 get_code_info(CV* code)
12 PREINIT:
13     GV* gv;
14     HV* stash;
15 PPCODE:
16     if((gv = CvGV(code)) && isGV(gv) && (stash = GvSTASH(gv))){
17         EXTEND(SP, 2);
18         mPUSHs(newSVpvn_share(HvNAME_get(stash), HvNAMELEN_get(stash), 0U));
19         mPUSHs(newSVpvn_share(GvNAME_get(gv), GvNAMELEN_get(gv), 0U));
20     }
21
22 SV*
23 get_code_package(CV* code)
24 PREINIT:
25     HV* stash;
26 CODE:
27     if(CvGV(code) && isGV(CvGV(code)) && (stash = GvSTASH(CvGV(code)))){
28         RETVAL = newSVpvn_share(HvNAME_get(stash), HvNAMELEN_get(stash), 0U);
29     }
30     else{
31         RETVAL = &PL_sv_no;
32     }
33 OUTPUT:
34     RETVAL
35