mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
...
This commit is contained in:
parent
f4e3bc2308
commit
8d7635f158
2
build.py
2
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()
|
||||
|
||||
|
@ -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`.
|
||||
|
@ -19,8 +19,8 @@ enum CompileMode {
|
||||
EXEC_MODE,
|
||||
EVAL_MODE,
|
||||
REPL_MODE,
|
||||
CELL_MODE,
|
||||
JSON_MODE,
|
||||
CELL_MODE
|
||||
};
|
||||
|
||||
struct SourceData {
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user