📝 update test/module_test.nas
This commit is contained in:
parent
f8692f1e4e
commit
d567f5abf8
|
@ -56,7 +56,7 @@ extern "C" nasal_ref nas_init(std::vector<nasal_ref>& args,nasal_gc& gc){
|
||||||
tcflush(0,TCIOFLUSH);
|
tcflush(0,TCIOFLUSH);
|
||||||
tcgetattr(0,&init_termios);
|
tcgetattr(0,&init_termios);
|
||||||
new_termios=init_termios;
|
new_termios=init_termios;
|
||||||
new_termios.c_lflag&=~(ICANON|ECHO|ECHONL);
|
new_termios.c_lflag&=~(ICANON|ECHO|ECHONL|ECHOE);
|
||||||
// vmin=0 is nonblock input, but in wsl there is a bug that will block input
|
// vmin=0 is nonblock input, but in wsl there is a bug that will block input
|
||||||
// so we use fcntl to write the nonblock input
|
// so we use fcntl to write the nonblock input
|
||||||
new_termios.c_cc[VMIN]=1;
|
new_termios.c_cc[VMIN]=1;
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
# this provides safe usage of dylib
|
# this provides safe usage of dylib
|
||||||
# when dylib is closed,
|
# when dylib is closed,
|
||||||
# all the invalid functions cannot be called
|
# all the invalid functions cannot be called
|
||||||
import("lib.nas");
|
|
||||||
|
|
||||||
var module_call_func=func(fptr,args){
|
var module_call_func=func(fptr,args){
|
||||||
return __builtin_dlcall;
|
return __builtin_dlcall;
|
||||||
|
|
|
@ -1,5 +1,44 @@
|
||||||
import("./module/libfib.nas");
|
var libfib=func(){
|
||||||
|
var (dd,fib,qfib)=(nil,nil,nil);
|
||||||
|
return {
|
||||||
|
open:func(){
|
||||||
|
if(dd==nil){
|
||||||
|
dd=dylib.dlopen("./module/libfib.so");
|
||||||
|
fib=dylib.dlsym(dd,"fib");
|
||||||
|
qfib=dylib.dlsym(dd,"quick_fib");
|
||||||
|
}else{
|
||||||
|
println("[info ] already loaded.");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
close:func(){
|
||||||
|
if(dd==nil){
|
||||||
|
println("[error ] already closed.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dylib.dlclose(dd);
|
||||||
|
(dd,fib,qfib)=(nil,nil,nil);
|
||||||
|
},
|
||||||
|
fib:func(x){
|
||||||
|
if(fib!=nil)
|
||||||
|
return dylib.dlcall(fib,x);
|
||||||
|
println("[error ] cannot call fib.");
|
||||||
|
return nil;
|
||||||
|
},
|
||||||
|
qfib:func(x){
|
||||||
|
if(qfib!=nil)
|
||||||
|
return dylib.dlcall(qfib,x);
|
||||||
|
println("[error ] cannot call qfib.");
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}();
|
||||||
|
|
||||||
println(libfib);
|
println("[keys ] ",keys(libfib));
|
||||||
println(libfib.fib(29));
|
libfib.open();
|
||||||
println(libfib.qfib(29));
|
libfib.open();
|
||||||
|
println("[result] ",libfib.fib(40));
|
||||||
|
println("[result] ",libfib.qfib(40));
|
||||||
|
libfib.close();
|
||||||
|
println("[result] ",libfib.fib(40));
|
||||||
|
println("[result] ",libfib.qfib(40));
|
||||||
|
libfib.close();
|
Loading…
Reference in New Issue