Branch Coverage

xs/TypeParser.xs
Criterion Covered Total %
branch 38 54 70.3


line true false branch
55 7 65 type->type_code |= is_by_value ? FFI_PL_TYPE_RECORD_VALUE : FFI_PL_TYPE_RECORD;
57 28 44 if(record_class != NULL)
102 11 61 if(rw)
160 206 3 if( (basis->type_code & FFI_PL_BASE_MASK) == (FFI_PL_TYPE_RECORD & FFI_PL_BASE_MASK)
161 2 204 || (basis->type_code & FFI_PL_BASE_MASK) == (FFI_PL_TYPE_RECORD_VALUE & FFI_PL_BASE_MASK))
165 4 1 if(basis->extra[0].record.class)
174 102 107 custom->perl_to_native = SvOK(perl_to_native) ? SvREFCNT_inc_simple_NN(perl_to_native) : NULL;
102 0 custom->perl_to_native = SvOK(perl_to_native) ? SvREFCNT_inc_simple_NN(perl_to_native) : NULL;
0 102 custom->perl_to_native = SvOK(perl_to_native) ? SvREFCNT_inc_simple_NN(perl_to_native) : NULL;
175 147 62 custom->perl_to_native_post = SvOK(perl_to_native_post) ? SvREFCNT_inc_simple_NN(perl_to_native_post) : NULL;
147 0 custom->perl_to_native_post = SvOK(perl_to_native_post) ? SvREFCNT_inc_simple_NN(perl_to_native_post) : NULL;
0 147 custom->perl_to_native_post = SvOK(perl_to_native_post) ? SvREFCNT_inc_simple_NN(perl_to_native_post) : NULL;
176 82 127 custom->native_to_perl = SvOK(native_to_perl) ? SvREFCNT_inc_simple_NN(native_to_perl) : NULL;
82 0 custom->native_to_perl = SvOK(native_to_perl) ? SvREFCNT_inc_simple_NN(native_to_perl) : NULL;
0 82 custom->native_to_perl = SvOK(native_to_perl) ? SvREFCNT_inc_simple_NN(native_to_perl) : NULL;
237 0 2 if(return_type->extra[0].record.meta == NULL)
239 1 1 if(!return_type->extra[0].record.meta->can_return_from_closure)
248 0 92 Newx(ffi_argument_types, items-3, ffi_type*);
255 72 89 for(i=0; i<(items-3); i++)
258 72 0 type->extra[0].closure.argument_types[i] = INT2PTR(ffi_pl_type*, SvIV((SV*)SvRV(arg)));
300 0 1 if(type->extra[0].closure.argument_types[i]->extra[0].record.meta == NULL)
314 0 89 ffi_status = ffi_prep_cif(
322 0 89 if(ffi_status != FFI_OK)
326 0 0 if(ffi_status == FFI_BAD_TYPEDEF)
328 0 0 else if(ffi_status == FFI_BAD_ABI)
334 33 56 if( items-3 == 0 )
339 47 42 if(type->extra[0].closure.return_type->type_code == FFI_PL_TYPE_VOID)