line |
true |
false |
branch |
172
|
1 |
0 |
if (!is_perl_thread()) throw std::logic_error("can't call pure-perl formatting callback: log() called from perl-foreign thread"); |
|
0 |
1 |
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"); |
173
|
1 |
0 |
Object o = xs::out(this); |
|
1 |
0 |
Object o = xs::out(this); |
174
|
1 |
0 |
auto ret = o.call("format", xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func)); |
|
1 |
0 |
auto ret = o.call("format", xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func)); |
|
1 |
0 |
auto ret = o.call("format", xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func)); |
|
1 |
0 |
auto ret = o.call("format", xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func)); |
|
1 |
0 |
auto ret = o.call("format", xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func)); |
|
1 |
0 |
auto ret = o.call("format", xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func)); |
|
1 |
0 |
auto ret = o.call("format", xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func)); |
|
1 |
0 |
auto ret = o.call("format", xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func)); |
175
|
1 |
0 |
return xs::in(ret); |
178
|
0 |
1 |
~PerlObjectFormatter () { Backref::dtor(); } |
183
|
123 |
0 |
if (!is_perl_thread()) throw std::logic_error("can't call pure-perl logging callback: log() called from perl-foreign thread"); |
|
0 |
123 |
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"); |
184
|
123 |
0 |
Object o = xs::out(this); |
|
123 |
0 |
Object o = xs::out(this); |
185
|
123 |
0 |
auto sub = o.method("log_format"); |
|
122 |
1 |
auto sub = o.method("log_format"); |
186
|
1 |
122 |
if (!sub) return ILogger::log_format(msg, i, fmt); |
|
1 |
0 |
if (!sub) return ILogger::log_format(msg, i, fmt); |
187
|
122 |
0 |
sub.call(o.ref(), xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func), xs::out(&fmt)); |
|
122 |
0 |
sub.call(o.ref(), xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func), xs::out(&fmt)); |
|
122 |
0 |
sub.call(o.ref(), xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func), xs::out(&fmt)); |
|
122 |
0 |
sub.call(o.ref(), xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func), xs::out(&fmt)); |
|
122 |
0 |
sub.call(o.ref(), xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func), xs::out(&fmt)); |
|
122 |
0 |
sub.call(o.ref(), xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func), xs::out(&fmt)); |
|
122 |
0 |
sub.call(o.ref(), xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func), xs::out(&fmt)); |
|
122 |
0 |
sub.call(o.ref(), xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func), xs::out(&fmt)); |
|
122 |
0 |
sub.call(o.ref(), xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func), xs::out(&fmt)); |
|
122 |
0 |
sub.call(o.ref(), xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func), xs::out(&fmt)); |
|
122 |
1 |
sub.call(o.ref(), xs::out(msg), xs::out(i.level), xs::out(i.module->name()), xs::out(i.file), xs::out(i.line), xs::out(i.func), xs::out(&fmt)); |
191
|
1 |
0 |
if (!is_perl_thread()) throw std::logic_error("can't call pure-perl logging callback: log() called from perl-foreign thread"); |
|
0 |
1 |
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"); |
192
|
1 |
0 |
Object o = xs::out(this); |
|
1 |
0 |
Object o = xs::out(this); |
193
|
1 |
0 |
o.call("log", xs::out(msg), xs::out(info.level)); |
|
1 |
0 |
o.call("log", xs::out(msg), xs::out(info.level)); |
|
1 |
0 |
o.call("log", xs::out(msg), xs::out(info.level)); |
196
|
0 |
25 |
~PerlObjectLogger () { Backref::dtor(); } |
201
|
6 |
1 |
if (!_enabled) return; |
209
|
4 |
1 |
if (!_enabled) return; |
228
|
138 |
0 |
auto ctx = caller_cx(depth, nullptr); |
229
|
138 |
1 |
while (ctx) { |
230
|
137 |
1 |
if (CxTYPE(ctx) == CXt_SUB) return ctx->blk_sub.cv; |
231
|
1 |
0 |
ctx = caller_cx(++depth, nullptr); |
239
|
138 |
0 |
auto cv = get_context_sub(); |
240
|
137 |
1 |
if (cv) { |
241
|
137 |
0 |
GV* gv = CvGV(cv); |
242
|
137 |
0 |
if (gv) func = string_view(GvNAME(gv), GvNAMELEN(gv)); |
245
|
138 |
0 |
return CodePoint{CopFILE(cop), CopLINE(cop), func}; |
248
|
25 |
115 |
if (!items) return Simple(default_message); |
|
25 |
0 |
if (!items) return Simple(default_message); |
250
|
108 |
7 |
if (items == 1) { |
252
|
104 |
4 |
if (arg.is_simple()) { return arg; } |
253
|
0 |
4 |
else { return Simple(SvPV_nolen(args[0])); } |
|
4 |
0 |
else { return Simple(SvPV_nolen(args[0])); } |
|
4 |
0 |
else { return Simple(SvPV_nolen(args[0])); } |
259
|
7 |
0 |
auto pat = SvPV(args[0], patlen); |
|
0 |
0 |
auto pat = SvPV(args[0], patlen); |
260
|
7 |
0 |
Sv ret = Simple::create(patlen * 1.5); |
262
|
5 |
0 |
sv_vcatpvfn(ret, pat, patlen, nullptr, args + 1, items - 1, &stub); |
266
|
143 |
25 |
if (items && SvROK(args[0])) { |
|
55 |
88 |
if (items && SvROK(args[0])) { |
268
|
55 |
0 |
if (has_module(first)) { |
|
48 |
7 |
if (has_module(first)) { |
269
|
48 |
0 |
module = xs::in(first); |
273
|
5 |
2 |
else if (SvTYPE(first) == SVt_PVCV) { |
274
|
0 |
5 |
if (items > 1) throw exception("no arguments should follow subref when logging"); |
275
|
5 |
0 |
sub = first; |
279
|
120 |
48 |
if (!module) module = resolve_module(0); // auto detect module by namespace |
284
|
5 |
135 |
if (sub) { |
285
|
5 |
0 |
Sv ret = sub.call(); |
287
|
5 |
0 |
msg = format_args(&sv, 1); |
|
5 |
0 |
msg = format_args(&sv, 1); |
290
|
133 |
0 |
msg = format_args(args, items); |
|
133 |
0 |
msg = format_args(args, items); |
292
|
138 |
0 |
log << msg.as_string(); |
|
138 |
0 |
log << msg.as_string(); |
297
|
168 |
0 |
peep_args(args, items, module, sub); |
298
|
168 |
0 |
panda_log(level, *module, [&]{ forward(log, args, items, sub); }); |
|
140 |
28 |
panda_log(level, *module, [&]{ forward(log, args, items, sub); }); |
|
140 |
0 |
panda_log(level, *module, [&]{ forward(log, args, items, sub); }); |
|
138 |
0 |
panda_log(level, *module, [&]{ forward(log, args, items, sub); }); |
|
138 |
0 |
panda_log(level, *module, [&]{ forward(log, args, items, sub); }); |
|
138 |
0 |
panda_log(level, *module, [&]{ forward(log, args, items, sub); }); |
|
138 |
0 |
panda_log(level, *module, [&]{ forward(log, args, items, sub); }); |
305
|
31 |
0 |
if (items < 1 || items > 2) |
|
0 |
31 |
if (items < 1 || items > 2) |
310
|
31 |
0 |
Level level = xs::in(ST(0)); |
314
|
31 |
0 |
if (items < 2) |
318
|
0 |
0 |
const char* __module_buf = SvPV(ST(1), __module_len); |
|
0 |
0 |
const char* __module_buf = SvPV(ST(1), __module_len); |
328
|
31 |
0 |
}); } |
335
|
0 |
55 |
if (items != 1) |
340
|
55 |
0 |
ILoggerSP logger = xs::in(ST(0)); |
348
|
55 |
0 |
}); } |
356
|
0 |
52 |
if (items != 1) |
361
|
52 |
0 |
IFormatterSP fmt = xs::in(ST(0)); |
370
|
52 |
0 |
}); } |
377
|
0 |
1 |
if (items != 0) |
387
|
1 |
0 |
RETVALSV = xs::out(RETVAL, PROTO).detach(); |
388
|
1 |
0 |
RETVALSV = sv_2mortal(RETVALSV); |
393
|
1 |
0 |
}); } |
400
|
0 |
1 |
if (items != 0) |
410
|
1 |
0 |
RETVALSV = xs::out(RETVAL, PROTO).detach(); |
411
|
1 |
0 |
RETVALSV = sv_2mortal(RETVALSV); |
416
|
1 |
0 |
}); } |
423
|
0 |
3 |
if (items != 1) |
430
|
3 |
0 |
const char* __name_buf = SvPV(ST(0), __name_len); |
|
0 |
0 |
const char* __name_buf = SvPV(ST(0), __name_len); |
439
|
3 |
0 |
RETVALSV = xs::out(RETVAL, PROTO).detach(); |
440
|
3 |
0 |
RETVALSV = sv_2mortal(RETVALSV); |
445
|
3 |
0 |
}); } |
452
|
0 |
64 |
if (items < 1) |
466
|
64 |
0 |
}); } |
473
|
20 |
0 |
if (items < 0 || items > 1) |
|
0 |
20 |
if (items < 0 || items > 1) |
479
|
0 |
20 |
if (items < 1) |
483
|
0 |
20 |
; |
|
20 |
0 |
; |
491
|
20 |
0 |
RETVALSV = xs::out(RETVAL, PROTO).detach(); |
492
|
20 |
0 |
RETVALSV = sv_2mortal(RETVALSV); |
497
|
20 |
0 |
}); } |
505
|
0 |
2 |
if (items != 0) |
516
|
2 |
0 |
}); } |
536
|
102 |
0 |
}); } |
549
|
0 |
25 |
if (items != 1) |
563
|
25 |
0 |
RETVALSV = xs::out(RETVAL, PROTO).detach(); |
564
|
25 |
0 |
RETVALSV = sv_2mortal(RETVALSV); |
569
|
25 |
0 |
}); } |
582
|
0 |
1 |
if (items != 1) |
596
|
1 |
0 |
RETVALSV = xs::out(RETVAL, PROTO).detach(); |
597
|
1 |
0 |
RETVALSV = sv_2mortal(RETVALSV); |
602
|
1 |
0 |
}); } |
608
|
8 |
0 |
auto pos = in.find_last_of("/\\"); |
609
|
0 |
8 |
if (pos == string::npos) { |
610
|
0 |
0 |
return in; |
612
|
8 |
0 |
return in.substr(pos + 1); |
616
|
1 |
0 |
if (mg->mg_virtual == &spy_$0_marker) { |
617
|
1 |
0 |
Stash stash("XLog::Formatter::Pattern"); |
618
|
1 |
0 |
auto decorator = stash.sub(DECORATOR_KEY); |
620
|
1 |
0 |
if (decorator) { |
621
|
1 |
0 |
auto decorated = decorator.call(sv); |
622
|
1 |
0 |
$0 = SvPV_nolen(decorated); |
|
0 |
0 |
$0 = SvPV_nolen(decorated); |
|
1 |
0 |
$0 = SvPV_nolen(decorated); |
625
|
0 |
0 |
$0 = decorate_default(SvPV_nolen(sv)); |
|
0 |
0 |
$0 = decorate_default(SvPV_nolen(sv)); |
|
0 |
0 |
$0 = decorate_default(SvPV_nolen(sv)); |
|
0 |
0 |
$0 = decorate_default(SvPV_nolen(sv)); |
636
|
0 |
1 |
if (items != 2) |
645
|
1 |
0 |
const char* __fmt_buf = SvPV(ST(1), __fmt_len); |
|
0 |
0 |
const char* __fmt_buf = SvPV(ST(1), __fmt_len); |
655
|
1 |
0 |
RETVALSV = xs::out(RETVAL, PROTO).detach(); |
656
|
1 |
0 |
RETVALSV = sv_2mortal(RETVALSV); |
661
|
1 |
0 |
}); } |
668
|
0 |
1 |
if (items != 1) |
673
|
1 |
0 |
Sub callback = ST(0); |
674
|
0 |
1 |
if (!callback && SvOK(ST(0))) throw "arg is not a 'Sub' reference" |
|
0 |
0 |
if (!callback && SvOK(ST(0))) throw "arg is not a 'Sub' reference" |
|
0 |
0 |
if (!callback && SvOK(ST(0))) throw "arg is not a 'Sub' reference" |
|
0 |
0 |
if (!callback && SvOK(ST(0))) throw "arg is not a 'Sub' reference" |
|
0 |
1 |
if (!callback && SvOK(ST(0))) throw "arg is not a 'Sub' reference" |
683
|
1 |
0 |
}); } |
696
|
24 |
0 |
if (items < 2 || items > 4) |
|
0 |
24 |
if (items < 2 || items > 4) |
702
|
24 |
0 |
string name; |
703
|
24 |
0 |
Sv arg1; |
704
|
24 |
0 |
Sv arg2; |
707
|
24 |
0 |
const char* __name_buf = SvPV(ST(1), __name_len); |
|
0 |
0 |
const char* __name_buf = SvPV(ST(1), __name_len); |
708
|
24 |
0 |
name.assign(__name_buf, __name_len); } |
711
|
8 |
16 |
if (items < 3) |
715
|
16 |
0 |
; |
718
|
23 |
1 |
if (items < 4) |
722
|
1 |
0 |
; |
753
|
0 |
24 |
if (!RETVAL) XSRETURN_UNDEF; |
754
|
24 |
0 |
if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach(); |
|
24 |
0 |
if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach(); |
756
|
0 |
0 |
case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK)); |
|
0 |
0 |
case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK)); |
757
|
0 |
0 |
case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK)); |
|
0 |
0 |
case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK)); |
760
|
0 |
0 |
RETVALSV = newRV_noinc(RETVAL.detach()); |
764
|
24 |
0 |
RETVALSV = sv_2mortal(RETVALSV); |
765
|
24 |
0 |
ST(0) = RETVALSV; |
769
|
24 |
0 |
}); } |
776
|
0 |
4 |
if (items != 1) |
780
|
4 |
0 |
dXSTARG; |
|
0 |
0 |
dXSTARG; |
781
|
4 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
4 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
786
|
4 |
0 |
XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length()); |
|
0 |
4 |
XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length()); |
|
0 |
0 |
XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length()); |
789
|
4 |
0 |
}); } |
796
|
0 |
5 |
if (items != 1) |
800
|
5 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
5 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
808
|
5 |
0 |
RETVALSV = xs::out(RETVAL, PROTO).detach(); |
809
|
5 |
0 |
RETVALSV = sv_2mortal(RETVALSV); |
814
|
5 |
0 |
}); } |
821
|
0 |
0 |
if (items != 1) |
825
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
830
|
0 |
0 |
ST(0) = boolSV(RETVAL); |
833
|
0 |
0 |
}); } |
840
|
0 |
2 |
if (items != 2) |
845
|
0 |
2 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
855
|
2 |
0 |
}); } |
862
|
4 |
0 |
if (items < 2 || items > 3) |
|
0 |
4 |
if (items < 2 || items > 3) |
867
|
4 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
4 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
869
|
4 |
0 |
ILoggerSP logger = xs::in(ST(1)); |
873
|
3 |
1 |
if (items < 3) |
876
|
1 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
1 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
1 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
1 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
1 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
1 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
|
0 |
0 |
passthrough = (bool)SvTRUE(ST(2)) |
885
|
4 |
0 |
}); } |
892
|
0 |
2 |
if (items != 2) |
897
|
2 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
2 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
899
|
2 |
0 |
IFormatterSP formatter = xs::in(ST(1)); |
907
|
2 |
0 |
}); } |
914
|
0 |
0 |
if (items != 1) |
918
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
926
|
0 |
0 |
RETVALSV = xs::out(RETVAL, PROTO).detach(); |
927
|
0 |
0 |
RETVALSV = sv_2mortal(RETVALSV); |
932
|
0 |
0 |
}); } |
939
|
0 |
0 |
if (items != 1) |
943
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
|
0 |
0 |
Module* THIS = xs::in(ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS"; |
951
|
0 |
0 |
RETVALSV = xs::out(RETVAL, PROTO).detach(); |
952
|
0 |
0 |
RETVALSV = sv_2mortal(RETVALSV); |
957
|
0 |
0 |
}); } |
966
|
0 |
0 |
struct XSConsoleLogger : ConsoleLogger { |
970
|
1 |
0 |
Io io = PL_defoutgv; |
971
|
0 |
1 |
if (!io) return; |
973
|
0 |
1 |
if (!fp) return; |
974
|
1 |
0 |
PerlIO_write(fp, msg.data(), msg.length()); |
975
|
1 |
0 |
PerlIO_write(fp, "\n", 1); |
|
1 |
0 |
PerlIO_write(fp, "\n", 1); |
989
|
0 |
1 |
if (items != 1) |
1002
|
1 |
0 |
RETVALSV = xs::out(RETVAL, PROTO).detach(); |
1003
|
1 |
0 |
RETVALSV = sv_2mortal(RETVALSV); |
1008
|
1 |
0 |
}); } |
1020
|
8 |
0 |
auto ret = MultiLogger::Channel(xs::in(h.fetch("logger"))); |
|
8 |
0 |
auto ret = MultiLogger::Channel(xs::in(h.fetch("logger"))); |
|
8 |
0 |
auto ret = MultiLogger::Channel(xs::in(h.fetch("logger"))); |
|
8 |
0 |
auto ret = MultiLogger::Channel(xs::in(h.fetch("logger"))); |
1022
|
8 |
0 |
if ((val = h.fetch("min_level"))) ret.min_level = xs::in(val); |
|
8 |
0 |
if ((val = h.fetch("min_level"))) ret.min_level = xs::in(val); |
|
8 |
0 |
if ((val = h.fetch("min_level"))) ret.min_level = xs::in(val); |
1023
|
8 |
0 |
if ((val = h.fetch("formatter"))) ret.formatter = xs::in(val); |
|
4 |
4 |
if ((val = h.fetch("formatter"))) ret.formatter = xs::in(val); |
|
4 |
0 |
if ((val = h.fetch("formatter"))) ret.formatter = xs::in(val); |
1024
|
8 |
0 |
if ((val = h.fetch("format")) && val.defined()) { |
|
0 |
8 |
if ((val = h.fetch("format")) && val.defined()) { |
|
0 |
0 |
if ((val = h.fetch("format")) && val.defined()) { |
|
8 |
0 |
if ((val = h.fetch("format")) && val.defined()) { |
|
8 |
0 |
if ((val = h.fetch("format")) && val.defined()) { |
|
0 |
8 |
if ((val = h.fetch("format")) && val.defined()) { |
|
0 |
0 |
if ((val = h.fetch("format")) && val.defined()) { |
|
0 |
0 |
if ((val = h.fetch("format")) && val.defined()) { |
1025
|
0 |
0 |
auto fmt = xs::in(val); |
1026
|
0 |
0 |
if (fmt.length()) ret.formatter = new PatternFormatter(fmt); |
|
0 |
0 |
if (fmt.length()) ret.formatter = new PatternFormatter(fmt); |
|
0 |
0 |
if (fmt.length()) ret.formatter = new PatternFormatter(fmt); |
1041
|
0 |
2 |
if (items != 2) |
1047
|
2 |
0 |
MultiLogger::Channels list = xs::in(ST(1)); |
1056
|
2 |
0 |
RETVALSV = xs::out(RETVAL, PROTO).detach(); |
1057
|
2 |
0 |
RETVALSV = sv_2mortal(RETVALSV); |
1062
|
2 |
0 |
}); } |
1076
|
0 |
8 |
dVAR; dXSBOOTARGSXSAPIVERCHK; |
|
0 |
8 |
dVAR; dXSBOOTARGSXSAPIVERCHK; |
1227
|
8 |
0 |
}); } |