| line |
true |
false |
branch |
|
8
|
0 |
16 |
struct PerlSubLogger : ILogger { |
|
12
|
16 |
0 |
PerlSubLogger (const Sub& sub) : fn(xs::in(sub)) {} |
|
15
|
0 |
19 |
if (!is_perl_thread()) throw std::logic_error("can't call pure-perl logging callback: log() called from perl-foreign thread"); |
|
|
0 |
0 |
if (!is_perl_thread()) throw std::logic_error("can't call pure-perl logging callback: log() called from perl-foreign thread"); |
|
20
|
0 |
3 |
struct PerlSubFormatter : IFormatter { |
|
24
|
3 |
0 |
PerlSubFormatter (const Sub& sub) : fn(xs::in(sub)) {} |
|
27
|
0 |
7 |
if (!is_perl_thread()) throw std::logic_error("can't call pure-perl formatting callback: log() called from perl-foreign thread"); |
|
|
0 |
0 |
if (!is_perl_thread()) throw std::logic_error("can't call pure-perl formatting callback: log() called from perl-foreign thread"); |
|
33
|
8 |
0 |
xs::at_perl_destroy([]{ |
|
35
|
8 |
0 |
auto modules = get_modules(); |
|
36
|
14 |
8 |
for (auto module : modules) { |
|
37
|
14 |
0 |
if (dyn_cast(module->get_logger().get())) module->set_logger(nullptr); |
|
|
14 |
0 |
if (dyn_cast(module->get_logger().get())) module->set_logger(nullptr); |
|
|
0 |
14 |
if (dyn_cast(module->get_logger().get())) module->set_logger(nullptr); |
|
|
0 |
0 |
if (dyn_cast(module->get_logger().get())) module->set_logger(nullptr); |
|
38
|
14 |
0 |
if (dyn_cast(module->get_formatter().get())) module->set_formatter(nullptr); |
|
|
14 |
0 |
if (dyn_cast(module->get_formatter().get())) module->set_formatter(nullptr); |
|
|
0 |
14 |
if (dyn_cast(module->get_formatter().get())) module->set_formatter(nullptr); |
|
|
0 |
0 |
if (dyn_cast(module->get_formatter().get())) module->set_formatter(nullptr); |
|
40
|
8 |
0 |
}); |
|
48
|
16 |
51 |
if (sv.is_sub_ref()) return new PerlSubLogger(sv); |
|
|
16 |
0 |
if (sv.is_sub_ref()) return new PerlSubLogger(sv); |
|
|
16 |
0 |
if (sv.is_sub_ref()) return new PerlSubLogger(sv); |
|
53
|
3 |
55 |
if (sv.is_sub_ref()) return new PerlSubFormatter(sv); |
|
|
3 |
0 |
if (sv.is_sub_ref()) return new PerlSubFormatter(sv); |
|
|
3 |
0 |
if (sv.is_sub_ref()) return new PerlSubFormatter(sv); |
|
54
|
30 |
25 |
if (sv.is_string()) return new PatternFormatter(xs::in(sv)); |
|
|
30 |
0 |
if (sv.is_string()) return new PatternFormatter(xs::in(sv)); |
|
|
30 |
0 |
if (sv.is_string()) return new PatternFormatter(xs::in(sv)); |
|
58
|
8 |
0 |
} |
|
|
8 |
0 |
} |