•internal.ListVariations options
This commit is contained in:
parent
b9fef0394e
commit
48a14a8854
@ -60,10 +60,20 @@ B info_c1(B t, B x) {
|
|||||||
|
|
||||||
|
|
||||||
B listVariations_c2(B t, B w, B x) {
|
B listVariations_c2(B t, B w, B x) {
|
||||||
if (!isArr(x)) thrM("•internal.ListVariations: Argument must be an array");
|
if (!isArr(x)) thrM("•internal.ListVariations: 𝕩 must be an array");
|
||||||
i32 wv = o2i(w);
|
if (!isArr(w) || rnk(w)!=1) thrM("•internal.ListVariations: 𝕨 must be a list");
|
||||||
|
usz wia = a(w)->ia;
|
||||||
|
BS2B wgetU = TI(w).getU;
|
||||||
|
bool c_incr=false, c_changeFill=false;
|
||||||
|
for (usz i = 0; i < wia; i++) {
|
||||||
|
u32 c = o2c(wgetU(w, i));
|
||||||
|
if (c=='i') c_incr=true;
|
||||||
|
else if (c=='f') c_changeFill=true;
|
||||||
|
else thrF("internal.ListVariations: Unknown option '%c' in 𝕨", c);
|
||||||
|
}
|
||||||
|
|
||||||
B xf = getFillQ(x);
|
B xf = getFillQ(x);
|
||||||
bool ah = wv || noFill(xf);
|
bool ah = c_changeFill || noFill(xf);
|
||||||
bool ai32=false, af64=false, ac32=false;
|
bool ai32=false, af64=false, ac32=false;
|
||||||
usz xia = a(x)->ia;
|
usz xia = a(x)->ia;
|
||||||
BS2B xgetU = TI(x).getU;
|
BS2B xgetU = TI(x).getU;
|
||||||
@ -82,17 +92,17 @@ B listVariations_c2(B t, B w, B x) {
|
|||||||
}
|
}
|
||||||
} else ai32=af64=false;
|
} else ai32=af64=false;
|
||||||
B r = inc(bi_emptyHVec);
|
B r = inc(bi_emptyHVec);
|
||||||
if(ai32) { r=vec_add(r,m_str32(U"Ai32")); r=vec_add(r,m_str32(U"Ai32Inc")); r=vec_add(r,m_str32(U"Si32")); r=vec_add(r,m_str32(U"Si32Inc")); }
|
if(ai32) { r=vec_add(r,m_str32(U"Ai32")); r=vec_add(r,m_str32(U"Si32")); if(c_incr) {r=vec_add(r,m_str32(U"Ai32Inc")); r=vec_add(r,m_str32(U"Si32Inc"));} }
|
||||||
if(af64) { r=vec_add(r,m_str32(U"Af64")); r=vec_add(r,m_str32(U"Af64Inc")); r=vec_add(r,m_str32(U"Sf64")); r=vec_add(r,m_str32(U"Sf64Inc")); }
|
if(af64) { r=vec_add(r,m_str32(U"Af64")); r=vec_add(r,m_str32(U"Sf64")); if(c_incr) {r=vec_add(r,m_str32(U"Af64Inc")); r=vec_add(r,m_str32(U"Sf64Inc"));} }
|
||||||
if(ac32) { r=vec_add(r,m_str32(U"Ac32")); r=vec_add(r,m_str32(U"Ac32Inc")); r=vec_add(r,m_str32(U"Sc32")); r=vec_add(r,m_str32(U"Sc32Inc")); }
|
if(ac32) { r=vec_add(r,m_str32(U"Ac32")); r=vec_add(r,m_str32(U"Sc32")); if(c_incr) {r=vec_add(r,m_str32(U"Ac32Inc")); r=vec_add(r,m_str32(U"Sc32Inc"));} }
|
||||||
if(ah) { r=vec_add(r,m_str32(U"Ah" )); r=vec_add(r,m_str32(U"AhInc")); r=vec_add(r,m_str32(U"Sh" )); r=vec_add(r,m_str32(U"ShInc")); }
|
if(ah) { r=vec_add(r,m_str32(U"Ah" )); r=vec_add(r,m_str32(U"Sh" )); if(c_incr) {r=vec_add(r,m_str32(U"AhInc")); r=vec_add(r,m_str32(U"ShInc")); } }
|
||||||
{ r=vec_add(r,m_str32(U"Af" )); r=vec_add(r,m_str32(U"AfInc")); r=vec_add(r,m_str32(U"Sf" )); r=vec_add(r,m_str32(U"SfInc")); }
|
{ r=vec_add(r,m_str32(U"Af" )); r=vec_add(r,m_str32(U"Sf" )); if(c_incr) {r=vec_add(r,m_str32(U"AfInc")); r=vec_add(r,m_str32(U"SfInc")); } }
|
||||||
dec(x);
|
dec(x);
|
||||||
dec(xf);
|
dec(xf);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
B listVariations_c1(B t, B x) {
|
B listVariations_c1(B t, B x) {
|
||||||
return listVariations_c2(t, m_i32(1), x);
|
return listVariations_c2(t, m_str32(U"if"), x);
|
||||||
}
|
}
|
||||||
static bool u32_get(u32** cv, u32* cE, u32* x) {
|
static bool u32_get(u32** cv, u32* cE, u32* x) {
|
||||||
u32* c = *cv;
|
u32* c = *cv;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user