| line |
true |
false |
branch |
|
13
|
27 |
42 |
if (!SvOK(attr_sv)) return 0; |
|
17
|
50 |
24 |
while (p < end) { |
|
19
|
12 |
38 |
STRLEN seg = comma ? (STRLEN)(comma - p) : (STRLEN)(end - p); |
|
20
|
18 |
32 |
if (seg == nlen && memEQ(p, name, nlen)) return 1; |
|
|
18 |
0 |
if (seg == nlen && memEQ(p, name, nlen)) return 1; |
|
31
|
0 |
647 |
if (c == -1) break; |
|
32
|
647 |
0 |
if (!isALNUM(c) && c != '_') break; |
|
|
118 |
529 |
if (!isALNUM(c) && c != '_') break; |
|
|
118 |
0 |
if (!isALNUM(c) && c != '_') break; |
|
36
|
0 |
118 |
if (SvCUR(buf) == 0) { |
|
46
|
18 |
23 |
while (c == ':') { |
|
50
|
0 |
18 |
if (!a) croak("Expected attribute name after ':'"); |
|
51
|
14 |
4 |
if (attr_sv == &PL_sv_undef) { |
|
72
|
0 |
45 |
if (c == -1) croak("Unterminated string in enum declaration"); |
|
73
|
0 |
45 |
if (c == '\\' && quote == '"') { |
|
|
0 |
0 |
if (c == '\\' && quote == '"') { |
|
75
|
0 |
0 |
if (next == -1) croak("Unterminated string in enum declaration"); |
|
77
|
9 |
36 |
} else if (c == quote) { |
|
91
|
1 |
7 |
if (c == '-') { |
|
97
|
0 |
8 |
if (!isDIGIT(c)) |
|
102
|
25 |
0 |
if (c == -1 || !isDIGIT(c)) break; |
|
|
17 |
8 |
if (c == -1 || !isDIGIT(c)) break; |
|
108
|
1 |
7 |
if (is_neg) ival = -ival; |
|
117
|
0 |
23 |
if (c != '{') croak("Expected '{' after enum name"); |
|
123
|
23 |
77 |
if (c == '}') { lex_read_unichar(0); break; } |
|
124
|
0 |
77 |
if (c == -1) croak("Unexpected end of input in enum declaration"); |
|
126
|
0 |
77 |
if (!vname) croak("Expected variant name in enum declaration"); |
|
131
|
17 |
60 |
if (c == '=') { |
|
135
|
11 |
6 |
if (c == '"' || c == '\'') { |
|
|
3 |
8 |
if (c == '"' || c == '\'') { |
|
144
|
54 |
23 |
if (lex_peek_unichar(0) == ',') lex_read_unichar(0); |
|
165
|
77 |
23 |
for (i = 0; i < pair_count; i += 2) { |
|
168
|
77 |
0 |
SV *vname = name_p ? *name_p : &PL_sv_undef; |
|
169
|
77 |
0 |
SV *vval = val_p ? *val_p : &PL_sv_undef; |
|
174
|
17 |
60 |
if (SvOK(vval)) { |
|
175
|
9 |
8 |
if (is_str) { |
|
181
|
16 |
44 |
} else if (is_str) { |
|
186
|
16 |
65 |
for (j = 0; j < vname_len; j++) lc[j] = toLOWER(lc[j]); |
|
|
81 |
16 |
for (j = 0; j < vname_len; j++) lc[j] = toLOWER(lc[j]); |
|
207
|
52 |
25 |
if (!is_str) |
|
208
|
17 |
35 |
next_ival = is_flags ? next_ival << 1 : next_ival + 1; |
|
221
|
8 |
0 |
if (!pending || av_len(pending) < 0) return; |
|
|
4 |
4 |
if (!pending || av_len(pending) < 0) return; |
|
229
|
21 |
4 |
for (j = 0; j <= av_len(pending); j++) { |
|
231
|
21 |
0 |
if (n) { |
|
245
|
0 |
8 |
if (items < 1) croak("Usage: PKG->import(...)"); |
|
251
|
0 |
8 |
if (!exp_import) { |
|
255
|
0 |
8 |
if (!exp_import) croak("Cannot find Exporter::import"); |
|
261
|
0 |
8 |
PUSHMARK(SP); |
|
262
|
13 |
8 |
for (j = 0; j < items; j++) { |
|
263
|
0 |
13 |
XPUSHs(ST(j)); |
|
267
|
0 |
8 |
FREETMPS; |
|
285
|
16 |
5 |
for (j = 0; j <= av_len(names); j++) { |
|
287
|
16 |
0 |
if (n) av_push(pending, newSVsv(*n)); |
|
289
|
5 |
0 |
if (enum_name) av_push(pending, newSVsv(enum_name)); |
|
292
|
5 |
0 |
if (enum_name) { |
|
297
|
16 |
5 |
for (j = 0; j <= av_len(names); j++) { |
|
299
|
16 |
0 |
if (n) av_push(tag_list, newSVsv(*n)); |
|
307
|
4 |
1 |
if (!get_cv(SvPV_nolen(buf), 0)) { |
|
318
|
0 |
23 |
PUSHMARK(SP); |
|
319
|
0 |
23 |
mXPUSHs(newSVpvs("Enum::Declare::Meta")); |
|
320
|
0 |
23 |
mXPUSHs(newSVpvs("enum_name")); mXPUSHs(newSVsv(name_sv)); |
|
|
0 |
23 |
mXPUSHs(newSVpvs("enum_name")); mXPUSHs(newSVsv(name_sv)); |
|
321
|
0 |
23 |
mXPUSHs(newSVpvs("package")); mXPUSHs(newSVpvn(pkg, pkg_len)); |
|
|
0 |
23 |
mXPUSHs(newSVpvs("package")); mXPUSHs(newSVpvn(pkg, pkg_len)); |
|
322
|
0 |
23 |
mXPUSHs(newSVpvs("names")); mXPUSHs(newRV_noinc((SV*)d->names)); |
|
|
0 |
23 |
mXPUSHs(newSVpvs("names")); mXPUSHs(newRV_noinc((SV*)d->names)); |
|
323
|
0 |
23 |
mXPUSHs(newSVpvs("values")); mXPUSHs(newRV_noinc((SV*)d->values)); |
|
|
0 |
23 |
mXPUSHs(newSVpvs("values")); mXPUSHs(newRV_noinc((SV*)d->values)); |
|
324
|
0 |
23 |
mXPUSHs(newSVpvs("name2val")); mXPUSHs(newRV_noinc((SV*)d->name2val)); |
|
|
0 |
23 |
mXPUSHs(newSVpvs("name2val")); mXPUSHs(newRV_noinc((SV*)d->name2val)); |
|
325
|
0 |
23 |
mXPUSHs(newSVpvs("val2name")); mXPUSHs(newRV_noinc((SV*)d->val2name)); |
|
|
0 |
23 |
mXPUSHs(newSVpvs("val2name")); mXPUSHs(newRV_noinc((SV*)d->val2name)); |
|
331
|
23 |
0 |
FREETMPS; |
|
359
|
0 |
23 |
if (!name_sv) croak("Expected enum name"); |
|
363
|
23 |
0 |
pkg = HvNAME(PL_curstash); |
|
|
23 |
0 |
pkg = HvNAME(PL_curstash); |
|
|
0 |
23 |
pkg = HvNAME(PL_curstash); |
|
|
0 |
0 |
pkg = HvNAME(PL_curstash); |
|
|
23 |
0 |
pkg = HvNAME(PL_curstash); |
|
|
0 |
23 |
pkg = HvNAME(PL_curstash); |
|
370
|
5 |
18 |
if (has_attr(aTHX_ attr_sv, "Export")) |
|
373
|
14 |
9 |
if (attr_sv != &PL_sv_undef) SvREFCNT_dec(attr_sv); |
|
386
|
25 |
0 |
const char *caller = CopSTASHPV(PL_curcop); |
|
|
25 |
0 |
const char *caller = CopSTASHPV(PL_curcop); |
|
|
25 |
0 |
const char *caller = CopSTASHPV(PL_curcop); |
|
|
0 |
25 |
const char *caller = CopSTASHPV(PL_curcop); |
|
|
0 |
0 |
const char *caller = CopSTASHPV(PL_curcop); |
|
|
25 |
0 |
const char *caller = CopSTASHPV(PL_curcop); |
|
|
0 |
25 |
const char *caller = CopSTASHPV(PL_curcop); |