diff --git a/src/nasal_new_builtin.cpp b/src/nasal_new_builtin.cpp index a1bea78..da79b39 100644 --- a/src/nasal_new_builtin.cpp +++ b/src/nasal_new_builtin.cpp @@ -1,4 +1,4 @@ -#include "nasal_new_builtin.h" +#include "nasal_new_builtin.h" var builtin_print(var* local, gc& ngc) { for(auto& i:local[1].vec().elems) { @@ -1263,4 +1263,99 @@ var builtin_ghosttype(var* local, gc& ngc) { return var::num((u64)arg.obj().ptr); } return ngc.newstr(name); -} \ No newline at end of file +} + +nasal_builtin_table builtin[] = { + {"__print", builtin_print }, + {"__println", builtin_println }, + {"__exit", builtin_exit }, + {"__abort", builtin_abort }, + {"__append", builtin_append }, + {"__setsize", builtin_setsize }, + {"__system", builtin_system }, + {"__input", builtin_input }, + {"__readfile",builtin_readfile}, + {"__fout", builtin_fout }, + {"__split", builtin_split }, + {"__rand", builtin_rand }, + {"__id", builtin_id }, + {"__int", builtin_int }, + {"__floor", builtin_floor }, + {"__num", builtin_num }, + {"__pop", builtin_pop }, + {"__str", builtin_str }, + {"__size", builtin_size }, + {"__u32xor", builtin_u32xor }, + {"__u32and", builtin_u32and }, + {"__u32or", builtin_u32or }, + {"__u32nand", builtin_u32nand }, + {"__u32not", builtin_u32not }, + {"__pow", builtin_pow }, + {"__sin", builtin_sin }, + {"__cos", builtin_cos }, + {"__tan", builtin_tan }, + {"__exp", builtin_exp }, + {"__lg", builtin_lg }, + {"__ln", builtin_ln }, + {"__sqrt", builtin_sqrt }, + {"__atan2", builtin_atan2 }, + {"__isnan", builtin_isnan }, + {"__time", builtin_time }, + {"__contains",builtin_contains}, + {"__delete", builtin_delete }, + {"__keys", builtin_keys }, + {"__die", builtin_die }, + {"__find", builtin_find }, + {"__type", builtin_type }, + {"__substr", builtin_substr }, + {"__streq", builtin_streq }, + {"__left", builtin_left }, + {"__right", builtin_right }, + {"__cmp", builtin_cmp }, + {"__chr", builtin_chr }, + {"__char", builtin_char }, + {"__values", builtin_values }, + {"__exists", builtin_exists }, + {"__open", builtin_open }, + {"__close", builtin_close }, + {"__read", builtin_read }, + {"__write", builtin_write }, + {"__seek", builtin_seek }, + {"__tell", builtin_tell }, + {"__readln", builtin_readln }, + {"__stat", builtin_stat }, + {"__eof", builtin_eof }, + {"__fld", builtin_fld }, + {"__sfld", builtin_sfld }, + {"__setfld", builtin_setfld }, + {"__buf", builtin_buf }, + {"__sleep", builtin_sleep }, + {"__pipe", builtin_pipe }, + {"__fork", builtin_fork }, + {"__waitpid", builtin_waitpid }, + {"__opendir", builtin_opendir }, + {"__readdir", builtin_readdir }, + {"__closedir",builtin_closedir}, + {"__chdir", builtin_chdir }, + {"__environ", builtin_environ }, + {"__getcwd", builtin_getcwd }, + {"__getenv", builtin_getenv }, + {"__dlopen", builtin_dlopen }, + {"__dlclose", builtin_dlclose }, + {"__dlcallv", builtin_dlcallv }, + {"__dlcall", builtin_dlcall }, + {"__platform",builtin_platform}, + {"__arch", builtin_arch }, + {"__md5", builtin_md5 }, + {"__cocreate",builtin_cocreate}, + {"__coresume",builtin_coresume}, + {"__coyield", builtin_coyield }, + {"__costatus",builtin_costatus}, + {"__corun" ,builtin_corun }, + {"__millisec",builtin_millisec}, + {"__sysargv", builtin_sysargv }, + {"__gcextd", builtin_gcextend}, + {"__logtime", builtin_logtime }, + {"__ghosttype", builtin_ghosttype}, + {nullptr, nullptr } +}; \ No newline at end of file diff --git a/src/nasal_new_builtin.h b/src/nasal_new_builtin.h index ec983f8..f372127 100644 --- a/src/nasal_new_builtin.h +++ b/src/nasal_new_builtin.h @@ -131,100 +131,9 @@ var builtin_ghosttype(var*, gc&); // register builtin function's name and it's address here in this table below // this table must end with {nullptr,nullptr} -struct { +struct nasal_builtin_table { const char* name; var (*func)(var*,gc&); -} builtin[]= { - {"__print", builtin_print }, - {"__println", builtin_println }, - {"__exit", builtin_exit }, - {"__abort", builtin_abort }, - {"__append", builtin_append }, - {"__setsize", builtin_setsize }, - {"__system", builtin_system }, - {"__input", builtin_input }, - {"__readfile",builtin_readfile}, - {"__fout", builtin_fout }, - {"__split", builtin_split }, - {"__rand", builtin_rand }, - {"__id", builtin_id }, - {"__int", builtin_int }, - {"__floor", builtin_floor }, - {"__num", builtin_num }, - {"__pop", builtin_pop }, - {"__str", builtin_str }, - {"__size", builtin_size }, - {"__u32xor", builtin_u32xor }, - {"__u32and", builtin_u32and }, - {"__u32or", builtin_u32or }, - {"__u32nand", builtin_u32nand }, - {"__u32not", builtin_u32not }, - {"__pow", builtin_pow }, - {"__sin", builtin_sin }, - {"__cos", builtin_cos }, - {"__tan", builtin_tan }, - {"__exp", builtin_exp }, - {"__lg", builtin_lg }, - {"__ln", builtin_ln }, - {"__sqrt", builtin_sqrt }, - {"__atan2", builtin_atan2 }, - {"__isnan", builtin_isnan }, - {"__time", builtin_time }, - {"__contains",builtin_contains}, - {"__delete", builtin_delete }, - {"__keys", builtin_keys }, - {"__die", builtin_die }, - {"__find", builtin_find }, - {"__type", builtin_type }, - {"__substr", builtin_substr }, - {"__streq", builtin_streq }, - {"__left", builtin_left }, - {"__right", builtin_right }, - {"__cmp", builtin_cmp }, - {"__chr", builtin_chr }, - {"__char", builtin_char }, - {"__values", builtin_values }, - {"__exists", builtin_exists }, - {"__open", builtin_open }, - {"__close", builtin_close }, - {"__read", builtin_read }, - {"__write", builtin_write }, - {"__seek", builtin_seek }, - {"__tell", builtin_tell }, - {"__readln", builtin_readln }, - {"__stat", builtin_stat }, - {"__eof", builtin_eof }, - {"__fld", builtin_fld }, - {"__sfld", builtin_sfld }, - {"__setfld", builtin_setfld }, - {"__buf", builtin_buf }, - {"__sleep", builtin_sleep }, - {"__pipe", builtin_pipe }, - {"__fork", builtin_fork }, - {"__waitpid", builtin_waitpid }, - {"__opendir", builtin_opendir }, - {"__readdir", builtin_readdir }, - {"__closedir",builtin_closedir}, - {"__chdir", builtin_chdir }, - {"__environ", builtin_environ }, - {"__getcwd", builtin_getcwd }, - {"__getenv", builtin_getenv }, - {"__dlopen", builtin_dlopen }, - {"__dlclose", builtin_dlclose }, - {"__dlcallv", builtin_dlcallv }, - {"__dlcall", builtin_dlcall }, - {"__platform",builtin_platform}, - {"__arch", builtin_arch }, - {"__md5", builtin_md5 }, - {"__cocreate",builtin_cocreate}, - {"__coresume",builtin_coresume}, - {"__coyield", builtin_coyield }, - {"__costatus",builtin_costatus}, - {"__corun" ,builtin_corun }, - {"__millisec",builtin_millisec}, - {"__sysargv", builtin_sysargv }, - {"__gcextd", builtin_gcextend}, - {"__logtime", builtin_logtime }, - {"__ghosttype", builtin_ghosttype}, - {nullptr, nullptr } }; + +extern nasal_builtin_table builtin[]; diff --git a/src/nasal_new_gc.h b/src/nasal_new_gc.h index 7e94558..fe84ae9 100644 --- a/src/nasal_new_gc.h +++ b/src/nasal_new_gc.h @@ -27,6 +27,8 @@ #include #include #include +#include +#include #include "nasal_new_header.h"