pass derived function to modifiers
This commit is contained in:
parent
6e2dcacf57
commit
dd8e8b970b
12
cc.bqn
12
cc.bqn
@ -9,14 +9,14 @@ L ← {"m_caB(" ∾(⍕≠𝕩)∾",(B[]){" ∾(1↓∾","⊸∾¨𝕩)∾"})
|
|||||||
LI ← {"m_cai32("∾(⍕≠𝕩)∾",(i32[]){"∾(1↓∾","⊸∾¨𝕩)∾"})"}
|
LI ← {"m_cai32("∾(⍕≠𝕩)∾",(i32[]){"∾(1↓∾","⊸∾¨𝕩)∾"})"}
|
||||||
# Escape the special characters that appear in BQN sources.
|
# Escape the special characters that appear in BQN sources.
|
||||||
Esc←{
|
Esc←{
|
||||||
in ← (@+0‿9‿10‿13)∾"'""" # Null, Tab, LF, CR, and quotes
|
in ← (@+0‿9‿10‿13)∾"'""" # Null, Tab, LF, CR, and quotes
|
||||||
out ← "0tnr" # Whitespace characters changed to letters
|
out ← "0tnr" # Whitespace characters changed to letters
|
||||||
i ← in⊐𝕩
|
i ← in⊐𝕩
|
||||||
𝕩 ↩ i ⊏⟜out⌾((i<≠out)⊸/) 𝕩 # Replace
|
𝕩 ↩ i ⊏⟜out⌾((i<≠out)⊸/) 𝕩 # Replace
|
||||||
∾(i<≠in) /⟜"\"⊸∾¨ 𝕩 # Insert \
|
∾(i<≠in) /⟜"\"⊸∾¨ 𝕩 # Insert \
|
||||||
}
|
}
|
||||||
Str ← "m_str32(U"""∾Esc∾""")"˜ # A BQN string
|
Str ← "m_str32(U"""∾Esc∾""")"˙ # A BQN string
|
||||||
Char ← {"m_c32(U'"∾(Esc⥊𝕩)∾"')"} # A BQN character
|
Char ← {"m_c32(U'"∾(Esc⥊𝕩)∾"')"} # A BQN character
|
||||||
Num ← {s←"-"/˜𝕩<0 ⋄ ∞⊸=∘|◶⟨"m_f64("∾")"∾˜s∾⍕∘| ⋄ "m_f64("∾s∾"1.0/0.0)"⟩𝕩} # Format number
|
Num ← {s←"-"/˜𝕩<0 ⋄ ∞⊸=∘|◶⟨"m_f64("∾")"∾˜s∾⍕∘| ⋄ "m_f64("∾s∾"1.0/0.0)"⟩𝕩} # Format number
|
||||||
|
|
||||||
F ← ⍕ # Format number
|
F ← ⍕ # Format number
|
||||||
|
|||||||
62
src/derv.c
62
src/derv.c
@ -2,17 +2,17 @@
|
|||||||
|
|
||||||
typedef struct Md1D { // F _md
|
typedef struct Md1D { // F _md
|
||||||
struct Fun;
|
struct Fun;
|
||||||
B m; // known to be Md1 at creation; kept as type B as refc-- might want to know tagged ptr info
|
B m1;
|
||||||
B f;
|
B f;
|
||||||
} Md1D;
|
} Md1D;
|
||||||
typedef struct Md2D { // F _md_ G
|
typedef struct Md2D { // F _md_ G
|
||||||
struct Fun;
|
struct Fun;
|
||||||
B m;
|
B m2;
|
||||||
B f, g;
|
B f, g;
|
||||||
} Md2D;
|
} Md2D;
|
||||||
typedef struct Md2H { // _md_ G
|
typedef struct Md2H { // _md_ G
|
||||||
struct Md1;
|
struct Md1;
|
||||||
B m;
|
B m2;
|
||||||
B g;
|
B g;
|
||||||
} Md2H;
|
} Md2H;
|
||||||
typedef struct Fork {
|
typedef struct Fork {
|
||||||
@ -24,41 +24,41 @@ typedef struct Atop {
|
|||||||
B g, h;
|
B g, h;
|
||||||
} Atop;
|
} Atop;
|
||||||
|
|
||||||
void md1D_free(B x) { dec(c(Md1D,x)->m); dec(c(Md1D,x)->f); }
|
void md1D_free(B x) { dec(c(Md1D,x)->m1); dec(c(Md1D,x)->f); }
|
||||||
void md2D_free(B x) { dec(c(Md2D,x)->m); dec(c(Md2D,x)->f); dec(c(Md2D,x)->g); }
|
void md2D_free(B x) { dec(c(Md2D,x)->m2); dec(c(Md2D,x)->f); dec(c(Md2D,x)->g); }
|
||||||
void md2H_free(B x) { dec(c(Md2H,x)->m); dec(c(Md2H,x)->g); }
|
void md2H_free(B x) { dec(c(Md2H,x)->m2); dec(c(Md2H,x)->g); }
|
||||||
void fork_free(B x) { dec(c(Fork,x)->f); dec(c(Fork,x)->g); dec(c(Fork,x)->h); }
|
void fork_free(B x) { dec(c(Fork,x)->f ); dec(c(Fork,x)->g); dec(c(Fork,x)->h); }
|
||||||
void atop_free(B x) { dec(c(Atop,x)->g); dec(c(Atop,x)->h); }
|
void atop_free(B x) { dec(c(Atop,x)->g); dec(c(Atop,x)->h); }
|
||||||
|
|
||||||
void md1D_print(B x) { printf("(md1D ");print(c(Md1D,x)->f);printf(" ");print(c(Md1D,x)->m); printf(")"); }
|
void md1D_print(B x) { printf("(md1D ");print(c(Md1D,x)->f);printf(" ");print(c(Md1D,x)->m1); printf(")"); }
|
||||||
void md2D_print(B x) { printf("(md2D ");print(c(Md2D,x)->f);printf(" ");print(c(Md2D,x)->m);printf(" ");print(c(Md2D,x)->g);printf(")"); }
|
void md2D_print(B x) { printf("(md2D ");print(c(Md2D,x)->f);printf(" ");print(c(Md2D,x)->m2);printf(" ");print(c(Md2D,x)->g);printf(")"); }
|
||||||
void md2H_print(B x) { printf("(md2H "); print(c(Md2H,x)->m);printf(" ");print(c(Md2H,x)->g);printf(")"); }
|
void md2H_print(B x) { printf("(md2H "); print(c(Md2H,x)->m2);printf(" ");print(c(Md2H,x)->g);printf(")"); }
|
||||||
void fork_print(B x) { printf("(fork ");print(c(Fork,x)->f);printf(" ");print(c(Fork,x)->g);printf(" ");print(c(Fork,x)->h);printf(")"); }
|
void fork_print(B x) { printf("(fork ");print(c(Fork,x)->f);printf(" ");print(c(Fork,x)->g );printf(" ");print(c(Fork,x)->h);printf(")"); }
|
||||||
void atop_print(B x) { printf("(atop "); print(c(Atop,x)->g);printf(" ");print(c(Atop,x)->h);printf(")"); }
|
void atop_print(B x) { printf("(atop "); print(c(Atop,x)->g );printf(" ");print(c(Atop,x)->h);printf(")"); }
|
||||||
|
|
||||||
B md1D_c1(B t , B x) { return c(Md1,c(Md1D, t)->m)->c1(c(Md1D, t)->m, c(Md1D, t)->f, x); }
|
B md1D_c1(B t, B x) { return c(Md1,c(Md1D, t)->m1)->c1(t, x); }
|
||||||
B md1D_c2(B t, B w, B x) { return c(Md1,c(Md1D, t)->m)->c2(c(Md1D, t)->m, c(Md1D, t)->f, w, x); }
|
B md1D_c2(B t, B w, B x) { return c(Md1,c(Md1D, t)->m1)->c2(t, w, x); }
|
||||||
B md2D_c1(B t , B x) { return c(Md2,c(Md2D, t)->m)->c1(c(Md2D, t)->m, c(Md2D, t)->f, c(Md2D, t)->g, x); }
|
B md2D_c1(B t, B x) { return c(Md2,c(Md2D, t)->m2)->c1(t, x); }
|
||||||
B md2D_c2(B t, B w, B x) { return c(Md2,c(Md2D, t)->m)->c2(c(Md2D, t)->m, c(Md2D, t)->f, c(Md2D, t)->g, w, x); }
|
B md2D_c2(B t, B w, B x) { return c(Md2,c(Md2D, t)->m2)->c2(t, w, x); }
|
||||||
B atop_c1(B t , B x) { return c1(c(Atop,t)->g, c1(c(Atop,t)->h, x)); }
|
B atop_c1(B t, B x) { return c1(c(Atop,t)->g, c1(c(Atop,t)->h, x)); }
|
||||||
B atop_c2(B t, B w, B x) { return c1(c(Atop,t)->g, c2(c(Atop,t)->h, w, x)); }
|
B atop_c2(B t, B w, B x) { return c1(c(Atop,t)->g, c2(c(Atop,t)->h, w, x)); }
|
||||||
B fork_c1(B t , B x) { B g=c1(c(Fork,t)->h, inci(x)); return c2(c(Fork,t)->g, c1(c(Fork,t)->f, x), g); }
|
B fork_c1(B t, B x) { B g=c1(c(Fork,t)->h, inci(x)); return c2(c(Fork,t)->g, c1(c(Fork,t)->f, x), g); }
|
||||||
B fork_c2(B t, B w, B x) { B g=c2(c(Fork,t)->h, inci(w), inci(x)); return c2(c(Fork,t)->g, c2(c(Fork,t)->f, w, x), g); }
|
B fork_c2(B t, B w, B x) { B g=c2(c(Fork,t)->h, inci(w), inci(x)); return c2(c(Fork,t)->g, c2(c(Fork,t)->f, w, x), g); }
|
||||||
B md2H_c1(B t, B f , B x) { return c(Md2,c(Md2H, t)->m)->c1(c(Md2H,t)->m, f, c(Md2H,t)->g, x); }
|
B md2H_c1(B d, B x) { Md1D* m=c(Md1D,d); Md2H* t=c(Md2H,m->m1); return md2D_c1(m_md2D(t->m2, m->f, t->g), x); }
|
||||||
B md2H_c2(B t, B f, B w, B x) { return c(Md2,c(Md2H, t)->m)->c2(c(Md2H,t)->m, f, c(Md2H,t)->g, w, x); }
|
B md2H_c2(B d, B w, B x) { Md1D* m=c(Md1D,d); Md2H* t=c(Md2H,m->m1); return md2D_c2(m_md2D(t->m2, m->f, t->g), w, x); }
|
||||||
|
|
||||||
B md1D_decompose(B x) { B r=m_v3(m_i32(4),inci(c(Md1D,x)->f),inci(c(Md1D,x)->m) ); dec(x); return r; }
|
B md1D_decompose(B x) { B r=m_v3(m_i32(4),inci(c(Md1D,x)->f),inci(c(Md1D,x)->m1) ); dec(x); return r; }
|
||||||
B md2D_decompose(B x) { B r=m_v4(m_i32(5),inci(c(Md2D,x)->f),inci(c(Md2D,x)->m), inci(c(Md2D,x)->g)); dec(x); return r; }
|
B md2D_decompose(B x) { B r=m_v4(m_i32(5),inci(c(Md2D,x)->f),inci(c(Md2D,x)->m2), inci(c(Md2D,x)->g)); dec(x); return r; }
|
||||||
B md2H_decompose(B x) { B r=m_v3(m_i32(6), inci(c(Md2H,x)->m), inci(c(Md2H,x)->g)); dec(x); return r; }
|
B md2H_decompose(B x) { B r=m_v3(m_i32(6), inci(c(Md2H,x)->m2), inci(c(Md2H,x)->g)); dec(x); return r; }
|
||||||
B fork_decompose(B x) { B r=m_v4(m_i32(3),inci(c(Fork,x)->f),inci(c(Fork,x)->g), inci(c(Fork,x)->h)); dec(x); return r; }
|
B fork_decompose(B x) { B r=m_v4(m_i32(3),inci(c(Fork,x)->f),inci(c(Fork,x)->g ), inci(c(Fork,x)->h)); dec(x); return r; }
|
||||||
B atop_decompose(B x) { B r=m_v3(m_i32(2), inci(c(Atop,x)->g), inci(c(Atop,x)->h)); dec(x); return r; }
|
B atop_decompose(B x) { B r=m_v3(m_i32(2), inci(c(Atop,x)->g ), inci(c(Atop,x)->h)); dec(x); return r; }
|
||||||
|
|
||||||
// consume all args
|
// consume all args
|
||||||
B m_md1D(B m, B f ) { B r = mm_alloc(sizeof(Md1D), t_md1D, ftag(FUN_TAG)); c(Md1D,r)->f = f; c(Md1D,r)->m = m; c(Md1D,r)->c1=md1D_c1; c(Md1D,r)->c2=md1D_c2; c(Md1D,r)->extra=pf_md1d; return r; }
|
B m_md1D(B m, B f ) { B r = mm_alloc(sizeof(Md1D), t_md1D, ftag(FUN_TAG)); c(Md1D,r)->f = f; c(Md1D,r)->m1 = m; c(Md1D,r)->c1=md1D_c1; c(Md1D,r)->c2=md1D_c2; c(Md1D,r)->extra=pf_md1d; return r; }
|
||||||
B m_md2D(B m, B f, B g) { B r = mm_alloc(sizeof(Md2D), t_md2D, ftag(FUN_TAG)); c(Md2D,r)->f = f; c(Md2D,r)->m = m; c(Md2D,r)->g = g; c(Md2D,r)->c1=md2D_c1; c(Md2D,r)->c2=md2D_c2; c(Md2D,r)->extra=pf_md2d; return r; }
|
B m_md2D(B m, B f, B g) { B r = mm_alloc(sizeof(Md2D), t_md2D, ftag(FUN_TAG)); c(Md2D,r)->f = f; c(Md2D,r)->m2 = m; c(Md2D,r)->g = g; c(Md2D,r)->c1=md2D_c1; c(Md2D,r)->c2=md2D_c2; c(Md2D,r)->extra=pf_md2d; return r; }
|
||||||
B m_md2H(B m, B g) { B r = mm_alloc(sizeof(Md2H), t_md2H, ftag(MD1_TAG)); c(Md2H,r)->m = m; c(Md2H,r)->g = g; c(Md2H,r)->c1=md2H_c1; c(Md2H,r)->c2=md2H_c2; return r; }
|
B m_md2H(B m, B g) { B r = mm_alloc(sizeof(Md2H), t_md2H, ftag(MD1_TAG)); c(Md2H,r)->m2 = m; c(Md2H,r)->g = g; c(Md2H,r)->c1=md2H_c1; c(Md2H,r)->c2=md2H_c2; return r; }
|
||||||
B m_fork(B f, B g, B h) { B r = mm_alloc(sizeof(Fork), t_fork, ftag(FUN_TAG)); c(Fork,r)->f = f; c(Fork,r)->g = g; c(Fork,r)->h = h; c(Fork,r)->c1=fork_c1; c(Fork,r)->c2=fork_c2; c(Fork,r)->extra=pf_fork; return r; }
|
B m_fork(B f, B g, B h) { B r = mm_alloc(sizeof(Fork), t_fork, ftag(FUN_TAG)); c(Fork,r)->f = f; c(Fork,r)->g = g; c(Fork,r)->h = h; c(Fork,r)->c1=fork_c1; c(Fork,r)->c2=fork_c2; c(Fork,r)->extra=pf_fork; return r; }
|
||||||
B m_atop( B g, B h) { B r = mm_alloc(sizeof(Atop), t_atop, ftag(FUN_TAG)); c(Atop,r)->g = g; c(Atop,r)->h = h; c(Atop,r)->c1=atop_c1; c(Atop,r)->c2=atop_c2; c(Atop,r)->extra=pf_atop; return r; }
|
B m_atop( B g, B h) { B r = mm_alloc(sizeof(Atop), t_atop, ftag(FUN_TAG)); c(Atop,r)->g = g; c(Atop,r)->h = h; c(Atop,r)->c1=atop_c1; c(Atop,r)->c2=atop_c2; c(Atop,r)->extra=pf_atop; return r; }
|
||||||
|
|
||||||
// consume all args
|
// consume all args
|
||||||
B m1_d(B m, B f ) { if(isMd1(m)) return TI(m).m1_d(m, f ); return err("Interpreting non-1-modifier as 1-modifier"); }
|
B m1_d(B m, B f ) { if(isMd1(m)) return TI(m).m1_d(m, f ); return err("Interpreting non-1-modifier as 1-modifier"); }
|
||||||
|
|||||||
14
src/h.h
14
src/h.h
@ -403,15 +403,19 @@ B c2(B f, B w, B x) { // BQN-call f dyadically; consumes w,x
|
|||||||
|
|
||||||
typedef struct Md1 {
|
typedef struct Md1 {
|
||||||
struct Value;
|
struct Value;
|
||||||
BBB2B c1; // f(m,f, x); consumes x
|
BB2B c1; // f(md1d{this,f}, x); consumes x
|
||||||
BBBB2B c2; // f(m,f,w,x); consumes w,x
|
BBB2B c2; // f(md1d{this,f},w,x); consumes w,x
|
||||||
} Md1;
|
} Md1;
|
||||||
typedef struct Md2 {
|
typedef struct Md2 {
|
||||||
struct Value;
|
struct Value;
|
||||||
BBBB2B c1; // f(m,f,g, x); consumes x
|
BB2B c1; // f(md2d{this,f,g}, x); consumes x
|
||||||
BBBBB2B c2; // f(m,f,g,w,x); consumes w,x
|
BBB2B c2; // f(md2d{this,f,g},w,x); consumes w,x
|
||||||
} Md2;
|
} Md2;
|
||||||
|
B m_md1D(B m, B f );
|
||||||
|
B m_md2D(B m, B f, B g);
|
||||||
|
B m_md2H(B m, B g);
|
||||||
|
B m_fork(B f, B g, B h);
|
||||||
|
B m_atop( B g, B h);
|
||||||
|
|
||||||
void arr_print(B x) {
|
void arr_print(B x) {
|
||||||
usz r = rnk(x);
|
usz r = rnk(x);
|
||||||
|
|||||||
@ -14,12 +14,12 @@
|
|||||||
#include "i32arr.c"
|
#include "i32arr.c"
|
||||||
#include "c32arr.c"
|
#include "c32arr.c"
|
||||||
#include "utf.c"
|
#include "utf.c"
|
||||||
|
#include "derv.c"
|
||||||
#include "arith.c"
|
#include "arith.c"
|
||||||
#include "sfns.c"
|
#include "sfns.c"
|
||||||
#include "md1.c"
|
#include "md1.c"
|
||||||
#include "md2.c"
|
#include "md2.c"
|
||||||
#include "sysfn.c"
|
#include "sysfn.c"
|
||||||
#include "derv.c"
|
|
||||||
#include "vm.c"
|
#include "vm.c"
|
||||||
|
|
||||||
void pr(char* a, B b) {
|
void pr(char* a, B b) {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#include "h.h"
|
#include "h.h"
|
||||||
|
|
||||||
B tbl_c1(B t, B f, B x) {
|
B tbl_c1(B d, B x) { B f = c(Md1D,d)->f;
|
||||||
if (!isArr(x)) return err("⌜: argument was atom");
|
if (!isArr(x)) return err("⌜: argument was atom");
|
||||||
usz ia = a(x)->ia;
|
usz ia = a(x)->ia;
|
||||||
if (v(x)->type==t_harr && reusable(x)) {
|
if (v(x)->type==t_harr && reusable(x)) {
|
||||||
@ -14,7 +14,7 @@ B tbl_c1(B t, B f, B x) {
|
|||||||
dec(x);
|
dec(x);
|
||||||
return r.b;
|
return r.b;
|
||||||
}
|
}
|
||||||
B tbl_c2(B t, B f, B w, B x) {
|
B tbl_c2(B d, B w, B x) { B f = c(Md1D,d)->f;
|
||||||
if (isArr(w) & isArr(x)) {
|
if (isArr(w) & isArr(x)) {
|
||||||
usz wia = a(w)->ia; ur wr = rnk(w);
|
usz wia = a(w)->ia; ur wr = rnk(w);
|
||||||
usz xia = a(x)->ia; ur xr = rnk(x);
|
usz xia = a(x)->ia; ur xr = rnk(x);
|
||||||
@ -43,7 +43,7 @@ B tbl_c2(B t, B f, B w, B x) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
B scan_c1(B t, B f, B x) {
|
B scan_c1(B d, B x) { B f = c(Md1D,d)->f;
|
||||||
if (!isArr(x)) return err("`: argument cannot be a scalar");
|
if (!isArr(x)) return err("`: argument cannot be a scalar");
|
||||||
ur xr = rnk(x);
|
ur xr = rnk(x);
|
||||||
if (xr==0) return err("`: argument cannot be a scalar");
|
if (xr==0) return err("`: argument cannot be a scalar");
|
||||||
@ -62,7 +62,7 @@ B scan_c1(B t, B f, B x) {
|
|||||||
dec(x);
|
dec(x);
|
||||||
return r.b;
|
return r.b;
|
||||||
}
|
}
|
||||||
B scan_c2(B t, B f, B w, B x) {
|
B scan_c2(B d, B w, B x) { B f = c(Md1D,d)->f;
|
||||||
if (!isArr(x)) return err("`: 𝕩 cannot be a scalar");
|
if (!isArr(x)) return err("`: 𝕩 cannot be a scalar");
|
||||||
ur xr = rnk(x); usz* xsh = a(x)->sh; BS2B xget = TI(x).get;
|
ur xr = rnk(x); usz* xsh = a(x)->sh; BS2B xget = TI(x).get;
|
||||||
HArr_p r = (v(x)->type==t_harr && reusable(x))? harr_parts(inci(x)) : m_harrc(x);
|
HArr_p r = (v(x)->type==t_harr && reusable(x))? harr_parts(inci(x)) : m_harrc(x);
|
||||||
|
|||||||
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
B val_c1(B t, B f, B g, B x) { return c1(f, x); }
|
B val_c1(B d, B x) { return c1(c(Md2D,d)->f, x); }
|
||||||
B val_c2(B t, B f, B g, B w, B x) { return c2(g,w,x); }
|
B val_c2(B d, B w, B x) { return c2(c(Md2D,d)->g, w,x); }
|
||||||
|
|
||||||
B fillBy_c1(B t, B f, B g, B x) { return c1(f, x); }
|
B fillBy_c1(B d, B x) { return c1(c(Md2D,d)->f, x); }
|
||||||
B fillBy_c2(B t, B f, B g, B w, B x) { return c2(f,w,x); }
|
B fillBy_c2(B d, B w, B x) { return c2(c(Md2D,d)->f, w,x); }
|
||||||
|
|
||||||
#define ba(NAME) bi_##NAME = mm_alloc(sizeof(Md2), t_md2_def, ftag(MD2_TAG)); c(Md2,bi_##NAME)->c2 = NAME##_c2; c(Md2,bi_##NAME)->c1 = NAME##_c1;
|
#define ba(NAME) bi_##NAME = mm_alloc(sizeof(Md2), t_md2_def, ftag(MD2_TAG)); c(Md2,bi_##NAME)->c2 = NAME##_c2; c(Md2,bi_##NAME)->c1 = NAME##_c1;
|
||||||
#define bd(NAME) bi_##NAME = mm_alloc(sizeof(Md2), t_md2_def, ftag(MD2_TAG)); c(Md2,bi_##NAME)->c2 = NAME##_c2; c(Md2,bi_##NAME)->c1 = c1_invalid;
|
#define bd(NAME) bi_##NAME = mm_alloc(sizeof(Md2), t_md2_def, ftag(MD2_TAG)); c(Md2,bi_##NAME)->c2 = NAME##_c2; c(Md2,bi_##NAME)->c1 = c1_invalid;
|
||||||
|
|||||||
12
src/vm.c
12
src/vm.c
@ -403,12 +403,12 @@ B actualExec(Block* bl, Scope* psc, u32 ga, B* svar) {
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
B funBl_c1(B t, B x) { return actualExec(c(FunBlock, t)->bl, c(FunBlock, t)->sc, 3, (B[]){inci(t), x, bi_nothing }); }
|
B funBl_c1(B t, B x) { FunBlock* b=c(FunBlock, t ); return actualExec(b->bl, b->sc, 3, (B[]){inci(t), x, bi_nothing }); }
|
||||||
B funBl_c2(B t, B w, B x) { return actualExec(c(FunBlock, t)->bl, c(FunBlock, t)->sc, 3, (B[]){inci(t), x, w }); }
|
B funBl_c2(B t, B w, B x) { FunBlock* b=c(FunBlock, t ); return actualExec(b->bl, b->sc, 3, (B[]){inci(t), x, w }); }
|
||||||
B md1Bl_c1(B t, B f, B x) { return actualExec(c(Md1Block, t)->bl, c(Md1Block, t)->sc, 5, (B[]){m_md1D(inci(t),inci(f) ), x, bi_nothing, inci(t), inci(f) }); }
|
B md1Bl_c1(B D, B x) { Md1D* d=c(Md1D,D); Md1Block* b=c(Md1Block, d->m1); return actualExec(b->bl, b->sc, 5, (B[]){inci(D), x, bi_nothing, inci(d->m1), inci(d->f) }); }
|
||||||
B md1Bl_c2(B t, B f, B w, B x) { return actualExec(c(Md1Block, t)->bl, c(Md1Block, t)->sc, 5, (B[]){m_md1D(inci(t),inci(f) ), x, w , inci(t), inci(f) }); }
|
B md1Bl_c2(B D, B w, B x) { Md1D* d=c(Md1D,D); Md1Block* b=c(Md1Block, d->m1); return actualExec(b->bl, b->sc, 5, (B[]){inci(D), x, w , inci(d->m1), inci(d->f) }); }
|
||||||
B md2Bl_c1(B t, B f, B g, B x) { return actualExec(c(Md2Block, t)->bl, c(Md2Block, t)->sc, 6, (B[]){m_md2D(inci(t),inci(f),inci(g)), x, bi_nothing, inci(t), inci(f), inci(g)}); }
|
B md2Bl_c1(B D, B x) { Md2D* d=c(Md2D,D); Md2Block* b=c(Md2Block, d->m2); return actualExec(b->bl, b->sc, 6, (B[]){inci(D), x, bi_nothing, inci(d->m2), inci(d->f), inci(d->g)}); }
|
||||||
B md2Bl_c2(B t, B f, B g, B w, B x) { return actualExec(c(Md2Block, t)->bl, c(Md2Block, t)->sc, 6, (B[]){m_md2D(inci(t),inci(f),inci(g)), x, w , inci(t), inci(f), inci(g)}); }
|
B md2Bl_c2(B D, B w, B x) { Md2D* d=c(Md2D,D); Md2Block* b=c(Md2Block, d->m2); return actualExec(b->bl, b->sc, 6, (B[]){inci(D), x, w , inci(d->m2), inci(d->f), inci(d->g)}); }
|
||||||
B m_funBlock(Block* bl, Scope* psc) {
|
B m_funBlock(Block* bl, Scope* psc) {
|
||||||
if (bl->imm) return actualExec(bl, psc, 0, NULL);
|
if (bl->imm) return actualExec(bl, psc, 0, NULL);
|
||||||
B r = mm_alloc(sizeof(FunBlock), t_fun_block, ftag(FUN_TAG));
|
B r = mm_alloc(sizeof(FunBlock), t_fun_block, ftag(FUN_TAG));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user