diff --git a/build.py b/build.py index 85acfe91..fddebae8 100644 --- a/build.py +++ b/build.py @@ -52,7 +52,7 @@ if "web" in sys.argv: os.system(r''' rm -rf web/lib/ mkdir -p web/lib/ -em++ src/main.cpp -fno-rtti -fexceptions -O3 -sEXPORTED_FUNCTIONS=_pkpy_delete,_pkpy_new_repl,_pkpy_repl_input,_pkpy_new_vm,_pkpy_vm_add_module,_pkpy_vm_eval,_pkpy_vm_exec,_pkpy_vm_get_global -sEXPORTED_RUNTIME_METHODS=ccall -o web/lib/pocketpy.js +em++ src/main.cpp -fno-rtti -fexceptions -O3 -sEXPORTED_FUNCTIONS=_pkpy_new_repl,_pkpy_repl_input,_pkpy_new_vm -sEXPORTED_RUNTIME_METHODS=ccall -o web/lib/pocketpy.js ''') DONE() diff --git a/docs/C-API/vm.md b/docs/C-API/vm.md index 02aba913..9d846304 100644 --- a/docs/C-API/vm.md +++ b/docs/C-API/vm.md @@ -27,13 +27,6 @@ If there is any error, return `nullptr`. Run a given source on a virtual machine. -#### `char* pkpy_vm_get_global(VM* vm, const char* name)` - -Get a global variable of a virtual machine. - -Return `__repr__` of the result. -If the variable is not found, return `nullptr`. - #### `void pkpy_delete(void* p)` Delete a pointer allocated by `pkpy_xxx_xxx`. diff --git a/src/error.h b/src/error.h index 2485c1c6..15d159b9 100644 --- a/src/error.h +++ b/src/error.h @@ -19,8 +19,8 @@ enum CompileMode { EXEC_MODE, EVAL_MODE, REPL_MODE, - CELL_MODE, JSON_MODE, + CELL_MODE }; struct SourceData { diff --git a/src/pocketpy.h b/src/pocketpy.h index 3600ee97..c85267d5 100644 --- a/src/pocketpy.h +++ b/src/pocketpy.h @@ -1355,20 +1355,14 @@ extern "C" { } PK_LEGACY_EXPORT - void pkpy_vm_exec_cell(pkpy::VM* vm, const char* source){ - vm->exec(source, "", pkpy::CELL_MODE); - } - - PK_LEGACY_EXPORT - char* pkpy_vm_get_global(pkpy::VM* vm, const char* name){ - pkpy::PyObject* val = vm->_main->attr().try_get(name); - if(val == nullptr) return nullptr; - try{ - pkpy::Str repr = pkpy::CAST(pkpy::Str&, vm->py_repr(val)); - return repr.c_str_dup(); - }catch(...){ - return nullptr; + void pkpy_vm_exec_2(pkpy::VM* vm, const char* source, const char* filename, int mode, const char* module){ + pkpy::PyObject* mod; + if(module == nullptr) mod = vm->_main; + else{ + mod = vm->_modules.try_get(module); + if(mod == nullptr) return; } + vm->exec(source, filename, (pkpy::CompileMode)mode, mod); } PK_LEGACY_EXPORT