mirror of
https://github.com/ValKmjolnir/Nasal-Interpreter.git
synced 2026-07-20 01:28:45 +08:00
✨ split io lib
This commit is contained in:
+50
-27
@@ -1,31 +1,54 @@
|
||||
import.std.dylib;
|
||||
|
||||
var libfib=func(){
|
||||
var dl=dylib.dlopen("libfib."~(os.platform()=="windows"?"dll":"so"));
|
||||
var fib=dl.fib;
|
||||
var qfib=dl.quick_fib;
|
||||
var create_ghost=dl.create_ghost;
|
||||
var set_ghost=dl.set_ghost;
|
||||
var print_ghost=dl.print_ghost;
|
||||
var zero_call=dylib.limitcall(0);
|
||||
var call=dylib.limitcall(1);
|
||||
var test_call=dylib.limitcall(2);
|
||||
var res={
|
||||
fib: func(x) {return call(fib,x)},
|
||||
qfib: func(x) {return call(qfib,x)},
|
||||
create_ghost: func() {return zero_call(create_ghost)},
|
||||
set_ghost: func(object, x) {return test_call(set_ghost, object, x)},
|
||||
print_ghost: func(object) {return call(print_ghost, object)}
|
||||
};
|
||||
var _dl = dylib.dlopen("libfib."~(os.platform()=="windows"?"dll":"so"));
|
||||
|
||||
res.test_ghost=func() {
|
||||
var ghost=res.create_ghost();
|
||||
res.print_ghost(nil); # err
|
||||
res.print_ghost(ghost); # random
|
||||
res.set_ghost(nil, 114); # err
|
||||
res.set_ghost(ghost, 114); # success
|
||||
res.print_ghost(ghost); # 114
|
||||
}
|
||||
var _fib = _dl.fib;
|
||||
|
||||
return res;
|
||||
}();
|
||||
var _qfib = _dl.quick_fib;
|
||||
|
||||
var _create_ghost = _dl.create_ghost;
|
||||
|
||||
var _set_ghost = _dl.set_ghost;
|
||||
|
||||
var _print_ghost = _dl.print_ghost;
|
||||
|
||||
var _zero_call = dylib.limitcall(0);
|
||||
|
||||
var _call = dylib.limitcall(1);
|
||||
|
||||
var _test_call = dylib.limitcall(2);
|
||||
|
||||
|
||||
var fib = func(x) {
|
||||
return _call(_fib, x)
|
||||
}
|
||||
|
||||
|
||||
var qfib = func(x) {
|
||||
return _call(_qfib, x)
|
||||
}
|
||||
|
||||
|
||||
var create_ghost = func() {
|
||||
return _zero_call(_create_ghost)
|
||||
}
|
||||
|
||||
|
||||
var set_ghost = func(object, x) {
|
||||
return _test_call(_set_ghost, object, x)
|
||||
}
|
||||
|
||||
|
||||
var print_ghost = func(object) {
|
||||
return _call(_print_ghost, object)
|
||||
}
|
||||
|
||||
|
||||
var test_ghost=func() {
|
||||
var ghost = create_ghost();
|
||||
print_ghost(nil); # err
|
||||
print_ghost(ghost); # random
|
||||
set_ghost(nil, 114); # err
|
||||
set_ghost(ghost, 114); # success
|
||||
print_ghost(ghost); # 114
|
||||
}
|
||||
|
||||
+54
-50
@@ -1,62 +1,66 @@
|
||||
import.std.dylib;
|
||||
|
||||
var dl=dylib.dlopen("libmat."~(os.platform()=="windows"?"dll":"so"));
|
||||
var vec2=dl.nas_vec2;
|
||||
var vec3=dl.nas_vec3;
|
||||
var (vec2add,vec2sub,vec2mul,vec2div,vec2neg,vec2norm,vec2len,vec2dot)=(
|
||||
dl.nas_vec2_add,
|
||||
dl.nas_vec2_sub,
|
||||
dl.nas_vec2_mult,
|
||||
dl.nas_vec2_div,
|
||||
dl.nas_vec2_neg,
|
||||
dl.nas_vec2_norm,
|
||||
dl.nas_vec2_len,
|
||||
dl.nas_vec2_dot
|
||||
var _dl = dylib.dlopen("libmat."~(os.platform()=="windows"?"dll":"so"));
|
||||
|
||||
var _vec2 = _dl.nas_vec2;
|
||||
|
||||
var _vec3 = _dl.nas_vec3;
|
||||
|
||||
var (_vec2add, _vec2sub, _vec2mul, _vec2div, _vec2neg, _vec2norm, _vec2len, _vec2dot)=(
|
||||
_dl.nas_vec2_add,
|
||||
_dl.nas_vec2_sub,
|
||||
_dl.nas_vec2_mult,
|
||||
_dl.nas_vec2_div,
|
||||
_dl.nas_vec2_neg,
|
||||
_dl.nas_vec2_norm,
|
||||
_dl.nas_vec2_len,
|
||||
_dl.nas_vec2_dot
|
||||
);
|
||||
var (vec3add,vec3sub,vec3mul,vec3div,vec3neg,vec3norm,vec3len,vec3dot)=(
|
||||
dl.nas_vec3_add,
|
||||
dl.nas_vec3_sub,
|
||||
dl.nas_vec3_mult,
|
||||
dl.nas_vec3_div,
|
||||
dl.nas_vec3_neg,
|
||||
dl.nas_vec3_norm,
|
||||
dl.nas_vec3_len,
|
||||
dl.nas_vec3_dot
|
||||
var (_vec3add, _vec3sub, _vec3mul, _vec3div, _vec3neg, _vec3norm, _vec3len, _vec3dot)=(
|
||||
_dl.nas_vec3_add,
|
||||
_dl.nas_vec3_sub,
|
||||
_dl.nas_vec3_mult,
|
||||
_dl.nas_vec3_div,
|
||||
_dl.nas_vec3_neg,
|
||||
_dl.nas_vec3_norm,
|
||||
_dl.nas_vec3_len,
|
||||
_dl.nas_vec3_dot
|
||||
);
|
||||
var (rotate_x,rotate_y,rotate_z)=(
|
||||
dl.nas_rotate_x,
|
||||
dl.nas_rotate_y,
|
||||
dl.nas_rotate_z
|
||||
var (_rotate_x, _rotate_y, _rotate_z)=(
|
||||
_dl.nas_rotate_x,
|
||||
_dl.nas_rotate_y,
|
||||
_dl.nas_rotate_z
|
||||
);
|
||||
var (invoke_i,invoke_ii,invoke_iii)=(
|
||||
var (_invoke_i, _invoke_ii, _invoke_iii)=(
|
||||
dylib.limitcall(1),
|
||||
dylib.limitcall(2),
|
||||
dylib.limitcall(3)
|
||||
);
|
||||
|
||||
var vec2={
|
||||
new: func(x,y){return invoke_ii(vec2,x,y);},
|
||||
add: func(v0,v1){return invoke_ii(vec2add,v0,v1);},
|
||||
sub: func(v0,v1){return invoke_ii(vec2sub,v0,v1);},
|
||||
mul: func(v0,v1){return invoke_ii(vec2mul,v0,v1);},
|
||||
div: func(v0,v1){return invoke_ii(vec2div,v0,v1);},
|
||||
neg: func(v0){return invoke_i(vec2neg,v0);},
|
||||
norm: func(v0){return invoke_i(vec2norm,v0);},
|
||||
len: func(v0){return invoke_i(vec2len,v0);},
|
||||
dot: func(v0,v1){return invoke_ii(vec2dot,v0,v1);}
|
||||
};
|
||||
var vec3={
|
||||
new: func(x,y,z){return invoke_iii(vec3,x,y,z);},
|
||||
add: func(v0,v1){return invoke_ii(vec3add,v0,v1);},
|
||||
sub: func(v0,v1){return invoke_ii(vec3sub,v0,v1);},
|
||||
mul: func(v0,v1){return invoke_ii(vec3mul,v0,v1);},
|
||||
div: func(v0,v1){return invoke_ii(vec3div,v0,v1);},
|
||||
neg: func(v0){return invoke_i(vec3neg,v0);},
|
||||
norm: func(v0){return invoke_i(vec3norm,v0);},
|
||||
len: func(v0){return invoke_i(vec3len,v0);},
|
||||
rx: func(v0,angle){return invoke_ii(rotate_x,v0,angle);},
|
||||
ry: func(v0,angle){return invoke_ii(rotate_y,v0,angle);},
|
||||
rz: func(v0,angle){return invoke_ii(rotate_z,v0,angle);},
|
||||
dot: func(v0,v1){return invoke_ii(vec3dot,v0,v1);}
|
||||
var vec2 = {
|
||||
new: func(x, y) {return _invoke_ii(_vec2, x, y);},
|
||||
add: func(v0, v1) {return _invoke_ii(_vec2add, v0, v1);},
|
||||
sub: func(v0, v1) {return _invoke_ii(_vec2sub, v0, v1);},
|
||||
mul: func(v0, v1) {return _invoke_ii(_vec2mul, v0, v1);},
|
||||
div: func(v0, v1) {return _invoke_ii(_vec2div, v0, v1);},
|
||||
neg: func(v0) {return _invoke_i(_vec2neg, v0);},
|
||||
norm: func(v0) {return _invoke_i(_vec2norm, v0);},
|
||||
len: func(v0) {return _invoke_i(_vec2len, v0);},
|
||||
dot: func(v0, v1) {return _invoke_ii(_vec2dot, v0, v1);}
|
||||
};
|
||||
|
||||
var vec3 = {
|
||||
new: func(x, y, z) {return _invoke_iii(_vec3, x, y, z);},
|
||||
add: func(v0, v1) {return _invoke_ii(_vec3add, v0, v1);},
|
||||
sub: func(v0, v1) {return _invoke_ii(_vec3sub, v0, v1);},
|
||||
mul: func(v0, v1) {return _invoke_ii(_vec3mul, v0, v1);},
|
||||
div: func(v0, v1) {return _invoke_ii(_vec3div, v0, v1);},
|
||||
neg: func(v0) {return _invoke_i(_vec3neg, v0);},
|
||||
norm: func(v0) {return _invoke_i(_vec3norm, v0);},
|
||||
len: func(v0) {return _invoke_i(_vec3len, v0);},
|
||||
rx: func(v0, angle) {return _invoke_ii(_rotate_x, v0, angle);},
|
||||
ry: func(v0, angle) {return _invoke_ii(_rotate_y, v0, angle);},
|
||||
rz: func(v0, angle) {return _invoke_ii(_rotate_z, v0, angle);},
|
||||
dot: func(v0, v1) {return _invoke_ii(_vec3dot, v0, v1);}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user