random utility functions
This commit is contained in:
parent
f58af495bc
commit
f0a602ccde
11
src/c32arr.c
11
src/c32arr.c
@ -37,6 +37,17 @@ NOINLINE B m_str32(u32* s) {
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
C32Arr* toC32Arr(B x) {
|
||||||
|
if (v(x)->type==t_c32arr) return c(C32Arr,x);
|
||||||
|
B r = m_c32arrc(x);
|
||||||
|
u32* rp = c32arr_ptr(r);
|
||||||
|
usz ia = a(r)->ia;
|
||||||
|
BS2B xgetU = TI(x).get;
|
||||||
|
for (usz i = 0; i < ia; i++) rp[i] = o2c(xgetU(x,i));
|
||||||
|
dec(x);
|
||||||
|
return c(C32Arr,r);
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct C32Slice {
|
typedef struct C32Slice {
|
||||||
struct Slice;
|
struct Slice;
|
||||||
u32* a;
|
u32* a;
|
||||||
|
|||||||
11
src/f64arr.c
11
src/f64arr.c
@ -31,6 +31,17 @@ B m_caf64(usz sz, f64* a) {
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
F64Arr* toF64Arr(B x) {
|
||||||
|
if (v(x)->type==t_f64arr) return c(F64Arr,x);
|
||||||
|
B r = m_f64arrc(x);
|
||||||
|
f64* rp = f64arr_ptr(r);
|
||||||
|
usz ia = a(r)->ia;
|
||||||
|
BS2B xgetU = TI(x).get;
|
||||||
|
for (usz i = 0; i < ia; i++) rp[i] = o2f(xgetU(x,i));
|
||||||
|
dec(x);
|
||||||
|
return c(F64Arr,r);
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct F64Slice {
|
typedef struct F64Slice {
|
||||||
struct Slice;
|
struct Slice;
|
||||||
f64* a;
|
f64* a;
|
||||||
|
|||||||
1
src/h.h
1
src/h.h
@ -320,6 +320,7 @@ usz o2s (B x) { if ((usz)x.f!=x.f) thrM("Expected integer"); return (usz)x.f;
|
|||||||
i64 o2i64 (B x) { if ((i64)x.f!=x.f) thrM("Expected integer"); return (i64)x.f; }
|
i64 o2i64 (B x) { if ((i64)x.f!=x.f) thrM("Expected integer"); return (i64)x.f; }
|
||||||
f64 o2f (B x) { if (!isNum(x)) thrM("Expected integer"); return x.f; }
|
f64 o2f (B x) { if (!isNum(x)) thrM("Expected integer"); return x.f; }
|
||||||
i32 o2iu (B x) { return isI32(x)? (i32)(u32)x.u : (i32)x.f; }
|
i32 o2iu (B x) { return isI32(x)? (i32)(u32)x.u : (i32)x.f; }
|
||||||
|
usz o2c (B x) { if (!isC32(x)) thrM("Expected character"); return (u32)x.u; }
|
||||||
usz o2su (B x) { return (usz)x.f; }
|
usz o2su (B x) { return (usz)x.f; }
|
||||||
i64 o2i64u(B x) { return (i64)x.f; }
|
i64 o2i64u(B x) { return (i64)x.f; }
|
||||||
bool q_i32(B x) { return isI32(x) || isF64(x)&(x.f==(i32)x.f); }
|
bool q_i32(B x) { return isI32(x) || isF64(x)&(x.f==(i32)x.f); }
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user