| line |
true |
false |
branch |
|
50
|
0 |
13 |
if (strEQ(name, "low")) return INFIX_PREC_LOW; |
|
51
|
0 |
13 |
if (strEQ(name, "logical_or_low")) return INFIX_PREC_LOGICAL_OR_LOW; |
|
52
|
0 |
13 |
if (strEQ(name, "logical_and_low")) return INFIX_PREC_LOGICAL_AND_LOW; |
|
53
|
0 |
13 |
if (strEQ(name, "assign")) return INFIX_PREC_ASSIGN; |
|
54
|
0 |
13 |
if (strEQ(name, "logical_or")) return INFIX_PREC_LOGICAL_OR; |
|
55
|
0 |
13 |
if (strEQ(name, "logical_and")) return INFIX_PREC_LOGICAL_AND; |
|
56
|
0 |
13 |
if (strEQ(name, "rel")) return INFIX_PREC_REL; |
|
57
|
10 |
3 |
if (strEQ(name, "add")) return INFIX_PREC_ADD; |
|
58
|
3 |
0 |
if (strEQ(name, "mul")) return INFIX_PREC_MUL; |
|
59
|
0 |
0 |
if (strEQ(name, "pow")) return INFIX_PREC_POW; |
|
60
|
0 |
0 |
if (strEQ(name, "high")) return INFIX_PREC_HIGH; |
|
69
|
2 |
2 |
if (strEQ(sym, "+")) return OP_ADD; |
|
70
|
0 |
2 |
if (strEQ(sym, "-")) return OP_SUBTRACT; |
|
71
|
1 |
1 |
if (strEQ(sym, "*")) return OP_MULTIPLY; |
|
72
|
0 |
1 |
if (strEQ(sym, "/")) return OP_DIVIDE; |
|
73
|
0 |
1 |
if (strEQ(sym, "%")) return OP_MODULO; |
|
74
|
0 |
1 |
if (strEQ(sym, "**")) return OP_POW; |
|
75
|
1 |
0 |
if (strEQ(sym, ".")) return OP_CONCAT; |
|
76
|
0 |
0 |
if (strEQ(sym, "x")) return OP_REPEAT; |
|
77
|
0 |
0 |
if (strEQ(sym, "|")) return OP_BIT_OR; |
|
78
|
0 |
0 |
if (strEQ(sym, "&")) return OP_BIT_AND; |
|
79
|
0 |
0 |
if (strEQ(sym, "^")) return OP_BIT_XOR; |
|
80
|
0 |
0 |
if (strEQ(sym, "<<")) return OP_LEFT_SHIFT; |
|
81
|
0 |
0 |
if (strEQ(sym, ">>")) return OP_RIGHT_SHIFT; |
|
101
|
87 |
27 |
for (i = 0; i < glyph_len; i++) { |
|
120
|
0 |
43 |
if (!hints) |
|
123
|
39 |
4 |
return hent && *hent && SvIOK(*hent) && SvIV(*hent) == e->id; |
|
|
39 |
0 |
return hent && *hent && SvIOK(*hent) && SvIV(*hent) == e->id; |
|
|
39 |
0 |
return hent && *hent && SvIOK(*hent) && SvIV(*hent) == e->id; |
|
|
34 |
5 |
return hent && *hent && SvIOK(*hent) && SvIV(*hent) == e->id; |
|
162
|
74 |
0 |
while ((c = lex_peek_unichar(0)) != -1 && isWORDCHAR(c)) { |
|
|
74 |
0 |
while ((c = lex_peek_unichar(0)) != -1 && isWORDCHAR(c)) { |
|
|
62 |
12 |
while ((c = lex_peek_unichar(0)) != -1 && isWORDCHAR(c)) { |
|
180
|
12 |
0 |
SV *name = (opdata && *opdata) ? *opdata : NULL; |
|
|
12 |
0 |
SV *name = (opdata && *opdata) ? *opdata : NULL; |
|
183
|
12 |
0 |
if (rhs) /* method mode does not use a parsed rhs */ |
|
185
|
12 |
0 |
nameop = newSVOP(OP_CONST, 0, name ? newSVsv(name) : newSVpvs("")); |
|
203
|
440112 |
270783 |
for (e = ic_registry; e; e = e->next) { |
|
204
|
76067 |
364045 |
if (e->glyph_len <= oplen |
|
205
|
43 |
76024 |
&& memEQ(opname, e->glyph, e->glyph_len) |
|
206
|
34 |
9 |
&& ic_active(aTHX_ e) |
|
207
|
2 |
32 |
&& (!best || e->glyph_len > best->glyph_len)) |
|
|
0 |
2 |
&& (!best || e->glyph_len > best->glyph_len)) |
|
211
|
32 |
270751 |
if (best) { |
|
231
|
8 |
5 |
e->cv = cv ? (CV *)SvREFCNT_inc((SV *)cv) : NULL; |
|
253
|
13 |
0 |
if (hints) { |
|
268
|
1 |
0 |
if (hints) |
|
282
|
0 |
0 |
if (!hints) |
|
286
|
0 |
0 |
while ((he = hv_iternext(hints))) { |
|
288
|
0 |
0 |
char *k = HePV(he, kl); |
|
289
|
0 |
0 |
if (kl >= sizeof("Infix::Custom/") - 1 |
|
290
|
0 |
0 |
&& memEQ(k, "Infix::Custom/", sizeof("Infix::Custom/") - 1)) |
|
293
|
0 |
0 |
for (i = 0; i <= av_top_index(doomed); i++) { |
|
|
0 |
0 |
for (i = 0; i <= av_top_index(doomed); i++) { |
|
295
|
0 |
0 |
if (kp && *kp) { |
|
|
0 |
0 |
if (kp && *kp) { |
|
324
|
2 |
13 |
if (items <= 1) /* bare `use Infix::Custom;` */ |
|
328
|
13 |
0 |
if (items >= 3 && !SvROK(ST(1)) |
|
|
13 |
0 |
if (items >= 3 && !SvROK(ST(1)) |
|
329
|
1 |
12 |
&& SvROK(ST(2)) && SvTYPE(SvRV(ST(2))) == SVt_PVCV) { |
|
|
1 |
0 |
&& SvROK(ST(2)) && SvTYPE(SvRV(ST(2))) == SVt_PVCV) { |
|
335
|
0 |
13 |
if ((items - start) % 2 != 0) |
|
338
|
38 |
13 |
for (i = start; i + 1 < items; i += 2) { |
|
341
|
12 |
26 |
if (strEQ(k, "op")) op_sv = v; |
|
342
|
7 |
19 |
else if (strEQ(k, "call")) call_sv = v; |
|
343
|
4 |
15 |
else if (strEQ(k, "binop")) binop_sv = v; |
|
344
|
1 |
14 |
else if (strEQ(k, "build_op")) build_sv = v; |
|
345
|
13 |
1 |
else if (strEQ(k, "prec")) prec_sv = v; |
|
346
|
1 |
0 |
else if (strEQ(k, "method")) method = SvTRUE(v); |
|
350
|
13 |
0 |
if (!op_sv || !SvOK(op_sv) || !SvCUR(op_sv)) |
|
|
13 |
0 |
if (!op_sv || !SvOK(op_sv) || !SvCUR(op_sv)) |
|
|
0 |
13 |
if (!op_sv || !SvOK(op_sv) || !SvCUR(op_sv)) |
|
356
|
42 |
13 |
for (j = 0; j < gl; j++) |
|
357
|
0 |
42 |
if (isSPACE(g[j])) |
|
362
|
0 |
13 |
if (modes == 0) |
|
364
|
0 |
13 |
if (modes > 1) |
|
367
|
13 |
0 |
prec = ic_prec_value(prec_sv ? SvPV_nolen(prec_sv) : "low"); |
|
368
|
0 |
13 |
if (prec < 0) |
|
369
|
0 |
0 |
croak("Infix::Custom: unknown prec '%s' (low logical_or_low " |
|
373
|
1 |
12 |
if (method && !call_sv) |
|
|
0 |
1 |
if (method && !call_sv) |
|
376
|
8 |
5 |
if (call_sv) { |
|
378
|
8 |
0 |
if (SvROK(call_sv) && SvTYPE(SvRV(call_sv)) == SVt_PVCV) |
|
|
8 |
0 |
if (SvROK(call_sv) && SvTYPE(SvRV(call_sv)) == SVt_PVCV) |
|
382
|
0 |
8 |
if (!cv) |
|
384
|
1 |
7 |
if (method) |
|
392
|
4 |
1 |
else if (binop_sv) { |
|
394
|
0 |
4 |
if (ot == OP_NULL) |
|
400
|
0 |
1 |
if (!fn) |
|
442
|
0 |
1 |
if (items <= 1) |
|
445
|
1 |
1 |
for (i = 1; i < items; i++) |
|
458
|
0 |
2 |
RETVAL = PTR2IV(ic_sample_build); |