mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 19:40: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'''
|
os.system(r'''
|
||||||
rm -rf web/lib/
|
rm -rf web/lib/
|
||||||
mkdir -p 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()
|
DONE()
|
||||||
|
|
||||||
|
@ -27,13 +27,6 @@ If there is any error, return `nullptr`.
|
|||||||
|
|
||||||
Run a given source on a virtual machine.
|
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)`
|
#### `void pkpy_delete(void* p)`
|
||||||
|
|
||||||
Delete a pointer allocated by `pkpy_xxx_xxx`.
|
Delete a pointer allocated by `pkpy_xxx_xxx`.
|
||||||
|
@ -19,8 +19,8 @@ enum CompileMode {
|
|||||||
EXEC_MODE,
|
EXEC_MODE,
|
||||||
EVAL_MODE,
|
EVAL_MODE,
|
||||||
REPL_MODE,
|
REPL_MODE,
|
||||||
CELL_MODE,
|
|
||||||
JSON_MODE,
|
JSON_MODE,
|
||||||
|
CELL_MODE
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SourceData {
|
struct SourceData {
|
||||||
|
@ -1355,20 +1355,14 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PK_LEGACY_EXPORT
|
PK_LEGACY_EXPORT
|
||||||
void pkpy_vm_exec_cell(pkpy::VM* vm, const char* source){
|
void pkpy_vm_exec_2(pkpy::VM* vm, const char* source, const char* filename, int mode, const char* module){
|
||||||
vm->exec(source, "<cell>", pkpy::CELL_MODE);
|
pkpy::PyObject* mod;
|
||||||
}
|
if(module == nullptr) mod = vm->_main;
|
||||||
|
else{
|
||||||
PK_LEGACY_EXPORT
|
mod = vm->_modules.try_get(module);
|
||||||
char* pkpy_vm_get_global(pkpy::VM* vm, const char* name){
|
if(mod == nullptr) return;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
vm->exec(source, filename, (pkpy::CompileMode)mode, mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
PK_LEGACY_EXPORT
|
PK_LEGACY_EXPORT
|
||||||
|
Loading…
x
Reference in New Issue
Block a user