h(arr|any|slice)v?_ptr

This commit is contained in:
dzaima 2024-09-09 17:10:52 +03:00
parent a3be4dbd96
commit 15401e8dfb

View File

@ -108,8 +108,12 @@ static B m_hunit(B x) { // consumes
return r.b;
}
static B* harr_ptr(B x) { VTY(x,t_harr); return c(HArr,x)->a; }
static B* hany_ptr(B x) { return TY(x)==t_hslice? c(HSlice,x)->a : harr_ptr(x); }
static B* harrv_ptr(void* x) { u8 t = PTY((Value*)x); assert(t==t_harr || t==t_harrPartial); return ((HArr*)x)->a; }
static B* hslicev_ptr(void* x) { VTY(taga(x),t_hslice); return ((HSlice*)x)->a; }
static B* hanyv_ptr(void* x) { return PTY((Value*)x)==t_hslice? hslicev_ptr(x) : harrv_ptr(x); }
static B* harr_ptr(B x) { return harrv_ptr(a(x)); }
static B* hslice_ptr(B x) { return hslicev_ptr(a(x)); }
static B* hany_ptr(B x) { return hanyv_ptr(a(x)); }
Arr* cpyHArr(B x); // consumes
static HArr* toHArr(B x) { return TY(x)==t_harr? c(HArr,x) : (HArr*) cpyHArr(x); }