reorganize typed arr files
This commit is contained in:
parent
7547fc1679
commit
8aa0687ef9
@ -323,7 +323,7 @@ B timed_c1(B d, B x) { B f = c(Md1D,d)->f;
|
|||||||
u64 sns = nsTime();
|
u64 sns = nsTime();
|
||||||
dec(c1(f, x));
|
dec(c1(f, x));
|
||||||
u64 ens = nsTime();
|
u64 ens = nsTime();
|
||||||
return m_f64((ens-sns)/1e9);
|
return m_f64((ens-sns)*1e-9);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -551,7 +551,7 @@ B monoTime_c1(B t, B x) {
|
|||||||
dec(x);
|
dec(x);
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||||
return m_f64(ts.tv_sec + ts.tv_nsec/1e9);
|
return m_f64(ts.tv_sec + ts.tv_nsec*1e-9);
|
||||||
}
|
}
|
||||||
B delay_c1(B t, B x) {
|
B delay_c1(B t, B x) {
|
||||||
f64 sf = o2f(x);
|
f64 sf = o2f(x);
|
||||||
|
|||||||
@ -1,24 +1,5 @@
|
|||||||
#include "../core.h"
|
#include "../core.h"
|
||||||
|
|
||||||
B m_str8(usz sz, char* s) {
|
|
||||||
u32* rp; B r = m_c32arrv(&rp, sz);
|
|
||||||
for (u64 i = 0; i < sz; i++) rp[i] = (u32)s[i];
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
B m_str8l(char* s) {
|
|
||||||
usz sz = strlen(s);
|
|
||||||
u32* rp; B r = m_c32arrv(&rp, sz);
|
|
||||||
for (u64 i = 0; i < sz; i++) rp[i] = (u32)s[i];
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
B m_str32(u32* s) {
|
|
||||||
usz sz = 0; while(s[sz]) sz++;
|
|
||||||
u32* rp; B r = m_c32arrv(&rp, sz);
|
|
||||||
for (usz i = 0; i < sz; i++) rp[i] = s[i];
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Arr* m_c32slice(Arr* p, u32* ptr, usz ia) {
|
static Arr* m_c32slice(Arr* p, u32* ptr, usz ia) {
|
||||||
C32Slice* r = m_arr(sizeof(C32Slice), t_c32slice, ia);
|
C32Slice* r = m_arr(sizeof(C32Slice), t_c32slice, ia);
|
||||||
r->p = p;
|
r->p = p;
|
||||||
@ -32,8 +13,6 @@ static B c32arr_get (B x, usz n) { VTY(x,t_c32arr ); return m_c32(c(C32Arr ,x
|
|||||||
static B c32slice_get(B x, usz n) { VTY(x,t_c32slice); return m_c32(c(C32Slice,x)->a[n]); }
|
static B c32slice_get(B x, usz n) { VTY(x,t_c32slice); return m_c32(c(C32Slice,x)->a[n]); }
|
||||||
static bool c32arr_canStore(B x) { return isC32(x); }
|
static bool c32arr_canStore(B x) { return isC32(x); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void c32arr_init() {
|
void c32arr_init() {
|
||||||
TIi(t_c32arr,get) = c32arr_get; TIi(t_c32slice,get) = c32slice_get;
|
TIi(t_c32arr,get) = c32arr_get; TIi(t_c32slice,get) = c32slice_get;
|
||||||
TIi(t_c32arr,getU) = c32arr_get; TIi(t_c32slice,getU) = c32slice_get;
|
TIi(t_c32arr,getU) = c32arr_get; TIi(t_c32slice,getU) = c32slice_get;
|
||||||
@ -53,3 +32,22 @@ void c32arr_init() {
|
|||||||
fillarr_setFill(emptySVec, emptyCVec());
|
fillarr_setFill(emptySVec, emptyCVec());
|
||||||
bi_emptySVec = taga(emptySVec); gc_add(bi_emptySVec);
|
bi_emptySVec = taga(emptySVec); gc_add(bi_emptySVec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
B m_str8(usz sz, char* s) {
|
||||||
|
u32* rp; B r = m_c32arrv(&rp, sz);
|
||||||
|
for (u64 i = 0; i < sz; i++) rp[i] = (u32)s[i];
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
B m_str8l(char* s) {
|
||||||
|
usz sz = strlen(s);
|
||||||
|
u32* rp; B r = m_c32arrv(&rp, sz);
|
||||||
|
for (u64 i = 0; i < sz; i++) rp[i] = (u32)s[i];
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
B m_str32(u32* s) {
|
||||||
|
usz sz = 0; while(s[sz]) sz++;
|
||||||
|
u32* rp; B r = m_c32arrv(&rp, sz);
|
||||||
|
for (usz i = 0; i < sz; i++) rp[i] = s[i];
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|||||||
@ -27,13 +27,12 @@ static Arr* m_c32arrp(u32** p, usz ia) {
|
|||||||
return (Arr*)r;
|
return (Arr*)r;
|
||||||
}
|
}
|
||||||
|
|
||||||
B m_str8(usz sz, char* s);
|
|
||||||
B m_str8l(char* s);
|
|
||||||
B m_str32(u32* s);
|
|
||||||
|
|
||||||
static u32* c32arr_ptr(B x) { VTY(x, t_c32arr); return c(C32Arr,x)->a; }
|
static u32* c32arr_ptr(B x) { VTY(x, t_c32arr); return c(C32Arr,x)->a; }
|
||||||
static u32* c32any_ptr(B x) { assert(isArr(x)); u8 t=v(x)->type; if(t==t_c32arr) return c(C32Arr,x)->a; assert(t==t_c32slice); return c(C32Slice,x)->a; }
|
static u32* c32any_ptr(B x) { assert(isArr(x)); u8 t=v(x)->type; if(t==t_c32arr) return c(C32Arr,x)->a; assert(t==t_c32slice); return c(C32Slice,x)->a; }
|
||||||
|
|
||||||
|
B m_str8(usz sz, char* s);
|
||||||
|
B m_str8l(char* s);
|
||||||
|
B m_str32(u32* s);
|
||||||
|
|
||||||
static C32Arr* toC32Arr(B x) {
|
static C32Arr* toC32Arr(B x) {
|
||||||
if (v(x)->type==t_c32arr) return c(C32Arr,x);
|
if (v(x)->type==t_c32arr) return c(C32Arr,x);
|
||||||
|
|||||||
@ -1,18 +1,12 @@
|
|||||||
#include "../core.h"
|
#include "../core.h"
|
||||||
|
|
||||||
NOINLINE B m_caf64(usz sz, f64* a) {
|
|
||||||
f64* rp; B r = m_f64arrv(&rp, sz);
|
|
||||||
for (usz i = 0; i < sz; i++) rp[i] = a[i];
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Arr* m_f64slice(Arr* p, f64* ptr, usz ia) {
|
static Arr* m_f64slice(Arr* p, f64* ptr, usz ia) {
|
||||||
F64Slice* r = m_arr(sizeof(F64Slice), t_f64slice, ia);
|
F64Slice* r = m_arr(sizeof(F64Slice), t_f64slice, ia);
|
||||||
r->p = p;
|
r->p = p;
|
||||||
r->a = ptr;
|
r->a = ptr;
|
||||||
return (Arr*)r;
|
return (Arr*)r;
|
||||||
}
|
}
|
||||||
static Arr* f64arr_slice (B x, usz s, usz ia) { return m_f64slice(a(x), c(F64Arr ,x)->a+s, ia); }
|
static Arr* f64arr_slice (B x, usz s, usz ia) { return m_f64slice(a(x), c(F64Arr,x)->a+s, ia); }
|
||||||
static Arr* f64slice_slice(B x, usz s, usz ia) { Arr* p=c(Slice,x)->p; ptr_inc(p); Arr* r = m_f64slice(p, c(F64Slice,x)->a+s, ia); dec(x); return r; }
|
static Arr* f64slice_slice(B x, usz s, usz ia) { Arr* p=c(Slice,x)->p; ptr_inc(p); Arr* r = m_f64slice(p, c(F64Slice,x)->a+s, ia); dec(x); return r; }
|
||||||
|
|
||||||
static B f64arr_get (B x, usz n) { VTY(x,t_f64arr ); return m_f64(c(F64Arr ,x)->a[n]); }
|
static B f64arr_get (B x, usz n) { VTY(x,t_f64arr ); return m_f64(c(F64Arr ,x)->a[n]); }
|
||||||
@ -32,3 +26,9 @@ void f64arr_init() {
|
|||||||
TIi(t_f64arr,elType) = el_f64; TIi(t_f64slice,elType) = el_f64;
|
TIi(t_f64arr,elType) = el_f64; TIi(t_f64slice,elType) = el_f64;
|
||||||
TIi(t_f64arr,canStore) = f64arr_canStore;
|
TIi(t_f64arr,canStore) = f64arr_canStore;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NOINLINE B m_caf64(usz sz, f64* a) {
|
||||||
|
f64* rp; B r = m_f64arrv(&rp, sz);
|
||||||
|
for (usz i = 0; i < sz; i++) rp[i] = a[i];
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ typedef struct F64Slice {
|
|||||||
f64* a;
|
f64* a;
|
||||||
} F64Slice;
|
} F64Slice;
|
||||||
|
|
||||||
|
|
||||||
#define F64A_SZ(IA) fsizeof(F64Arr,a,f64,IA)
|
#define F64A_SZ(IA) fsizeof(F64Arr,a,f64,IA)
|
||||||
static B m_f64arrv(f64** p, usz ia) {
|
static B m_f64arrv(f64** p, usz ia) {
|
||||||
F64Arr* r = m_arr(F64A_SZ(ia), t_f64arr, ia);
|
F64Arr* r = m_arr(F64A_SZ(ia), t_f64arr, ia);
|
||||||
@ -26,11 +27,11 @@ static Arr* m_f64arrp(f64** p, usz ia) {
|
|||||||
return (Arr*)r;
|
return (Arr*)r;
|
||||||
}
|
}
|
||||||
|
|
||||||
B m_caf64(usz sz, f64* a);
|
|
||||||
|
|
||||||
static f64* f64arr_ptr(B x) { VTY(x, t_f64arr); return c(F64Arr,x)->a; }
|
static f64* f64arr_ptr(B x) { VTY(x, t_f64arr); return c(F64Arr,x)->a; }
|
||||||
static f64* f64any_ptr(B x) { assert(isArr(x)); u8 t=v(x)->type; if(t==t_f64arr) return c(F64Arr,x)->a; assert(t==t_f64slice); return c(F64Slice,x)->a; }
|
static f64* f64any_ptr(B x) { assert(isArr(x)); u8 t=v(x)->type; if(t==t_f64arr) return c(F64Arr,x)->a; assert(t==t_f64slice); return c(F64Slice,x)->a; }
|
||||||
|
|
||||||
|
B m_caf64(usz sz, f64* a);
|
||||||
|
|
||||||
static F64Arr* toF64Arr(B x) {
|
static F64Arr* toF64Arr(B x) {
|
||||||
if (v(x)->type==t_f64arr) return c(F64Arr,x);
|
if (v(x)->type==t_f64arr) return c(F64Arr,x);
|
||||||
f64* rp; B r = m_f64arrc(&rp, x);
|
f64* rp; B r = m_f64arrc(&rp, x);
|
||||||
|
|||||||
@ -1,11 +1,5 @@
|
|||||||
#include "../core.h"
|
#include "../core.h"
|
||||||
|
|
||||||
NOINLINE B m_cai32(usz ia, i32* a) {
|
|
||||||
i32* rp; B r = m_i32arrv(&rp, ia);
|
|
||||||
for (usz i = 0; i < ia; i++) rp[i] = a[i];
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Arr* m_i32slice(Arr* p, i32* ptr, usz ia) {
|
static Arr* m_i32slice(Arr* p, i32* ptr, usz ia) {
|
||||||
I32Slice* r = m_arr(sizeof(I32Slice), t_i32slice, ia);
|
I32Slice* r = m_arr(sizeof(I32Slice), t_i32slice, ia);
|
||||||
r->p = p;
|
r->p = p;
|
||||||
@ -33,3 +27,9 @@ void i32arr_init() {
|
|||||||
TIi(t_i32arr,canStore) = i32arr_canStore;
|
TIi(t_i32arr,canStore) = i32arr_canStore;
|
||||||
i32* tmp; bi_emptyIVec = m_i32arrv(&tmp, 0); gc_add(bi_emptyIVec);
|
i32* tmp; bi_emptyIVec = m_i32arrv(&tmp, 0); gc_add(bi_emptyIVec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NOINLINE B m_cai32(usz ia, i32* a) {
|
||||||
|
i32* rp; B r = m_i32arrv(&rp, ia);
|
||||||
|
for (usz i = 0; i < ia; i++) rp[i] = a[i];
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|||||||
@ -27,11 +27,11 @@ static Arr* m_i32arrp(i32** p, usz ia) {
|
|||||||
return (Arr*)r;
|
return (Arr*)r;
|
||||||
}
|
}
|
||||||
|
|
||||||
B m_cai32(usz ia, i32* a);
|
|
||||||
|
|
||||||
static i32* i32arr_ptr(B x) { VTY(x, t_i32arr); return c(I32Arr,x)->a; }
|
static i32* i32arr_ptr(B x) { VTY(x, t_i32arr); return c(I32Arr,x)->a; }
|
||||||
static i32* i32any_ptr(B x) { assert(isArr(x)); u8 t=v(x)->type; if(t==t_i32arr) return c(I32Arr,x)->a; assert(t==t_i32slice); return c(I32Slice,x)->a; }
|
static i32* i32any_ptr(B x) { assert(isArr(x)); u8 t=v(x)->type; if(t==t_i32arr) return c(I32Arr,x)->a; assert(t==t_i32slice); return c(I32Slice,x)->a; }
|
||||||
|
|
||||||
|
B m_cai32(usz ia, i32* a);
|
||||||
|
|
||||||
static I32Arr* toI32Arr(B x) { // assumes it's possible
|
static I32Arr* toI32Arr(B x) { // assumes it's possible
|
||||||
if (v(x)->type==t_i32arr) return c(I32Arr,x);
|
if (v(x)->type==t_i32arr) return c(I32Arr,x);
|
||||||
i32* rp; B r = m_i32arrc(&rp, x);
|
i32* rp; B r = m_i32arrc(&rp, x);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user