| line |
true |
false |
branch |
|
14
|
62 |
106 |
if (!SvOK(attr_sv)) return 0; |
|
18
|
133 |
69 |
while (p < end) { |
|
20
|
36 |
97 |
STRLEN seg = comma ? (STRLEN)(comma - p) : (STRLEN)(end - p); |
|
21
|
37 |
96 |
if (seg == nlen && memEQ(p, name, nlen)) return 1; |
|
|
37 |
0 |
if (seg == nlen && memEQ(p, name, nlen)) return 1; |
|
37
|
0 |
24 |
if (!SvOK(val)) return false; |
|
38
|
6 |
18 |
if (etd->flags_mask >= 0) { |
|
40
|
0 |
6 |
if (!SvIOK(val) && !(SvPOK(val) && looks_like_number(val))) |
|
|
0 |
0 |
if (!SvIOK(val) && !(SvPOK(val) && looks_like_number(val))) |
|
|
0 |
0 |
if (!SvIOK(val) && !(SvPOK(val) && looks_like_number(val))) |
|
43
|
6 |
0 |
return iv >= 0 && (iv & ~etd->flags_mask) == 0; |
|
|
4 |
2 |
return iv >= 0 && (iv & ~etd->flags_mask) == 0; |
|
57
|
0 |
24 |
if (!SvOK(val)) return val; |
|
59
|
10 |
14 |
if (hv_exists(etd->val2name, pv, len)) |
|
63
|
11 |
27 |
for (i = 0; i < len; i++) lc[i] = toLOWER(lc[i]); |
|
|
38 |
14 |
for (i = 0; i < len; i++) lc[i] = toLOWER(lc[i]); |
|
66
|
5 |
9 |
if (found) return sv_mortalcopy(*found); |
|
75
|
0 |
1288 |
if (c == -1) break; |
|
76
|
1288 |
0 |
if (!isALNUM(c) && c != '_') break; |
|
|
219 |
1069 |
if (!isALNUM(c) && c != '_') break; |
|
|
219 |
0 |
if (!isALNUM(c) && c != '_') break; |
|
80
|
0 |
219 |
if (SvCUR(buf) == 0) { |
|
90
|
47 |
47 |
while (c == ':') { |
|
95
|
0 |
47 |
if (!a) croak("Expected attribute name after ':'"); |
|
96
|
35 |
12 |
if (attr_sv == &PL_sv_undef) { |
|
117
|
0 |
64 |
if (c == -1) croak("Unterminated string in enum declaration"); |
|
118
|
0 |
64 |
if (c == '\\' && quote == '"') { |
|
|
0 |
0 |
if (c == '\\' && quote == '"') { |
|
120
|
0 |
0 |
if (next == -1) croak("Unterminated string in enum declaration"); |
|
122
|
11 |
53 |
} else if (c == quote) { |
|
136
|
1 |
13 |
if (c == '-') { |
|
142
|
0 |
14 |
if (!isDIGIT(c)) |
|
147
|
49 |
0 |
if (c == -1 || !isDIGIT(c)) break; |
|
|
35 |
14 |
if (c == -1 || !isDIGIT(c)) break; |
|
153
|
1 |
13 |
if (is_neg) ival = -ival; |
|
162
|
0 |
37 |
if (c != '{') croak("Expected '{' after enum name"); |
|
168
|
37 |
120 |
if (c == '}') { lex_read_unichar(0); break; } |
|
169
|
0 |
120 |
if (c == -1) croak("Unexpected end of input in enum declaration"); |
|
171
|
0 |
120 |
if (!vname) croak("Expected variant name in enum declaration"); |
|
175
|
25 |
95 |
if (c == '=') { |
|
179
|
17 |
8 |
if (c == '"' || c == '\'') { |
|
|
3 |
14 |
if (c == '"' || c == '\'') { |
|
188
|
83 |
37 |
if (lex_peek_unichar(0) == ',') lex_read_unichar(0); |
|
209
|
120 |
37 |
for (i = 0; i < pair_count; i += 2) { |
|
212
|
120 |
0 |
SV *vname = name_p ? *name_p : &PL_sv_undef; |
|
213
|
120 |
0 |
SV *vval = val_p ? *val_p : &PL_sv_undef; |
|
218
|
25 |
95 |
if (SvOK(vval)) { |
|
219
|
11 |
14 |
if (is_str) { |
|
225
|
24 |
71 |
} else if (is_str) { |
|
230
|
24 |
94 |
for (j = 0; j < vname_len; j++) lc[j] = toLOWER(lc[j]); |
|
|
118 |
24 |
for (j = 0; j < vname_len; j++) lc[j] = toLOWER(lc[j]); |
|
251
|
85 |
35 |
if (!is_str) |
|
252
|
29 |
56 |
next_ival = is_flags ? next_ival << 1 : next_ival + 1; |
|
265
|
8 |
0 |
if (!pending || av_len(pending) < 0) return; |
|
|
4 |
4 |
if (!pending || av_len(pending) < 0) return; |
|
273
|
21 |
4 |
for (j = 0; j <= av_len(pending); j++) { |
|
275
|
21 |
0 |
if (n) { |
|
289
|
0 |
8 |
if (items < 1) croak("Usage: PKG->import(...)"); |
|
295
|
0 |
8 |
if (!exp_import) { |
|
299
|
0 |
8 |
if (!exp_import) croak("Cannot find Exporter::import"); |
|
305
|
0 |
8 |
PUSHMARK(SP); |
|
306
|
13 |
8 |
for (j = 0; j < items; j++) { |
|
307
|
0 |
13 |
XPUSHs(ST(j)); |
|
311
|
0 |
8 |
FREETMPS; |
|
326
|
16 |
5 |
for (j = 0; j <= av_len(names); j++) { |
|
328
|
16 |
0 |
if (n) av_push(pending, newSVsv(*n)); |
|
330
|
5 |
0 |
if (enum_name) av_push(pending, newSVsv(enum_name)); |
|
331
|
5 |
0 |
if (enum_name) { |
|
336
|
16 |
5 |
for (j = 0; j <= av_len(names); j++) { |
|
338
|
16 |
0 |
if (n) av_push(tag_list, newSVsv(*n)); |
|
344
|
4 |
1 |
if (!get_cv(SvPV_nolen(buf), 0)) { |
|
354
|
9 |
28 |
if (is_type) { |
|
361
|
27 |
9 |
while ((he = hv_iternext(d->val2name))) { |
|
363
|
0 |
27 |
const char *key = HePV(he, klen); |
|
368
|
27 |
9 |
while ((he = hv_iternext(d->name2val))) { |
|
370
|
0 |
27 |
const char *key = HePV(he, klen); |
|
375
|
30 |
101 |
for (k = 0; k < klen; k++) lc_key[k] = toLOWER(key[k]); |
|
|
131 |
27 |
for (k = 0; k < klen; k++) lc_key[k] = toLOWER(key[k]); |
|
380
|
3 |
6 |
if (is_flags) { |
|
382
|
9 |
3 |
for (j = 0; j <= av_len(d->values); j++) { |
|
384
|
9 |
0 |
if (svp) mask |= SvIV(*svp); |
|
393
|
0 |
37 |
PUSHMARK(SP); |
|
394
|
0 |
37 |
mXPUSHs(newSVpvs("Enum::Declare::Meta")); |
|
395
|
0 |
37 |
mXPUSHs(newSVpvs("enum_name")); mXPUSHs(newSVsv(name_sv)); |
|
|
0 |
37 |
mXPUSHs(newSVpvs("enum_name")); mXPUSHs(newSVsv(name_sv)); |
|
396
|
0 |
37 |
mXPUSHs(newSVpvs("package")); mXPUSHs(newSVpvn(pkg, pkg_len)); |
|
|
0 |
37 |
mXPUSHs(newSVpvs("package")); mXPUSHs(newSVpvn(pkg, pkg_len)); |
|
397
|
0 |
37 |
mXPUSHs(newSVpvs("names")); mXPUSHs(newRV_noinc((SV*)d->names)); |
|
|
0 |
37 |
mXPUSHs(newSVpvs("names")); mXPUSHs(newRV_noinc((SV*)d->names)); |
|
398
|
0 |
37 |
mXPUSHs(newSVpvs("values")); mXPUSHs(newRV_noinc((SV*)d->values)); |
|
|
0 |
37 |
mXPUSHs(newSVpvs("values")); mXPUSHs(newRV_noinc((SV*)d->values)); |
|
399
|
0 |
37 |
mXPUSHs(newSVpvs("name2val")); mXPUSHs(newRV_noinc((SV*)d->name2val)); |
|
|
0 |
37 |
mXPUSHs(newSVpvs("name2val")); mXPUSHs(newRV_noinc((SV*)d->name2val)); |
|
400
|
0 |
37 |
mXPUSHs(newSVpvs("val2name")); mXPUSHs(newRV_noinc((SV*)d->val2name)); |
|
|
0 |
37 |
mXPUSHs(newSVpvs("val2name")); mXPUSHs(newRV_noinc((SV*)d->val2name)); |
|
406
|
37 |
0 |
FREETMPS; |
|
415
|
9 |
28 |
if (is_type && etd) { |
|
|
9 |
0 |
if (is_type && etd) { |
|
438
|
1 |
13 |
if (sv_isobject(val)) |
|
441
|
0 |
13 |
PUSHMARK(SP); |
|
442
|
0 |
13 |
XPUSHs(estd->set_instance); |
|
443
|
0 |
13 |
XPUSHs(val); |
|
450
|
13 |
0 |
FREETMPS; LEAVE; |
|
467
|
0 |
0 |
for (i = 0; i < items; i++) { |
|
472
|
0 |
0 |
PUSHMARK(SP); |
|
473
|
0 |
0 |
mXPUSHs(newSVpvs("Enum::Declare::Set")); |
|
474
|
0 |
0 |
mXPUSHs(newSVpvs("meta")); XPUSHs(meta_sv); |
|
|
0 |
0 |
mXPUSHs(newSVpvs("meta")); XPUSHs(meta_sv); |
|
475
|
0 |
0 |
mXPUSHs(newSVpvs("name")); mXPUSHs(newSVpvn(GvNAME(CvGV(cv)), GvNAMELEN(CvGV(cv)))); |
|
|
0 |
0 |
mXPUSHs(newSVpvs("name")); mXPUSHs(newSVpvn(GvNAME(CvGV(cv)), GvNAMELEN(CvGV(cv)))); |
|
476
|
0 |
0 |
mXPUSHs(newSVpvs("values")); mXPUSHs(newRV_noinc((SV*)vals_av)); |
|
|
0 |
0 |
mXPUSHs(newSVpvs("values")); mXPUSHs(newRV_noinc((SV*)vals_av)); |
|
482
|
0 |
0 |
FREETMPS; LEAVE; |
|
492
|
0 |
10 |
if (!registry) return NULL; |
|
496
|
0 |
10 |
if (!he) return NULL; |
|
505
|
0 |
4 |
if (c != '{') croak("Expected '{' in enumSet declaration"); |
|
511
|
4 |
5 |
if (c == '}') { lex_read_unichar(0); break; } |
|
512
|
0 |
5 |
if (c == -1) croak("Unexpected end of input in enumSet declaration"); |
|
514
|
0 |
5 |
if (!vname) croak("Expected variant name in enumSet declaration"); |
|
517
|
2 |
3 |
if (lex_peek_unichar(0) == ',') lex_read_unichar(0); |
|
529
|
0 |
10 |
if (attr_sv == &PL_sv_undef) |
|
535
|
3 |
7 |
if (last_comma) { |
|
552
|
5 |
4 |
for (i = 0; i <= av_len(member_names); i++) { |
|
554
|
5 |
0 |
if (name_p) { |
|
558
|
0 |
5 |
PUSHMARK(SP); |
|
559
|
0 |
5 |
XPUSHs(meta); |
|
560
|
0 |
5 |
mXPUSHs(newSVpv(vname, 0)); |
|
566
|
0 |
5 |
if (!SvOK(val)) { |
|
567
|
0 |
0 |
FREETMPS; LEAVE; |
|
572
|
5 |
0 |
FREETMPS; LEAVE; |
|
577
|
0 |
4 |
PUSHMARK(SP); |
|
578
|
0 |
4 |
mXPUSHs(newSVpvs("Enum::Declare::Set")); |
|
579
|
0 |
4 |
mXPUSHs(newSVpvs("meta")); XPUSHs(meta); |
|
|
0 |
4 |
mXPUSHs(newSVpvs("meta")); XPUSHs(meta); |
|
580
|
0 |
4 |
mXPUSHs(newSVpvs("name")); XPUSHs(set_name_sv); |
|
|
0 |
4 |
mXPUSHs(newSVpvs("name")); XPUSHs(set_name_sv); |
|
581
|
0 |
4 |
mXPUSHs(newSVpvs("values")); mXPUSHs(newRV_noinc((SV*)vals_av)); |
|
|
0 |
4 |
mXPUSHs(newSVpvs("values")); mXPUSHs(newRV_noinc((SV*)vals_av)); |
|
582
|
0 |
4 |
mXPUSHs(newSVpvs("frozen")); mXPUSHs(newSViv(1)); |
|
|
0 |
4 |
mXPUSHs(newSVpvs("frozen")); mXPUSHs(newSViv(1)); |
|
588
|
4 |
0 |
FREETMPS; LEAVE; |
|
596
|
0 |
6 |
PUSHMARK(SP); |
|
597
|
0 |
6 |
mXPUSHs(newSVpvs("Enum::Declare::Set")); |
|
598
|
0 |
6 |
mXPUSHs(newSVpvs("meta")); XPUSHs(meta); |
|
|
0 |
6 |
mXPUSHs(newSVpvs("meta")); XPUSHs(meta); |
|
599
|
0 |
6 |
mXPUSHs(newSVpvs("name")); XPUSHs(set_name_sv); |
|
|
0 |
6 |
mXPUSHs(newSVpvs("name")); XPUSHs(set_name_sv); |
|
605
|
6 |
0 |
FREETMPS; LEAVE; |
|
620
|
3 |
0 |
if (gv && GvCV(gv)) { |
|
|
3 |
0 |
if (gv && GvCV(gv)) { |
|
622
|
0 |
3 |
PUSHMARK(SP); |
|
628
|
0 |
3 |
FREETMPS; LEAVE; |
|
648
|
0 |
10 |
if (!set_name_sv) croak("Expected enumSet name"); |
|
652
|
10 |
0 |
pkg = HvNAME(PL_curstash); |
|
|
10 |
0 |
pkg = HvNAME(PL_curstash); |
|
|
0 |
10 |
pkg = HvNAME(PL_curstash); |
|
|
0 |
0 |
pkg = HvNAME(PL_curstash); |
|
|
10 |
0 |
pkg = HvNAME(PL_curstash); |
|
|
0 |
10 |
pkg = HvNAME(PL_curstash); |
|
657
|
0 |
10 |
if (!meta) |
|
661
|
4 |
6 |
if (lex_peek_unichar(0) == '{') { |
|
672
|
0 |
10 |
if (is_export) { |
|
678
|
3 |
7 |
if (is_type) |
|
680
|
3 |
7 |
if (attr_sv != &PL_sv_undef) SvREFCNT_dec(attr_sv); |
|
699
|
0 |
37 |
if (!name_sv) croak("Expected enum name"); |
|
703
|
37 |
0 |
pkg = HvNAME(PL_curstash); |
|
|
37 |
0 |
pkg = HvNAME(PL_curstash); |
|
|
0 |
37 |
pkg = HvNAME(PL_curstash); |
|
|
0 |
0 |
pkg = HvNAME(PL_curstash); |
|
|
37 |
0 |
pkg = HvNAME(PL_curstash); |
|
|
0 |
37 |
pkg = HvNAME(PL_curstash); |
|
711
|
5 |
32 |
if (has_attr(aTHX_ attr_sv, "Export")) |
|
715
|
25 |
12 |
if (attr_sv != &PL_sv_undef) SvREFCNT_dec(attr_sv); |
|
728
|
37 |
0 |
const char *caller = CopSTASHPV(PL_curcop); |
|
|
37 |
0 |
const char *caller = CopSTASHPV(PL_curcop); |
|
|
37 |
0 |
const char *caller = CopSTASHPV(PL_curcop); |
|
|
0 |
37 |
const char *caller = CopSTASHPV(PL_curcop); |
|
|
0 |
0 |
const char *caller = CopSTASHPV(PL_curcop); |
|
|
37 |
0 |
const char *caller = CopSTASHPV(PL_curcop); |
|
|
0 |
37 |
const char *caller = CopSTASHPV(PL_curcop); |