Unify integer and character Bins

This commit is contained in:
Marshall Lochbaum 2022-08-28 09:16:09 -04:00
parent bcf3c4dbd0
commit 139faee0a1

View File

@ -293,9 +293,24 @@ B GRADE_CAT(c2)(B t, B w, B x) {
u8 fl = GRADE_UD(fl_asc,fl_dsc);
if (we<=el_i32 & xe<=el_i32) {
w = toI32Any(w); i32* wi = i32any_ptr(w);
x = toI32Any(x); i32* xi = i32any_ptr(x);
if (LIKELY(we<el_B & xe<el_B)) {
if (we<el_c8) { // number
if (xe<el_c8) {
if (we>el_i32 | xe>el_i32) goto gen;
w=toI32Any(w); x=toI32Any(x);
} else {
for (u64 i=0; i<xia; i++) rp[i]=wia; goto done;
}
} else { // character
if (xe<el_c8) {
Arr* ra=allZeroes(xia); arr_shVec(ra);
decG(r); r=taga(ra); goto done;
} else {
w=toC32Any(w); x=toC32Any(x);
}
}
i32* wi = tyany_ptr(w);
i32* xi = tyany_ptr(x);
if (CHECK_VALID && !FL_HAS(w,fl)) {
for (i64 i = 0; i < (i64)wia-1; i++) if ((wi[i]-wi[i+1]) GRADE_UD(>,<) 0) thrM(GRADE_CHR": 𝕨 must be sorted"GRADE_UD(," in descending order"));
FL_SET(w, fl);
@ -312,6 +327,7 @@ B GRADE_CAT(c2)(B t, B w, B x) {
rp[i] = s;
}
} else {
gen:
SGetU(x)
SLOW2("𝕨"GRADE_CHR"𝕩", w, x);
B* wp = arr_bptr(w);
@ -336,6 +352,7 @@ B GRADE_CAT(c2)(B t, B w, B x) {
rp[i] = s;
}
}
done:
decG(w);decG(x);
return r;
}