debug assert for proper getter indices

This commit is contained in:
dzaima 2025-06-09 18:47:16 +03:00
parent c294b07f5f
commit b95fb8097d
4 changed files with 11 additions and 11 deletions

View File

@ -39,10 +39,10 @@ static Arr* m_fillslice(Arr* p, B* ptr, usz ia, B fill) {
static Arr* fillarr_slice (B x, usz s, usz ia) { FillArr* a=c(FillArr ,x); return m_fillslice((Arr*)a, a->a+s, ia, inc(a->fill)); } static Arr* fillarr_slice (B x, usz s, usz ia) { FillArr* a=c(FillArr ,x); return m_fillslice((Arr*)a, a->a+s, ia, inc(a->fill)); }
static Arr* fillslice_slice(B x, usz s, usz ia) { FillSlice* a=c(FillSlice,x); Arr* r=m_fillslice(ptr_inc(a->p), a->a+s, ia, inc(a->fill)); decG(x); return r; } static Arr* fillslice_slice(B x, usz s, usz ia) { FillSlice* a=c(FillSlice,x); Arr* r=m_fillslice(ptr_inc(a->p), a->a+s, ia, inc(a->fill)); decG(x); return r; }
static B fillarr_get (Arr* x, usz n) { assert(PTY(x)==t_fillarr ); return inc(((FillArr* )x)->a[n]); } static B fillarr_get (Arr* x, usz n) { assert(PTY(x)==t_fillarr && n<PIA(x)); return inc(((FillArr* )x)->a[n]); }
static B fillslice_get (Arr* x, usz n) { assert(PTY(x)==t_fillslice); return inc(((FillSlice*)x)->a[n]); } static B fillslice_get (Arr* x, usz n) { assert(PTY(x)==t_fillslice && n<PIA(x)); return inc(((FillSlice*)x)->a[n]); }
static B fillarr_getU (Arr* x, usz n) { assert(PTY(x)==t_fillarr ); return ((FillArr* )x)->a[n] ; } static B fillarr_getU (Arr* x, usz n) { assert(PTY(x)==t_fillarr && n<PIA(x)); return ((FillArr* )x)->a[n] ; }
static B fillslice_getU(Arr* x, usz n) { assert(PTY(x)==t_fillslice); return ((FillSlice*)x)->a[n] ; } static B fillslice_getU(Arr* x, usz n) { assert(PTY(x)==t_fillslice && n<PIA(x)); return ((FillSlice*)x)->a[n] ; }
DEF_FREE(fillarr) { DEF_FREE(fillarr) {
decSh(x); decSh(x);
B* p = ((FillArr*)x)->a; B* p = ((FillArr*)x)->a;

View File

@ -28,10 +28,10 @@ static Arr* m_hslice(Arr* p, B* ptr, usz ia) {
static Arr* harr_slice (B x, usz s, usz ia) { return m_hslice(a(x), c(HArr,x)->a+s, ia); } static Arr* harr_slice (B x, usz s, usz ia) { return m_hslice(a(x), c(HArr,x)->a+s, ia); }
static Arr* hslice_slice(B x, usz s, usz ia) { Arr* p = ptr_inc(c(Slice,x)->p); Arr* r = m_hslice(p, c(HSlice,x)->a+s, ia); decG(x); return r; } static Arr* hslice_slice(B x, usz s, usz ia) { Arr* p = ptr_inc(c(Slice,x)->p); Arr* r = m_hslice(p, c(HSlice,x)->a+s, ia); decG(x); return r; }
static B harr_get (Arr* x, usz n) { assert(PTY(x)==t_harr ); return inc(harrv_ptr (x)[n]); } static B harr_get (Arr* x, usz n) { assert(PTY(x)==t_harr && n<PIA(x)); return inc(harrv_ptr (x)[n]); }
static B hslice_get (Arr* x, usz n) { assert(PTY(x)==t_hslice); return inc(hslicev_ptr(x)[n]); } static B hslice_get (Arr* x, usz n) { assert(PTY(x)==t_hslice && n<PIA(x)); return inc(hslicev_ptr(x)[n]); }
static B harr_getU (Arr* x, usz n) { assert(PTY(x)==t_harr ); return harrv_ptr (x)[n] ; } static B harr_getU (Arr* x, usz n) { assert(PTY(x)==t_harr && n<PIA(x)); return harrv_ptr (x)[n] ; }
static B hslice_getU(Arr* x, usz n) { assert(PTY(x)==t_hslice); return hslicev_ptr(x)[n] ; } static B hslice_getU(Arr* x, usz n) { assert(PTY(x)==t_hslice && n<PIA(x)); return hslicev_ptr(x)[n] ; }
DEF_FREE(harr) { DEF_FREE(harr) {
decSh(x); decSh(x);
B* p = ((HArr*)x)->a; // don't use harrv_ptr so type isn't checked B* p = ((HArr*)x)->a; // don't use harrv_ptr so type isn't checked

View File

@ -80,7 +80,7 @@ static Arr* bitarr_slice(B x, usz s, usz ia) {
return r; return r;
} }
static B bitarr_get(Arr* x, usz n) { assert(PTY(x)==t_bitarr); return bitp_get((u64*)((BitArr*)x)->a, n)? m_f64(1) : m_f64(0); } static B bitarr_get(Arr* x, usz n) { assert(PTY(x)==t_bitarr && n<PIA(x)); return bitp_get((u64*)((BitArr*)x)->a, n)? m_f64(1) : m_f64(0); }
static bool bitarr_canStore(B x) { return q_bit(x); } static bool bitarr_canStore(B x) { return q_bit(x); }
static void bitarr_init(void) { static void bitarr_init(void) {

View File

@ -11,8 +11,8 @@ static Arr* TP(m_,slice) (Arr* p, TEl* ptr, usz ia) {
static Arr* TP(,arr_slice) (B x, usz s, usz ia) { return TP(m_,slice) (a(x), ((TEl*)c(TyArr,x)->a)+s, ia); } static Arr* TP(,arr_slice) (B x, usz s, usz ia) { return TP(m_,slice) (a(x), ((TEl*)c(TyArr,x)->a)+s, ia); }
static Arr* TP(,slice_slice) (B x, usz s, usz ia) { Arr* p = ptr_inc(c(Slice,x)->p); Arr* r = TP(m_,slice) (p, ((TEl*)c(TySlice,x)->a)+s, ia); decG(x); return r; } static Arr* TP(,slice_slice) (B x, usz s, usz ia) { Arr* p = ptr_inc(c(Slice,x)->p); Arr* r = TP(m_,slice) (p, ((TEl*)c(TySlice,x)->a)+s, ia); decG(x); return r; }
static B TP(,arr_get) (Arr* x, usz n) { assert(PTY(x)==T_ARR ); return TP(m_,) (((TEl*)((TyArr* )x)->a)[n]); } static B TP(,arr_get) (Arr* x, usz n) { assert(PTY(x)==T_ARR && n<PIA(x)); return TP(m_,) (((TEl*)((TyArr* )x)->a)[n]); }
static B TP(,slice_get) (Arr* x, usz n) { assert(PTY(x)==T_SLICE); return TP(m_,) (((TEl*)((TySlice*)x)->a)[n]); } static B TP(,slice_get) (Arr* x, usz n) { assert(PTY(x)==T_SLICE && n<PIA(x)); return TP(m_,) (((TEl*)((TySlice*)x)->a)[n]); }
static bool TP(,arr_canStore) (B x) { return TP(q_,) (x); } static bool TP(,arr_canStore) (B x) { return TP(q_,) (x); }
static void TP(,arr_init)() { static void TP(,arr_init)() {