debug assert for proper getter indices
This commit is contained in:
parent
c294b07f5f
commit
b95fb8097d
@ -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;
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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)() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user