From 85dd03ac11ff7805dbb0cd218fafcb93ca8f2f66 Mon Sep 17 00:00:00 2001 From: dzaima Date: Thu, 9 Sep 2021 17:43:12 +0300 Subject: [PATCH] more types for join & add --- src/utils/mut.h | 67 ++++++++++++++++++------------------------------- 1 file changed, 24 insertions(+), 43 deletions(-) diff --git a/src/utils/mut.h b/src/utils/mut.h index 341d3d05..71ef5376 100644 --- a/src/utils/mut.h +++ b/src/utils/mut.h @@ -237,24 +237,14 @@ static B vec_join(B w, B x) { // consumes both if (v(w)->refc==1) { u64 wsz = mm_size(v(w)); u8 wt = v(w)->type; - if (wt==t_i32arr && fsizeof(I32Arr,a,i32,ria)ia = ria; - memcpy(i32arr_ptr(w)+wia, i32any_ptr(x), xia*4); - dec(x); - return w; - } - if (wt==t_c32arr && fsizeof(C32Arr,a,u32,ria)ia = ria; - memcpy(c32arr_ptr(w)+wia, c32any_ptr(x), xia*4); - dec(x); - return w; - } - if (wt==t_f64arr && fsizeof(F64Arr,a,f64,ria)ia = ria; - memcpy(f64arr_ptr(w)+wia, f64any_ptr(x), xia*8); - dec(x); - return w; - } + // TODO f64∾i32, i32∾i8, c32∾c8 etc + if (wt==t_i8arr && fsizeof(I8Arr ,a,i8 ,ria)ia=ria; memcpy(i8arr_ptr (w)+wia, i8any_ptr (x), xia*1); dec(x); return w; } + if (wt==t_i16arr && fsizeof(I16Arr,a,i16,ria)ia=ria; memcpy(i16arr_ptr(w)+wia, i16any_ptr(x), xia*2); dec(x); return w; } + if (wt==t_i32arr && fsizeof(I32Arr,a,i32,ria)ia=ria; memcpy(i32arr_ptr(w)+wia, i32any_ptr(x), xia*4); dec(x); return w; } + if (wt==t_c8arr && fsizeof(C8Arr ,a,u8, ria)ia=ria; memcpy(c8arr_ptr (w)+wia, c8any_ptr (x), xia*1); dec(x); return w; } + if (wt==t_c16arr && fsizeof(C16Arr,a,u16,ria)ia=ria; memcpy(c16arr_ptr(w)+wia, c16any_ptr(x), xia*2); dec(x); return w; } + if (wt==t_c32arr && fsizeof(C32Arr,a,u32,ria)ia=ria; memcpy(c32arr_ptr(w)+wia, c32any_ptr(x), xia*4); dec(x); return w; } + if (wt==t_f64arr && fsizeof(F64Arr,a,f64,ria)ia=ria; memcpy(f64arr_ptr(w)+wia, f64any_ptr(x), xia*8); dec(x); return w; } if (wt==t_harr && fsizeof(HArr,a,B,ria)ia = ria; B* rp = harr_ptr(w)+wia; @@ -264,16 +254,15 @@ static B vec_join(B w, B x) { // consumes both B* xp = xt==t_harr? harr_ptr(x) : xt==t_hslice? c(HSlice, x)->a : fillarr_ptr(a(x)); memcpy(rp, xp, xia*sizeof(B)); for (usz i = 0; i < xia; i++) inc(rp[i]); - } else if (xe==el_i32) { - i32* xp = i32any_ptr(x); - for (usz i = 0; i < xia; i++) rp[i] = m_i32(xp[i]); - } else if (xe==el_c32) { - u32* xp = c32any_ptr(x); - for (usz i = 0; i < xia; i++) rp[i] = m_c32(xp[i]); - } else if (xe==el_f64) { - f64* xp = f64any_ptr(x); - for (usz i = 0; i < xia; i++) rp[i] = m_f64(xp[i]); - } else { + } + else if (xe==el_i8 ) { i8* xp=i8any_ptr (x); for (usz i=0; irefc==1) { u64 wsz = mm_size(v(w)); u8 wt = v(w)->type; - if (wt==t_i32arr && TYARR_SZ(I32,ria)ia = ria; - i32arr_ptr(w)[wia] = o2iu(x); - return true; - } - if (wt==t_c32arr && TYARR_SZ(C32,ria)ia = ria; - c32arr_ptr(w)[wia] = o2cu(x); - return true; - } - if (wt==t_f64arr && TYARR_SZ(F64,ria)ia = ria; - f64arr_ptr(w)[wia] = o2fu(x); - return true; - } + if (wt==t_i8arr && TYARR_SZ(I8 ,ria)ia=ria; i8arr_ptr (w)[wia]=o2iu(x); return true; } + if (wt==t_i16arr && TYARR_SZ(I16,ria)ia=ria; i16arr_ptr(w)[wia]=o2iu(x); return true; } + if (wt==t_i32arr && TYARR_SZ(I32,ria)ia=ria; i32arr_ptr(w)[wia]=o2iu(x); return true; } + if (wt==t_c8arr && TYARR_SZ(C8 ,ria)ia=ria; c8arr_ptr (w)[wia]=o2cu(x); return true; } + if (wt==t_c16arr && TYARR_SZ(C16,ria)ia=ria; c16arr_ptr(w)[wia]=o2cu(x); return true; } + if (wt==t_c32arr && TYARR_SZ(C32,ria)ia=ria; c32arr_ptr(w)[wia]=o2cu(x); return true; } + if (wt==t_f64arr && TYARR_SZ(F64,ria)ia=ria; f64arr_ptr(w)[wia]=o2fu(x); return true; } if (wt==t_harr && fsizeof(HArr,a,B,ria)ia = ria; harr_ptr(w)[wia] = x;