File Coverage

MethodMaker.xs
Criterion Covered Total %
statement 5 6 83.3
branch 6 10 60.0
condition n/a
subroutine n/a
pod n/a
total 11 16 68.7


line stmt bran cond sub pod time code
1             #include "EXTERN.h"
2             #include "perl.h"
3             #include "XSUB.h"
4              
5             /* inspired/stolen from Clone::Closure, to keep in sync with 5.13.3+ */
6             #ifndef CvGV_set
7             #define CvGV_set(cv,gv) CvGV(cv) = (gv)
8             #endif
9              
10             MODULE = Class::MethodMaker PACKAGE = Class::MethodMaker
11              
12             PROTOTYPES: ENABLE
13              
14             int
15             set_sub_name(SV *sub, char *pname, char *subname, char *stashname)
16             INIT:
17 439 50         if (!SvTRUE(ST(0)) || !SvTRUE(ST(1)) || !SvTRUE(ST(2)) || !SvTRUE(ST(3)))
    50          
    50          
    50          
18 0           XSRETURN_UNDEF;
19             CODE:
20 439           CvGV_set((CV*)SvRV(sub), gv_fetchpv(stashname, TRUE, SVt_PV));
21 439           GvSTASH(CvGV((GV*)SvRV(sub))) = gv_stashpv(pname, 1);
22             #ifdef gv_name_set
23 439           gv_name_set(CvGV((GV*)SvRV(sub)), subname, strlen(subname), GV_NOTQUAL);
24             #else
25             GvNAME(CvGV((GV*)SvRV(sub))) = savepv(subname);
26             GvNAMELEN(CvGV((GV*)SvRV(sub))) = strlen(subname);
27             #endif
28 439 100         RETVAL = 1;
29             OUTPUT:
30             RETVAL