diff --git a/README.md b/README.md index 87344c0..9f26b2a 100644 --- a/README.md +++ b/README.md @@ -522,7 +522,7 @@ nas_ref builtin_print(nas_ref* local,nasal_gc& gc) nas_ref vec=local[1]; // main process // also check number of arguments and type here - // if get an error,use builtin_err + // if get an error,use nas_err for(auto& i:vec.vec().elems) switch(i.type) { @@ -596,7 +596,7 @@ nas_ref builtin_keys(nas_ref* local,nasal_gc& gc) { nas_ref hash=local[1]; if(hash.type!=vm_hash) - return builtin_err("keys","\"hash\" must be hash"); + return nas_err("keys","\"hash\" must be hash"); // avoid being sweeped nas_ref res=gc.temp=gc.alloc(vm_vec); auto& vec=res.vec().elems; @@ -648,10 +648,10 @@ extern "C" nas_ref fib(std::vector& args,nasal_gc& gc){ // get values from the vector that must be used here nas_ref num=args[0]; // if you want your function safer, try this - // builtin_err will print the error info on screen + // nas_err will print the error info on screen // and return vm_null for runtime to interrupt if(num.type!=vm_num) - return builtin_err("extern_fib","\"num\" must be number"); + return nas_err("extern_fib","\"num\" must be number"); // ok, you must know that vm_num now is not managed by gc // if want to return a gc object, use gc.alloc(type) // usage of gc is the same as adding a native function diff --git a/doc/README_zh.md b/doc/README_zh.md index 1a865d5..d4279ff 100644 --- a/doc/README_zh.md +++ b/doc/README_zh.md @@ -563,7 +563,7 @@ nas_ref builtin_keys(nas_ref* local,nasal_gc& gc) { nas_ref hash=local[1]; if(hash.type!=vm_hash) - return builtin_err("keys","\"hash\" must be hash"); + return nas_err("keys","\"hash\" must be hash"); // 使用gc.temp来存储gc管理的变量,防止错误的回收 nas_ref res=gc.temp=gc.alloc(vm_vec); auto& vec=res.vec().elems; @@ -612,7 +612,7 @@ extern "C" nas_ref fib(std::vector& args,nasal_gc& gc){ // 如果你想让这个函数有更强的稳定性,那么一定要进行合法性检查 // builtin_err会输出错误信息并返回错误类型让虚拟机终止执行 if(num.type!=vm_num) - return builtin_err("extern_fib","\"num\" must be number"); + return nas_err("extern_fib","\"num\" must be number"); // vm_num作为普通的数字类型,不是内存管理的对象,所以无需申请 // 如果需要返回内存管理的对象,请使用gc.alloc(type) return {vm_num,fibonaci(num.tonum())}; diff --git a/module/fib.cpp b/module/fib.cpp index d5a7936..d9ffc30 100644 --- a/module/fib.cpp +++ b/module/fib.cpp @@ -9,19 +9,19 @@ double fibonaci(double x){ extern "C" nas_ref fib(std::vector& args,nasal_gc& gc){ std::cout<<"[mod] this is the first test module of nasal\n"; if(!args.size()) - return builtin_err("fib","lack arguments"); + return nas_err("fib","lack arguments"); nas_ref num=args[0]; if(num.type!=vm_num) - return builtin_err("extern_fib","\"num\" must be number"); + return nas_err("extern_fib","\"num\" must be number"); return {vm_num,fibonaci(num.tonum())}; } extern "C" nas_ref quick_fib(std::vector& args,nasal_gc& gc){ std::cout<<"[mod] this is the first test module of nasal\n"; if(!args.size()) - return builtin_err("fib","lack arguments"); + return nas_err("fib","lack arguments"); nas_ref num=args[0]; if(num.type!=vm_num) - return builtin_err("extern_quick_fib","\"num\" must be number"); + return nas_err("extern_quick_fib","\"num\" must be number"); if(num.num()<2) return num; double a=1,b=1,res=0; diff --git a/module/nasocket.cpp b/module/nasocket.cpp index 9b2c039..18cdbc2 100644 --- a/module/nasocket.cpp +++ b/module/nasocket.cpp @@ -26,14 +26,14 @@ static WSAmanager win; extern "C" nas_ref nas_socket(std::vector& args,nasal_gc& gc){ if(args[0].type!=vm_num || args[1].type!=vm_num || args[2].type!=vm_num) - return builtin_err("socket","\"af\", \"type\", \"protocol\" should be number"); + return nas_err("socket","\"af\", \"type\", \"protocol\" should be number"); int sd=socket(args[0].num(),args[1].num(),args[2].num()); return {vm_num,(double)sd}; } extern "C" nas_ref nas_closesocket(std::vector& args,nasal_gc& gc){ if(args[0].type!=vm_num) - return builtin_err("closesocket","\"\" should be number"); + return nas_err("closesocket","\"\" should be number"); #ifdef _WIN32 return {vm_num,(double)closesocket(args[0].num())}; #else @@ -43,19 +43,19 @@ extern "C" nas_ref nas_closesocket(std::vector& args,nasal_gc& gc){ extern "C" nas_ref nas_shutdown(std::vector& args,nasal_gc& gc){ if(args[0].type!=vm_num) - return builtin_err("shutdown","\"sd\" must be a number"); + return nas_err("shutdown","\"sd\" must be a number"); if(args[1].type!=vm_num) - return builtin_err("shutdown","\"how\" must be a number"); + return nas_err("shutdown","\"how\" must be a number"); return {vm_num,(double)shutdown(args[0].num(),args[1].num())}; } extern "C" nas_ref nas_bind(std::vector& args,nasal_gc& gc){ if(args[0].type!=vm_num) - return builtin_err("bind","\"sd\" muse be a number"); + return nas_err("bind","\"sd\" muse be a number"); if(args[1].type!=vm_str) - return builtin_err("bind","\"ip\" should be a string including an ip with correct format"); + return nas_err("bind","\"ip\" should be a string including an ip with correct format"); if(args[2].type!=vm_num) - return builtin_err("bind","\"port\" must be a number"); + return nas_err("bind","\"port\" must be a number"); sockaddr_in server; memset(&server,0,sizeof(sockaddr_in)); server.sin_family=AF_INET; @@ -66,19 +66,19 @@ extern "C" nas_ref nas_bind(std::vector& args,nasal_gc& gc){ extern "C" nas_ref nas_listen(std::vector& args,nasal_gc& gc){ if(args[0].type!=vm_num) - return builtin_err("listen","\"sd\" must be a number"); + return nas_err("listen","\"sd\" must be a number"); if(args[1].type!=vm_num) - return builtin_err("listen","\"backlog\" must be a number"); + return nas_err("listen","\"backlog\" must be a number"); return{vm_num,(double)listen(args[0].num(),args[1].num())}; } extern "C" nas_ref nas_connect(std::vector& args,nasal_gc& gc){ if(args[0].type!=vm_num) - return builtin_err("connect","\"sd\" must be a number"); + return nas_err("connect","\"sd\" must be a number"); if(args[1].type!=vm_str) - return builtin_err("connect","\"hostname\" must be a string"); + return nas_err("connect","\"hostname\" must be a string"); if(args[2].type!=vm_num) - return builtin_err("connect","\"port\" must be a number"); + return nas_err("connect","\"port\" must be a number"); sockaddr_in addr; memset(&addr,0,sizeof(sockaddr_in)); addr.sin_family=AF_INET; @@ -90,7 +90,7 @@ extern "C" nas_ref nas_connect(std::vector& args,nasal_gc& gc){ extern "C" nas_ref nas_accept(std::vector& args,nasal_gc& gc){ if(args[0].type!=vm_num) - return builtin_err("accept","\"sd\" must be a number"); + return nas_err("accept","\"sd\" must be a number"); sockaddr_in client; int socklen=sizeof(sockaddr_in); #ifdef _WIN32 @@ -108,25 +108,25 @@ extern "C" nas_ref nas_accept(std::vector& args,nasal_gc& gc){ extern "C" nas_ref nas_send(std::vector& args,nasal_gc& gc){ if(args[0].type!=vm_num) - return builtin_err("send","\"sd\" must be a number"); + return nas_err("send","\"sd\" must be a number"); if(args[1].type!=vm_str) - return builtin_err("send","\"buff\" must be a string"); + return nas_err("send","\"buff\" must be a string"); if(args[2].type!=vm_num) - return builtin_err("send","\"flags\" muse be a number"); + return nas_err("send","\"flags\" muse be a number"); return {vm_num,(double)send(args[0].num(),args[1].str().c_str(),args[1].str().length(),args[2].num())}; } extern "C" nas_ref nas_sendto(std::vector& args,nasal_gc& gc){ if(args[0].type!=vm_num) - return builtin_err("sendto","\"sd\" must be a number"); + return nas_err("sendto","\"sd\" must be a number"); if(args[1].type!=vm_str) - return builtin_err("sendto","\"hostname\" must be a string"); + return nas_err("sendto","\"hostname\" must be a string"); if(args[2].type!=vm_num) - return builtin_err("sendto","\"port\" must be a number"); + return nas_err("sendto","\"port\" must be a number"); if(args[3].type!=vm_str) - return builtin_err("sendto","\"buff\" must be a string"); + return nas_err("sendto","\"buff\" must be a string"); if(args[4].type!=vm_num) - return builtin_err("sendto","\"flags\" must be a number"); + return nas_err("sendto","\"flags\" must be a number"); sockaddr_in addr; memset(&addr,0,sizeof(sockaddr_in)); addr.sin_family=AF_INET; @@ -138,13 +138,13 @@ extern "C" nas_ref nas_sendto(std::vector& args,nasal_gc& gc){ extern "C" nas_ref nas_recv(std::vector& args,nasal_gc& gc){ if(args[0].type!=vm_num) - return builtin_err("recv","\"sd\" must be a number"); + return nas_err("recv","\"sd\" must be a number"); if(args[1].type!=vm_num) - return builtin_err("recv","\"len\" must be a number"); + return nas_err("recv","\"len\" must be a number"); if(args[1].num()<=0 || args[1].num()>16*1024*1024) - return builtin_err("recv","\"len\" out of range"); + return nas_err("recv","\"len\" out of range"); if(args[2].type!=vm_num) - return builtin_err("recv","\"flags\" muse be a number"); + return nas_err("recv","\"flags\" muse be a number"); nas_ref res=gc.temp=gc.alloc(vm_hash); auto& hash=res.hash().elems; char* buf=new char[(int)args[1].num()]; @@ -157,13 +157,13 @@ extern "C" nas_ref nas_recv(std::vector& args,nasal_gc& gc){ extern "C" nas_ref nas_recvfrom(std::vector& args,nasal_gc& gc){ if(args[0].type!=vm_num) - return builtin_err("recvfrom","\"sd\" must be a number"); + return nas_err("recvfrom","\"sd\" must be a number"); if(args[1].type!=vm_num) - return builtin_err("recvfrom","\"len\" must be a number"); + return nas_err("recvfrom","\"len\" must be a number"); if(args[1].num()<=0 || args[1].num()>16*1024*1024) - return builtin_err("recvfrom","\"len\" out of range"); + return nas_err("recvfrom","\"len\" out of range"); if(args[2].type!=vm_num) - return builtin_err("recvfrom","\"flags\" muse be a number"); + return nas_err("recvfrom","\"flags\" muse be a number"); sockaddr_in addr; int socklen=sizeof(sockaddr_in); nas_ref res=gc.temp=gc.alloc(vm_hash);