1
0
blueloveTH 2 жил өмнө
parent
commit
8d7635f158
4 өөрчлөгдсөн 9 нэмэгдсэн , 22 устгасан
  1. 1 1
      build.py
  2. 0 7
      docs/C-API/vm.md
  3. 1 1
      src/error.h
  4. 7 13
      src/pocketpy.h

+ 1 - 1
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()
 

+ 0 - 7
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`.

+ 1 - 1
src/error.h

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

+ 7 - 13
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, "<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