Branch Coverage

FuncUtil.c
Criterion Covered Total %
branch 1618 2664 60.7


line true false branch
208 1005 0 if (idx >= 0 && idx < g_once_count) {
1005 0 if (idx >= 0 && idx < g_once_count) {
210 0 1005 if (of->func) {
214 1005 0 if (of->result) {
238 1012 0 if (idx >= 0 && idx < g_partial_count) {
1012 0 if (idx >= 0 && idx < g_partial_count) {
240 1012 0 if (pf->func) {
244 1012 0 if (pf->bound_args) {
260 212 0 if (idx >= 0 && idx < g_memo_count) {
212 0 if (idx >= 0 && idx < g_memo_count) {
262 212 0 if (mf->func) {
266 212 0 if (mf->cache) {
284 1008 0 if (idx >= 0 && idx < g_lazy_count) {
1008 0 if (idx >= 0 && idx < g_lazy_count) {
286 0 1008 if (lv->thunk) {
290 1008 0 if (lv->value) {
307 1010 0 if (funcs) {
321 8 0 if (idx >= 0 && idx < g_always_count && g_always_values[idx]) {
8 0 if (idx >= 0 && idx < g_always_count && g_always_values[idx]) {
8 0 if (idx >= 0 && idx < g_always_count && g_always_values[idx]) {
337 4 209 if (needed >= g_memo_size) {
338 4 0 IV new_size = g_memo_size ? g_memo_size * 2 : 16;
339 0 4 while (new_size <= needed) new_size *= 2;
340 0 4 Renew(g_memos, new_size, MemoizedFunc);
346 6 1002 if (needed >= g_lazy_size) {
347 6 0 IV new_size = g_lazy_size ? g_lazy_size * 2 : 16;
348 0 6 while (new_size <= needed) new_size *= 2;
349 0 6 Renew(g_lazies, new_size, LazyValue);
355 0 8 if (needed >= g_always_size) {
356 0 0 IV new_size = g_always_size ? g_always_size * 2 : 16;
357 0 0 while (new_size <= needed) new_size *= 2;
358 0 0 Renew(g_always_values, new_size, SV*);
364 6 999 if (needed >= g_once_size) {
365 6 0 IV new_size = g_once_size ? g_once_size * 2 : 16;
366 0 6 while (new_size <= needed) new_size *= 2;
367 0 6 Renew(g_onces, new_size, OnceFunc);
373 6 1006 if (needed >= g_partial_size) {
374 6 0 IV new_size = g_partial_size ? g_partial_size * 2 : 16;
375 0 6 while (new_size <= needed) new_size *= 2;
376 0 6 Renew(g_partials, new_size, PartialFunc);
385 850 849 for (i = 0; i < count; i++) {
386 3 847 if (i > 0) sv_catpvs(key, "\x00");
387 846 4 if (SvOK(args[i])) {
420 1016 5010 return (SvROK(elem) && SvTYPE(SvRV(elem)) == SVt_PVAV) ? TRUE : FALSE;
1006 10 return (SvROK(elem) && SvTYPE(SvRV(elem)) == SVt_PVAV) ? TRUE : FALSE;
424 2017 5010 return (SvROK(elem) && SvTYPE(SvRV(elem)) == SVt_PVHV) ? TRUE : FALSE;
1006 1011 return (SvROK(elem) && SvTYPE(SvRV(elem)) == SVt_PVHV) ? TRUE : FALSE;
428 14 9 return (SvROK(elem) && SvTYPE(SvRV(elem)) == SVt_PVCV) ? TRUE : FALSE;
4 10 return (SvROK(elem) && SvTYPE(SvRV(elem)) == SVt_PVCV) ? TRUE : FALSE;
432 2041259 0 if (SvIOK(elem)) return SvIV(elem) > 0;
433 0 0 if (SvNOK(elem)) return SvNV(elem) > 0;
434 0 0 if (SvPOK(elem) && looks_like_number(elem)) return SvNV(elem) > 0;
0 0 if (SvPOK(elem) && looks_like_number(elem)) return SvNV(elem) > 0;
439 19081 0 if (SvIOK(elem)) return SvIV(elem) < 0;
440 0 0 if (SvNOK(elem)) return SvNV(elem) < 0;
441 0 0 if (SvPOK(elem) && looks_like_number(elem)) return SvNV(elem) < 0;
0 0 if (SvPOK(elem) && looks_like_number(elem)) return SvNV(elem) < 0;
446 15069 0 if (SvIOK(elem)) return SvIV(elem) == 0;
447 0 0 if (SvNOK(elem)) return SvNV(elem) == 0.0;
448 0 0 if (SvPOK(elem) && looks_like_number(elem)) return SvNV(elem) == 0.0;
0 0 if (SvPOK(elem) && looks_like_number(elem)) return SvNV(elem) == 0.0;
453 0 30113 if (!SvIOK(elem) && !SvNOK(elem)) {
0 0 if (!SvIOK(elem) && !SvNOK(elem)) {
454 0 0 if (!SvPOK(elem) || !looks_like_number(elem)) return FALSE;
0 0 if (!SvPOK(elem) || !looks_like_number(elem)) return FALSE;
461 0 1054 if (!SvIOK(elem) && !SvNOK(elem)) {
0 0 if (!SvIOK(elem) && !SvNOK(elem)) {
462 0 0 if (!SvPOK(elem) || !looks_like_number(elem)) return FALSE;
0 0 if (!SvPOK(elem) || !looks_like_number(elem)) return FALSE;
469 1007 6038 if (!SvOK(elem)) return TRUE;
470 2016 4022 if (SvROK(elem)) {
472 1008 1008 if (SvTYPE(rv) == SVt_PVAV) return AvFILL((AV*)rv) < 0;
0 1008 if (SvTYPE(rv) == SVt_PVAV) return AvFILL((AV*)rv) < 0;
473 1008 0 if (SvTYPE(rv) == SVt_PVHV) return HvKEYS((HV*)rv) == 0;
0 1008 if (SvTYPE(rv) == SVt_PVHV) return HvKEYS((HV*)rv) == 0;
476 2022 2000 if (SvPOK(elem)) return SvCUR(elem) == 0;
485 1011 1004 return (SvPOK(elem) && !SvIOK(elem) && !SvNOK(elem) && !SvROK(elem)) ? TRUE : FALSE;
1011 0 return (SvPOK(elem) && !SvIOK(elem) && !SvNOK(elem) && !SvROK(elem)) ? TRUE : FALSE;
1011 0 return (SvPOK(elem) && !SvIOK(elem) && !SvNOK(elem) && !SvROK(elem)) ? TRUE : FALSE;
1011 0 return (SvPOK(elem) && !SvIOK(elem) && !SvNOK(elem) && !SvROK(elem)) ? TRUE : FALSE;
489 3 9002 if (SvIOK(elem) || SvNOK(elem)) return TRUE;
1 2 if (SvIOK(elem) || SvNOK(elem)) return TRUE;
490 2 0 if (SvPOK(elem) && looks_like_number(elem)) return TRUE;
1 1 if (SvPOK(elem) && looks_like_number(elem)) return TRUE;
495 2 4 if (SvIOK(elem) && !SvNOK(elem)) return TRUE;
2 0 if (SvIOK(elem) && !SvNOK(elem)) return TRUE;
496 3 1 if (SvNOK(elem)) {
500 1 0 if (SvPOK(elem) && looks_like_number(elem)) {
1 0 if (SvPOK(elem) && looks_like_number(elem)) {
512 53 868 if (!g_callback_registry) {
522 0 53 if (!g_callback_registry) return;
527 53 0 if (PL_dirty) {
534 0 0 while ((entry = hv_iternext(g_callback_registry))) {
536 0 0 if (sv && SvOK(sv)) {
0 0 if (sv && SvOK(sv)) {
538 0 0 if (cb) {
539 0 0 if (cb->perl_callback) {
543 0 0 if (cb->name) {
557 0 41580 if (!g_callback_registry) return NULL;
559 39550 2030 if (!svp || !SvOK(*svp)) return NULL;
0 39550 if (!svp || !SvOK(*svp)) return NULL;
590 0 0 if (get_registered_callback(aTHX_ name)) {
613 0 0 if (get_registered_callback(aTHX_ name)) {
636 0 0 if (get_registered_callback(aTHX_ name)) {
662 0 1006 if (!g_callback_registry) return result;
665 17110 1006 while ((entry = hv_iternext(g_callback_registry))) {
708 0 0 XPUSHs(g_always_values[idx]);
719 0 30 if (SP - MARK != 3) {
739 6 24 if (value < min) {
741 7 17 } else if (value > max) {
757 0 0 if (!SvOK(val_sv)) {
773 6 4 SETs(SvROK(sv) ? &PL_sv_yes : &PL_sv_no);
781 2 2 SETs((SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) ? &PL_sv_yes : &PL_sv_no);
1 1 SETs((SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) ? &PL_sv_yes : &PL_sv_no);
789 2 1 SETs((SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) ? &PL_sv_yes : &PL_sv_no);
1 1 SETs((SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) ? &PL_sv_yes : &PL_sv_no);
797 2 1 SETs((SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVCV) ? &PL_sv_yes : &PL_sv_no);
1 1 SETs((SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVCV) ? &PL_sv_yes : &PL_sv_no);
805 6 3 SETs(SvOK(sv) ? &PL_sv_yes : &PL_sv_no);
819 1 3 if (!SvOK(sv)) {
824 1 2 SETs(len == 0 ? &PL_sv_yes : &PL_sv_no);
835 13 0 if (!SvOK(str_sv) || !SvOK(prefix_sv)) {
0 13 if (!SvOK(str_sv) || !SvOK(prefix_sv)) {
844 0 13 if (prefix_len > str_len) {
846 1 12 } else if (prefix_len == 0) {
849 4 8 SETs(memcmp(str, prefix, prefix_len) == 0 ? &PL_sv_yes : &PL_sv_no);
860 4 0 if (!SvOK(str_sv) || !SvOK(suffix_sv)) {
0 4 if (!SvOK(str_sv) || !SvOK(suffix_sv)) {
869 0 4 if (suffix_len > str_len) {
871 1 3 } else if (suffix_len == 0) {
875 2 1 SETs(memcmp(str_end, suffix, suffix_len) == 0 ? &PL_sv_yes : &PL_sv_no);
889 2 3 SETs(SvTRUE(sv) ? &PL_sv_yes : &PL_sv_no);
897 2 3 SETs(SvTRUE(sv) ? &PL_sv_no : &PL_sv_yes);
905 4 3 SETs(SvTRUE(sv) ? &PL_sv_yes : &PL_sv_no);
919 3 3 SETs((SvNIOK(sv) || looks_like_number(sv)) ? &PL_sv_yes : &PL_sv_no);
1 2 SETs((SvNIOK(sv) || looks_like_number(sv)) ? &PL_sv_yes : &PL_sv_no);
928 3 2 if (SvIOK(sv)) {
930 1 1 } else if (SvNOK(sv)) {
933 0 1 SETs((nv == (NV)(IV)nv) ? &PL_sv_yes : &PL_sv_no);
934 0 1 } else if (looks_like_number(sv)) {
941 0 0 for (i = 0; i < len; i++) {
942 0 0 if (pv[i] == '.' || pv[i] == 'e' || pv[i] == 'E') {
0 0 if (pv[i] == '.' || pv[i] == 'e' || pv[i] == 'E') {
0 0 if (pv[i] == '.' || pv[i] == 'e' || pv[i] == 'E') {
947 0 0 if (has_dot) {
950 0 0 SETs((nv == (NV)(IV)nv) ? &PL_sv_yes : &PL_sv_no);
964 1 2 SETs(sv_isobject(sv) ? &PL_sv_yes : &PL_sv_no);
972 2 1 if (SvROK(sv)) {
976 1 1 SETs((type < SVt_PVAV) ? &PL_sv_yes : &PL_sv_no);
988 1 2 SETs(SvRXOK(sv) ? &PL_sv_yes : &PL_sv_no);
996 1 1 SETs((SvTYPE(sv) == SVt_PVGV) ? &PL_sv_yes : &PL_sv_no);
1004 0 0 SETs((SvOK(sv) && !SvROK(sv)) ? &PL_sv_yes : &PL_sv_no);
0 0 SETs((SvOK(sv) && !SvROK(sv)) ? &PL_sv_yes : &PL_sv_no);
1017 0 8 if (SvNIOK(sv) || looks_like_number(sv)) {
0 0 if (SvNIOK(sv) || looks_like_number(sv)) {
1019 4 4 SETs((nv > 0) ? &PL_sv_yes : &PL_sv_no);
1030 0 4 if (SvNIOK(sv) || looks_like_number(sv)) {
0 0 if (SvNIOK(sv) || looks_like_number(sv)) {
1032 2 2 SETs((nv < 0) ? &PL_sv_yes : &PL_sv_no);
1043 0 4 if (SvNIOK(sv) || looks_like_number(sv)) {
0 0 if (SvNIOK(sv) || looks_like_number(sv)) {
1045 2 2 SETs((nv == 0) ? &PL_sv_yes : &PL_sv_no);
1060 5 0 if (SvIOK(sv)) {
1061 3 2 SETs((SvIVX(sv) & 1) == 0 ? &PL_sv_yes : &PL_sv_no);
1062 0 0 } else if (SvNIOK(sv)) {
1064 0 0 if (nv == (NV)(IV)nv) {
1065 0 0 SETs(((IV)nv & 1) == 0 ? &PL_sv_yes : &PL_sv_no);
1069 0 0 } else if (looks_like_number(sv)) {
1070 0 0 SETs((SvIV(sv) & 1) == 0 ? &PL_sv_yes : &PL_sv_no);
1081 5 0 if (SvIOK(sv)) {
1082 3 2 SETs((SvIVX(sv) & 1) == 1 ? &PL_sv_yes : &PL_sv_no);
1083 0 0 } else if (SvNIOK(sv)) {
1085 0 0 if (nv == (NV)(IV)nv) {
1086 0 0 SETs(((IV)nv & 1) == 1 ? &PL_sv_yes : &PL_sv_no);
1090 0 0 } else if (looks_like_number(sv)) {
1091 0 0 SETs((SvIV(sv) & 1) == 1 ? &PL_sv_yes : &PL_sv_no);
1105 0 0 if (SvNIOK(val_sv) || looks_like_number(val_sv)) {
0 0 if (SvNIOK(val_sv) || looks_like_number(val_sv)) {
1109 0 0 SETs((val >= min && val <= max) ? &PL_sv_yes : &PL_sv_no);
0 0 SETs((val >= min && val <= max) ? &PL_sv_yes : &PL_sv_no);
1124 2 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
2 0 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
1126 0 2 SETs(AvFILL(av) < 0 ? &PL_sv_yes : &PL_sv_no);
1 1 SETs(AvFILL(av) < 0 ? &PL_sv_yes : &PL_sv_no);
1137 2 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) {
2 0 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) {
1139 0 2 SETs(HvKEYS(hv) == 0 ? &PL_sv_yes : &PL_sv_no);
1 1 SETs(HvKEYS(hv) == 0 ? &PL_sv_yes : &PL_sv_no);
1150 3 0 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
3 0 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
1152 0 3 SV *len = sv_2mortal(newSViv(AvFILL(av) + 1));
1164 3 0 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) {
3 0 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) {
1166 0 3 SV *size = sv_2mortal(newSViv(HvKEYS(hv)));
1178 3 0 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
3 0 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
1180 0 3 if (AvFILL(av) >= 0) {
2 1 if (AvFILL(av) >= 0) {
1182 2 0 SETs(elem ? *elem : &PL_sv_undef);
1196 3 0 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
3 0 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
1198 0 3 IV last_idx = AvFILL(av);
1199 2 1 if (last_idx >= 0) {
1201 2 0 SETs(elem ? *elem : &PL_sv_undef);
1221 0 5 if (!SvOK(sv)) {
1232 11 0 while (start < end && isSPACE(*start)) {
6 5 while (start < end && isSPACE(*start)) {
1237 11 0 while (end > start && isSPACE(*(end - 1))) {
6 5 while (end > start && isSPACE(*(end - 1))) {
1252 0 3 if (!SvOK(sv)) {
1263 7 0 while (start < end && isSPACE(*start)) {
4 3 while (start < end && isSPACE(*start)) {
1277 0 3 if (!SvOK(sv)) {
1287 7 0 while (end > str && isSPACE(*(end - 1))) {
4 3 while (end > str && isSPACE(*(end - 1))) {
1306 1 1 if (SvOK(val_sv)) {
1323 0 3 if (!SvNIOK(sv) && !looks_like_number(sv)) {
0 0 if (!SvNIOK(sv) && !looks_like_number(sv)) {
1329 1 2 if (nv > 0) {
1331 1 1 } else if (nv < 0) {
1348 3 1 SETs(a <= b ? a_sv : b_sv);
1361 2 2 SETs(a >= b ? a_sv : b_sv);
1378 0 152 if (!op) return FALSE;
1381 4 148 if (op->op_type == OP_RV2SV) {
1383 4 0 if (gvop && gvop->op_type == OP_GV) {
4 0 if (gvop && gvop->op_type == OP_GV) {
1385 4 0 if (gv && GvNAMELEN(gv) == 1 && GvNAME(gv)[0] == '_') {
4 0 if (gv && GvNAMELEN(gv) == 1 && GvNAME(gv)[0] == '_') {
4 0 if (gv && GvNAMELEN(gv) == 1 && GvNAME(gv)[0] == '_') {
1403 3 0 if (!OpHAS_SIBLING(pushop)) {
1408 3 0 argop = OpSIBLING(pushop);
1412 3 3 while (OpHAS_SIBLING(cvop)) {
1413 3 0 cvop = OpSIBLING(cvop);
1417 3 0 if (argop != cvop && OpSIBLING(argop) == cvop) {
3 0 if (argop != cvop && OpSIBLING(argop) == cvop) {
3 0 if (argop != cvop && OpSIBLING(argop) == cvop) {
1422 0 3 if (op_is_dollar_underscore(aTHX_ arg)) {
1448 8 0 if (!OpHAS_SIBLING(pushop)) {
1453 8 0 arg1 = OpSIBLING(pushop); /* value */
1454 0 8 if (!arg1) return entersubop;
1456 8 0 arg2 = OpSIBLING(arg1); /* min */
1457 0 8 if (!arg2) return entersubop;
1459 8 0 arg3 = OpSIBLING(arg2); /* max */
1460 0 8 if (!arg3) return entersubop;
1462 8 0 cvop = OpSIBLING(arg3); /* cv op (should be last) */
1463 8 0 if (!cvop || OpHAS_SIBLING(cvop)) return entersubop;
0 8 if (!cvop || OpHAS_SIBLING(cvop)) return entersubop;
1470 2 6 if (op_is_dollar_underscore(aTHX_ arg1)) {
1505 120 0 if (!OpHAS_SIBLING(pushop)) {
1510 120 0 argop = OpSIBLING(pushop);
1514 120 120 while (OpHAS_SIBLING(cvop)) {
1515 120 0 cvop = OpSIBLING(cvop);
1519 120 0 if (argop != cvop && OpSIBLING(argop) == cvop) {
120 0 if (argop != cvop && OpSIBLING(argop) == cvop) {
120 0 if (argop != cvop && OpSIBLING(argop) == cvop) {
1523 1 119 if (op_is_dollar_underscore(aTHX_ arg)) {
1578 21 0 if (!OpHAS_SIBLING(pushop)) {
1583 21 0 arg1 = OpSIBLING(pushop); /* string */
1584 0 21 if (!arg1) return entersubop;
1586 21 0 arg2 = OpSIBLING(arg1); /* prefix/suffix */
1587 0 21 if (!arg2) return entersubop;
1589 21 0 cvop = OpSIBLING(arg2); /* cv op (should be last) */
1590 21 0 if (!cvop || OpHAS_SIBLING(cvop)) return entersubop;
0 21 if (!cvop || OpHAS_SIBLING(cvop)) return entersubop;
1593 1 20 if (op_is_dollar_underscore(aTHX_ arg1)) {
1762 0 213 if (items != 1) croak("Usage: Func::Util::memo(\\&func)");
1765 213 0 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
0 213 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
1802 421 428 if (cached && SvOK(*cached)) {
421 0 if (cached && SvOK(*cached)) {
1805 0 421 if (SvROK(*cached) && SvTYPE(SvRV(*cached)) == SVt_PVAV) {
0 0 if (SvROK(*cached) && SvTYPE(SvRV(*cached)) == SVt_PVAV) {
1809 0 0 EXTEND(SP, len);
0 0 EXTEND(SP, len);
1810 0 0 for (i = 0; i < len; i++) {
1812 0 0 ST(i) = elem ? *elem : &PL_sv_undef;
1825 0 428 PUSHMARK(SP);
1828 428 0 EXTEND(SP, items);
0 428 EXTEND(SP, items);
1829 429 428 for (i = 0; i < items; i++) {
1838 428 0 if (count == 1) {
1842 428 0 FREETMPS;
1847 0 0 } else if (count > 0) {
1850 0 0 for (i = count - 1; i >= 0; i--) {
1856 0 0 FREETMPS;
1859 0 0 for (i = 0; i < count; i++) {
1861 0 0 ST(i) = elem ? *elem : &PL_sv_undef;
1867 0 0 FREETMPS;
1880 0 1011 if (items < 2) croak("Usage: Func::Util::pipeline($value, \\&fn1, \\&fn2, ...)");
1885 3025 1011 for (i = 1; i < items; i++) {
1887 3025 0 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
0 3025 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
1894 0 3025 PUSHMARK(SP);
1895 0 3025 XPUSHs(value);
1904 3024 1 FREETMPS;
1917 0 1010 if (items < 1) croak("Usage: Func::Util::compose(\\&fn1, \\&fn2, ...)");
1922 3020 1010 for (i = 0; i < items; i++) {
1924 3020 0 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
0 3020 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
1948 3022 1011 for (i = func_count - 1; i >= 0; i--) {
1950 0 3022 if (!func_ptr) continue;
1954 0 3022 PUSHMARK(SP);
1956 1011 2011 if (i == func_count - 1) {
1958 1011 0 EXTEND(SP, items);
0 1011 EXTEND(SP, items);
1959 1011 1011 for (j = 0; j < items; j++) {
1963 0 2011 XPUSHs(value);
1973 3021 1 FREETMPS;
1976 2011 1011 if (value) SvREFCNT_dec(value);
1980 1011 0 ST(0) = value ? sv_2mortal(value) : &PL_sv_undef;
1990 0 1008 if (items != 1) croak("Usage: Func::Util::lazy(sub { ... })");
1993 1008 0 if (!SvROK(thunk) || SvTYPE(SvRV(thunk)) != SVt_PVCV) {
0 1008 if (!SvROK(thunk) || SvTYPE(SvRV(thunk)) != SVt_PVCV) {
2018 0 2018 if (items != 1) croak("Usage: Func::Util::force($lazy)");
2022 2014 4 if (!SvROK(lazy) || !sv_derived_from(lazy, "Func::Util::Lazy")) {
1 2013 if (!SvROK(lazy) || !sv_derived_from(lazy, "Func::Util::Lazy")) {
2028 2013 0 if (idx < 0 || idx >= g_lazy_count) {
0 2013 if (idx < 0 || idx >= g_lazy_count) {
2034 1005 1008 if (lv->forced) {
2041 0 1008 PUSHMARK(SP);
2050 1008 0 FREETMPS;
2066 0 19124 if (items < 2) croak("Usage: Func::Util::dig($hash, @keys)");
2071 47354 13117 for (i = 1; i < items; i++) {
2072 47353 1 if (!SvROK(current) || SvTYPE(SvRV(current)) != SVt_PVHV) {
3000 44353 if (!SvROK(current) || SvTYPE(SvRV(current)) != SVt_PVHV) {
2082 41349 3004 if (!val || !SvOK(*val)) {
2 41347 if (!val || !SvOK(*val)) {
2099 0 12105 if (items != 2) croak("Usage: Func::Util::tap(\\&block, $value)");
2104 12105 0 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
0 12105 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
2113 0 12105 PUSHMARK(SP);
2114 0 12105 XPUSHs(value);
2120 0 12105 FREETMPS;
2134 0 18161 if (items != 3) croak("Usage: Func::Util::clamp($value, $min, $max)");
2140 3014 15147 if (value < min) {
2142 3014 12133 } else if (value > max) {
2158 0 16119 if (items != 1) croak("Usage: Func::Util::identity($value)");
2168 0 8 if (items != 1) croak("Usage: Func::Util::always($value)");
2201 0 2 XPUSHs(&PL_sv_undef);
2247 10102 2003 if (GIMME_V == G_ARRAY) {
2258 10102 2003 if (GIMME_V == G_ARRAY) {
2289 0 1008 if (items != 1) croak("Usage: Func::Util::negate(\\&predicate)");
2292 1008 0 if (!SvROK(pred) || SvTYPE(SvRV(pred)) != SVt_PVCV) {
0 1008 if (!SvROK(pred) || SvTYPE(SvRV(pred)) != SVt_PVCV) {
2309 0 12113 PUSHMARK(SP);
2312 12113 0 EXTEND(SP, items);
0 12113 EXTEND(SP, items);
2313 12113 12113 for (i = 0; i < items; i++) {
2324 12113 0 FREETMPS;
2327 1005 11108 ST(0) = val ? &PL_sv_no : &PL_sv_yes;
2334 0 1005 if (items != 1) croak("Usage: Func::Util::once(\\&func)");
2337 1005 0 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
0 1005 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
2365 2010 1005 if (of->called) {
2366 2010 0 ST(0) = of->result ? of->result : &PL_sv_undef;
2372 0 1005 PUSHMARK(SP);
2381 1005 0 FREETMPS;
2395 0 1012 if (items < 1) croak("Usage: Func::Util::partial(\\&func, @bound_args)");
2398 1012 0 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
0 1012 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
2411 1012 1012 for (i = 1; i < items; i++) {
2435 0 2016 PUSHMARK(SP);
2437 2016 0 EXTEND(SP, total);
0 2016 EXTEND(SP, total);
2441 2016 2016 for (i = 0; i < bound_count; i++) {
2443 2016 0 PUSHs(elem ? *elem : &PL_sv_undef);
2447 2015 2016 for (i = 0; i < items; i++) {
2455 2016 0 SV *result = count > 0 ? POPs : &PL_sv_undef;
2458 2016 0 FREETMPS;
2473 0 12722 if (items < 1) croak("Usage: Func::Util::pick(\\%%hash, @keys)");
2476 12722 0 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) {
0 12722 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) {
2484 25844 12722 for (i = 1; i < items; i++) {
2490 24239 1605 if (val && SvOK(*val)) {
24238 1 if (val && SvOK(*val)) {
2496 10100 2622 if (GIMME_V == G_ARRAY) {
2498 0 10100 IV n = HvUSEDKEYS(dest);
2500 10100 0 EXTEND(SP, n * 2);
0 10100 EXTEND(SP, n * 2);
2504 20200 10100 while ((he = hv_iternext(dest)) != NULL) {
2506 0 20200 const char *key = HePV(he, klen);
2523 0 2211 if (items != 2) croak("Usage: Func::Util::pluck(\\@array, $field)");
2526 2211 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2211 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
2540 6625 2211 for (i = 0; i < len; i++) {
2542 6625 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
6625 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
6625 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2545 5422 1203 if (val && SvOK(*val)) {
5422 0 if (val && SvOK(*val)) {
2563 0 12710 if (items < 1) croak("Usage: Func::Util::omit(\\%%hash, @keys)");
2566 12710 0 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) {
0 12710 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) {
2576 15315 12710 for (i = 1; i < items; i++) {
2586 41128 12710 while ((entry = hv_iternext(src)) != NULL) {
2591 26219 14909 if (!hv_exists(exclude, key_pv, key_len)) {
2593 26219 0 if (SvOK(val)) {
2602 10100 2610 if (GIMME_V == G_ARRAY) {
2604 0 10100 IV n = HvUSEDKEYS(dest);
2606 10100 0 EXTEND(SP, n * 2);
0 10100 EXTEND(SP, n * 2);
2610 20200 10100 while ((he = hv_iternext(dest)) != NULL) {
2612 0 20200 const char *key = HePV(he, klen);
2630 1 2625 if (items == 0) {
2634 1611 1014 if (items == 1) {
2639 13 1001 if (items <= 8) {
2642 64 13 for (i = 0; i < items; i++) {
2645 62 2 const char *key_i = SvOK(elem) ? SvPV_const(elem, len_i) : "\x00UNDEF\x00";
2646 2 62 if (!SvOK(elem)) len_i = 7;
2649 91 40 for (j = 0; j < out; j++) {
2652 88 3 const char *key_j = SvOK(prev) ? SvPV_const(prev, len_j) : "\x00UNDEF\x00";
2653 3 88 if (!SvOK(prev)) len_j = 7;
2655 87 4 if (len_i == len_j && memcmp(key_i, key_j, len_i) == 0) {
24 63 if (len_i == len_j && memcmp(key_i, key_j, len_i) == 0) {
2660 40 24 if (!dup) ST(out++) = elem;
2670 10010 1001 for (i = 0; i < items; i++) {
2676 10010 0 key = SvOK(elem) ? SvPV_const(elem, len) : (len = 7, "\x00UNDEF\x00");
2678 10010 0 PERL_HASH(hash, key, len);
2680 4004 6006 if (!hv_common(seen, NULL, key, len, 0, HV_FETCH_ISEXISTS, NULL, hash)) {
2693 0 2210 if (items < 1) croak("Usage: Func::Util::partition(\\&block, @list)");
2696 2210 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 2210 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
2702 1 2209 if (list_len == 0) {
2717 2209 0 SV *orig_defsv = DEFSV;
2720 2243 2209 for (i = 1; i < items; i++) {
2727 0 2243 PUSHMARK(SP);
2728 0 2243 XPUSHs(elem);
2737 2243 0 FREETMPS;
2740 2222 21 if (matched) {
2761 0 11507 if (items != 2) croak("Usage: Func::Util::defaults(\\%%hash, \\%%defaults)");
2766 11507 0 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) {
0 11507 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) {
2769 11507 0 if (!SvROK(dref) || SvTYPE(SvRV(dref)) != SVt_PVHV) {
0 11507 if (!SvROK(dref) || SvTYPE(SvRV(dref)) != SVt_PVHV) {
2777 0 11507 IV src_keys = HvUSEDKEYS(src);
2778 0 11507 IV def_keys = HvUSEDKEYS(def);
2785 12507 11507 while ((entry = hv_iternext(src)) != NULL) {
2787 0 12507 const char *key_pv = HePV(entry, key_len);
2794 24411 11507 while ((entry = hv_iternext(def)) != NULL) {
2796 0 24411 const char *key_pv = HePV(entry, key_len);
2801 11503 12908 if (!existing || !SvOK(*existing)) {
1 11502 if (!existing || !SvOK(*existing)) {
2808 10100 1407 if (GIMME_V == G_ARRAY) {
2810 0 10100 IV n = HvUSEDKEYS(dest);
2812 10100 0 EXTEND(SP, n * 2);
0 10100 EXTEND(SP, n * 2);
2816 20200 10100 while ((he = hv_iternext(dest)) != NULL) {
2818 0 20200 const char *key = HePV(he, klen);
2839 0 20128 if (items != 2) croak("Usage: Func::Util::nvl($value, $default)");
2842 8010 12118 if (SvOK(val)) {
2852 0 18116 if (items < 1) croak("Usage: Func::Util::coalesce($val, ...)");
2855 47329 1003 for (i = 0; i < items; i++) {
2856 17113 30216 if (SvOK(ST(i))) {
2893 3027 0 if (items < 2 || items > 3) croak("Usage: Func::Util::first_gt(\\@array, $threshold) or first_gt(\\@array, $key, $threshold)");
0 3027 if (items < 2 || items > 3) croak("Usage: Func::Util::first_gt(\\@array, $threshold) or first_gt(\\@array, $key, $threshold)");
2896 3027 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3027 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
2904 2026 1001 if (items == 2) {
2907 11097 1008 for (i = 0; i < len; i++) {
2909 11097 0 if (elem && SvNV(*elem) > threshold) {
1018 10079 if (elem && SvNV(*elem) > threshold) {
2918 2002 0 for (i = 0; i < len; i++) {
2920 2002 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2002 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2002 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2923 2002 0 if (val && SvNV(*val) > threshold) {
1001 1001 if (val && SvNV(*val) > threshold) {
2938 3012 0 if (items < 2 || items > 3) croak("Usage: Func::Util::first_lt(\\@array, $threshold) or first_lt(\\@array, $key, $threshold)");
0 3012 if (items < 2 || items > 3) croak("Usage: Func::Util::first_lt(\\@array, $threshold) or first_lt(\\@array, $key, $threshold)");
2941 3012 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3012 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
2949 2011 1001 if (items == 2) {
2951 8034 1004 for (i = 0; i < len; i++) {
2953 8034 0 if (elem && SvNV(*elem) < threshold) {
1007 7027 if (elem && SvNV(*elem) < threshold) {
2961 1001 0 for (i = 0; i < len; i++) {
2963 1001 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
1001 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
1001 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2966 1001 0 if (val && SvNV(*val) < threshold) {
1001 0 if (val && SvNV(*val) < threshold) {
2981 3012 0 if (items < 2 || items > 3) croak("Usage: Func::Util::first_eq(\\@array, $value) or first_eq(\\@array, $key, $value)");
0 3012 if (items < 2 || items > 3) croak("Usage: Func::Util::first_eq(\\@array, $value) or first_eq(\\@array, $key, $value)");
2984 3012 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3012 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
2992 2011 1001 if (items == 2) {
2994 10043 1004 for (i = 0; i < len; i++) {
2996 10043 0 if (elem && SvNV(*elem) == target) {
1007 9036 if (elem && SvNV(*elem) == target) {
3004 2003 0 for (i = 0; i < len; i++) {
3006 2003 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2003 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2003 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3009 2003 0 if (val && SvNV(*val) == target) {
1001 1002 if (val && SvNV(*val) == target) {
3024 3014 0 if (items < 2 || items > 3) croak("Usage: Func::Util::first_ge(\\@array, $threshold) or first_ge(\\@array, $key, $threshold)");
0 3014 if (items < 2 || items > 3) croak("Usage: Func::Util::first_ge(\\@array, $threshold) or first_ge(\\@array, $key, $threshold)");
3027 3014 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3014 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3035 2013 1001 if (items == 2) {
3037 10048 1003 for (i = 0; i < len; i++) {
3039 10048 0 if (elem && SvNV(*elem) >= threshold) {
1010 9038 if (elem && SvNV(*elem) >= threshold) {
3047 1002 0 for (i = 0; i < len; i++) {
3049 1002 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
1002 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
1002 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3052 1002 0 if (val && SvNV(*val) >= threshold) {
1001 1 if (val && SvNV(*val) >= threshold) {
3067 3009 0 if (items < 2 || items > 3) croak("Usage: Func::Util::first_le(\\@array, $threshold) or first_le(\\@array, $key, $threshold)");
0 3009 if (items < 2 || items > 3) croak("Usage: Func::Util::first_le(\\@array, $threshold) or first_le(\\@array, $key, $threshold)");
3070 3009 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3009 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3078 2009 1000 if (items == 2) {
3080 8024 1003 for (i = 0; i < len; i++) {
3082 8024 0 if (elem && SvNV(*elem) <= threshold) {
1006 7018 if (elem && SvNV(*elem) <= threshold) {
3090 1000 0 for (i = 0; i < len; i++) {
3092 1000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
1000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
1000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3095 1000 0 if (val && SvNV(*val) <= threshold) {
1000 0 if (val && SvNV(*val) <= threshold) {
3110 2007 0 if (items < 2 || items > 3) croak("Usage: Func::Util::first_ne(\\@array, $value) or first_ne(\\@array, $key, $value)");
0 2007 if (items < 2 || items > 3) croak("Usage: Func::Util::first_ne(\\@array, $value) or first_ne(\\@array, $key, $value)");
3113 2007 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2007 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3121 1007 1000 if (items == 2) {
3123 2018 2 for (i = 0; i < len; i++) {
3125 2018 0 if (elem && SvNV(*elem) != target) {
1005 1013 if (elem && SvNV(*elem) != target) {
3133 2000 0 for (i = 0; i < len; i++) {
3135 2000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3138 2000 0 if (val && SvNV(*val) != target) {
1000 1000 if (val && SvNV(*val) != target) {
3157 3012 0 if (items < 2 || items > 3) croak("Usage: Func::Util::final_gt(\\@array, $threshold) or final_gt(\\@array, $key, $threshold)");
0 3012 if (items < 2 || items > 3) croak("Usage: Func::Util::final_gt(\\@array, $threshold) or final_gt(\\@array, $key, $threshold)");
3160 3012 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3012 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3168 2011 1001 if (items == 2) {
3170 8023 1005 for (i = len - 1; i >= 0; i--) {
3172 8023 0 if (elem && SvNV(*elem) > threshold) {
1006 7017 if (elem && SvNV(*elem) > threshold) {
3180 1001 0 for (i = len - 1; i >= 0; i--) {
3182 1001 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
1001 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
1001 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3185 1001 0 if (val && SvNV(*val) > threshold) {
1001 0 if (val && SvNV(*val) > threshold) {
3199 3011 0 if (items < 2 || items > 3) croak("Usage: Func::Util::final_lt(\\@array, $threshold) or final_lt(\\@array, $key, $threshold)");
0 3011 if (items < 2 || items > 3) croak("Usage: Func::Util::final_lt(\\@array, $threshold) or final_lt(\\@array, $key, $threshold)");
3202 3011 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3011 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3210 2010 1001 if (items == 2) {
3212 11033 1003 for (i = len - 1; i >= 0; i--) {
3214 11033 0 if (elem && SvNV(*elem) < threshold) {
1007 10026 if (elem && SvNV(*elem) < threshold) {
3222 2001 0 for (i = len - 1; i >= 0; i--) {
3224 2001 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2001 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2001 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3227 2001 0 if (val && SvNV(*val) < threshold) {
1001 1000 if (val && SvNV(*val) < threshold) {
3241 2005 0 if (items < 2 || items > 3) croak("Usage: Func::Util::final_ge(\\@array, $threshold) or final_ge(\\@array, $key, $threshold)");
0 2005 if (items < 2 || items > 3) croak("Usage: Func::Util::final_ge(\\@array, $threshold) or final_ge(\\@array, $key, $threshold)");
3244 2005 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2005 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3252 1005 1000 if (items == 2) {
3254 1015 2 for (i = len - 1; i >= 0; i--) {
3256 1015 0 if (elem && SvNV(*elem) >= threshold) {
1003 12 if (elem && SvNV(*elem) >= threshold) {
3264 1000 0 for (i = len - 1; i >= 0; i--) {
3266 1000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
1000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
1000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3269 1000 0 if (val && SvNV(*val) >= threshold) {
1000 0 if (val && SvNV(*val) >= threshold) {
3283 2006 0 if (items < 2 || items > 3) croak("Usage: Func::Util::final_le(\\@array, $threshold) or final_le(\\@array, $key, $threshold)");
0 2006 if (items < 2 || items > 3) croak("Usage: Func::Util::final_le(\\@array, $threshold) or final_le(\\@array, $key, $threshold)");
3286 2006 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2006 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3294 1006 1000 if (items == 2) {
3296 3015 1 for (i = len - 1; i >= 0; i--) {
3298 3015 0 if (elem && SvNV(*elem) <= threshold) {
1005 2010 if (elem && SvNV(*elem) <= threshold) {
3306 2000 0 for (i = len - 1; i >= 0; i--) {
3308 2000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3311 2000 0 if (val && SvNV(*val) <= threshold) {
1000 1000 if (val && SvNV(*val) <= threshold) {
3325 2006 0 if (items < 2 || items > 3) croak("Usage: Func::Util::final_eq(\\@array, $value) or final_eq(\\@array, $key, $value)");
0 2006 if (items < 2 || items > 3) croak("Usage: Func::Util::final_eq(\\@array, $value) or final_eq(\\@array, $key, $value)");
3328 2006 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2006 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3336 1006 1000 if (items == 2) {
3338 3023 2 for (i = len - 1; i >= 0; i--) {
3340 3023 0 if (elem && SvNV(*elem) == target) {
1004 2019 if (elem && SvNV(*elem) == target) {
3348 3000 0 for (i = len - 1; i >= 0; i--) {
3350 3000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3353 3000 0 if (val && SvNV(*val) == target) {
1000 2000 if (val && SvNV(*val) == target) {
3367 2004 0 if (items < 2 || items > 3) croak("Usage: Func::Util::final_ne(\\@array, $value) or final_ne(\\@array, $key, $value)");
0 2004 if (items < 2 || items > 3) croak("Usage: Func::Util::final_ne(\\@array, $value) or final_ne(\\@array, $key, $value)");
3370 2004 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2004 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3378 1004 1000 if (items == 2) {
3380 2008 1 for (i = len - 1; i >= 0; i--) {
3382 2008 0 if (elem && SvNV(*elem) != target) {
1003 1005 if (elem && SvNV(*elem) != target) {
3390 2000 0 for (i = len - 1; i >= 0; i--) {
3392 2000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3395 2000 0 if (val && SvNV(*val) != target) {
1000 1000 if (val && SvNV(*val) != target) {
3410 3015 0 if (items < 2 || items > 3) croak("Usage: Func::Util::any_gt(\\@array, $threshold) or any_gt(\\@array, $key, $threshold)");
0 3015 if (items < 2 || items > 3) croak("Usage: Func::Util::any_gt(\\@array, $threshold) or any_gt(\\@array, $key, $threshold)");
3413 3015 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3015 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3421 2013 1002 if (items == 2) {
3423 14048 1008 for (i = 0; i < len; i++) {
3425 14048 0 if (elem && SvNV(*elem) > threshold) {
1005 13043 if (elem && SvNV(*elem) > threshold) {
3432 4004 1 for (i = 0; i < len; i++) {
3434 4004 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
4004 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
4004 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3437 4004 0 if (val && SvNV(*val) > threshold) {
1001 3003 if (val && SvNV(*val) > threshold) {
3450 3021 0 if (items < 2 || items > 3) croak("Usage: Func::Util::any_lt(\\@array, $threshold) or any_lt(\\@array, $key, $threshold)");
0 3021 if (items < 2 || items > 3) croak("Usage: Func::Util::any_lt(\\@array, $threshold) or any_lt(\\@array, $key, $threshold)");
3453 3021 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3021 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3461 2021 1000 if (items == 2) {
3463 8044 1005 for (i = 0; i < len; i++) {
3465 8044 0 if (elem && SvNV(*elem) < threshold) {
1016 7028 if (elem && SvNV(*elem) < threshold) {
3472 3000 0 for (i = 0; i < len; i++) {
3474 3000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3477 3000 0 if (val && SvNV(*val) < threshold) {
1000 2000 if (val && SvNV(*val) < threshold) {
3490 2007 0 if (items < 2 || items > 3) croak("Usage: Func::Util::any_ge(\\@array, $threshold) or any_ge(\\@array, $key, $threshold)");
0 2007 if (items < 2 || items > 3) croak("Usage: Func::Util::any_ge(\\@array, $threshold) or any_ge(\\@array, $key, $threshold)");
3493 2007 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2007 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3501 1007 1000 if (items == 2) {
3503 7035 2 for (i = 0; i < len; i++) {
3505 7035 0 if (elem && SvNV(*elem) >= threshold) {
1005 6030 if (elem && SvNV(*elem) >= threshold) {
3512 4000 0 for (i = 0; i < len; i++) {
3514 4000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
4000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
4000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3517 4000 0 if (val && SvNV(*val) >= threshold) {
1000 3000 if (val && SvNV(*val) >= threshold) {
3530 2005 0 if (items < 2 || items > 3) croak("Usage: Func::Util::any_le(\\@array, $threshold) or any_le(\\@array, $key, $threshold)");
0 2005 if (items < 2 || items > 3) croak("Usage: Func::Util::any_le(\\@array, $threshold) or any_le(\\@array, $key, $threshold)");
3533 2005 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2005 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3541 1005 1000 if (items == 2) {
3543 1016 2 for (i = 0; i < len; i++) {
3545 1016 0 if (elem && SvNV(*elem) <= threshold) {
1003 13 if (elem && SvNV(*elem) <= threshold) {
3552 3000 0 for (i = 0; i < len; i++) {
3554 3000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3557 3000 0 if (val && SvNV(*val) <= threshold) {
1000 2000 if (val && SvNV(*val) <= threshold) {
3570 3009 0 if (items < 2 || items > 3) croak("Usage: Func::Util::any_eq(\\@array, $value) or any_eq(\\@array, $key, $value)");
0 3009 if (items < 2 || items > 3) croak("Usage: Func::Util::any_eq(\\@array, $value) or any_eq(\\@array, $key, $value)");
3573 3009 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3009 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3581 2009 1000 if (items == 2) {
3583 11033 1004 for (i = 0; i < len; i++) {
3585 11033 0 if (elem && SvNV(*elem) == target) {
1005 10028 if (elem && SvNV(*elem) == target) {
3592 1000 0 for (i = 0; i < len; i++) {
3594 1000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
1000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
1000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3597 1000 0 if (val && SvNV(*val) == target) {
1000 0 if (val && SvNV(*val) == target) {
3610 2004 0 if (items < 2 || items > 3) croak("Usage: Func::Util::any_ne(\\@array, $value) or any_ne(\\@array, $key, $value)");
0 2004 if (items < 2 || items > 3) croak("Usage: Func::Util::any_ne(\\@array, $value) or any_ne(\\@array, $key, $value)");
3613 2004 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2004 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3621 1004 1000 if (items == 2) {
3623 2009 1 for (i = 0; i < len; i++) {
3625 2009 0 if (elem && SvNV(*elem) != target) {
1003 1006 if (elem && SvNV(*elem) != target) {
3632 2000 0 for (i = 0; i < len; i++) {
3634 2000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
2000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3637 2000 0 if (val && SvNV(*val) != target) {
1000 1000 if (val && SvNV(*val) != target) {
3652 3013 0 if (items < 2 || items > 3) croak("Usage: Func::Util::all_gt(\\@array, $threshold) or all_gt(\\@array, $key, $threshold)");
0 3013 if (items < 2 || items > 3) croak("Usage: Func::Util::all_gt(\\@array, $threshold) or all_gt(\\@array, $key, $threshold)");
3655 3013 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3013 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3663 3 3010 if (len == 0) XSRETURN_YES; /* vacuous truth */
3665 2010 1000 if (items == 2) {
3667 8033 1005 for (i = 0; i < len; i++) {
3669 8033 0 if (!elem || SvNV(*elem) <= threshold) {
1005 7028 if (!elem || SvNV(*elem) <= threshold) {
3676 4000 1000 for (i = 0; i < len; i++) {
3678 4000 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
4000 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
0 4000 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
3683 4000 0 if (!val || SvNV(*val) <= threshold) {
0 4000 if (!val || SvNV(*val) <= threshold) {
3695 3009 0 if (items < 2 || items > 3) croak("Usage: Func::Util::all_lt(\\@array, $threshold) or all_lt(\\@array, $key, $threshold)");
0 3009 if (items < 2 || items > 3) croak("Usage: Func::Util::all_lt(\\@array, $threshold) or all_lt(\\@array, $key, $threshold)");
3698 3009 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3009 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3706 1 3008 if (len == 0) XSRETURN_YES;
3708 2008 1000 if (items == 2) {
3710 10040 1004 for (i = 0; i < len; i++) {
3712 10040 0 if (!elem || SvNV(*elem) >= threshold) {
1004 9036 if (!elem || SvNV(*elem) >= threshold) {
3719 4000 1000 for (i = 0; i < len; i++) {
3721 4000 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
4000 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
0 4000 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
3726 4000 0 if (!val || SvNV(*val) >= threshold) {
0 4000 if (!val || SvNV(*val) >= threshold) {
3738 3019 0 if (items < 2 || items > 3) croak("Usage: Func::Util::all_ge(\\@array, $threshold) or all_ge(\\@array, $key, $threshold)");
0 3019 if (items < 2 || items > 3) croak("Usage: Func::Util::all_ge(\\@array, $threshold) or all_ge(\\@array, $key, $threshold)");
3741 3019 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3019 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3749 0 3019 if (len == 0) XSRETURN_YES;
3751 2017 1002 if (items == 2) {
3753 8089 1013 for (i = 0; i < len; i++) {
3755 8089 0 if (!elem || SvNV(*elem) < threshold) {
1004 7085 if (!elem || SvNV(*elem) < threshold) {
3762 4003 1001 for (i = 0; i < len; i++) {
3764 4003 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
4003 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
0 4003 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
3769 4003 0 if (!val || SvNV(*val) < threshold) {
1 4002 if (!val || SvNV(*val) < threshold) {
3781 3004 0 if (items < 2 || items > 3) croak("Usage: Func::Util::all_le(\\@array, $threshold) or all_le(\\@array, $key, $threshold)");
0 3004 if (items < 2 || items > 3) croak("Usage: Func::Util::all_le(\\@array, $threshold) or all_le(\\@array, $key, $threshold)");
3784 3004 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3004 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3792 0 3004 if (len == 0) XSRETURN_YES;
3794 2004 1000 if (items == 2) {
3796 11023 1002 for (i = 0; i < len; i++) {
3798 11023 0 if (!elem || SvNV(*elem) > threshold) {
1002 10021 if (!elem || SvNV(*elem) > threshold) {
3805 4000 1000 for (i = 0; i < len; i++) {
3807 4000 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
4000 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
0 4000 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
3812 4000 0 if (!val || SvNV(*val) > threshold) {
0 4000 if (!val || SvNV(*val) > threshold) {
3824 2007 0 if (items < 2 || items > 3) croak("Usage: Func::Util::all_eq(\\@array, $value) or all_eq(\\@array, $key, $value)");
0 2007 if (items < 2 || items > 3) croak("Usage: Func::Util::all_eq(\\@array, $value) or all_eq(\\@array, $key, $value)");
3827 2007 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2007 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3835 1 2006 if (len == 0) XSRETURN_YES;
3837 2006 0 if (items == 2) {
3839 5014 1004 for (i = 0; i < len; i++) {
3841 5014 0 if (!elem || SvNV(*elem) != target) {
1002 4012 if (!elem || SvNV(*elem) != target) {
3848 0 0 for (i = 0; i < len; i++) {
3850 0 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
0 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
0 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
3855 0 0 if (!val || SvNV(*val) != target) {
0 0 if (!val || SvNV(*val) != target) {
3867 2004 0 if (items < 2 || items > 3) croak("Usage: Func::Util::all_ne(\\@array, $value) or all_ne(\\@array, $key, $value)");
0 2004 if (items < 2 || items > 3) croak("Usage: Func::Util::all_ne(\\@array, $value) or all_ne(\\@array, $key, $value)");
3870 2004 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2004 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3878 0 2004 if (len == 0) XSRETURN_YES;
3880 2004 0 if (items == 2) {
3882 10018 1002 for (i = 0; i < len; i++) {
3884 10018 0 if (!elem || SvNV(*elem) == target) {
1002 9016 if (!elem || SvNV(*elem) == target) {
3891 0 0 for (i = 0; i < len; i++) {
3893 0 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
0 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
0 0 if (!elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
3898 0 0 if (!val || SvNV(*val) == target) {
0 0 if (!val || SvNV(*val) == target) {
3911 3011 0 if (items < 2 || items > 3) croak("Usage: Func::Util::none_gt(\\@array, $threshold) or none_gt(\\@array, $key, $threshold)");
0 3011 if (items < 2 || items > 3) croak("Usage: Func::Util::none_gt(\\@array, $threshold) or none_gt(\\@array, $key, $threshold)");
3914 3011 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3011 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3922 2011 1000 if (items == 2) {
3924 11039 1007 for (i = 0; i < len; i++) {
3926 11039 0 if (elem && SvNV(*elem) > threshold) {
1004 10035 if (elem && SvNV(*elem) > threshold) {
3933 4000 1000 for (i = 0; i < len; i++) {
3935 4000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
4000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
4000 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3938 4000 0 if (val && SvNV(*val) > threshold) {
0 4000 if (val && SvNV(*val) > threshold) {
3951 3010 0 if (items < 2 || items > 3) croak("Usage: Func::Util::none_lt(\\@array, $threshold) or none_lt(\\@array, $key, $threshold)");
0 3010 if (items < 2 || items > 3) croak("Usage: Func::Util::none_lt(\\@array, $threshold) or none_lt(\\@array, $key, $threshold)");
3954 3010 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3010 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3962 2008 1002 if (items == 2) {
3964 8031 1005 for (i = 0; i < len; i++) {
3966 8031 0 if (elem && SvNV(*elem) < threshold) {
1003 7028 if (elem && SvNV(*elem) < threshold) {
3973 4003 1001 for (i = 0; i < len; i++) {
3975 4003 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
4003 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
4003 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
3978 4003 0 if (val && SvNV(*val) < threshold) {
1 4002 if (val && SvNV(*val) < threshold) {
3991 2004 0 if (items < 2 || items > 3) croak("Usage: Func::Util::none_ge(\\@array, $threshold) or none_ge(\\@array, $key, $threshold)");
0 2004 if (items < 2 || items > 3) croak("Usage: Func::Util::none_ge(\\@array, $threshold) or none_ge(\\@array, $key, $threshold)");
3994 2004 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2004 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
4002 2004 0 if (items == 2) {
4004 8023 1002 for (i = 0; i < len; i++) {
4006 8023 0 if (elem && SvNV(*elem) >= threshold) {
1002 7021 if (elem && SvNV(*elem) >= threshold) {
4013 0 0 for (i = 0; i < len; i++) {
4015 0 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
0 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
0 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
4018 0 0 if (val && SvNV(*val) >= threshold) {
0 0 if (val && SvNV(*val) >= threshold) {
4031 2004 0 if (items < 2 || items > 3) croak("Usage: Func::Util::none_le(\\@array, $threshold) or none_le(\\@array, $key, $threshold)");
0 2004 if (items < 2 || items > 3) croak("Usage: Func::Util::none_le(\\@array, $threshold) or none_le(\\@array, $key, $threshold)");
4034 2004 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2004 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
4042 2004 0 if (items == 2) {
4044 8015 1002 for (i = 0; i < len; i++) {
4046 8015 0 if (elem && SvNV(*elem) <= threshold) {
1002 7013 if (elem && SvNV(*elem) <= threshold) {
4053 0 0 for (i = 0; i < len; i++) {
4055 0 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
0 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
0 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
4058 0 0 if (val && SvNV(*val) <= threshold) {
0 0 if (val && SvNV(*val) <= threshold) {
4071 2008 0 if (items < 2 || items > 3) croak("Usage: Func::Util::none_eq(\\@array, $value) or none_eq(\\@array, $key, $value)");
0 2008 if (items < 2 || items > 3) croak("Usage: Func::Util::none_eq(\\@array, $value) or none_eq(\\@array, $key, $value)");
4074 2008 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2008 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
4082 2008 0 if (items == 2) {
4084 10032 1005 for (i = 0; i < len; i++) {
4086 10032 0 if (elem && SvNV(*elem) == target) {
1003 9029 if (elem && SvNV(*elem) == target) {
4093 0 0 for (i = 0; i < len; i++) {
4095 0 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
0 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
0 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
4098 0 0 if (val && SvNV(*val) == target) {
0 0 if (val && SvNV(*val) == target) {
4111 2005 0 if (items < 2 || items > 3) croak("Usage: Func::Util::none_ne(\\@array, $value) or none_ne(\\@array, $key, $value)");
0 2005 if (items < 2 || items > 3) croak("Usage: Func::Util::none_ne(\\@array, $value) or none_ne(\\@array, $key, $value)");
4114 2005 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2005 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
4122 2005 0 if (items == 2) {
4124 5012 1003 for (i = 0; i < len; i++) {
4126 5012 0 if (elem && SvNV(*elem) != target) {
1002 4010 if (elem && SvNV(*elem) != target) {
4133 0 0 for (i = 0; i < len; i++) {
4135 0 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
0 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
0 0 if (elem && SvROK(*elem) && SvTYPE(SvRV(*elem)) == SVt_PVHV) {
4138 0 0 if (val && SvNV(*val) != target) {
0 0 if (val && SvNV(*val) != target) {
4151 0 3012 if (items != 2) croak("Usage: Func::Util::firstr(\\&block, \\@array)");
4156 3012 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 3012 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4159 3012 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3012 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
4168 0 3012 if (len == 0) {
4173 3012 0 if (!CvISXSUB(block_cv)) {
4178 0 3012 PUSH_MULTICALL(block_cv);
4180 10045 1000 for (i = 0; i < len; i++) {
4182 0 10045 if (!elem) continue;
4189 2012 8033 if (SvTRUE(*PL_stack_sp)) {
4190 2012 0 POP_MULTICALL;
4196 1000 0 POP_MULTICALL;
4202 0 0 for (i = 0; i < len; i++) {
4204 0 0 if (!elem) continue;
4209 0 0 PUSHMARK(SP);
4212 0 0 if (SvTRUE(*PL_stack_sp)) {
4224 0 2014 if (items != 2) croak("Usage: Func::Util::final(\\&block, \\@array)");
4229 2014 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 2014 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4232 2014 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2014 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
4241 2 2012 if (len == 0) {
4246 2012 0 if (!CvISXSUB(block_cv)) {
4251 0 2012 PUSH_MULTICALL(block_cv);
4254 8026 1003 for (i = len - 1; i >= 0; i--) {
4256 0 8026 if (!elem) continue;
4263 1009 7017 if (SvTRUE(*PL_stack_sp)) {
4264 1009 0 POP_MULTICALL;
4270 1003 0 POP_MULTICALL;
4276 0 0 for (i = len - 1; i >= 0; i--) {
4278 0 0 if (!elem) continue;
4283 0 0 PUSHMARK(SP);
4286 0 0 if (SvTRUE(*PL_stack_sp)) {
4298 0 13118 if (items < 1) croak("Usage: Func::Util::first(\\&block, @list)");
4301 13118 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 13118 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4311 2 13116 if (items <= 1) {
4317 13116 0 if (!CvISXSUB(block_cv)) {
4322 0 13116 PUSH_MULTICALL(block_cv);
4324 33336 4 for (index = 1; index < items; index++) {
4330 13112 20224 if (SvTRUE(*PL_stack_sp)) {
4331 13112 0 POP_MULTICALL;
4337 4 0 POP_MULTICALL;
4343 0 0 for (index = 1; index < items; index++) {
4347 0 0 PUSHMARK(SP);
4350 0 0 if (SvTRUE(*PL_stack_sp)) {
4362 0 13126 if (items < 1) croak("Usage: Func::Util::any(\\&block, @list)");
4365 13126 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 13126 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4374 2 13124 if (items <= 1) {
4379 13124 0 if (!CvISXSUB(block_cv)) {
4384 0 13124 PUSH_MULTICALL(block_cv);
4386 33341 4 for (index = 1; index < items; index++) {
4392 13120 20221 if (SvTRUE(*PL_stack_sp)) {
4393 13120 0 POP_MULTICALL;
4398 4 0 POP_MULTICALL;
4403 0 0 for (index = 1; index < items; index++) {
4407 0 0 PUSHMARK(SP);
4410 0 0 if (SvTRUE(*PL_stack_sp)) {
4421 0 13116 if (items < 1) croak("Usage: Func::Util::all(\\&block, @list)");
4424 13116 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 13116 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4433 2 13114 if (items <= 1) {
4438 13114 0 if (!CvISXSUB(block_cv)) {
4443 0 13114 PUSH_MULTICALL(block_cv);
4445 53537 13108 for (index = 1; index < items; index++) {
4451 6 53531 if (!SvTRUE(*PL_stack_sp)) {
4452 6 0 POP_MULTICALL;
4457 13108 0 POP_MULTICALL;
4462 0 0 for (index = 1; index < items; index++) {
4466 0 0 PUSHMARK(SP);
4469 0 0 if (!SvTRUE(*PL_stack_sp)) {
4480 0 13114 if (items < 1) croak("Usage: Func::Util::none(\\&block, @list)");
4483 13114 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 13114 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4492 2 13112 if (items <= 1) {
4497 13112 0 if (!CvISXSUB(block_cv)) {
4502 0 13112 PUSH_MULTICALL(block_cv);
4504 53532 10106 for (index = 1; index < items; index++) {
4510 3006 50526 if (SvTRUE(*PL_stack_sp)) {
4511 3006 0 POP_MULTICALL;
4516 10106 0 POP_MULTICALL;
4521 0 0 for (index = 1; index < items; index++) {
4525 0 0 PUSHMARK(SP);
4528 0 0 if (SvTRUE(*PL_stack_sp)) {
4548 0 6 if (items < 1) croak("Usage: Func::Util::first_inline(\\&block, @list)");
4551 6 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 6 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4557 1 5 if (items == 1) {
4562 0 5 if (CvISXSUB(the_cv)) {
4574 0 5 PUSH_MULTICALL(the_cv);
4579 24 1 for (i = 0; i < num_args; i++) {
4586 4 20 if (SvTRUE(*PL_stack_sp)) {
4588 4 0 POP_MULTICALL;
4597 1 0 POP_MULTICALL;
4611 0 17123 if (items != 1) croak("Usage: Func::Util::is_ref($value)");
4612 14115 3008 ST(0) = SvROK(ST(0)) ? &PL_sv_yes : &PL_sv_no;
4618 0 17132 if (items != 1) croak("Usage: Func::Util::is_array($value)");
4620 12128 5004 ST(0) = (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) ? &PL_sv_yes : &PL_sv_no;
12121 7 ST(0) = (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) ? &PL_sv_yes : &PL_sv_no;
4626 0 17131 if (items != 1) croak("Usage: Func::Util::is_hash($value)");
4628 14127 3004 ST(0) = (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) ? &PL_sv_yes : &PL_sv_no;
12120 2007 ST(0) = (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) ? &PL_sv_yes : &PL_sv_no;
4634 0 17117 if (items != 1) croak("Usage: Func::Util::is_code($value)");
4636 14113 3004 ST(0) = (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVCV) ? &PL_sv_yes : &PL_sv_no;
12108 2005 ST(0) = (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVCV) ? &PL_sv_yes : &PL_sv_no;
4642 0 17118 if (items != 1) croak("Usage: Func::Util::is_defined($value)");
4643 14113 3005 ST(0) = SvOK(ST(0)) ? &PL_sv_yes : &PL_sv_no;
4653 0 12016 if (items != 1) croak("Usage: Func::Util::is_empty($value)");
4655 2002 10014 if (!SvOK(sv)) {
4660 4002 6012 ST(0) = len == 0 ? &PL_sv_yes : &PL_sv_no;
4667 0 19124 if (items != 2) croak("Usage: Func::Util::starts_with($string, $prefix)");
4672 18122 1002 if (!SvOK(str_sv) || !SvOK(prefix_sv)) {
1 18121 if (!SvOK(str_sv) || !SvOK(prefix_sv)) {
4681 3002 15119 if (prefix_len > str_len) {
4683 1002 14117 } else if (prefix_len == 0) {
4686 12113 2004 ST(0) = memcmp(str, prefix, prefix_len) == 0 ? &PL_sv_yes : &PL_sv_no;
4693 0 19122 if (items != 2) croak("Usage: Func::Util::ends_with($string, $suffix)");
4698 18120 1002 if (!SvOK(str_sv) || !SvOK(suffix_sv)) {
1 18119 if (!SvOK(str_sv) || !SvOK(suffix_sv)) {
4707 3002 15117 if (suffix_len > str_len) {
4709 1002 14115 } else if (suffix_len == 0) {
4713 12111 2004 ST(0) = memcmp(str_end, suffix, suffix_len) == 0 ? &PL_sv_yes : &PL_sv_no;
4721 0 2000 if (items != 2) croak("Usage: Func::Util::count($string, $substring)");
4726 2000 0 if (!SvOK(str_sv) || !SvOK(needle_sv)) {
0 2000 if (!SvOK(str_sv) || !SvOK(needle_sv)) {
4735 2000 0 if (needle_len == 0 || needle_len > str_len) {
2000 0 if (needle_len == 0 || needle_len > str_len) {
4745 0 0 while (remaining >= needle_len) {
4747 0 0 if (!found) break;
4761 0 5026 if (items != 3) croak("Usage: Func::Util::replace_all($string, $old, $new)");
4768 0 5026 if (!SvOK(str_sv)) {
4779 5025 1 if (old_len == 0 || old_len > str_len) {
1001 4024 if (old_len == 0 || old_len > str_len) {
4790 9052 2009 while (remaining >= old_len) {
4792 2015 7037 if (!found) break;
4798 1002 3022 if (count == 0) {
4815 8050 2009 while (remaining >= old_len) {
4817 1013 7037 if (!found) break;
4821 2025 5012 if (before_len > 0) {
4827 5035 2002 if (new_len > 0) {
4837 1016 2006 if (remaining > 0) {
4852 0 0 if (items != 2) croak("Usage: Func::Util::before($string, $delimiter)");
4857 0 0 if (!SvOK(str_sv)) {
4866 0 0 if (delim_len == 0 || delim_len > str_len) {
0 0 if (delim_len == 0 || delim_len > str_len) {
4872 0 0 if (found) {
4883 0 0 if (items != 2) croak("Usage: Func::Util::after($string, $delimiter)");
4888 0 0 if (!SvOK(str_sv)) {
4897 0 0 if (delim_len == 0 || delim_len > str_len) {
0 0 if (delim_len == 0 || delim_len > str_len) {
4903 0 0 if (found) {
4918 0 24129 if (items != 1) croak("Usage: Func::Util::is_true($value)");
4919 16123 8006 ST(0) = SvTRUE(ST(0)) ? &PL_sv_yes : &PL_sv_no;
4925 0 22118 if (items != 1) croak("Usage: Func::Util::is_false($value)");
4926 4004 18114 ST(0) = SvTRUE(ST(0)) ? &PL_sv_no : &PL_sv_yes;
4932 0 30119 if (items != 1) croak("Usage: Func::Util::bool($value)");
4933 21115 9004 ST(0) = SvTRUE(ST(0)) ? &PL_sv_yes : &PL_sv_no;
4943 0 19155 if (items != 1) croak("Usage: Func::Util::is_num($value)");
4945 4025 15130 ST(0) = (SvNIOK(sv) || looks_like_number(sv)) ? &PL_sv_yes : &PL_sv_no;
10 4015 ST(0) = (SvNIOK(sv) || looks_like_number(sv)) ? &PL_sv_yes : &PL_sv_no;
4951 0 17120 if (items != 1) croak("Usage: Func::Util::is_int($value)");
4953 14106 3014 if (SvIOK(sv)) {
4955 3009 5 } else if (SvNOK(sv)) {
4957 1003 2006 ST(0) = (nv == (NV)(IV)nv) ? &PL_sv_yes : &PL_sv_no;
4958 2 3 } else if (looks_like_number(sv)) {
4963 4 2 for (i = 0; i < len; i++) {
4964 4 0 if (pv[i] == '.' || pv[i] == 'e' || pv[i] == 'E') {
4 0 if (pv[i] == '.' || pv[i] == 'e' || pv[i] == 'E') {
0 4 if (pv[i] == '.' || pv[i] == 'e' || pv[i] == 'E') {
4969 0 2 if (has_dot) {
4971 0 0 ST(0) = (nv == (NV)(IV)nv) ? &PL_sv_yes : &PL_sv_no;
4983 0 6011 if (items != 1) croak("Usage: Func::Util::is_blessed($value)");
4984 2005 4006 ST(0) = sv_isobject(ST(0)) ? &PL_sv_yes : &PL_sv_no;
4990 0 4009 if (items != 1) croak("Usage: Func::Util::is_scalar_ref($value)");
4992 4006 3 if (SvROK(sv)) {
4995 2003 2003 ST(0) = (type < SVt_PVAV) ? &PL_sv_yes : &PL_sv_no;
5004 0 6009 if (items != 1) croak("Usage: Func::Util::is_regex($value)");
5005 2004 4005 ST(0) = SvRXOK(ST(0)) ? &PL_sv_yes : &PL_sv_no;
5011 0 6008 if (items != 1) croak("Usage: Func::Util::is_glob($value)");
5012 2003 4005 ST(0) = (SvTYPE(ST(0)) == SVt_PVGV) ? &PL_sv_yes : &PL_sv_no;
5018 0 8017 if (items != 1) croak("Usage: Func::Util::is_string($value)");
5020 6016 2001 ST(0) = (SvOK(sv) && !SvROK(sv)) ? &PL_sv_yes : &PL_sv_no;
4010 2006 ST(0) = (SvOK(sv) && !SvROK(sv)) ? &PL_sv_yes : &PL_sv_no;
5030 0 15123 if (items != 1) croak("Usage: Func::Util::is_positive($value)");
5032 2 15121 if (SvNIOK(sv) || looks_like_number(sv)) {
0 2 if (SvNIOK(sv) || looks_like_number(sv)) {
5034 13111 2010 ST(0) = (nv > 0) ? &PL_sv_yes : &PL_sv_no;
5043 0 13122 if (items != 1) croak("Usage: Func::Util::is_negative($value)");
5045 2 13120 if (SvNIOK(sv) || looks_like_number(sv)) {
0 2 if (SvNIOK(sv) || looks_like_number(sv)) {
5047 13111 9 ST(0) = (nv < 0) ? &PL_sv_yes : &PL_sv_no;
5056 0 13123 if (items != 1) croak("Usage: Func::Util::is_zero($value)");
5058 4 13119 if (SvNIOK(sv) || looks_like_number(sv)) {
2 2 if (SvNIOK(sv) || looks_like_number(sv)) {
5060 13110 11 ST(0) = (nv == 0) ? &PL_sv_yes : &PL_sv_no;
5073 0 18156 if (items != 1) croak("Usage: Func::Util::is_even($value)");
5075 18144 12 if (SvIOK(sv)) {
5076 15123 3021 ST(0) = (SvIVX(sv) & 1) == 0 ? &PL_sv_yes : &PL_sv_no;
5077 5 7 } else if (SvNIOK(sv)) {
5079 3 2 if (nv == (NV)(IV)nv) {
5080 2 1 ST(0) = ((IV)nv & 1) == 0 ? &PL_sv_yes : &PL_sv_no;
5084 2 5 } else if (looks_like_number(sv)) {
5085 2 0 ST(0) = (SvIV(sv) & 1) == 0 ? &PL_sv_yes : &PL_sv_no;
5094 0 18155 if (items != 1) croak("Usage: Func::Util::is_odd($value)");
5096 18144 11 if (SvIOK(sv)) {
5097 14124 4020 ST(0) = (SvIVX(sv) & 1) == 1 ? &PL_sv_yes : &PL_sv_no;
5098 5 6 } else if (SvNIOK(sv)) {
5100 3 2 if (nv == (NV)(IV)nv) {
5101 2 1 ST(0) = ((IV)nv & 1) == 1 ? &PL_sv_yes : &PL_sv_no;
5105 2 4 } else if (looks_like_number(sv)) {
5106 2 0 ST(0) = (SvIV(sv) & 1) == 1 ? &PL_sv_yes : &PL_sv_no;
5115 0 15070 if (items != 3) croak("Usage: Func::Util::is_between($value, $min, $max)");
5120 5 15065 if (SvNIOK(val_sv) || looks_like_number(val_sv)) {
1 4 if (SvNIOK(val_sv) || looks_like_number(val_sv)) {
5124 12054 3012 ST(0) = (val >= min && val <= max) ? &PL_sv_yes : &PL_sv_no;
9043 3011 ST(0) = (val >= min && val <= max) ? &PL_sv_yes : &PL_sv_no;
5137 0 4008 if (items != 1) croak("Usage: Func::Util::is_empty_array($arrayref)");
5139 4005 3 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
4004 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
5141 0 4004 ST(0) = AvFILL(av) < 0 ? &PL_sv_yes : &PL_sv_no;
2001 2003 ST(0) = AvFILL(av) < 0 ? &PL_sv_yes : &PL_sv_no;
5150 0 5008 if (items != 1) croak("Usage: Func::Util::is_empty_hash($hashref)");
5152 5005 3 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) {
5004 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) {
5154 0 5004 ST(0) = HvKEYS(hv) == 0 ? &PL_sv_yes : &PL_sv_no;
3001 2003 ST(0) = HvKEYS(hv) == 0 ? &PL_sv_yes : &PL_sv_no;
5163 0 14126 if (items != 1) croak("Usage: Func::Util::array_len($arrayref)");
5165 13124 1002 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
13123 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
5167 0 13123 ST(0) = sv_2mortal(newSViv(AvFILL(av) + 1));
5176 0 4018 if (items != 1) croak("Usage: Func::Util::hash_size($hashref)");
5178 3016 1002 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) {
3015 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) {
5180 0 3015 ST(0) = sv_2mortal(newSViv(HvKEYS(hv)));
5189 0 13114 if (items != 1) croak("Usage: Func::Util::array_first($arrayref)");
5191 13112 2 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
13111 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
5193 0 13111 if (AvFILL(av) >= 0) {
12110 1001 if (AvFILL(av) >= 0) {
5195 12110 0 ST(0) = elem ? *elem : &PL_sv_undef;
5207 0 13113 if (items != 1) croak("Usage: Func::Util::array_last($arrayref)");
5209 13111 2 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
13110 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
5211 0 13110 IV last_idx = AvFILL(av);
5212 12109 1001 if (last_idx >= 0) {
5214 12109 0 ST(0) = elem ? *elem : &PL_sv_undef;
5230 0 20141 if (items != 1) croak("Usage: Func::Util::trim($string)");
5233 1001 19140 if (!SvOK(sv)) {
5244 46406 4004 while (start < end && isSPACE(*start)) {
31270 15136 while (start < end && isSPACE(*start)) {
5249 43397 4004 while (end > start && isSPACE(*(end - 1))) {
28261 15136 while (end > start && isSPACE(*(end - 1))) {
5259 0 4013 if (items != 1) croak("Usage: Func::Util::ltrim($string)");
5262 1 4012 if (!SvOK(sv)) {
5272 8029 2 while (start < end && isSPACE(*start)) {
4019 4010 while (start < end && isSPACE(*start)) {
5282 0 4013 if (items != 1) croak("Usage: Func::Util::rtrim($string)");
5285 1 4012 if (!SvOK(sv)) {
5294 8024 2 while (end > str && isSPACE(*(end - 1))) {
4014 4010 while (end > str && isSPACE(*(end - 1))) {
5308 0 10028 if (items != 2) croak("Usage: Func::Util::maybe($value, $then)");
5311 8023 2005 if (SvOK(val)) {
5325 0 21131 if (items != 1) croak("Usage: Func::Util::sign($number)");
5328 5 21126 if (!SvNIOK(sv) && !looks_like_number(sv)) {
2 3 if (!SvNIOK(sv) && !looks_like_number(sv)) {
5334 4011 17118 if (nv > 0) {
5336 14113 3005 } else if (nv < 0) {
5346 0 15116 if (items != 2) croak("Usage: Func::Util::min2($a, $b)");
5351 15112 4 ST(0) = a <= b ? ST(0) : ST(1);
5357 0 15116 if (items != 2) croak("Usage: Func::Util::max2($a, $b)");
5362 1007 14109 ST(0) = a >= b ? ST(0) : ST(1);
5374 0 11130 if (items != 2) croak("Usage: Func::Util::any_cb(\\@list, $callback_name)");
5377 11128 2 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
1 11127 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5386 2 11125 if (!cb) {
5389 1000 10125 if (!cb->predicate && !cb->perl_callback) {
0 1000 if (!cb->predicate && !cb->perl_callback) {
5396 10125 1000 if (cb->predicate) {
5398 35172 2 for (i = 0; i < len; i++) {
5400 35172 0 if (svp && cb->predicate(aTHX_ *svp)) {
10123 25049 if (svp && cb->predicate(aTHX_ *svp)) {
5404 1000 0 } else if (cb->perl_callback) {
5406 7000 0 for (i = 0; i < len; i++) {
5408 0 7000 if (!svp) continue;
5419 0 7000 PUSHMARK(SP);
5420 0 7000 XPUSHs(*svp);
5426 7000 0 if (count > 0) {
5432 7000 0 FREETMPS;
5436 1000 6000 if (matches) {
5448 0 3128 if (items != 2) croak("Usage: Func::Util::all_cb(\\@list, $callback_name)");
5451 3128 0 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 3128 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5460 1 3127 if (!cb) {
5463 0 3127 if (!cb->predicate && !cb->perl_callback) {
0 0 if (!cb->predicate && !cb->perl_callback) {
5471 5 3122 if (len == 0) {
5475 3122 0 if (cb->predicate) {
5476 1019114 2114 for (i = 0; i < len; i++) {
5478 1019114 0 if (!svp || !cb->predicate(aTHX_ *svp)) {
1008 1018106 if (!svp || !cb->predicate(aTHX_ *svp)) {
5482 0 0 } else if (cb->perl_callback) {
5483 0 0 for (i = 0; i < len; i++) {
5485 0 0 if (!svp) { XSRETURN_NO; }
5492 0 0 PUSHMARK(SP);
5493 0 0 XPUSHs(*svp);
5497 0 0 if (count > 0) {
5502 0 0 FREETMPS; LEAVE;
5504 0 0 if (!matches) {
5516 0 2012 if (items != 2) croak("Usage: Func::Util::none_cb(\\@list, $callback_name)");
5519 2012 0 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 2012 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5528 1 2011 if (!cb) {
5531 0 2011 if (!cb->predicate && !cb->perl_callback) {
0 0 if (!cb->predicate && !cb->perl_callback) {
5538 2011 0 if (cb->predicate) {
5539 13021 1006 for (i = 0; i < len; i++) {
5541 13021 0 if (svp && cb->predicate(aTHX_ *svp)) {
1005 12016 if (svp && cb->predicate(aTHX_ *svp)) {
5545 0 0 } else if (cb->perl_callback) {
5546 0 0 for (i = 0; i < len; i++) {
5548 0 0 if (!svp) continue;
5555 0 0 PUSHMARK(SP);
5556 0 0 XPUSHs(*svp);
5560 0 0 if (count > 0) {
5565 0 0 FREETMPS; LEAVE;
5567 0 0 if (matches) {
5579 0 5043 if (items != 2) croak("Usage: Func::Util::first_cb(\\@list, $callback_name)");
5582 5043 0 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 5043 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5591 1 5042 if (!cb) {
5594 1010 4032 if (!cb->predicate && !cb->perl_callback) {
0 1010 if (!cb->predicate && !cb->perl_callback) {
5601 4032 1010 if (cb->predicate) {
5602 10080 2 for (i = 0; i < len; i++) {
5604 10080 0 if (svp && cb->predicate(aTHX_ *svp)) {
4030 6050 if (svp && cb->predicate(aTHX_ *svp)) {
5609 1010 0 } else if (cb->perl_callback) {
5610 7012 2 for (i = 0; i < len; i++) {
5612 0 7012 if (!svp) continue;
5619 0 7012 PUSHMARK(SP);
5620 0 7012 XPUSHs(*svp);
5624 7012 0 if (count > 0) {
5629 7012 0 FREETMPS; LEAVE;
5631 1008 6004 if (matches) {
5644 0 3037 if (items != 2) croak("Usage: Func::Util::grep_cb(\\@list, $callback_name)");
5647 3037 0 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 3037 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5656 1 3036 if (!cb) {
5659 12 3024 if (!cb->predicate && !cb->perl_callback) {
0 12 if (!cb->predicate && !cb->perl_callback) {
5671 3024 12 if (cb->predicate) {
5672 27151 3024 for (i = 0; i < len; i++) {
5674 27151 0 if (svp && cb->predicate(aTHX_ *svp)) {
13075 14076 if (svp && cb->predicate(aTHX_ *svp)) {
5679 12 0 } else if (cb->perl_callback) {
5680 76 12 for (i = 0; i < len; i++) {
5682 0 76 if (!svp) continue;
5690 0 76 PUSHMARK(SP);
5691 0 76 XPUSHs(elem);
5695 76 0 if (call_count > 0) {
5700 76 0 FREETMPS; LEAVE;
5702 39 37 if (matches) {
5711 13114 3036 for (i = 0; i < count; i++) {
5713 13114 0 if (svp) {
5714 0 13114 XPUSHs(sv_2mortal(SvREFCNT_inc(*svp)));
5725 0 6165 if (items != 2) croak("Usage: Func::Util::count_cb(\\@list, $callback_name)");
5728 6165 0 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 6165 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5737 1 6164 if (!cb) {
5740 1004 5160 if (!cb->predicate && !cb->perl_callback) {
0 1004 if (!cb->predicate && !cb->perl_callback) {
5748 5160 1004 if (cb->predicate) {
5749 1041389 5160 for (i = 0; i < len; i++) {
5751 1041389 0 if (svp && cb->predicate(aTHX_ *svp)) {
1022177 19212 if (svp && cb->predicate(aTHX_ *svp)) {
5755 1004 0 } else if (cb->perl_callback) {
5756 9029 1004 for (i = 0; i < len; i++) {
5758 0 9029 if (!svp) continue;
5765 0 9029 PUSHMARK(SP);
5766 0 9029 XPUSHs(*svp);
5770 9029 0 if (call_count > 0) {
5775 9029 0 FREETMPS; LEAVE;
5777 3010 6019 if (matches) {
5789 0 2013 if (items != 2) croak("Usage: Func::Util::partition_cb(\\@list, $callback_name)");
5792 2012 1 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 2012 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5801 1 2011 if (!cb) {
5804 2 2009 if (!cb->predicate && !cb->perl_callback) {
0 2 if (!cb->predicate && !cb->perl_callback) {
5815 2009 2 if (cb->predicate) {
5816 18040 2009 for (i = 0; i < len; i++) {
5818 0 18040 if (!svp) continue;
5819 11020 7020 if (cb->predicate(aTHX_ *svp)) {
5825 2 0 } else if (cb->perl_callback) {
5826 9 2 for (i = 0; i < len; i++) {
5828 0 9 if (!svp) continue;
5838 0 9 PUSHMARK(SP);
5839 0 9 XPUSHs(*svp);
5845 9 0 if (call_count > 0) {
5851 9 0 FREETMPS;
5854 4 5 if (matches) {
5871 0 3019 if (items != 2) croak("Usage: Func::Util::final_cb(\\@list, $callback_name)");
5874 3018 1 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 3018 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5883 1 3017 if (!cb) {
5886 1 3016 if (!cb->predicate && !cb->perl_callback) {
0 1 if (!cb->predicate && !cb->perl_callback) {
5893 3016 1 if (cb->predicate) {
5895 10033 6 for (i = len - 1; i >= 0; i--) {
5897 10033 0 if (svp && cb->predicate(aTHX_ *svp)) {
3010 7023 if (svp && cb->predicate(aTHX_ *svp)) {
5902 1 0 } else if (cb->perl_callback) {
5904 1 0 for (i = len - 1; i >= 0; i--) {
5906 0 1 if (!svp) continue;
5913 0 1 PUSHMARK(SP);
5914 0 1 XPUSHs(*svp);
5918 1 0 if (count > 0) {
5923 1 0 FREETMPS; LEAVE;
5925 1 0 if (matches) {
5938 0 20 if (items != 2) croak("Usage: Func::Util::register_callback($name, \\&coderef)");
5944 20 0 if (!SvROK(coderef) || SvTYPE(SvRV(coderef)) != SVt_PVCV) {
0 20 if (!SvROK(coderef) || SvTYPE(SvRV(coderef)) != SVt_PVCV) {
5954 3 17 if (get_registered_callback(aTHX_ name)) {
5975 0 6018 if (items != 1) croak("Usage: Func::Util::has_callback($name)");
5980 4014 2004 if (has_callback(aTHX_ name)) {
6027 0 15 if (items != 2)
6035 14 1 if (!SvROK(cv_sv) || SvTYPE(SvRV(cv_sv)) != SVt_PVCV)
2 12 if (!SvROK(cv_sv) || SvTYPE(SvRV(cv_sv)) != SVt_PVCV)
6039 1 11 if (hv_exists(g_export_hash, name, name_len))
6057 0 17 if (items != 1)
6063 14 3 if (hv_exists(g_export_hash, name, name_len)) {
6079 354 3 while ((entry = hv_iternext(g_export_hash))) {
6098 0 7 if (!g_export_hash) {
6103 0 7 if (hv_exists(g_export_hash, name, name_len)) {
6275 85 0 return HvNAME((HV*)CopSTASH(PL_curcop));
85 0 return HvNAME((HV*)CopSTASH(PL_curcop));
0 85 return HvNAME((HV*)CopSTASH(PL_curcop));
0 0 return HvNAME((HV*)CopSTASH(PL_curcop));
85 0 return HvNAME((HV*)CopSTASH(PL_curcop));
0 85 return HvNAME((HV*)CopSTASH(PL_curcop));
6286 456 83 for (i = 1; i < items; i++) {
6290 454 2 if (!entry_sv || !*entry_sv) {
0 454 if (!entry_sv || !*entry_sv) {
6297 446 8 if (entry->xs_func) {
6307 8 0 } else if (entry->perl_cv) {
6310 8 0 if (gv) {
6507 0 53 Newxz(g_memos, g_memo_size, MemoizedFunc);
6511 0 53 Newxz(g_lazies, g_lazy_size, LazyValue);
6515 0 53 Newxz(g_always_values, g_always_size, SV*);
6519 0 53 Newxz(g_onces, g_once_size, OnceFunc);
6523 0 53 Newxz(g_partials, g_partial_size, PartialFunc);