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)) {
1583 21 0 if (!OpHAS_SIBLING(pushop)) {
1588 21 0 arg1 = OpSIBLING(pushop); /* string */
1589 0 21 if (!arg1) return entersubop;
1591 21 0 arg2 = OpSIBLING(arg1); /* prefix/suffix */
1592 0 21 if (!arg2) return entersubop;
1594 21 0 cvop = OpSIBLING(arg2); /* cv op (should be last) */
1595 21 0 if (!cvop || OpHAS_SIBLING(cvop)) return entersubop;
0 21 if (!cvop || OpHAS_SIBLING(cvop)) return entersubop;
1598 1 20 if (op_is_dollar_underscore(aTHX_ arg1)) {
1767 0 213 if (items != 1) croak("Usage: Func::Util::memo(\\&func)");
1770 213 0 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
0 213 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
1807 421 428 if (cached && SvOK(*cached)) {
421 0 if (cached && SvOK(*cached)) {
1810 0 421 if (SvROK(*cached) && SvTYPE(SvRV(*cached)) == SVt_PVAV) {
0 0 if (SvROK(*cached) && SvTYPE(SvRV(*cached)) == SVt_PVAV) {
1814 0 0 EXTEND(SP, len);
0 0 EXTEND(SP, len);
1815 0 0 for (i = 0; i < len; i++) {
1817 0 0 ST(i) = elem ? *elem : &PL_sv_undef;
1830 0 428 PUSHMARK(SP);
1833 428 0 EXTEND(SP, items);
0 428 EXTEND(SP, items);
1834 429 428 for (i = 0; i < items; i++) {
1843 428 0 if (count == 1) {
1847 428 0 FREETMPS;
1852 0 0 } else if (count > 0) {
1855 0 0 for (i = count - 1; i >= 0; i--) {
1861 0 0 FREETMPS;
1864 0 0 for (i = 0; i < count; i++) {
1866 0 0 ST(i) = elem ? *elem : &PL_sv_undef;
1872 0 0 FREETMPS;
1885 0 1011 if (items < 2) croak("Usage: Func::Util::pipeline($value, \\&fn1, \\&fn2, ...)");
1890 3025 1011 for (i = 1; i < items; i++) {
1892 3025 0 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
0 3025 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
1899 0 3025 PUSHMARK(SP);
1900 0 3025 XPUSHs(value);
1909 3024 1 FREETMPS;
1922 0 1010 if (items < 1) croak("Usage: Func::Util::compose(\\&fn1, \\&fn2, ...)");
1927 3020 1010 for (i = 0; i < items; i++) {
1929 3020 0 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
0 3020 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
1953 3022 1011 for (i = func_count - 1; i >= 0; i--) {
1955 0 3022 if (!func_ptr) continue;
1959 0 3022 PUSHMARK(SP);
1961 1011 2011 if (i == func_count - 1) {
1963 1011 0 EXTEND(SP, items);
0 1011 EXTEND(SP, items);
1964 1011 1011 for (j = 0; j < items; j++) {
1968 0 2011 XPUSHs(value);
1978 3021 1 FREETMPS;
1981 2011 1011 if (value) SvREFCNT_dec(value);
1985 1011 0 ST(0) = value ? sv_2mortal(value) : &PL_sv_undef;
1995 0 1008 if (items != 1) croak("Usage: Func::Util::lazy(sub { ... })");
1998 1008 0 if (!SvROK(thunk) || SvTYPE(SvRV(thunk)) != SVt_PVCV) {
0 1008 if (!SvROK(thunk) || SvTYPE(SvRV(thunk)) != SVt_PVCV) {
2023 0 2018 if (items != 1) croak("Usage: Func::Util::force($lazy)");
2027 2014 4 if (!SvROK(lazy) || !sv_derived_from(lazy, "Func::Util::Lazy")) {
1 2013 if (!SvROK(lazy) || !sv_derived_from(lazy, "Func::Util::Lazy")) {
2033 2013 0 if (idx < 0 || idx >= g_lazy_count) {
0 2013 if (idx < 0 || idx >= g_lazy_count) {
2039 1005 1008 if (lv->forced) {
2046 0 1008 PUSHMARK(SP);
2055 1008 0 FREETMPS;
2071 0 19124 if (items < 2) croak("Usage: Func::Util::dig($hash, @keys)");
2076 47354 13117 for (i = 1; i < items; i++) {
2077 47353 1 if (!SvROK(current) || SvTYPE(SvRV(current)) != SVt_PVHV) {
3000 44353 if (!SvROK(current) || SvTYPE(SvRV(current)) != SVt_PVHV) {
2087 41349 3004 if (!val || !SvOK(*val)) {
2 41347 if (!val || !SvOK(*val)) {
2104 0 12105 if (items != 2) croak("Usage: Func::Util::tap(\\&block, $value)");
2109 12105 0 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
0 12105 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
2118 0 12105 PUSHMARK(SP);
2119 0 12105 XPUSHs(value);
2125 0 12105 FREETMPS;
2139 0 18161 if (items != 3) croak("Usage: Func::Util::clamp($value, $min, $max)");
2145 3014 15147 if (value < min) {
2147 3014 12133 } else if (value > max) {
2163 0 16119 if (items != 1) croak("Usage: Func::Util::identity($value)");
2173 0 8 if (items != 1) croak("Usage: Func::Util::always($value)");
2206 0 2 XPUSHs(&PL_sv_undef);
2252 10102 2003 if (GIMME_V == G_ARRAY) {
2263 10102 2003 if (GIMME_V == G_ARRAY) {
2294 0 1008 if (items != 1) croak("Usage: Func::Util::negate(\\&predicate)");
2297 1008 0 if (!SvROK(pred) || SvTYPE(SvRV(pred)) != SVt_PVCV) {
0 1008 if (!SvROK(pred) || SvTYPE(SvRV(pred)) != SVt_PVCV) {
2314 0 12113 PUSHMARK(SP);
2317 12113 0 EXTEND(SP, items);
0 12113 EXTEND(SP, items);
2318 12113 12113 for (i = 0; i < items; i++) {
2329 12113 0 FREETMPS;
2332 1005 11108 ST(0) = val ? &PL_sv_no : &PL_sv_yes;
2339 0 1005 if (items != 1) croak("Usage: Func::Util::once(\\&func)");
2342 1005 0 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
0 1005 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
2370 2010 1005 if (of->called) {
2371 2010 0 ST(0) = of->result ? of->result : &PL_sv_undef;
2377 0 1005 PUSHMARK(SP);
2386 1005 0 FREETMPS;
2400 0 1012 if (items < 1) croak("Usage: Func::Util::partial(\\&func, @bound_args)");
2403 1012 0 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
0 1012 if (!SvROK(func) || SvTYPE(SvRV(func)) != SVt_PVCV) {
2416 1012 1012 for (i = 1; i < items; i++) {
2440 0 2016 PUSHMARK(SP);
2442 2016 0 EXTEND(SP, total);
0 2016 EXTEND(SP, total);
2446 2016 2016 for (i = 0; i < bound_count; i++) {
2448 2016 0 PUSHs(elem ? *elem : &PL_sv_undef);
2452 2015 2016 for (i = 0; i < items; i++) {
2460 2016 0 SV *result = count > 0 ? POPs : &PL_sv_undef;
2463 2016 0 FREETMPS;
2478 0 12722 if (items < 1) croak("Usage: Func::Util::pick(\\%%hash, @keys)");
2481 12722 0 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) {
0 12722 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) {
2489 25844 12722 for (i = 1; i < items; i++) {
2495 24239 1605 if (val && SvOK(*val)) {
24238 1 if (val && SvOK(*val)) {
2501 10100 2622 if (GIMME_V == G_ARRAY) {
2503 0 10100 IV n = HvUSEDKEYS(dest);
2505 10100 0 EXTEND(SP, n * 2);
0 10100 EXTEND(SP, n * 2);
2509 20200 10100 while ((he = hv_iternext(dest)) != NULL) {
2511 0 20200 const char *key = HePV(he, klen);
2528 0 2211 if (items != 2) croak("Usage: Func::Util::pluck(\\@array, $field)");
2531 2211 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2211 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
2545 6625 2211 for (i = 0; i < len; i++) {
2547 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) {
2550 5422 1203 if (val && SvOK(*val)) {
5422 0 if (val && SvOK(*val)) {
2568 0 12710 if (items < 1) croak("Usage: Func::Util::omit(\\%%hash, @keys)");
2571 12710 0 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) {
0 12710 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) {
2581 15315 12710 for (i = 1; i < items; i++) {
2591 41128 12710 while ((entry = hv_iternext(src)) != NULL) {
2596 26219 14909 if (!hv_exists(exclude, key_pv, key_len)) {
2598 26219 0 if (SvOK(val)) {
2607 10100 2610 if (GIMME_V == G_ARRAY) {
2609 0 10100 IV n = HvUSEDKEYS(dest);
2611 10100 0 EXTEND(SP, n * 2);
0 10100 EXTEND(SP, n * 2);
2615 20200 10100 while ((he = hv_iternext(dest)) != NULL) {
2617 0 20200 const char *key = HePV(he, klen);
2635 1 2625 if (items == 0) {
2639 1611 1014 if (items == 1) {
2644 13 1001 if (items <= 8) {
2647 64 13 for (i = 0; i < items; i++) {
2650 62 2 const char *key_i = SvOK(elem) ? SvPV_const(elem, len_i) : "\x00UNDEF\x00";
2651 2 62 if (!SvOK(elem)) len_i = 7;
2654 91 40 for (j = 0; j < out; j++) {
2657 88 3 const char *key_j = SvOK(prev) ? SvPV_const(prev, len_j) : "\x00UNDEF\x00";
2658 3 88 if (!SvOK(prev)) len_j = 7;
2660 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) {
2665 40 24 if (!dup) ST(out++) = elem;
2675 10010 1001 for (i = 0; i < items; i++) {
2681 10010 0 key = SvOK(elem) ? SvPV_const(elem, len) : (len = 7, "\x00UNDEF\x00");
2683 10010 0 PERL_HASH(hash, key, len);
2685 4004 6006 if (!hv_common(seen, NULL, key, len, 0, HV_FETCH_ISEXISTS, NULL, hash)) {
2698 0 2210 if (items < 1) croak("Usage: Func::Util::partition(\\&block, @list)");
2701 2210 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 2210 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
2707 1 2209 if (list_len == 0) {
2722 2209 0 SV *orig_defsv = DEFSV;
2725 2243 2209 for (i = 1; i < items; i++) {
2732 0 2243 PUSHMARK(SP);
2733 0 2243 XPUSHs(elem);
2742 2243 0 FREETMPS;
2745 2222 21 if (matched) {
2766 0 11507 if (items != 2) croak("Usage: Func::Util::defaults(\\%%hash, \\%%defaults)");
2771 11507 0 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) {
0 11507 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) {
2774 11507 0 if (!SvROK(dref) || SvTYPE(SvRV(dref)) != SVt_PVHV) {
0 11507 if (!SvROK(dref) || SvTYPE(SvRV(dref)) != SVt_PVHV) {
2782 0 11507 IV src_keys = HvUSEDKEYS(src);
2783 0 11507 IV def_keys = HvUSEDKEYS(def);
2790 12507 11507 while ((entry = hv_iternext(src)) != NULL) {
2792 0 12507 const char *key_pv = HePV(entry, key_len);
2799 24411 11507 while ((entry = hv_iternext(def)) != NULL) {
2801 0 24411 const char *key_pv = HePV(entry, key_len);
2806 11503 12908 if (!existing || !SvOK(*existing)) {
1 11502 if (!existing || !SvOK(*existing)) {
2813 10100 1407 if (GIMME_V == G_ARRAY) {
2815 0 10100 IV n = HvUSEDKEYS(dest);
2817 10100 0 EXTEND(SP, n * 2);
0 10100 EXTEND(SP, n * 2);
2821 20200 10100 while ((he = hv_iternext(dest)) != NULL) {
2823 0 20200 const char *key = HePV(he, klen);
2844 0 20128 if (items != 2) croak("Usage: Func::Util::nvl($value, $default)");
2847 8010 12118 if (SvOK(val)) {
2857 0 18116 if (items < 1) croak("Usage: Func::Util::coalesce($val, ...)");
2860 47329 1003 for (i = 0; i < items; i++) {
2861 17113 30216 if (SvOK(ST(i))) {
2898 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)");
2901 3027 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3027 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
2909 2026 1001 if (items == 2) {
2912 11097 1008 for (i = 0; i < len; i++) {
2914 11097 0 if (elem && SvNV(*elem) > threshold) {
1018 10079 if (elem && SvNV(*elem) > threshold) {
2923 2002 0 for (i = 0; i < len; i++) {
2925 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) {
2928 2002 0 if (val && SvNV(*val) > threshold) {
1001 1001 if (val && SvNV(*val) > threshold) {
2943 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)");
2946 3012 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3012 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
2954 2011 1001 if (items == 2) {
2956 8034 1004 for (i = 0; i < len; i++) {
2958 8034 0 if (elem && SvNV(*elem) < threshold) {
1007 7027 if (elem && SvNV(*elem) < threshold) {
2966 1001 0 for (i = 0; i < len; i++) {
2968 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) {
2971 1001 0 if (val && SvNV(*val) < threshold) {
1001 0 if (val && SvNV(*val) < threshold) {
2986 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)");
2989 3012 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3012 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
2997 2011 1001 if (items == 2) {
2999 10043 1004 for (i = 0; i < len; i++) {
3001 10043 0 if (elem && SvNV(*elem) == target) {
1007 9036 if (elem && SvNV(*elem) == target) {
3009 2003 0 for (i = 0; i < len; i++) {
3011 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) {
3014 2003 0 if (val && SvNV(*val) == target) {
1001 1002 if (val && SvNV(*val) == target) {
3029 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)");
3032 3014 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3014 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3040 2013 1001 if (items == 2) {
3042 10048 1003 for (i = 0; i < len; i++) {
3044 10048 0 if (elem && SvNV(*elem) >= threshold) {
1010 9038 if (elem && SvNV(*elem) >= threshold) {
3052 1002 0 for (i = 0; i < len; i++) {
3054 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) {
3057 1002 0 if (val && SvNV(*val) >= threshold) {
1001 1 if (val && SvNV(*val) >= threshold) {
3072 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)");
3075 3009 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3009 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3083 2009 1000 if (items == 2) {
3085 8024 1003 for (i = 0; i < len; i++) {
3087 8024 0 if (elem && SvNV(*elem) <= threshold) {
1006 7018 if (elem && SvNV(*elem) <= threshold) {
3095 1000 0 for (i = 0; i < len; i++) {
3097 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) {
3100 1000 0 if (val && SvNV(*val) <= threshold) {
1000 0 if (val && SvNV(*val) <= threshold) {
3115 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)");
3118 2007 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2007 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3126 1007 1000 if (items == 2) {
3128 2018 2 for (i = 0; i < len; i++) {
3130 2018 0 if (elem && SvNV(*elem) != target) {
1005 1013 if (elem && SvNV(*elem) != target) {
3138 2000 0 for (i = 0; i < len; i++) {
3140 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) {
3143 2000 0 if (val && SvNV(*val) != target) {
1000 1000 if (val && SvNV(*val) != target) {
3162 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)");
3165 3012 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3012 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3173 2011 1001 if (items == 2) {
3175 8023 1005 for (i = len - 1; i >= 0; i--) {
3177 8023 0 if (elem && SvNV(*elem) > threshold) {
1006 7017 if (elem && SvNV(*elem) > threshold) {
3185 1001 0 for (i = len - 1; i >= 0; i--) {
3187 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) {
3190 1001 0 if (val && SvNV(*val) > threshold) {
1001 0 if (val && SvNV(*val) > threshold) {
3204 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)");
3207 3011 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3011 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3215 2010 1001 if (items == 2) {
3217 11033 1003 for (i = len - 1; i >= 0; i--) {
3219 11033 0 if (elem && SvNV(*elem) < threshold) {
1007 10026 if (elem && SvNV(*elem) < threshold) {
3227 2001 0 for (i = len - 1; i >= 0; i--) {
3229 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) {
3232 2001 0 if (val && SvNV(*val) < threshold) {
1001 1000 if (val && SvNV(*val) < threshold) {
3246 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)");
3249 2005 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2005 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3257 1005 1000 if (items == 2) {
3259 1015 2 for (i = len - 1; i >= 0; i--) {
3261 1015 0 if (elem && SvNV(*elem) >= threshold) {
1003 12 if (elem && SvNV(*elem) >= threshold) {
3269 1000 0 for (i = len - 1; i >= 0; i--) {
3271 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) {
3274 1000 0 if (val && SvNV(*val) >= threshold) {
1000 0 if (val && SvNV(*val) >= threshold) {
3288 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)");
3291 2006 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2006 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3299 1006 1000 if (items == 2) {
3301 3015 1 for (i = len - 1; i >= 0; i--) {
3303 3015 0 if (elem && SvNV(*elem) <= threshold) {
1005 2010 if (elem && SvNV(*elem) <= threshold) {
3311 2000 0 for (i = len - 1; i >= 0; i--) {
3313 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) {
3316 2000 0 if (val && SvNV(*val) <= threshold) {
1000 1000 if (val && SvNV(*val) <= threshold) {
3330 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)");
3333 2006 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2006 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3341 1006 1000 if (items == 2) {
3343 3023 2 for (i = len - 1; i >= 0; i--) {
3345 3023 0 if (elem && SvNV(*elem) == target) {
1004 2019 if (elem && SvNV(*elem) == target) {
3353 3000 0 for (i = len - 1; i >= 0; i--) {
3355 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) {
3358 3000 0 if (val && SvNV(*val) == target) {
1000 2000 if (val && SvNV(*val) == target) {
3372 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)");
3375 2004 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2004 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3383 1004 1000 if (items == 2) {
3385 2008 1 for (i = len - 1; i >= 0; i--) {
3387 2008 0 if (elem && SvNV(*elem) != target) {
1003 1005 if (elem && SvNV(*elem) != target) {
3395 2000 0 for (i = len - 1; i >= 0; i--) {
3397 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) {
3400 2000 0 if (val && SvNV(*val) != target) {
1000 1000 if (val && SvNV(*val) != target) {
3415 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)");
3418 3015 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3015 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3426 2013 1002 if (items == 2) {
3428 14048 1008 for (i = 0; i < len; i++) {
3430 14048 0 if (elem && SvNV(*elem) > threshold) {
1005 13043 if (elem && SvNV(*elem) > threshold) {
3437 4004 1 for (i = 0; i < len; i++) {
3439 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) {
3442 4004 0 if (val && SvNV(*val) > threshold) {
1001 3003 if (val && SvNV(*val) > threshold) {
3455 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)");
3458 3021 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3021 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3466 2021 1000 if (items == 2) {
3468 8044 1005 for (i = 0; i < len; i++) {
3470 8044 0 if (elem && SvNV(*elem) < threshold) {
1016 7028 if (elem && SvNV(*elem) < threshold) {
3477 3000 0 for (i = 0; i < len; i++) {
3479 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) {
3482 3000 0 if (val && SvNV(*val) < threshold) {
1000 2000 if (val && SvNV(*val) < threshold) {
3495 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)");
3498 2007 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2007 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3506 1007 1000 if (items == 2) {
3508 7035 2 for (i = 0; i < len; i++) {
3510 7035 0 if (elem && SvNV(*elem) >= threshold) {
1005 6030 if (elem && SvNV(*elem) >= threshold) {
3517 4000 0 for (i = 0; i < len; i++) {
3519 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) {
3522 4000 0 if (val && SvNV(*val) >= threshold) {
1000 3000 if (val && SvNV(*val) >= threshold) {
3535 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)");
3538 2005 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2005 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3546 1005 1000 if (items == 2) {
3548 1016 2 for (i = 0; i < len; i++) {
3550 1016 0 if (elem && SvNV(*elem) <= threshold) {
1003 13 if (elem && SvNV(*elem) <= threshold) {
3557 3000 0 for (i = 0; i < len; i++) {
3559 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) {
3562 3000 0 if (val && SvNV(*val) <= threshold) {
1000 2000 if (val && SvNV(*val) <= threshold) {
3575 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)");
3578 3009 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3009 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3586 2009 1000 if (items == 2) {
3588 11033 1004 for (i = 0; i < len; i++) {
3590 11033 0 if (elem && SvNV(*elem) == target) {
1005 10028 if (elem && SvNV(*elem) == target) {
3597 1000 0 for (i = 0; i < len; i++) {
3599 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) {
3602 1000 0 if (val && SvNV(*val) == target) {
1000 0 if (val && SvNV(*val) == target) {
3615 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)");
3618 2004 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2004 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3626 1004 1000 if (items == 2) {
3628 2009 1 for (i = 0; i < len; i++) {
3630 2009 0 if (elem && SvNV(*elem) != target) {
1003 1006 if (elem && SvNV(*elem) != target) {
3637 2000 0 for (i = 0; i < len; i++) {
3639 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) {
3642 2000 0 if (val && SvNV(*val) != target) {
1000 1000 if (val && SvNV(*val) != target) {
3657 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)");
3660 3013 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3013 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3668 3 3010 if (len == 0) XSRETURN_YES; /* vacuous truth */
3670 2010 1000 if (items == 2) {
3672 8033 1005 for (i = 0; i < len; i++) {
3674 8033 0 if (!elem || SvNV(*elem) <= threshold) {
1005 7028 if (!elem || SvNV(*elem) <= threshold) {
3681 4000 1000 for (i = 0; i < len; i++) {
3683 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) {
3688 4000 0 if (!val || SvNV(*val) <= threshold) {
0 4000 if (!val || SvNV(*val) <= threshold) {
3700 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)");
3703 3009 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3009 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3711 1 3008 if (len == 0) XSRETURN_YES;
3713 2008 1000 if (items == 2) {
3715 10040 1004 for (i = 0; i < len; i++) {
3717 10040 0 if (!elem || SvNV(*elem) >= threshold) {
1004 9036 if (!elem || SvNV(*elem) >= threshold) {
3724 4000 1000 for (i = 0; i < len; i++) {
3726 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) {
3731 4000 0 if (!val || SvNV(*val) >= threshold) {
0 4000 if (!val || SvNV(*val) >= threshold) {
3743 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)");
3746 3019 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3019 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3754 0 3019 if (len == 0) XSRETURN_YES;
3756 2017 1002 if (items == 2) {
3758 8089 1013 for (i = 0; i < len; i++) {
3760 8089 0 if (!elem || SvNV(*elem) < threshold) {
1004 7085 if (!elem || SvNV(*elem) < threshold) {
3767 4003 1001 for (i = 0; i < len; i++) {
3769 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) {
3774 4003 0 if (!val || SvNV(*val) < threshold) {
1 4002 if (!val || SvNV(*val) < threshold) {
3786 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)");
3789 3004 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3004 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3797 0 3004 if (len == 0) XSRETURN_YES;
3799 2004 1000 if (items == 2) {
3801 11023 1002 for (i = 0; i < len; i++) {
3803 11023 0 if (!elem || SvNV(*elem) > threshold) {
1002 10021 if (!elem || SvNV(*elem) > threshold) {
3810 4000 1000 for (i = 0; i < len; i++) {
3812 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) {
3817 4000 0 if (!val || SvNV(*val) > threshold) {
0 4000 if (!val || SvNV(*val) > threshold) {
3829 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)");
3832 2007 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2007 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3840 1 2006 if (len == 0) XSRETURN_YES;
3842 2006 0 if (items == 2) {
3844 5014 1004 for (i = 0; i < len; i++) {
3846 5014 0 if (!elem || SvNV(*elem) != target) {
1002 4012 if (!elem || SvNV(*elem) != target) {
3853 0 0 for (i = 0; i < len; i++) {
3855 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) {
3860 0 0 if (!val || SvNV(*val) != target) {
0 0 if (!val || SvNV(*val) != target) {
3872 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)");
3875 2004 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2004 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3883 0 2004 if (len == 0) XSRETURN_YES;
3885 2004 0 if (items == 2) {
3887 10018 1002 for (i = 0; i < len; i++) {
3889 10018 0 if (!elem || SvNV(*elem) == target) {
1002 9016 if (!elem || SvNV(*elem) == target) {
3896 0 0 for (i = 0; i < len; i++) {
3898 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) {
3903 0 0 if (!val || SvNV(*val) == target) {
0 0 if (!val || SvNV(*val) == target) {
3916 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)");
3919 3011 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3011 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3927 2011 1000 if (items == 2) {
3929 11039 1007 for (i = 0; i < len; i++) {
3931 11039 0 if (elem && SvNV(*elem) > threshold) {
1004 10035 if (elem && SvNV(*elem) > threshold) {
3938 4000 1000 for (i = 0; i < len; i++) {
3940 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) {
3943 4000 0 if (val && SvNV(*val) > threshold) {
0 4000 if (val && SvNV(*val) > threshold) {
3956 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)");
3959 3010 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3010 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
3967 2008 1002 if (items == 2) {
3969 8031 1005 for (i = 0; i < len; i++) {
3971 8031 0 if (elem && SvNV(*elem) < threshold) {
1003 7028 if (elem && SvNV(*elem) < threshold) {
3978 4003 1001 for (i = 0; i < len; i++) {
3980 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) {
3983 4003 0 if (val && SvNV(*val) < threshold) {
1 4002 if (val && SvNV(*val) < threshold) {
3996 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)");
3999 2004 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2004 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
4007 2004 0 if (items == 2) {
4009 8023 1002 for (i = 0; i < len; i++) {
4011 8023 0 if (elem && SvNV(*elem) >= threshold) {
1002 7021 if (elem && SvNV(*elem) >= threshold) {
4018 0 0 for (i = 0; i < len; i++) {
4020 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) {
4023 0 0 if (val && SvNV(*val) >= threshold) {
0 0 if (val && SvNV(*val) >= threshold) {
4036 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)");
4039 2004 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2004 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
4047 2004 0 if (items == 2) {
4049 8015 1002 for (i = 0; i < len; i++) {
4051 8015 0 if (elem && SvNV(*elem) <= threshold) {
1002 7013 if (elem && SvNV(*elem) <= threshold) {
4058 0 0 for (i = 0; i < len; i++) {
4060 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) {
4063 0 0 if (val && SvNV(*val) <= threshold) {
0 0 if (val && SvNV(*val) <= threshold) {
4076 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)");
4079 2008 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2008 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
4087 2008 0 if (items == 2) {
4089 10032 1005 for (i = 0; i < len; i++) {
4091 10032 0 if (elem && SvNV(*elem) == target) {
1003 9029 if (elem && SvNV(*elem) == target) {
4098 0 0 for (i = 0; i < len; i++) {
4100 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) {
4103 0 0 if (val && SvNV(*val) == target) {
0 0 if (val && SvNV(*val) == target) {
4116 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)");
4119 2005 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2005 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
4127 2005 0 if (items == 2) {
4129 5012 1003 for (i = 0; i < len; i++) {
4131 5012 0 if (elem && SvNV(*elem) != target) {
1002 4010 if (elem && SvNV(*elem) != target) {
4138 0 0 for (i = 0; i < len; i++) {
4140 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) {
4143 0 0 if (val && SvNV(*val) != target) {
0 0 if (val && SvNV(*val) != target) {
4156 0 3012 if (items != 2) croak("Usage: Func::Util::firstr(\\&block, \\@array)");
4161 3012 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 3012 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4164 3012 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 3012 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
4173 0 3012 if (len == 0) {
4178 3012 0 if (!CvISXSUB(block_cv)) {
4183 0 3012 PUSH_MULTICALL(block_cv);
4185 10045 1000 for (i = 0; i < len; i++) {
4187 0 10045 if (!elem) continue;
4194 2012 8033 if (SvTRUE(*PL_stack_sp)) {
4195 2012 0 POP_MULTICALL;
4201 1000 0 POP_MULTICALL;
4207 0 0 for (i = 0; i < len; i++) {
4209 0 0 if (!elem) continue;
4214 0 0 PUSHMARK(SP);
4217 0 0 if (SvTRUE(*PL_stack_sp)) {
4229 0 2014 if (items != 2) croak("Usage: Func::Util::final(\\&block, \\@array)");
4234 2014 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 2014 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4237 2014 0 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
0 2014 if (!SvROK(aref) || SvTYPE(SvRV(aref)) != SVt_PVAV) {
4246 2 2012 if (len == 0) {
4251 2012 0 if (!CvISXSUB(block_cv)) {
4256 0 2012 PUSH_MULTICALL(block_cv);
4259 8026 1003 for (i = len - 1; i >= 0; i--) {
4261 0 8026 if (!elem) continue;
4268 1009 7017 if (SvTRUE(*PL_stack_sp)) {
4269 1009 0 POP_MULTICALL;
4275 1003 0 POP_MULTICALL;
4281 0 0 for (i = len - 1; i >= 0; i--) {
4283 0 0 if (!elem) continue;
4288 0 0 PUSHMARK(SP);
4291 0 0 if (SvTRUE(*PL_stack_sp)) {
4303 0 13118 if (items < 1) croak("Usage: Func::Util::first(\\&block, @list)");
4306 13118 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 13118 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4316 2 13116 if (items <= 1) {
4322 13116 0 if (!CvISXSUB(block_cv)) {
4327 0 13116 PUSH_MULTICALL(block_cv);
4329 33336 4 for (index = 1; index < items; index++) {
4335 13112 20224 if (SvTRUE(*PL_stack_sp)) {
4336 13112 0 POP_MULTICALL;
4342 4 0 POP_MULTICALL;
4348 0 0 for (index = 1; index < items; index++) {
4352 0 0 PUSHMARK(SP);
4355 0 0 if (SvTRUE(*PL_stack_sp)) {
4367 0 13126 if (items < 1) croak("Usage: Func::Util::any(\\&block, @list)");
4370 13126 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 13126 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4379 2 13124 if (items <= 1) {
4384 13124 0 if (!CvISXSUB(block_cv)) {
4389 0 13124 PUSH_MULTICALL(block_cv);
4391 33341 4 for (index = 1; index < items; index++) {
4397 13120 20221 if (SvTRUE(*PL_stack_sp)) {
4398 13120 0 POP_MULTICALL;
4403 4 0 POP_MULTICALL;
4408 0 0 for (index = 1; index < items; index++) {
4412 0 0 PUSHMARK(SP);
4415 0 0 if (SvTRUE(*PL_stack_sp)) {
4426 0 13116 if (items < 1) croak("Usage: Func::Util::all(\\&block, @list)");
4429 13116 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 13116 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4438 2 13114 if (items <= 1) {
4443 13114 0 if (!CvISXSUB(block_cv)) {
4448 0 13114 PUSH_MULTICALL(block_cv);
4450 53537 13108 for (index = 1; index < items; index++) {
4456 6 53531 if (!SvTRUE(*PL_stack_sp)) {
4457 6 0 POP_MULTICALL;
4462 13108 0 POP_MULTICALL;
4467 0 0 for (index = 1; index < items; index++) {
4471 0 0 PUSHMARK(SP);
4474 0 0 if (!SvTRUE(*PL_stack_sp)) {
4485 0 13114 if (items < 1) croak("Usage: Func::Util::none(\\&block, @list)");
4488 13114 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 13114 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4497 2 13112 if (items <= 1) {
4502 13112 0 if (!CvISXSUB(block_cv)) {
4507 0 13112 PUSH_MULTICALL(block_cv);
4509 53532 10106 for (index = 1; index < items; index++) {
4515 3006 50526 if (SvTRUE(*PL_stack_sp)) {
4516 3006 0 POP_MULTICALL;
4521 10106 0 POP_MULTICALL;
4526 0 0 for (index = 1; index < items; index++) {
4530 0 0 PUSHMARK(SP);
4533 0 0 if (SvTRUE(*PL_stack_sp)) {
4553 0 6 if (items < 1) croak("Usage: Func::Util::first_inline(\\&block, @list)");
4556 6 0 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
0 6 if (!SvROK(block) || SvTYPE(SvRV(block)) != SVt_PVCV) {
4562 1 5 if (items == 1) {
4567 0 5 if (CvISXSUB(the_cv)) {
4579 0 5 PUSH_MULTICALL(the_cv);
4584 24 1 for (i = 0; i < num_args; i++) {
4591 4 20 if (SvTRUE(*PL_stack_sp)) {
4593 4 0 POP_MULTICALL;
4602 1 0 POP_MULTICALL;
4616 0 17123 if (items != 1) croak("Usage: Func::Util::is_ref($value)");
4617 14115 3008 ST(0) = SvROK(ST(0)) ? &PL_sv_yes : &PL_sv_no;
4623 0 17132 if (items != 1) croak("Usage: Func::Util::is_array($value)");
4625 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;
4631 0 17131 if (items != 1) croak("Usage: Func::Util::is_hash($value)");
4633 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;
4639 0 17117 if (items != 1) croak("Usage: Func::Util::is_code($value)");
4641 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;
4647 0 17118 if (items != 1) croak("Usage: Func::Util::is_defined($value)");
4648 14113 3005 ST(0) = SvOK(ST(0)) ? &PL_sv_yes : &PL_sv_no;
4658 0 12016 if (items != 1) croak("Usage: Func::Util::is_empty($value)");
4660 2002 10014 if (!SvOK(sv)) {
4665 4002 6012 ST(0) = len == 0 ? &PL_sv_yes : &PL_sv_no;
4672 0 19124 if (items != 2) croak("Usage: Func::Util::starts_with($string, $prefix)");
4677 18122 1002 if (!SvOK(str_sv) || !SvOK(prefix_sv)) {
1 18121 if (!SvOK(str_sv) || !SvOK(prefix_sv)) {
4686 3002 15119 if (prefix_len > str_len) {
4688 1002 14117 } else if (prefix_len == 0) {
4691 12113 2004 ST(0) = memcmp(str, prefix, prefix_len) == 0 ? &PL_sv_yes : &PL_sv_no;
4698 0 19122 if (items != 2) croak("Usage: Func::Util::ends_with($string, $suffix)");
4703 18120 1002 if (!SvOK(str_sv) || !SvOK(suffix_sv)) {
1 18119 if (!SvOK(str_sv) || !SvOK(suffix_sv)) {
4712 3002 15117 if (suffix_len > str_len) {
4714 1002 14115 } else if (suffix_len == 0) {
4718 12111 2004 ST(0) = memcmp(str_end, suffix, suffix_len) == 0 ? &PL_sv_yes : &PL_sv_no;
4726 0 2000 if (items != 2) croak("Usage: Func::Util::count($string, $substring)");
4731 2000 0 if (!SvOK(str_sv) || !SvOK(needle_sv)) {
0 2000 if (!SvOK(str_sv) || !SvOK(needle_sv)) {
4740 2000 0 if (needle_len == 0 || needle_len > str_len) {
2000 0 if (needle_len == 0 || needle_len > str_len) {
4750 0 0 while (remaining >= needle_len) {
4752 0 0 if (!found) break;
4766 0 5026 if (items != 3) croak("Usage: Func::Util::replace_all($string, $old, $new)");
4773 0 5026 if (!SvOK(str_sv)) {
4784 5025 1 if (old_len == 0 || old_len > str_len) {
1001 4024 if (old_len == 0 || old_len > str_len) {
4795 9052 2009 while (remaining >= old_len) {
4797 2015 7037 if (!found) break;
4803 1002 3022 if (count == 0) {
4820 8050 2009 while (remaining >= old_len) {
4822 1013 7037 if (!found) break;
4826 2025 5012 if (before_len > 0) {
4832 5035 2002 if (new_len > 0) {
4842 1016 2006 if (remaining > 0) {
4857 0 0 if (items != 2) croak("Usage: Func::Util::before($string, $delimiter)");
4862 0 0 if (!SvOK(str_sv)) {
4871 0 0 if (delim_len == 0 || delim_len > str_len) {
0 0 if (delim_len == 0 || delim_len > str_len) {
4877 0 0 if (found) {
4888 0 0 if (items != 2) croak("Usage: Func::Util::after($string, $delimiter)");
4893 0 0 if (!SvOK(str_sv)) {
4902 0 0 if (delim_len == 0 || delim_len > str_len) {
0 0 if (delim_len == 0 || delim_len > str_len) {
4908 0 0 if (found) {
4923 0 24129 if (items != 1) croak("Usage: Func::Util::is_true($value)");
4924 16123 8006 ST(0) = SvTRUE(ST(0)) ? &PL_sv_yes : &PL_sv_no;
4930 0 22118 if (items != 1) croak("Usage: Func::Util::is_false($value)");
4931 4004 18114 ST(0) = SvTRUE(ST(0)) ? &PL_sv_no : &PL_sv_yes;
4937 0 30119 if (items != 1) croak("Usage: Func::Util::bool($value)");
4938 21115 9004 ST(0) = SvTRUE(ST(0)) ? &PL_sv_yes : &PL_sv_no;
4948 0 19155 if (items != 1) croak("Usage: Func::Util::is_num($value)");
4950 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;
4956 0 17120 if (items != 1) croak("Usage: Func::Util::is_int($value)");
4958 14106 3014 if (SvIOK(sv)) {
4960 3009 5 } else if (SvNOK(sv)) {
4962 1003 2006 ST(0) = (nv == (NV)(IV)nv) ? &PL_sv_yes : &PL_sv_no;
4963 2 3 } else if (looks_like_number(sv)) {
4968 4 2 for (i = 0; i < len; i++) {
4969 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') {
4974 0 2 if (has_dot) {
4976 0 0 ST(0) = (nv == (NV)(IV)nv) ? &PL_sv_yes : &PL_sv_no;
4988 0 6011 if (items != 1) croak("Usage: Func::Util::is_blessed($value)");
4989 2005 4006 ST(0) = sv_isobject(ST(0)) ? &PL_sv_yes : &PL_sv_no;
4995 0 4009 if (items != 1) croak("Usage: Func::Util::is_scalar_ref($value)");
4997 4006 3 if (SvROK(sv)) {
5000 2003 2003 ST(0) = (type < SVt_PVAV) ? &PL_sv_yes : &PL_sv_no;
5009 0 6009 if (items != 1) croak("Usage: Func::Util::is_regex($value)");
5010 2004 4005 ST(0) = SvRXOK(ST(0)) ? &PL_sv_yes : &PL_sv_no;
5016 0 6008 if (items != 1) croak("Usage: Func::Util::is_glob($value)");
5017 2003 4005 ST(0) = (SvTYPE(ST(0)) == SVt_PVGV) ? &PL_sv_yes : &PL_sv_no;
5023 0 8017 if (items != 1) croak("Usage: Func::Util::is_string($value)");
5025 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;
5035 0 15123 if (items != 1) croak("Usage: Func::Util::is_positive($value)");
5037 2 15121 if (SvNIOK(sv) || looks_like_number(sv)) {
0 2 if (SvNIOK(sv) || looks_like_number(sv)) {
5039 13111 2010 ST(0) = (nv > 0) ? &PL_sv_yes : &PL_sv_no;
5048 0 13122 if (items != 1) croak("Usage: Func::Util::is_negative($value)");
5050 2 13120 if (SvNIOK(sv) || looks_like_number(sv)) {
0 2 if (SvNIOK(sv) || looks_like_number(sv)) {
5052 13111 9 ST(0) = (nv < 0) ? &PL_sv_yes : &PL_sv_no;
5061 0 13123 if (items != 1) croak("Usage: Func::Util::is_zero($value)");
5063 4 13119 if (SvNIOK(sv) || looks_like_number(sv)) {
2 2 if (SvNIOK(sv) || looks_like_number(sv)) {
5065 13110 11 ST(0) = (nv == 0) ? &PL_sv_yes : &PL_sv_no;
5078 0 18156 if (items != 1) croak("Usage: Func::Util::is_even($value)");
5080 18144 12 if (SvIOK(sv)) {
5081 15123 3021 ST(0) = (SvIVX(sv) & 1) == 0 ? &PL_sv_yes : &PL_sv_no;
5082 5 7 } else if (SvNIOK(sv)) {
5084 3 2 if (nv == (NV)(IV)nv) {
5085 2 1 ST(0) = ((IV)nv & 1) == 0 ? &PL_sv_yes : &PL_sv_no;
5089 2 5 } else if (looks_like_number(sv)) {
5090 2 0 ST(0) = (SvIV(sv) & 1) == 0 ? &PL_sv_yes : &PL_sv_no;
5099 0 18155 if (items != 1) croak("Usage: Func::Util::is_odd($value)");
5101 18144 11 if (SvIOK(sv)) {
5102 14124 4020 ST(0) = (SvIVX(sv) & 1) == 1 ? &PL_sv_yes : &PL_sv_no;
5103 5 6 } else if (SvNIOK(sv)) {
5105 3 2 if (nv == (NV)(IV)nv) {
5106 2 1 ST(0) = ((IV)nv & 1) == 1 ? &PL_sv_yes : &PL_sv_no;
5110 2 4 } else if (looks_like_number(sv)) {
5111 2 0 ST(0) = (SvIV(sv) & 1) == 1 ? &PL_sv_yes : &PL_sv_no;
5120 0 15070 if (items != 3) croak("Usage: Func::Util::is_between($value, $min, $max)");
5125 5 15065 if (SvNIOK(val_sv) || looks_like_number(val_sv)) {
1 4 if (SvNIOK(val_sv) || looks_like_number(val_sv)) {
5129 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;
5142 0 4008 if (items != 1) croak("Usage: Func::Util::is_empty_array($arrayref)");
5144 4005 3 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
4004 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
5146 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;
5155 0 5008 if (items != 1) croak("Usage: Func::Util::is_empty_hash($hashref)");
5157 5005 3 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) {
5004 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) {
5159 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;
5168 0 14126 if (items != 1) croak("Usage: Func::Util::array_len($arrayref)");
5170 13124 1002 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
13123 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
5172 0 13123 ST(0) = sv_2mortal(newSViv(AvFILL(av) + 1));
5181 0 4018 if (items != 1) croak("Usage: Func::Util::hash_size($hashref)");
5183 3016 1002 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) {
3015 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV) {
5185 0 3015 ST(0) = sv_2mortal(newSViv(HvKEYS(hv)));
5194 0 13114 if (items != 1) croak("Usage: Func::Util::array_first($arrayref)");
5196 13112 2 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
13111 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
5198 0 13111 if (AvFILL(av) >= 0) {
12110 1001 if (AvFILL(av) >= 0) {
5200 12110 0 ST(0) = elem ? *elem : &PL_sv_undef;
5212 0 13113 if (items != 1) croak("Usage: Func::Util::array_last($arrayref)");
5214 13111 2 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
13110 1 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVAV) {
5216 0 13110 IV last_idx = AvFILL(av);
5217 12109 1001 if (last_idx >= 0) {
5219 12109 0 ST(0) = elem ? *elem : &PL_sv_undef;
5235 0 20141 if (items != 1) croak("Usage: Func::Util::trim($string)");
5238 1001 19140 if (!SvOK(sv)) {
5249 46406 4004 while (start < end && isSPACE(*start)) {
31270 15136 while (start < end && isSPACE(*start)) {
5254 43397 4004 while (end > start && isSPACE(*(end - 1))) {
28261 15136 while (end > start && isSPACE(*(end - 1))) {
5264 0 4013 if (items != 1) croak("Usage: Func::Util::ltrim($string)");
5267 1 4012 if (!SvOK(sv)) {
5277 8029 2 while (start < end && isSPACE(*start)) {
4019 4010 while (start < end && isSPACE(*start)) {
5287 0 4013 if (items != 1) croak("Usage: Func::Util::rtrim($string)");
5290 1 4012 if (!SvOK(sv)) {
5299 8024 2 while (end > str && isSPACE(*(end - 1))) {
4014 4010 while (end > str && isSPACE(*(end - 1))) {
5313 0 10028 if (items != 2) croak("Usage: Func::Util::maybe($value, $then)");
5316 8023 2005 if (SvOK(val)) {
5330 0 21131 if (items != 1) croak("Usage: Func::Util::sign($number)");
5333 5 21126 if (!SvNIOK(sv) && !looks_like_number(sv)) {
2 3 if (!SvNIOK(sv) && !looks_like_number(sv)) {
5339 4011 17118 if (nv > 0) {
5341 14113 3005 } else if (nv < 0) {
5351 0 15116 if (items != 2) croak("Usage: Func::Util::min2($a, $b)");
5356 15112 4 ST(0) = a <= b ? ST(0) : ST(1);
5362 0 15116 if (items != 2) croak("Usage: Func::Util::max2($a, $b)");
5367 1007 14109 ST(0) = a >= b ? ST(0) : ST(1);
5379 0 11130 if (items != 2) croak("Usage: Func::Util::any_cb(\\@list, $callback_name)");
5382 11128 2 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
1 11127 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5391 2 11125 if (!cb) {
5394 1000 10125 if (!cb->predicate && !cb->perl_callback) {
0 1000 if (!cb->predicate && !cb->perl_callback) {
5401 10125 1000 if (cb->predicate) {
5403 35172 2 for (i = 0; i < len; i++) {
5405 35172 0 if (svp && cb->predicate(aTHX_ *svp)) {
10123 25049 if (svp && cb->predicate(aTHX_ *svp)) {
5409 1000 0 } else if (cb->perl_callback) {
5411 7000 0 for (i = 0; i < len; i++) {
5413 0 7000 if (!svp) continue;
5424 0 7000 PUSHMARK(SP);
5425 0 7000 XPUSHs(*svp);
5431 7000 0 if (count > 0) {
5437 7000 0 FREETMPS;
5441 1000 6000 if (matches) {
5453 0 3128 if (items != 2) croak("Usage: Func::Util::all_cb(\\@list, $callback_name)");
5456 3128 0 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 3128 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5465 1 3127 if (!cb) {
5468 0 3127 if (!cb->predicate && !cb->perl_callback) {
0 0 if (!cb->predicate && !cb->perl_callback) {
5476 5 3122 if (len == 0) {
5480 3122 0 if (cb->predicate) {
5481 1019114 2114 for (i = 0; i < len; i++) {
5483 1019114 0 if (!svp || !cb->predicate(aTHX_ *svp)) {
1008 1018106 if (!svp || !cb->predicate(aTHX_ *svp)) {
5487 0 0 } else if (cb->perl_callback) {
5488 0 0 for (i = 0; i < len; i++) {
5490 0 0 if (!svp) { XSRETURN_NO; }
5497 0 0 PUSHMARK(SP);
5498 0 0 XPUSHs(*svp);
5502 0 0 if (count > 0) {
5507 0 0 FREETMPS; LEAVE;
5509 0 0 if (!matches) {
5521 0 2012 if (items != 2) croak("Usage: Func::Util::none_cb(\\@list, $callback_name)");
5524 2012 0 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 2012 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5533 1 2011 if (!cb) {
5536 0 2011 if (!cb->predicate && !cb->perl_callback) {
0 0 if (!cb->predicate && !cb->perl_callback) {
5543 2011 0 if (cb->predicate) {
5544 13021 1006 for (i = 0; i < len; i++) {
5546 13021 0 if (svp && cb->predicate(aTHX_ *svp)) {
1005 12016 if (svp && cb->predicate(aTHX_ *svp)) {
5550 0 0 } else if (cb->perl_callback) {
5551 0 0 for (i = 0; i < len; i++) {
5553 0 0 if (!svp) continue;
5560 0 0 PUSHMARK(SP);
5561 0 0 XPUSHs(*svp);
5565 0 0 if (count > 0) {
5570 0 0 FREETMPS; LEAVE;
5572 0 0 if (matches) {
5584 0 5043 if (items != 2) croak("Usage: Func::Util::first_cb(\\@list, $callback_name)");
5587 5043 0 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 5043 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5596 1 5042 if (!cb) {
5599 1010 4032 if (!cb->predicate && !cb->perl_callback) {
0 1010 if (!cb->predicate && !cb->perl_callback) {
5606 4032 1010 if (cb->predicate) {
5607 10080 2 for (i = 0; i < len; i++) {
5609 10080 0 if (svp && cb->predicate(aTHX_ *svp)) {
4030 6050 if (svp && cb->predicate(aTHX_ *svp)) {
5614 1010 0 } else if (cb->perl_callback) {
5615 7012 2 for (i = 0; i < len; i++) {
5617 0 7012 if (!svp) continue;
5624 0 7012 PUSHMARK(SP);
5625 0 7012 XPUSHs(*svp);
5629 7012 0 if (count > 0) {
5634 7012 0 FREETMPS; LEAVE;
5636 1008 6004 if (matches) {
5649 0 3037 if (items != 2) croak("Usage: Func::Util::grep_cb(\\@list, $callback_name)");
5652 3037 0 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 3037 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5661 1 3036 if (!cb) {
5664 12 3024 if (!cb->predicate && !cb->perl_callback) {
0 12 if (!cb->predicate && !cb->perl_callback) {
5676 3024 12 if (cb->predicate) {
5677 27151 3024 for (i = 0; i < len; i++) {
5679 27151 0 if (svp && cb->predicate(aTHX_ *svp)) {
13075 14076 if (svp && cb->predicate(aTHX_ *svp)) {
5684 12 0 } else if (cb->perl_callback) {
5685 76 12 for (i = 0; i < len; i++) {
5687 0 76 if (!svp) continue;
5695 0 76 PUSHMARK(SP);
5696 0 76 XPUSHs(elem);
5700 76 0 if (call_count > 0) {
5705 76 0 FREETMPS; LEAVE;
5707 39 37 if (matches) {
5716 13114 3036 for (i = 0; i < count; i++) {
5718 13114 0 if (svp) {
5719 0 13114 XPUSHs(sv_2mortal(SvREFCNT_inc(*svp)));
5730 0 6165 if (items != 2) croak("Usage: Func::Util::count_cb(\\@list, $callback_name)");
5733 6165 0 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 6165 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5742 1 6164 if (!cb) {
5745 1004 5160 if (!cb->predicate && !cb->perl_callback) {
0 1004 if (!cb->predicate && !cb->perl_callback) {
5753 5160 1004 if (cb->predicate) {
5754 1041389 5160 for (i = 0; i < len; i++) {
5756 1041389 0 if (svp && cb->predicate(aTHX_ *svp)) {
1022177 19212 if (svp && cb->predicate(aTHX_ *svp)) {
5760 1004 0 } else if (cb->perl_callback) {
5761 9029 1004 for (i = 0; i < len; i++) {
5763 0 9029 if (!svp) continue;
5770 0 9029 PUSHMARK(SP);
5771 0 9029 XPUSHs(*svp);
5775 9029 0 if (call_count > 0) {
5780 9029 0 FREETMPS; LEAVE;
5782 3010 6019 if (matches) {
5794 0 2013 if (items != 2) croak("Usage: Func::Util::partition_cb(\\@list, $callback_name)");
5797 2012 1 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 2012 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5806 1 2011 if (!cb) {
5809 2 2009 if (!cb->predicate && !cb->perl_callback) {
0 2 if (!cb->predicate && !cb->perl_callback) {
5820 2009 2 if (cb->predicate) {
5821 18040 2009 for (i = 0; i < len; i++) {
5823 0 18040 if (!svp) continue;
5824 11020 7020 if (cb->predicate(aTHX_ *svp)) {
5830 2 0 } else if (cb->perl_callback) {
5831 9 2 for (i = 0; i < len; i++) {
5833 0 9 if (!svp) continue;
5843 0 9 PUSHMARK(SP);
5844 0 9 XPUSHs(*svp);
5850 9 0 if (call_count > 0) {
5856 9 0 FREETMPS;
5859 4 5 if (matches) {
5876 0 3019 if (items != 2) croak("Usage: Func::Util::final_cb(\\@list, $callback_name)");
5879 3018 1 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
0 3018 if (!SvROK(list_sv) || SvTYPE(SvRV(list_sv)) != SVt_PVAV) {
5888 1 3017 if (!cb) {
5891 1 3016 if (!cb->predicate && !cb->perl_callback) {
0 1 if (!cb->predicate && !cb->perl_callback) {
5898 3016 1 if (cb->predicate) {
5900 10033 6 for (i = len - 1; i >= 0; i--) {
5902 10033 0 if (svp && cb->predicate(aTHX_ *svp)) {
3010 7023 if (svp && cb->predicate(aTHX_ *svp)) {
5907 1 0 } else if (cb->perl_callback) {
5909 1 0 for (i = len - 1; i >= 0; i--) {
5911 0 1 if (!svp) continue;
5918 0 1 PUSHMARK(SP);
5919 0 1 XPUSHs(*svp);
5923 1 0 if (count > 0) {
5928 1 0 FREETMPS; LEAVE;
5930 1 0 if (matches) {
5943 0 20 if (items != 2) croak("Usage: Func::Util::register_callback($name, \\&coderef)");
5949 20 0 if (!SvROK(coderef) || SvTYPE(SvRV(coderef)) != SVt_PVCV) {
0 20 if (!SvROK(coderef) || SvTYPE(SvRV(coderef)) != SVt_PVCV) {
5959 3 17 if (get_registered_callback(aTHX_ name)) {
5980 0 6018 if (items != 1) croak("Usage: Func::Util::has_callback($name)");
5985 4014 2004 if (has_callback(aTHX_ name)) {
6032 0 15 if (items != 2)
6040 14 1 if (!SvROK(cv_sv) || SvTYPE(SvRV(cv_sv)) != SVt_PVCV)
2 12 if (!SvROK(cv_sv) || SvTYPE(SvRV(cv_sv)) != SVt_PVCV)
6044 1 11 if (hv_exists(g_export_hash, name, name_len))
6062 0 17 if (items != 1)
6068 14 3 if (hv_exists(g_export_hash, name, name_len)) {
6084 354 3 while ((entry = hv_iternext(g_export_hash))) {
6103 0 7 if (!g_export_hash) {
6108 0 7 if (hv_exists(g_export_hash, name, name_len)) {
6280 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));
6291 456 83 for (i = 1; i < items; i++) {
6295 454 2 if (!entry_sv || !*entry_sv) {
0 454 if (!entry_sv || !*entry_sv) {
6302 446 8 if (entry->xs_func) {
6312 8 0 } else if (entry->perl_cv) {
6315 8 0 if (gv) {
6512 0 53 Newxz(g_memos, g_memo_size, MemoizedFunc);
6516 0 53 Newxz(g_lazies, g_lazy_size, LazyValue);
6520 0 53 Newxz(g_always_values, g_always_size, SV*);
6524 0 53 Newxz(g_onces, g_once_size, OnceFunc);
6528 0 53 Newxz(g_partials, g_partial_size, PartialFunc);