This commit is contained in:
blueloveTH 2023-05-26 20:31:13 +08:00
parent f4e3bc2308
commit 8d7635f158
4 changed files with 9 additions and 22 deletions

View File

@ -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()

View File

@ -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`.

View File

@ -19,8 +19,8 @@ enum CompileMode {
EXEC_MODE,
EVAL_MODE,
REPL_MODE,
CELL_MODE,
JSON_MODE,
CELL_MODE
};
struct SourceData {

View File

@ -1355,20 +1355,14 @@ extern "C" {
}
PK_LEGACY_EXPORT
void pkpy_vm_exec_cell(pkpy::VM* vm, const char* source){
vm->exec(source, "<cell>", 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