blueloveTH 2 năm trước cách đây
mục cha
commit
cdd6776058
3 tập tin đã thay đổi với 34 bổ sung61 xóa
  1. 8 15
      include/pocketpy/export.h
  2. 23 31
      include/pocketpy/pocketpy_c.h
  3. 3 15
      src/pocketpy_c.cpp

+ 8 - 15
include/pocketpy/export.h

@@ -1,17 +1,5 @@
 #ifndef PK_EXPORT
 
-#ifdef _WIN32
-#define PK_EXPORT __declspec(dllexport)
-#elif __EMSCRIPTEN__
-#include <emscripten.h>
-#define PK_EXPORT EMSCRIPTEN_KEEPALIVE
-#else
-#define PK_EXPORT __attribute__((visibility("default")))
-#endif
-
-#endif
-
-
 #ifdef _WIN32
 
 #ifndef WIN32_LEAN_AND_MEAN
@@ -24,12 +12,17 @@
 
 #include <Windows.h>
 
+#define PK_EXPORT __declspec(dllexport)
 #elif __EMSCRIPTEN__
-
 #include <emscripten.h>
+#define PK_EXPORT EMSCRIPTEN_KEEPALIVE
+#else
+#define PK_EXPORT __attribute__((visibility("default")))
+#endif
 
-#elif __unix__
+#endif
 
-#include <dlfcn.h>
 
+#ifdef __unix__
+#include <dlfcn.h>
 #endif

+ 23 - 31
include/pocketpy/pocketpy_c.h

@@ -108,52 +108,44 @@ PK_EXPORT bool pkpy_check_stack(pkpy_vm*, int free);
 //returns the number of elements on the stack
 PK_EXPORT int pkpy_stack_size(pkpy_vm*);
 
-typedef void (*OutputHandler)(pkpy_vm*, const char*);
-PK_EXPORT void pkpy_set_output_handlers(pkpy_vm*, OutputHandler stdout_handler, OutputHandler stderr_handler);
-
 PK_EXPORT bool pkpy_getattr(pkpy_vm*, const char* name);
 PK_EXPORT bool pkpy_setattr(pkpy_vm*, const char* name);
 PK_EXPORT bool pkpy_eval(pkpy_vm*, const char* source);
 
-#ifdef __cplusplus
-}
-#endif
-
+/*********************************************************/
+PK_EXPORT
+void pkpy_free(void* p);
 
-/*************************GLOBAL NAMESPACE*************************/
-extern "C" {
-    PK_EXPORT
-    void pkpy_free(void* p);
+PK_EXPORT
+void pkpy_vm_exec(void* vm, const char* source);
 
-    PK_EXPORT
-    void pkpy_vm_exec(void* vm, const char* source);
+PK_EXPORT
+void pkpy_vm_exec_2(void* vm, const char* source, const char* filename, int mode, const char* module);
 
-    PK_EXPORT
-    void pkpy_vm_exec_2(void* vm, const char* source, const char* filename, int mode, const char* module);
+PK_EXPORT
+void pkpy_vm_compile(void* vm, const char* source, const char* filename, int mode, bool* ok, char** res);
 
-    PK_EXPORT
-    void pkpy_vm_compile(void* vm, const char* source, const char* filename, int mode, bool* ok, char** res);
+PK_EXPORT
+void* pkpy_new_repl(void* vm);
 
-    PK_EXPORT
-    void* pkpy_new_repl(void* vm);
+PK_EXPORT
+bool pkpy_repl_input(void* r, const char* line);
 
-    PK_EXPORT
-    bool pkpy_repl_input(void* r, const char* line);
+PK_EXPORT
+void pkpy_vm_add_module(void* vm, const char* name, const char* source);
 
-    PK_EXPORT
-    void pkpy_vm_add_module(void* vm, const char* name, const char* source);
+PK_EXPORT
+void* pkpy_new_vm(bool enable_os=true);
 
-    PK_EXPORT
-    void* pkpy_new_vm(bool enable_os=true);
+PK_EXPORT
+void pkpy_delete_vm(void* vm);
 
-    PK_EXPORT
-    void pkpy_delete_vm(void* vm);
+PK_EXPORT
+void pkpy_delete_repl(void* repl);
 
-    PK_EXPORT
-    void pkpy_delete_repl(void* repl);
+#ifdef __cplusplus
 }
-
-
+#endif
 
 
 #endif

+ 3 - 15
src/pocketpy_c.cpp

@@ -131,27 +131,15 @@ void gc_marker_ex(CVM* vm) {
     if(vm->error != nullptr) PK_OBJ_MARK(vm->error);
 }
 
-static OutputHandler stdout_handler = nullptr;
-static OutputHandler stderr_handler = nullptr;
-
-void pkpy_set_output_handlers(pkpy_vm*, OutputHandler stdout_handler, OutputHandler stderr_handler){
-    ::stdout_handler = stdout_handler;
-    ::stderr_handler = stderr_handler;
-}
-
 pkpy_vm* pkpy_vm_create(bool use_stdio, bool enable_os) {
     CVM* vm = new CVM(enable_os);
     vm->c_data = new LuaStack();
     vm->heap._gc_marker_ex = (void (*)(VM*)) gc_marker_ex;
 
     if (!use_stdio) {
-        vm->_stdout = [](VM* vm, const Str& s){
-            std::string str = s.str();
-            if (stdout_handler != nullptr) stdout_handler((pkpy_vm*)vm, str.c_str());
-        };
-        vm->_stderr = [](VM* vm, const Str& s){
-            std::string str = s.str();
-            if (stderr_handler != nullptr) stderr_handler((pkpy_vm*)vm, str.c_str());
+        vm->_stdout = vm->_stderr = [](VM* vm, const Str& s){
+            PK_UNUSED(vm);
+            PK_UNUSED(s);
         };
     }