| line |
true |
false |
branch |
|
32
|
0 |
90 |
if(SvNOK(osv)) |
|
34
|
90 |
0 |
if(SvIOK(osv) && SvIsUV(osv)) |
|
|
0 |
90 |
if(SvIOK(osv) && SvIsUV(osv)) |
|
84
|
157 |
196 |
for(int i = 0; i < n; i++) |
|
93
|
0 |
102 |
if(!sv_isa(sv, "Data::Checks::Constraint")) |
|
105
|
16 |
0 |
if(!stash || !Gv_AMG(stash)) |
|
|
16 |
0 |
if(!stash || !Gv_AMG(stash)) |
|
|
16 |
0 |
if(!stash || !Gv_AMG(stash)) |
|
|
0 |
16 |
if(!stash || !Gv_AMG(stash)) |
|
|
0 |
0 |
if(!stash || !Gv_AMG(stash)) |
|
|
9 |
7 |
if(!stash || !Gv_AMG(stash)) |
|
109
|
0 |
7 |
if(!mg) |
|
113
|
0 |
7 |
if(AMT_AMAGIC((AMT *)mg->mg_ptr)) |
|
119
|
2 |
5 |
if(!cv) |
|
132
|
8 |
4 |
return SvROK(value) && SvOBJECT(SvRV(value)); |
|
|
6 |
2 |
return SvROK(value) && SvOBJECT(SvRV(value)); |
|
137
|
4 |
35 |
if(!SvOK(value)) |
|
140
|
18 |
17 |
if(SvROK(value)) { |
|
142
|
12 |
6 |
if(!SvOBJECT(rv)) |
|
145
|
5 |
1 |
if(sv_has_overload(value, string_amg)) |
|
157
|
1 |
6 |
if(!constraint_Str(aTHX_ c, value)) |
|
161
|
3 |
3 |
if(SvTYPE(strs) != SVt_PVAV) |
|
169
|
1 |
7 |
for(size_t i = 0; i < n; i++) |
|
170
|
5 |
2 |
if(sv_streq(value, svp[i])) |
|
183
|
0 |
9 |
if(!nargs) |
|
186
|
5 |
4 |
if(nargs == 1) |
|
191
|
11 |
4 |
for(size_t i = 0; i < nargs; i++) |
|
202
|
4 |
5 |
if(!constraint_Str(aTHX_ c, value)) |
|
215
|
2 |
0 |
if(!SvROK(arg0) || !SvRXOK(SvRV(arg0))) |
|
|
0 |
2 |
if(!SvROK(arg0) || !SvRXOK(SvRV(arg0))) |
|
218
|
2 |
0 |
c->args[0] = SvREFCNT_inc(SvRV(arg0)); |
|
225
|
3 |
45 |
if(!SvOK(value)) |
|
228
|
10 |
35 |
if(SvROK(value)) { |
|
230
|
6 |
4 |
if(!SvOBJECT(rv)) |
|
233
|
3 |
1 |
if(sv_has_overload(value, numer_amg)) |
|
238
|
5 |
30 |
else if(SvPOK(value)) { |
|
239
|
2 |
3 |
if(!looks_like_number(value)) |
|
243
|
2 |
1 |
if(SvPVX(value)[0] == 'N' || SvPVX(value)[0] == 'n') |
|
250
|
2 |
28 |
if(SvNOK(value) && Perl_isnan(SvNV(value))) |
|
|
1 |
1 |
if(SvNOK(value) && Perl_isnan(SvNV(value))) |
|
265
|
6 |
21 |
if(!constraint_Num(aTHX_ c, value)) |
|
268
|
15 |
6 |
if(c->args[0]) { |
|
270
|
3 |
12 |
if(cmp > 0 || (cmp == 0 && !(c->flags & NUMBOUND_LOWER_INCLUSIVE))) |
|
|
4 |
8 |
if(cmp > 0 || (cmp == 0 && !(c->flags & NUMBOUND_LOWER_INCLUSIVE))) |
|
|
1 |
3 |
if(cmp > 0 || (cmp == 0 && !(c->flags & NUMBOUND_LOWER_INCLUSIVE))) |
|
274
|
14 |
3 |
if(c->args[1]) { |
|
276
|
6 |
8 |
if(cmp > 0 || (cmp == 0 && !(c->flags & NUMBOUND_UPPER_INCLUSIVE))) |
|
|
3 |
5 |
if(cmp > 0 || (cmp == 0 && !(c->flags & NUMBOUND_UPPER_INCLUSIVE))) |
|
|
1 |
2 |
if(cmp > 0 || (cmp == 0 && !(c->flags & NUMBOUND_UPPER_INCLUSIVE))) |
|
353
|
1 |
6 |
if(!constraint_Num(aTHX_ c, value)) |
|
357
|
3 |
3 |
if(SvTYPE(nums) != SVt_PVAV) |
|
365
|
1 |
7 |
for(size_t i = 0; i < n; i++) |
|
366
|
5 |
2 |
if(sv_numcmp(value, svp[i]) == 0) |
|
379
|
0 |
5 |
if(!nargs) |
|
382
|
3 |
2 |
if(nargs == 1) |
|
387
|
5 |
2 |
for(size_t i = 0; i < nargs; i++) |
|
415
|
11 |
8 |
if(SvROK(value) && SvOBJECT(SvRV(value))) |
|
|
5 |
6 |
if(SvROK(value) && SvOBJECT(SvRV(value))) |
|
417
|
12 |
2 |
else if(SvOK(value)) { |
|
419
|
10 |
2 |
if(!stash) |
|
429
|
3 |
4 |
size_t nmethods = SvTYPE(methods) == SVt_PVAV ? av_count((AV *)methods) : 1; |
|
430
|
13 |
6 |
for(size_t idx = 0; idx < nmethods; idx++) { |
|
431
|
9 |
4 |
SV *method = SvTYPE(methods) == SVt_PVAV ? AvARRAY((AV *)methods)[idx] : methods; |
|
432
|
1 |
12 |
if(!gv_fetchmeth_sv(stash, method, |
|
452
|
0 |
3 |
if(!nargs) |
|
455
|
1 |
2 |
if(nargs == 1) |
|
460
|
5 |
2 |
for(size_t i = 0; i < nargs; i++) |
|
471
|
7 |
1 |
if(!SvOK(value) || !SvROK(value)) |
|
|
5 |
2 |
if(!SvOK(value) || !SvROK(value)) |
|
476
|
3 |
2 |
if(!SvOBJECT(rv)) |
|
485
|
7 |
1 |
if(!SvOK(value) || !SvROK(value)) |
|
|
5 |
2 |
if(!SvOK(value) || !SvROK(value)) |
|
490
|
3 |
2 |
if(!SvOBJECT(rv)) |
|
499
|
8 |
1 |
if(!SvOK(value) || !SvROK(value)) |
|
|
6 |
2 |
if(!SvOK(value) || !SvROK(value)) |
|
504
|
4 |
2 |
if(!SvOBJECT(rv)) |
|
513
|
6 |
1 |
if(!SvOK(value)) |
|
529
|
3 |
0 |
c->args[0] = SvREFCNT_inc(inner); |
|
540
|
12 |
4 |
for(size_t i = 0; i < n; i++) { |
|
542
|
9 |
3 |
if((*inner->func)(aTHX_ inner, value)) |
|
551
|
0 |
8 |
if(!nargs) |
|
553
|
1 |
7 |
if(nargs == 1) |
|
559
|
14 |
7 |
for(size_t i = 0; i < nargs; i++) { |
|
563
|
2 |
12 |
if(inner->func == &constraint_Any) { |
|
566
|
4 |
2 |
for(size_t kidi = 0; kidi < nkids; kidi++) { |
|
567
|
4 |
0 |
av_push(inners, SvREFCNT_inc(AvARRAY(kidav)[kidi])); |
|
579
|
7 |
0 |
c->args[0] = SvREFCNT_inc(inners); |
|
587
|
7 |
0 |
if(!inners) |
|
593
|
0 |
0 |
for(size_t i = 0; i < n; i++) { |
|
595
|
0 |
0 |
if(!(*inner->func)(aTHX_ inner, value)) |
|
605
|
1 |
21 |
if(nargs == 1) |
|
609
|
19 |
2 |
if(nargs) { |
|
619
|
39 |
19 |
for(size_t i = 0; i < nargs; i++) { |
|
623
|
1 |
38 |
if(inner->func == &constraint_All) { |
|
626
|
2 |
1 |
for(size_t kidi = 0; kidi < nkids; kidi++) { |
|
627
|
2 |
0 |
av_push(inners, SvREFCNT_inc(AvARRAY(kidav)[kidi])); |
|
630
|
32 |
6 |
else if(inner->func == &constraint_NumBound) { |
|
631
|
16 |
16 |
if(!all_nums) { |
|
640
|
18 |
14 |
if(innerL) { |
|
641
|
5 |
13 |
if(!all_nums->args[0] || (cmp = sv_numcmp(all_nums->args[0], innerL)) < 0) { |
|
|
4 |
1 |
if(!all_nums->args[0] || (cmp = sv_numcmp(all_nums->args[0], innerL)) < 0) { |
|
647
|
1 |
0 |
else if(cmp == 0 && !(inner->flags & NUMBOUND_LOWER_INCLUSIVE)) |
|
|
1 |
0 |
else if(cmp == 0 && !(inner->flags & NUMBOUND_LOWER_INCLUSIVE)) |
|
650
|
18 |
14 |
if(innerU) { |
|
651
|
5 |
13 |
if(!all_nums->args[1] || (cmp = sv_numcmp(all_nums->args[1], innerU)) > 0) { |
|
|
2 |
3 |
if(!all_nums->args[1] || (cmp = sv_numcmp(all_nums->args[1], innerU)) > 0) { |
|
657
|
1 |
2 |
else if(cmp == 0 && !(inner->flags & NUMBOUND_UPPER_INCLUSIVE)) |
|
|
1 |
0 |
else if(cmp == 0 && !(inner->flags & NUMBOUND_UPPER_INCLUSIVE)) |
|
667
|
16 |
3 |
if(all_nums_sv && av_count(inners) == 1) |
|
|
15 |
1 |
if(all_nums_sv && av_count(inners) == 1) |
|
676
|
4 |
2 |
c->args[0] = SvREFCNT_inc(inners); |
|
747
|
2 |
45 |
SV **svp = PL_stack_base + POPMARK + 1; |
|
751
|
2 |
45 |
if(!nargs) |
|
752
|
0 |
2 |
EXTEND(SP, 1); |
|
860
|
110 |
21 |
for(STRLEN i = 0; i < len; i++) { |
|
861
|
0 |
110 |
if(len == 256) { |
|
866
|
110 |
0 |
if(c == '\\' || c == quote || (quote != '\'' && (c == '$' || c == '@'))) |
|
|
108 |
2 |
if(c == '\\' || c == quote || (quote != '\'' && (c == '$' || c == '@'))) |
|
|
108 |
0 |
if(c == '\\' || c == quote || (quote != '\'' && (c == '$' || c == '@'))) |
|
|
1 |
107 |
if(c == '\\' || c == quote || (quote != '\'' && (c == '$' || c == '@'))) |
|
879
|
10 |
4 |
for(U32 i = 0; i < n; i++) { |
|
880
|
6 |
4 |
if(i > 0) |
|
894
|
91 |
5 |
if (c->func == &constraint_Defined) |
|
896
|
85 |
6 |
else if(c->func == &constraint_Object) |
|
898
|
83 |
2 |
else if(c->func == &constraint_ArrayRef) |
|
900
|
81 |
2 |
else if(c->func == &constraint_HashRef) |
|
902
|
79 |
2 |
else if(c->func == &constraint_Callable) |
|
904
|
77 |
2 |
else if(c->func == &constraint_Num) |
|
906
|
58 |
19 |
else if(c->func == &constraint_Str) |
|
909
|
3 |
55 |
else if(c->func == &constraint_Isa) { |
|
913
|
2 |
53 |
else if(c->func == &constraint_StrMatch) { |
|
918
|
2 |
51 |
else if(c->func == &constraint_Maybe) { |
|
923
|
26 |
25 |
else if(c->func == &constraint_NumBound) { |
|
924
|
7 |
19 |
if(!c->args[0]) |
|
925
|
4 |
3 |
name = (c->flags & NUMBOUND_UPPER_INCLUSIVE ) ? "NumLE" : "NumLT"; |
|
926
|
7 |
12 |
else if(!c->args[1]) |
|
927
|
4 |
3 |
name = (c->flags & NUMBOUND_LOWER_INCLUSIVE ) ? "NumGE" : "NumGT"; |
|
928
|
6 |
6 |
else if(c->flags == NUMBOUND_LOWER_INCLUSIVE) |
|
935
|
2 |
4 |
sv_catpvf(args, "NumG%c(%" SVf "), NumL%c(%" SVf ")", |
|
|
3 |
3 |
sv_catpvf(args, "NumG%c(%" SVf "), NumL%c(%" SVf ")", |
|
940
|
20 |
6 |
if(!SvCUR(args)) { |
|
941
|
13 |
7 |
if(c->args[0]) |
|
943
|
13 |
7 |
if(c->args[0] && c->args[1]) |
|
|
6 |
7 |
if(c->args[0] && c->args[1]) |
|
945
|
13 |
7 |
if(c->args[1]) |
|
950
|
5 |
20 |
else if(c->func == &constraint_NumEq) { |
|
952
|
3 |
2 |
if(SvTYPE(c->args[0]) != SVt_PVAV) |
|
957
|
5 |
2 |
for(U32 i = 0; i < n; i++) { |
|
958
|
3 |
2 |
if(i > 0) |
|
964
|
7 |
13 |
else if(c->func == &constraint_StrEq) { |
|
966
|
2 |
5 |
if(SvTYPE(c->args[0]) == SVt_PVAV) |
|
971
|
3 |
10 |
else if(c->func == &constraint_Can) { |
|
973
|
2 |
1 |
if(SvTYPE(c->args[0]) == SVt_PVAV) |
|
978
|
5 |
5 |
else if(c->func == &constraint_Any || c->func == &constraint_All) { |
|
|
5 |
0 |
else if(c->func == &constraint_Any || c->func == &constraint_All) { |
|
979
|
5 |
5 |
name = (c->func == &constraint_Any) ? "Any" : "All"; |
|
980
|
8 |
2 |
if(c->args[0]) { |
|
983
|
19 |
8 |
for(U32 i = 0; i < n; i++) { |
|
984
|
11 |
8 |
if(i > 0) |
|
995
|
56 |
40 |
if(SvCUR(args)) |