| line |
true |
false |
branch |
|
40
|
0 |
29 |
if (g_frj_true_sv) return; |
|
61
|
0 |
197 |
if (!g_frj_default_stash) init_boolean_singletons(aTHX); |
|
68
|
197 |
1 |
if (!class_name) return get_boolean_stash(aTHX); |
|
85
|
0 |
23 |
if (!src) { |
|
103
|
134 |
72 |
if (first_idx >= items) return NULL; |
|
104
|
2 |
70 |
if ((items - first_idx) % 2 != 0) |
|
108
|
79 |
70 |
for (i = first_idx; i + 1 < items; i += 2) { |
|
112
|
0 |
79 |
if (!hv_store(opts, key, klen, vcopy, 0)) |
|
138
|
2743 |
2 |
for (p = VALID_OPT_KEYS; *p; p++) { |
|
139
|
609 |
2134 |
if (strlen(*p) == klen && memcmp(*p, key, klen) == 0) return 1; |
|
|
277 |
332 |
if (strlen(*p) == klen && memcmp(*p, key, klen) == 0) return 1; |
|
150
|
134 |
216 |
if (!opts_hv) return NULL; |
|
153
|
279 |
211 |
while ((he = hv_iternext(opts_hv))) { |
|
159
|
2 |
277 |
if (!known_opt(key, klen)) { |
|
163
|
0 |
277 |
if (!SvOK(val)) continue; |
|
165
|
13 |
264 |
if (klen == 4 && memcmp(key, "mode", 4) == 0) { |
|
|
13 |
0 |
if (klen == 4 && memcmp(key, "mode", 4) == 0) { |
|
168
|
1 |
12 |
if (mlen == 8 && memcmp(mpv, "document", 8) == 0) |
|
|
0 |
1 |
if (mlen == 8 && memcmp(mpv, "document", 8) == 0) |
|
170
|
12 |
1 |
else if (mlen == 5 && memcmp(mpv, "lines", 5) == 0) |
|
|
12 |
0 |
else if (mlen == 5 && memcmp(mpv, "lines", 5) == 0) |
|
176
|
164 |
100 |
else if (klen == 6 && memcmp(key, "pretty", 6) == 0) |
|
|
16 |
148 |
else if (klen == 6 && memcmp(key, "pretty", 6) == 0) |
|
178
|
148 |
100 |
else if (klen == 6 && memcmp(key, "indent", 6) == 0) { |
|
|
4 |
144 |
else if (klen == 6 && memcmp(key, "indent", 6) == 0) { |
|
180
|
3 |
1 |
if (n != 2 && n != 4) |
|
|
2 |
1 |
if (n != 2 && n != 4) |
|
186
|
59 |
185 |
else if (klen == 9 && memcmp(key, "sort_keys", 9) == 0) |
|
|
55 |
4 |
else if (klen == 9 && memcmp(key, "sort_keys", 9) == 0) |
|
188
|
4 |
185 |
else if (klen == 9 && memcmp(key, "canonical", 9) == 0) |
|
|
3 |
1 |
else if (klen == 9 && memcmp(key, "canonical", 9) == 0) |
|
190
|
0 |
186 |
else if (klen == 4 && memcmp(key, "utf8", 4) == 0) |
|
|
0 |
0 |
else if (klen == 4 && memcmp(key, "utf8", 4) == 0) |
|
192
|
36 |
150 |
else if (klen == 7 && memcmp(key, "relaxed", 7) == 0) |
|
|
5 |
31 |
else if (klen == 7 && memcmp(key, "relaxed", 7) == 0) |
|
194
|
1 |
180 |
else if (klen == 12 && memcmp(key, "allow_nonref", 12) == 0) |
|
|
1 |
0 |
else if (klen == 12 && memcmp(key, "allow_nonref", 12) == 0) |
|
196
|
3 |
177 |
else if (klen == 13 && memcmp(key, "allow_nan_inf", 13) == 0) |
|
|
2 |
1 |
else if (klen == 13 && memcmp(key, "allow_nan_inf", 13) == 0) |
|
198
|
31 |
147 |
else if (klen == 7 && memcmp(key, "ordered", 7) == 0) |
|
|
31 |
0 |
else if (klen == 7 && memcmp(key, "ordered", 7) == 0) |
|
200
|
1 |
146 |
else if (klen == 9 && memcmp(key, "max_depth", 9) == 0) { |
|
|
1 |
0 |
else if (klen == 9 && memcmp(key, "max_depth", 9) == 0) { |
|
202
|
0 |
1 |
if (n < 1) croak("File::Raw::JSON: max_depth must be >= 1"); |
|
205
|
1 |
145 |
else if (klen == 3 && memcmp(key, "eol", 3) == 0) { |
|
|
1 |
0 |
else if (klen == 3 && memcmp(key, "eol", 3) == 0) { |
|
208
|
1 |
0 |
if (elen == 0 || elen > 3) |
|
|
0 |
1 |
if (elen == 0 || elen > 3) |
|
215
|
1 |
144 |
else if (klen == 13 && memcmp(key, "boolean_class", 13) == 0) { |
|
|
1 |
0 |
else if (klen == 13 && memcmp(key, "boolean_class", 13) == 0) { |
|
243
|
79 |
0 |
if (ctx->plugin_state) |
|
249
|
0 |
77 |
if (!ctx->data) return &PL_sv_undef; |
|
252
|
28 |
49 |
if (o.mode == JSON_MODE_LINES) { |
|
264
|
51 |
0 |
if (ctx->plugin_state) |
|
268
|
11 |
38 |
if (o.mode == JSON_MODE_LINES) { |
|
309
|
0 |
16 |
if (!s) return; |
|
310
|
16 |
0 |
if (s->acc_buf) Safefree(s->acc_buf); |
|
311
|
1 |
15 |
if (s->die_msg) SvREFCNT_dec(s->die_msg); |
|
318
|
4 |
16 |
if (s->acc_len + n > s->acc_cap) { |
|
319
|
4 |
0 |
STRLEN newcap = s->acc_cap ? s->acc_cap : 8192; |
|
320
|
8 |
4 |
while (newcap < s->acc_len + n) newcap *= 2; |
|
324
|
20 |
0 |
if (n) memcpy(s->acc_buf + s->acc_len, p, n); |
|
340
|
0 |
6041 |
if (!doc) { |
|
347
|
0 |
0 |
croak("File::Raw::JSON: stream parse error: %s near \"%s\"", |
|
350
|
6041 |
0 |
value = json_sv_from_yyjson(aTHX_ yyjson_doc_get_root(doc), |
|
358
|
0 |
6041 |
PUSHMARK(SP); |
|
359
|
0 |
6041 |
XPUSHs(sv_2mortal(value)); |
|
364
|
6041 |
0 |
errsv = ERRSV; |
|
365
|
1 |
6040 |
if (SvTRUE(errsv)) { |
|
369
|
6041 |
0 |
FREETMPS; LEAVE; |
|
379
|
6045 |
30 |
while (cursor < s->acc_len) { |
|
384
|
6041 |
4 |
if (rc == JSONL_FOUND) { |
|
385
|
1 |
6040 |
if (jsonl_emit_one(aTHX_ ctx, s, |
|
392
|
4 |
0 |
if (rc == JSONL_NEED_MORE) { |
|
397
|
4 |
0 |
if (cursor > 0) { |
|
402
|
4 |
0 |
if (!allow_truncate) return 0; |
|
410
|
0 |
0 |
if (cursor >= s->acc_len) break; /* all whitespace */ |
|
411
|
0 |
0 |
if (s->opts.relaxed) { cursor++; continue; } |
|
419
|
15 |
15 |
if (cursor > 0 && cursor < s->acc_len) { |
|
|
0 |
15 |
if (cursor > 0 && cursor < s->acc_len) { |
|
422
|
30 |
0 |
} else if (cursor >= s->acc_len) { |
|
434
|
16 |
19 |
if (!s) { |
|
438
|
16 |
0 |
if (ctx->plugin_state) |
|
448
|
20 |
15 |
if (chunk && len > 0) { |
|
|
20 |
0 |
if (chunk && len > 0) { |
|
452
|
1 |
34 |
if (jsonl_drain_buffer(aTHX_ ctx, s, eof ? 1 : 0)) { |
|
455
|
1 |
0 |
SV *m = die_msg ? newSVsv(die_msg) : NULL; |
|
459
|
1 |
0 |
if (m) { |
|
467
|
15 |
19 |
if (eof) { |
|
514
|
37 |
0 |
pkg = CopSTASHPV(PL_curcop); |
|
|
37 |
0 |
pkg = CopSTASHPV(PL_curcop); |
|
|
37 |
0 |
pkg = CopSTASHPV(PL_curcop); |
|
|
0 |
37 |
pkg = CopSTASHPV(PL_curcop); |
|
|
0 |
0 |
pkg = CopSTASHPV(PL_curcop); |
|
|
37 |
0 |
pkg = CopSTASHPV(PL_curcop); |
|
|
0 |
37 |
pkg = CopSTASHPV(PL_curcop); |
|
515
|
23 |
14 |
if (items <= 1) XSRETURN_EMPTY; |
|
517
|
22 |
14 |
for (i = 1; i < items; i++) { |
|
521
|
2 |
20 |
if ((len == 6 && strEQ(arg, ":codec")) || |
|
|
0 |
2 |
if ((len == 6 && strEQ(arg, ":codec")) || |
|
522
|
3 |
17 |
(len == 4 && strEQ(arg, ":all"))) |
|
|
1 |
2 |
(len == 4 && strEQ(arg, ":all"))) |
|
528
|
17 |
2 |
if ((len == 16 && strEQ(arg, "file_json_decode")) || |
|
|
9 |
8 |
if ((len == 16 && strEQ(arg, "file_json_decode")) || |
|
529
|
9 |
2 |
(len == 16 && strEQ(arg, "file_json_encode"))) |
|
|
9 |
0 |
(len == 16 && strEQ(arg, "file_json_encode"))) |
|
555
|
105 |
0 |
if (!bytes || !SvOK(bytes)) XSRETURN_UNDEF; |
|
|
1 |
104 |
if (!bytes || !SvOK(bytes)) XSRETURN_UNDEF; |
|
558
|
10 |
94 |
if (o.mode == JSON_MODE_LINES) { |
|
563
|
92 |
0 |
RETVAL = out ? out : &PL_sv_undef; |
|
564
|
0 |
92 |
if (RETVAL == &PL_sv_undef) SvREFCNT_inc(RETVAL); |
|
581
|
2 |
96 |
if (o.mode == JSON_MODE_LINES) { |
|
586
|
0 |
93 |
if (!RETVAL) { |
|
603
|
0 |
29 |
if (file_register_plugin(aTHX_ &json_plugin) <= 0) |
|
612
|
0 |
29 |
if (file_register_plugin(aTHX_ &jsonl_plugin) <= 0) |
|
640
|
0 |
6 |
if (!g_frj_true_sv) init_boolean_singletons(aTHX); |
|
641
|
6 |
0 |
SvREFCNT_inc_simple_void(g_frj_true_sv); |
|
642
|
0 |
6 |
XPUSHs(sv_2mortal(g_frj_true_sv)); |
|
649
|
0 |
4 |
if (!g_frj_false_sv) init_boolean_singletons(aTHX); |
|
650
|
4 |
0 |
SvREFCNT_inc_simple_void(g_frj_false_sv); |
|
651
|
0 |
4 |
XPUSHs(sv_2mortal(g_frj_false_sv)); |
|
663
|
7 |
0 |
RETVAL = (SvROK(self) && SvTRUE(SvRV(self))) |
|
664
|
7 |
0 |
? &PL_sv_yes : &PL_sv_no; |
|
665
|
7 |
0 |
SvREFCNT_inc_simple_void(RETVAL); /* OUTPUT typemap will mortalise */ |
|
678
|
0 |
0 |
RETVAL = newSViv( |
|
|
0 |
0 |
RETVAL = newSViv( |
|
693
|
0 |
0 |
RETVAL = newSVpvn( |
|
|
0 |
0 |
RETVAL = newSVpvn( |
|
708
|
10 |
0 |
if (SvROK(self) && SvTRUE(SvRV(self))) |
|
|
2 |
8 |
if (SvROK(self) && SvTRUE(SvRV(self))) |
|
719
|
0 |
0 |
RETVAL = (SvROK(self) && sv_isa(self, "File::Raw::JSON::Boolean") |
|
|
0 |
0 |
RETVAL = (SvROK(self) && sv_isa(self, "File::Raw::JSON::Boolean") |
|
720
|
0 |
0 |
&& SvTRUE(SvRV(self))) ? 1 : 0; |
|
|
0 |
0 |
&& SvTRUE(SvRV(self))) ? 1 : 0; |
|
728
|
0 |
0 |
RETVAL = (SvROK(self) && sv_isa(self, "File::Raw::JSON::Boolean") |
|
|
0 |
0 |
RETVAL = (SvROK(self) && sv_isa(self, "File::Raw::JSON::Boolean") |
|
729
|
0 |
0 |
&& !SvTRUE(SvRV(self))) ? 1 : 0; |
|
|
0 |
0 |
&& !SvTRUE(SvRV(self))) ? 1 : 0; |