diff --git a/src/core/fillarr.c b/src/core/fillarr.c index 273aab07..2d830980 100644 --- a/src/core/fillarr.c +++ b/src/core/fillarr.c @@ -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* 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 fillslice_get (Arr* x, usz n) { assert(PTY(x)==t_fillslice); 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 fillslice_getU(Arr* x, usz n) { assert(PTY(x)==t_fillslice); return ((FillSlice*)x)->a[n] ; } +static B fillarr_get (Arr* x, usz n) { assert(PTY(x)==t_fillarr && na[n]); } +static B fillslice_get (Arr* x, usz n) { assert(PTY(x)==t_fillslice && na[n]); } +static B fillarr_getU (Arr* x, usz n) { assert(PTY(x)==t_fillarr && na[n] ; } +static B fillslice_getU(Arr* x, usz n) { assert(PTY(x)==t_fillslice && na[n] ; } DEF_FREE(fillarr) { decSh(x); B* p = ((FillArr*)x)->a; diff --git a/src/core/harr.c b/src/core/harr.c index 4b251c41..4b1abc7e 100644 --- a/src/core/harr.c +++ b/src/core/harr.c @@ -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* 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 hslice_get (Arr* x, usz n) { assert(PTY(x)==t_hslice); 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 hslice_getU(Arr* x, usz n) { assert(PTY(x)==t_hslice); return hslicev_ptr(x)[n] ; } +static B harr_get (Arr* x, usz n) { assert(PTY(x)==t_harr && na; // don't use harrv_ptr so type isn't checked diff --git a/src/core/tyarr.c b/src/core/tyarr.c index d637a418..e032d788 100644 --- a/src/core/tyarr.c +++ b/src/core/tyarr.c @@ -80,7 +80,7 @@ static Arr* bitarr_slice(B x, usz s, usz ia) { 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 && na, n)? m_f64(1) : m_f64(0); } static bool bitarr_canStore(B x) { return q_bit(x); } static void bitarr_init(void) { diff --git a/src/core/tyarrTemplate.c b/src/core/tyarrTemplate.c index 2db8d3bd..f52bcf68 100644 --- a/src/core/tyarrTemplate.c +++ b/src/core/tyarrTemplate.c @@ -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(,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(,slice_get) (Arr* x, usz n) { assert(PTY(x)==T_SLICE); return TP(m_,) (((TEl*)((TySlice*)x)->a)[n]); } +static B TP(,arr_get) (Arr* x, usz n) { assert(PTY(x)==T_ARR && na)[n]); } +static B TP(,slice_get) (Arr* x, usz n) { assert(PTY(x)==T_SLICE && na)[n]); } static bool TP(,arr_canStore) (B x) { return TP(q_,) (x); } static void TP(,arr_init)() {