From 433b3e2b7846f8a9c2506397c0b4d1394bf7700d Mon Sep 17 00:00:00 2001 From: Tomasz Konojacki Date: Tue, 3 Mar 2020 00:45:04 +0100 Subject: pp_sort.c: small refactoring This will make the future changes a bit easier. --- pp_sort.c | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) (limited to 'pp_sort.c') diff --git a/pp_sort.c b/pp_sort.c index 339122d98e..789c843660 100644 --- a/pp_sort.c +++ b/pp_sort.c @@ -836,21 +836,34 @@ PP(pp_sort) else { MEXTEND(SP, 20); /* Can't afford stack realloc on signal. */ start = ORIGMARK+1; - Perl_sortsv_flags(aTHX_ start, max, - (priv & OPpSORT_NUMERIC) - ? ( ( ( priv & OPpSORT_INTEGER) || all_SIVs) - ? ( overloading ? S_amagic_i_ncmp : S_sv_i_ncmp) - : ( overloading ? S_amagic_ncmp : S_sv_ncmp ) ) - : ( + if (priv & OPpSORT_NUMERIC) { + if ((priv & OPpSORT_INTEGER) || all_SIVs) { + if (overloading) + Perl_sortsv_flags(aTHX_ start, max, S_amagic_i_ncmp, sort_flags); + else + Perl_sortsv_flags(aTHX_ start, max, S_sv_i_ncmp, sort_flags); + } + else { + if (overloading) + Perl_sortsv_flags(aTHX_ start, max, S_amagic_ncmp, sort_flags); + else + Perl_sortsv_flags(aTHX_ start, max, S_sv_ncmp, sort_flags); + } + } #ifdef USE_LOCALE_COLLATE - IN_LC_RUNTIME(LC_COLLATE) - ? ( overloading - ? (SVCOMPARE_t)S_amagic_cmp_locale - : (SVCOMPARE_t)sv_cmp_locale_static) - : + else if(IN_LC_RUNTIME(LC_COLLATE)) { + if (overloading) + Perl_sortsv_flags(aTHX_ start, max, S_amagic_cmp_locale, sort_flags); + else + Perl_sortsv_flags(aTHX_ start, max, sv_cmp_locale_static, sort_flags); + } #endif - ( overloading ? (SVCOMPARE_t)S_amagic_cmp : (SVCOMPARE_t)sv_cmp_static)), - sort_flags); + else { + if (overloading) + Perl_sortsv_flags(aTHX_ start, max, S_amagic_cmp, sort_flags); + else + Perl_sortsv_flags(aTHX_ start, max, sv_cmp_static, sort_flags); + } } if ((priv & OPpSORT_REVERSE) != 0) { SV **q = start+max-1; -- cgit v1.2.1