Add first XS implementation
[gitmo/Mouse.git] / xs-src / Mouse.xs
CommitLineData
df6dd016 1#include "mouse.h"
2
3MODULE = Mouse PACKAGE = Mouse::Util
4
5PROTOTYPES: DISABLE
6
7bool
8is_class_loaded(SV* sv = &PL_sv_undef)
9
10void
11get_code_info(CV* code)
12PREINIT:
13 GV* gv;
14 HV* stash;
15PPCODE:
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
22SV*
23get_code_package(CV* code)
24PREINIT:
25 HV* stash;
26CODE:
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 }
33OUTPUT:
34 RETVAL
35