Branch Coverage

FFI.xs
Criterion Covered Total %
branch 17 242 7.0


line true false branch
64 0 0 PUSHMARK(SP);
67 0 0 while (*arg_p)
72 0 0 arg.sc = va_arg_schar(av);
73 0 0 XPUSHs(sv_2mortal(newSViv(arg.sc)));
76 0 0 arg.uc = va_arg_uchar(av);
77 0 0 XPUSHs(sv_2mortal(newSViv(arg.uc)));
80 0 0 arg.ss = va_arg_short(av);
81 0 0 XPUSHs(sv_2mortal(newSViv(arg.ss)));
84 0 0 arg.us = va_arg_ushort(av);
85 0 0 XPUSHs(sv_2mortal(newSViv(arg.us)));
88 0 0 arg.si = va_arg_int(av);
89 0 0 XPUSHs(sv_2mortal(newSViv(arg.si)));
92 0 0 arg.ui = va_arg_uint(av);
93 0 0 XPUSHs(sv_2mortal(newSViv(arg.ui)));
96 0 0 arg.sl = va_arg_long(av);
97 0 0 XPUSHs(sv_2mortal(newSViv(arg.sl)));
100 0 0 arg.ul = va_arg_ulong(av);
101 0 0 XPUSHs(sv_2mortal(newSViv(arg.ul)));
104 0 0 arg.f = va_arg_float(av);
0 0 arg.f = va_arg_float(av);
0 0 arg.f = va_arg_float(av);
105 0 0 XPUSHs(sv_2mortal(newSVnv(arg.f)));
108 0 0 arg.d = va_arg_double(av);
109 0 0 XPUSHs(sv_2mortal(newSVnv(arg.d)));
112 0 0 arg.p = va_arg_ptr(av, char*);
113 0 0 XPUSHs(sv_2mortal(newSVpv(arg.p, 0)));
128 0 0 case 'v': va_return_void(av); break;
0 0 case 'v': va_return_void(av); break;
129 0 0 case 'c': arg.sc = POPi; va_return_schar(av, arg.sc); break;
0 0 case 'c': arg.sc = POPi; va_return_schar(av, arg.sc); break;
0 0 case 'c': arg.sc = POPi; va_return_schar(av, arg.sc); break;
130 0 0 case 'C': arg.uc = POPi; va_return_uchar(av, arg.uc); break;
0 0 case 'C': arg.uc = POPi; va_return_uchar(av, arg.uc); break;
0 0 case 'C': arg.uc = POPi; va_return_uchar(av, arg.uc); break;
131 0 0 case 's': arg.ss = POPi; va_return_short(av, arg.ss); break;
0 0 case 's': arg.ss = POPi; va_return_short(av, arg.ss); break;
0 0 case 's': arg.ss = POPi; va_return_short(av, arg.ss); break;
132 0 0 case 'S': arg.us = POPi; va_return_ushort(av, arg.us); break;
0 0 case 'S': arg.us = POPi; va_return_ushort(av, arg.us); break;
0 0 case 'S': arg.us = POPi; va_return_ushort(av, arg.us); break;
133 0 0 case 'i': arg.si = POPi; va_return_int(av, arg.si); break;
0 0 case 'i': arg.si = POPi; va_return_int(av, arg.si); break;
0 0 case 'i': arg.si = POPi; va_return_int(av, arg.si); break;
134 0 0 case 'I': arg.ui = POPi; va_return_uint(av, arg.ui); break;
0 0 case 'I': arg.ui = POPi; va_return_uint(av, arg.ui); break;
0 0 case 'I': arg.ui = POPi; va_return_uint(av, arg.ui); break;
135 0 0 case 'l': arg.sl = POPi; va_return_long(av, arg.sl); break;
0 0 case 'l': arg.sl = POPi; va_return_long(av, arg.sl); break;
0 0 case 'l': arg.sl = POPi; va_return_long(av, arg.sl); break;
136 0 0 case 'L': arg.ul = POPi; va_return_ulong(av, arg.ul); break;
0 0 case 'L': arg.ul = POPi; va_return_ulong(av, arg.ul); break;
0 0 case 'L': arg.ul = POPi; va_return_ulong(av, arg.ul); break;
137 0 0 case 'f': arg.f = POPn; va_return_double(av, arg.f); break;
0 0 case 'f': arg.f = POPn; va_return_double(av, arg.f); break;
0 0 case 'f': arg.f = POPn; va_return_double(av, arg.f); break;
138 0 0 case 'd': arg.d = POPn; va_return_double(av, arg.d); break;
0 0 case 'd': arg.d = POPn; va_return_double(av, arg.d); break;
0 0 case 'd': arg.d = POPn; va_return_double(av, arg.d); break;
139 0 0 case 'p': arg.p = POPp; va_return_ptr(av, char*, arg.p); break;
0 0 case 'p': arg.p = POPp; va_return_ptr(av, char*, arg.p); break;
0 0 case 'p': arg.p = POPp; va_return_ptr(av, char*, arg.p); break;
143 0 0 FREETMPS;
152 0 4 if (len < 2)
155 0 4 if (*sig != 'c' && *sig != 's')
0 0 if (*sig != 'c' && *sig != 's')
158 0 4 if (strchr("cCsSiIlLfdpv", sig[1]) == NULL)
162 0 4 if (i != len-2)
198 0 4 #ifdef WIN32 /* Set via Makefile.PL */
201 5 4 #endif
207 0 5 char type = sig[i];
212 0 0 switch(type)
0 0 switch(type)
0 0 switch(type)
213 0 0 {
0 0 {
0 0 {
214 0 0 case 'c': arg.sc = SvIV(ST(i)); av_schar(av, arg.sc); break;
0 0 case 'c': arg.sc = SvIV(ST(i)); av_schar(av, arg.sc); break;
0 0 case 'c': arg.sc = SvIV(ST(i)); av_schar(av, arg.sc); break;
215 0 0 case 'C': arg.uc = SvIV(ST(i)); av_uchar(av, arg.uc); break;
0 0 case 'C': arg.uc = SvIV(ST(i)); av_uchar(av, arg.uc); break;
0 0 case 'C': arg.uc = SvIV(ST(i)); av_uchar(av, arg.uc); break;
216 0 0 case 's': arg.ss = SvIV(ST(i)); av_short(av, arg.ss); break;
0 0 case 's': arg.ss = SvIV(ST(i)); av_short(av, arg.ss); break;
0 0 case 's': arg.ss = SvIV(ST(i)); av_short(av, arg.ss); break;
217 0 0 case 'S': arg.us = SvIV(ST(i)); av_ushort(av, arg.us); break;
0 0 case 'S': arg.us = SvIV(ST(i)); av_ushort(av, arg.us); break;
0 0 case 'S': arg.us = SvIV(ST(i)); av_ushort(av, arg.us); break;
218 0 0 case 'i': arg.si = SvIV(ST(i)); av_int(av, arg.si); break;
0 0 case 'i': arg.si = SvIV(ST(i)); av_int(av, arg.si); break;
0 0 case 'i': arg.si = SvIV(ST(i)); av_int(av, arg.si); break;
219 0 0 case 'I': arg.ui = SvIV(ST(i)); av_uint(av, arg.ui); break;
0 0 case 'I': arg.ui = SvIV(ST(i)); av_uint(av, arg.ui); break;
0 0 case 'I': arg.ui = SvIV(ST(i)); av_uint(av, arg.ui); break;
220 0 0 case 'l': arg.sl = SvIV(ST(i)); av_long(av, arg.sl); break;
0 0 case 'l': arg.sl = SvIV(ST(i)); av_long(av, arg.sl); break;
0 0 case 'l': arg.sl = SvIV(ST(i)); av_long(av, arg.sl); break;
0 0 case 'l': arg.sl = SvIV(ST(i)); av_long(av, arg.sl); break;
0 0 case 'l': arg.sl = SvIV(ST(i)); av_long(av, arg.sl); break;
0 0 case 'l': arg.sl = SvIV(ST(i)); av_long(av, arg.sl); break;
221 1 1 case 'L': arg.ul = SvIV(ST(i)); av_ulong(av, arg.ul); break;
2 0 case 'L': arg.ul = SvIV(ST(i)); av_ulong(av, arg.ul); break;
0 0 case 'L': arg.ul = SvIV(ST(i)); av_ulong(av, arg.ul); break;
222 3 0 case 'f': arg.f = SvNV(ST(i)); av_float(av, arg.f); break;
3 0 case 'f': arg.f = SvNV(ST(i)); av_float(av, arg.f); break;
0 0 case 'f': arg.f = SvNV(ST(i)); av_float(av, arg.f); break;
226 0 4 }
232 0 0 {
233 0 0 case 'v': break;
234 0 0 case 'c': XPUSHs(newSViv(rv.sc)); break;
235 0 0 case 'C': XPUSHs(newSViv(rv.uc)); break;
236 0 2 case 's': XPUSHs(newSViv(rv.ss)); break;
237 0 1 case 'S': XPUSHs(newSViv(rv.us)); break;
238 0 0 case 'i': XPUSHs(newSViv(rv.si)); break;
239 0 0 case 'I': XPUSHs(newSViv(rv.ui)); break;
240 0 0 case 'l': XPUSHs(newSViv(rv.sl)); break;
241 0 1 case 'L': XPUSHs(newSViv(rv.ul)); break;
242 0 0 case 'f': XPUSHs(newSVnv(rv.f)); break;
274 0 0 XPUSHs(newSViv(SvIV(SvRV(self))));
0 0 XPUSHs(newSViv(SvIV(SvRV(self))));
283 0 0 cb = SvIV(SvRV(self));