Branch Coverage

CallbackDispatcher.xsi
Criterion Covered Total %
branch 17 38 44.7


line true false branch
5 11 0 xs::register_package(aTHX_ "Panda::Lib::CallbackDispatcher", "Panda::Lib");
6 11 0 xs::register_package(aTHX_ "Panda::Lib::CallbackDispatcherEvent", "Panda::Lib");
14 1 0 RETVAL = new XSCallbackDispatcher();
20 2 0 THIS->add(CallbackCVWrapperSimple(cb));
2 0 THIS->add(CallbackCVWrapperSimple(cb));
24 1 0 static HV* event_class = gv_stashpvn("Panda::Lib::CallbackDispatcherEvent", 0, 0);
1 0 static HV* event_class = gv_stashpvn("Panda::Lib::CallbackDispatcherEvent", 0, 0);
1 0 static HV* event_class = gv_stashpvn("Panda::Lib::CallbackDispatcherEvent", 0, 0);
0 0 static HV* event_class = gv_stashpvn("Panda::Lib::CallbackDispatcherEvent", 0, 0);
26 1 0 THIS->add(CallbackCVWrapperExt([=](XSCallbackDispatcher::Event& event, SV** args, size_t items) {
1 0 THIS->add(CallbackCVWrapperExt([=](XSCallbackDispatcher::Event& event, SV** args, size_t items) {
28 1 0 full_args[0] = typemap_outcast(&event, event_class);
30 1 0 return xs::call_sub_scalar(aTHX_ cb_ptr.get(), full_args, items+1);
31 1 0 }, cb));
35 2 0 THIS->remove_object(CallbackCVWrapperSimple(cb));
36 2 0 THIS->remove_object(CallbackCVWrapperExt(nullptr, cb));
2 0 THIS->remove_object(CallbackCVWrapperExt(nullptr, cb));
40 7 0 THIS->operator()(&ST(1), items - 1);
47 0 0 RETVAL = THIS->next(&ST(1), items - 1).value_or(&PL_sv_undef);