File Coverage

blib/lib/XS/TCC/Typemaps.pm
Criterion Covered Total %
statement 8 8 100.0
branch n/a
condition n/a
subroutine 3 3 100.0
pod n/a
total 11 11 100.0


line stmt bran cond sub pod time code
1             package XS::TCC::Typemaps;
2 3     3   45 use 5.012;
  3         5  
3 3     3   8 use warnings;
  3         3  
  3         57  
4              
5 3     3   9 use ExtUtils::Typemaps;
  3         3  
  3         175  
6             our $Typemap = ExtUtils::Typemaps->new(string => <<'END_TYPEMAP_SECTION');
7             TYPEMAP
8              
9              
10             INPUT
11             T_SVREF
12             STMT_START {
13             $var = tm_input_svref(aTHX_ $arg);
14             if (!$var) {
15             Perl_croak(aTHX_ \"%s: %s is not a reference\",
16             ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
17             \"$var\");
18             }
19             } STMT_END
20              
21             T_SVREF_REFCOUNT_FIXED
22             STMT_START {
23             $var = tm_input_svref(aTHX_ $arg);
24             if (!$var) {
25             Perl_croak(aTHX_ \"%s: %s is not a reference\",
26             ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
27             \"$var\");
28             }
29             } STMT_END
30              
31             T_AVREF
32             STMT_START {
33             $var = tm_input_avref(aTHX_ $arg);
34             if (!$var) {
35             Perl_croak(aTHX_ \"%s: %s is not an ARRAY reference\",
36             ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
37             \"$var\");
38             }
39             } STMT_END
40              
41             T_AVREF_REFCOUNT_FIXED
42             STMT_START {
43             $var = tm_input_avref(aTHX_ $arg);
44             if (!$var) {
45             Perl_croak(aTHX_ \"%s: %s is not an ARRAY reference\",
46             ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
47             \"$var\");
48             }
49             } STMT_END
50              
51             T_HVREF
52             STMT_START {
53             $var = tm_input_hvref(aTHX_ $arg);
54             if (!$var) {
55             Perl_croak(aTHX_ \"%s: %s is not a HASH reference\",
56             ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
57             \"$var\");
58             }
59             } STMT_END
60              
61             T_HVREF_REFCOUNT_FIXED
62             STMT_START {
63             $var = tm_input_hvref(aTHX_ $arg);
64             if (!$var) {
65             Perl_croak(aTHX_ \"%s: %s is not a HASH reference\",
66             ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
67             \"$var\");
68             }
69             } STMT_END
70              
71             T_CVREF
72             STMT_START {
73             $var = tm_input_cvref(aTHX_ $arg);
74             if (!$var) {
75             Perl_croak(aTHX_ "%s: %s is not a CODE reference\",
76             ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
77             \"$var\");
78             }
79             } STMT_END
80              
81             T_CVREF_REFCOUNT_FIXED
82             STMT_START {
83             $var = tm_input_cvref(aTHX_ $arg);
84             if (!$var) {
85             Perl_croak(aTHX_ "%s: %s is not a CODE reference\",
86             ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
87             \"$var\");
88             }
89             } STMT_END
90              
91             T_PTRREF
92             STMT_START {
93             $var = ($type)tm_input_ptrref(aTHX_ $arg);
94             if (!$var)
95             Perl_croak(aTHX_ \"%s: %s is not a reference\",
96             ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
97             \"$var\");
98             } STMT_END
99              
100              
101             O_OBJECT
102             STMT_START {
103             var = ($type)tm_input_o_object(aTHX_ $arg);
104             if (var == NULL)
105             XSRETURN_UNDEF;
106             } STMT_END
107              
108              
109             OUTPUT
110             T_SVREF
111             $arg = newRV_noinc((SV *)$var);
112              
113             T_SVREF_REFCOUNT_FIXED
114             $arg = newRV_noinc((SV *)$var);
115              
116             T_AVREF
117             $arg = newRV_noinc((SV *)$var);
118              
119             T_AVREF_REFCOUNT_FIXED
120             $arg = newRV_noinc((SV *)$var);
121              
122             T_HVREF
123             $arg = newRV_noinc((SV *)$var);
124              
125             T_HVREF_REFCOUNT_FIXED
126             $arg = newRV_noinc((SV *)$var);
127              
128             T_SYSRET
129             tm_output_sysret(aTHX_ (IV)$var, &arg);
130              
131             O_OBJECT
132             sv_setref_pv( $arg, CLASS, (void*)$var );
133              
134             END_TYPEMAP_SECTION
135              
136             1;