move builtin defs to own file
This commit is contained in:
parent
de66696e7a
commit
24f61bd5a5
@ -1,5 +1,6 @@
|
||||
#include "../core.h"
|
||||
#include "../utils/each.h"
|
||||
#include "../utils/builtins.h"
|
||||
#include <math.h>
|
||||
|
||||
static inline B arith_recm(BB2B f, B x) {
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
#include "../core.h"
|
||||
#include "../utils/mut.h"
|
||||
#include "../utils/builtins.h"
|
||||
|
||||
B itype_c1(B t, B x) {
|
||||
B r;
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#include "../core.h"
|
||||
#include "../utils/each.h"
|
||||
#include "../utils/file.h"
|
||||
#include "../utils/builtins.h"
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
#include "../core.h"
|
||||
#include "../utils/builtins.h"
|
||||
|
||||
B md2BI_uc1(B t, B o, B f, B g, B x) { return c(BMd2,t)->uc1(t, o, f, g, x); }
|
||||
B md2BI_ucw(B t, B o, B f, B g, B w, B x) { return c(BMd2,t)->ucw(t, o, f, g, w, x); }
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#include "../core.h"
|
||||
#include "../utils/each.h"
|
||||
#include "../utils/mut.h"
|
||||
#include "../utils/builtins.h"
|
||||
|
||||
|
||||
B shape_c1(B t, B x) {
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
#include "../utils/hash.h"
|
||||
#include "../utils/file.h"
|
||||
#include "../utils/wyhash.h"
|
||||
#include "../utils/builtins.h"
|
||||
#include "../ns.h"
|
||||
#include "../nfns.h"
|
||||
|
||||
|
||||
@ -4,31 +4,6 @@
|
||||
|
||||
u64 allocB; // currently allocated number of bytes
|
||||
B bi_emptyHVec, bi_emptyIVec, bi_emptyCVec, bi_emptySVec;
|
||||
#define F(N) u64 N;
|
||||
CTR_FOR(F)
|
||||
#undef F
|
||||
|
||||
char* format_pf(u8 u) {
|
||||
switch(u) { default: return "(unknown function)";
|
||||
#define F(N,X) case pf_##N: return X;
|
||||
FOR_PFN(F,F,F)
|
||||
#undef F
|
||||
}
|
||||
}
|
||||
char* format_pm1(u8 u) {
|
||||
switch(u) { default: return"(unknown 1-modifier)";
|
||||
#define F(N,X) case pm1_##N: return X;
|
||||
FOR_PM1(F,F,F)
|
||||
#undef F
|
||||
}
|
||||
}
|
||||
char* format_pm2(u8 u) {
|
||||
switch(u) { default: return"(unknown 2-modifier)";
|
||||
#define F(N,X) case pm2_##N: return X;
|
||||
FOR_PM2(F,F,F)
|
||||
#undef F
|
||||
}
|
||||
}
|
||||
|
||||
NOINLINE void arr_print(B x) { // should accept refc=0 arguments for debugging purposes
|
||||
ur r = rnk(x);
|
||||
|
||||
43
src/h.h
43
src/h.h
@ -154,49 +154,6 @@ enum ElType { // a⌈b shall return the type that can store both, if possible; a
|
||||
|
||||
char* format_type(u8 u);
|
||||
|
||||
#define FOR_PFN(A,M,D) \
|
||||
/* arith.c*/A(add,"+") A(sub,"-") A(mul,"×") A(div,"÷") A(pow,"⋆") A(floor,"⌊") A(ceil,"⌈") A(stile,"|") A(eq,"=") \
|
||||
/* arith.c*/A(ne,"≠") D(le,"≤") D(ge,"≥") A(lt,"<") A(gt,">") A(and,"∧") A(or,"∨") A(not,"¬") A(log,"⋆⁼") \
|
||||
/* fns.c*/A(ud,"↕") A(fne,"≢") A(feq,"≡") A(ltack,"⊣") A(rtack,"⊢") M(fmtF,"•FmtF") A(indexOf,"⊐") A(memberOf,"∊") A(find,"⍷") A(count,"⊒") \
|
||||
/* sfns.c*/A(shape,"⥊") A(pick,"⊑") A(pair,"{𝕨‿𝕩}") A(select,"⊏") A(slash,"/") A(join,"∾") A(couple,"≍") A(shiftb,"»") A(shifta,"«") A(take,"↑") A(drop,"↓") A(group,"⊔") A(reverse,"⌽") \
|
||||
/* sort.c*/A(gradeUp,"⍋") A(gradeDown,"⍒") \
|
||||
/* sysfn.c*/M(type,"•Type") M(decp,"•Decompose") M(primInd,"•PrimInd") M(glyph,"•Glyph") A(fill,"•FillFn") M(sys,"•getsys") A(grLen,"•GroupLen") D(grOrd,"•groupOrd") \
|
||||
/* sysfn.c*/M(repr,"•Repr") A(asrt,"!") M(out,"•Out") M(show,"•Show") M(bqn,"•BQN") D(cmp,"•Cmp") A(hash,"•Hash") M(makeRand,"•MakeRand") M(exit,"•Exit") \
|
||||
/*internal.c*/M(itype,"•internal.Type") M(refc,"•internal.Refc") M(squeeze,"•internal.Squeeze") M(isPure,"•internal.IsPure") A(info,"•internal.Info") \
|
||||
/*internal.c*/D(variation,"•internal.Variation") A(listVariations,"•internal.ListVariations") M(clearRefs,"•internal.ClearRefs") M(unshare,"•internal.Unshare")
|
||||
|
||||
#define FOR_PM1(A,M,D) \
|
||||
/*md1.c*/ A(tbl,"⌜") A(each,"¨") A(fold,"´") A(scan,"`") A(const,"˙") A(swap,"˜") A(cell,"˘") \
|
||||
/*md1.c*/ A(timed,"•_timed") \
|
||||
|
||||
#define FOR_PM2(A,M,D) \
|
||||
/*md2.c*/ A(val,"⊘") A(repeat,"⍟") A(fillBy,"•_fillBy_") A(catch,"⎊") \
|
||||
/*md2.c*/ A(atop,"∘") A(over,"○") A(before,"⊸") A(after,"⟜") A(cond,"◶") A(under,"⌾")
|
||||
|
||||
enum PrimFns { pf_none,
|
||||
#define F(N,X) pf_##N,
|
||||
FOR_PFN(F,F,F)
|
||||
#undef F
|
||||
};
|
||||
enum PrimMd1 { pm1_none,
|
||||
#define F(N,X) pm1_##N,
|
||||
FOR_PM1(F,F,F)
|
||||
#undef F
|
||||
};
|
||||
enum PrimMd2 { pm2_none,
|
||||
#define F(N,X) pm2_##N,
|
||||
FOR_PM2(F,F,F)
|
||||
#undef F
|
||||
};
|
||||
|
||||
|
||||
#define F(N,X) extern B bi_##N;
|
||||
FOR_PFN(F,F,F)
|
||||
FOR_PM1(F,F,F)
|
||||
FOR_PM2(F,F,F)
|
||||
#undef F
|
||||
|
||||
|
||||
|
||||
typedef struct Value {
|
||||
i32 refc; // plain old reference count
|
||||
|
||||
30
src/load.c
30
src/load.c
@ -3,10 +3,13 @@
|
||||
#include "ns.h"
|
||||
#include "utils/mut.h"
|
||||
#include "utils/file.h"
|
||||
#include "utils/builtins.h"
|
||||
|
||||
u64 mm_heapMax = HEAP_MAX;
|
||||
u64 mm_heapAlloc;
|
||||
|
||||
|
||||
|
||||
#define FA(N,X) B bi_##N; B N##_c1(B t, B x); B N##_c2(B t, B w, B x);
|
||||
#define FM(N,X) B bi_##N; B N##_c1(B t, B x);
|
||||
#define FD(N,X) B bi_##N; B N##_c2(B t, B w, B x);
|
||||
@ -17,6 +20,33 @@ FOR_PM2(FA,FM,FD)
|
||||
#undef FM
|
||||
#undef FD
|
||||
|
||||
#define F(N) u64 N;
|
||||
CTR_FOR(F)
|
||||
#undef F
|
||||
char* format_pf(u8 u) {
|
||||
switch(u) { default: return "(unknown function)";
|
||||
#define F(N,X) case pf_##N: return X;
|
||||
FOR_PFN(F,F,F)
|
||||
#undef F
|
||||
}
|
||||
}
|
||||
char* format_pm1(u8 u) {
|
||||
switch(u) { default: return"(unknown 1-modifier)";
|
||||
#define F(N,X) case pm1_##N: return X;
|
||||
FOR_PM1(F,F,F)
|
||||
#undef F
|
||||
}
|
||||
}
|
||||
char* format_pm2(u8 u) {
|
||||
switch(u) { default: return"(unknown 2-modifier)";
|
||||
#define F(N,X) case pm2_##N: return X;
|
||||
FOR_PM2(F,F,F)
|
||||
#undef F
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
TypeInfo ti[t_COUNT];
|
||||
|
||||
B r1Objs[rtLen];
|
||||
|
||||
43
src/utils/builtins.h
Normal file
43
src/utils/builtins.h
Normal file
@ -0,0 +1,43 @@
|
||||
#pragma once
|
||||
|
||||
#define FOR_PFN(A,M,D) \
|
||||
/* arith.c*/A(add,"+") A(sub,"-") A(mul,"×") A(div,"÷") A(pow,"⋆") A(floor,"⌊") A(ceil,"⌈") A(stile,"|") A(eq,"=") \
|
||||
/* arith.c*/A(ne,"≠") D(le,"≤") D(ge,"≥") A(lt,"<") A(gt,">") A(and,"∧") A(or,"∨") A(not,"¬") A(log,"⋆⁼") \
|
||||
/* fns.c*/A(ud,"↕") A(fne,"≢") A(feq,"≡") A(ltack,"⊣") A(rtack,"⊢") M(fmtF,"•FmtF") A(indexOf,"⊐") A(memberOf,"∊") A(find,"⍷") A(count,"⊒") \
|
||||
/* sfns.c*/A(shape,"⥊") A(pick,"⊑") A(pair,"{𝕨‿𝕩}") A(select,"⊏") A(slash,"/") A(join,"∾") A(couple,"≍") A(shiftb,"»") A(shifta,"«") A(take,"↑") A(drop,"↓") A(group,"⊔") A(reverse,"⌽") \
|
||||
/* sort.c*/A(gradeUp,"⍋") A(gradeDown,"⍒") \
|
||||
/* sysfn.c*/M(type,"•Type") M(decp,"•Decompose") M(primInd,"•PrimInd") M(glyph,"•Glyph") A(fill,"•FillFn") M(sys,"•getsys") A(grLen,"•GroupLen") D(grOrd,"•groupOrd") \
|
||||
/* sysfn.c*/M(repr,"•Repr") A(asrt,"!") M(out,"•Out") M(show,"•Show") M(bqn,"•BQN") D(cmp,"•Cmp") A(hash,"•Hash") M(makeRand,"•MakeRand") M(exit,"•Exit") \
|
||||
/*internal.c*/M(itype,"•internal.Type") M(refc,"•internal.Refc") M(squeeze,"•internal.Squeeze") M(isPure,"•internal.IsPure") A(info,"•internal.Info") \
|
||||
/*internal.c*/D(variation,"•internal.Variation") A(listVariations,"•internal.ListVariations") M(clearRefs,"•internal.ClearRefs") M(unshare,"•internal.Unshare")
|
||||
|
||||
#define FOR_PM1(A,M,D) \
|
||||
/*md1.c*/ A(tbl,"⌜") A(each,"¨") A(fold,"´") A(scan,"`") A(const,"˙") A(swap,"˜") A(cell,"˘") \
|
||||
/*md1.c*/ A(timed,"•_timed")
|
||||
|
||||
#define FOR_PM2(A,M,D) \
|
||||
/*md2.c*/ A(val,"⊘") A(repeat,"⍟") A(fillBy,"•_fillBy_") A(catch,"⎊") \
|
||||
/*md2.c*/ A(atop,"∘") A(over,"○") A(before,"⊸") A(after,"⟜") A(cond,"◶") A(under,"⌾")
|
||||
|
||||
enum PrimFns { pf_none,
|
||||
#define F(N,X) pf_##N,
|
||||
FOR_PFN(F,F,F)
|
||||
#undef F
|
||||
};
|
||||
enum PrimMd1 { pm1_none,
|
||||
#define F(N,X) pm1_##N,
|
||||
FOR_PM1(F,F,F)
|
||||
#undef F
|
||||
};
|
||||
enum PrimMd2 { pm2_none,
|
||||
#define F(N,X) pm2_##N,
|
||||
FOR_PM2(F,F,F)
|
||||
#undef F
|
||||
};
|
||||
|
||||
|
||||
#define F(N,X) extern B bi_##N;
|
||||
FOR_PFN(F,F,F)
|
||||
FOR_PM1(F,F,F)
|
||||
FOR_PM2(F,F,F)
|
||||
#undef F
|
||||
Loading…
Reference in New Issue
Block a user