From d0a26c5a0972d7d4d85d647fd4b2c78cb876ab93 Mon Sep 17 00:00:00 2001 From: BLUELOVETH Date: Fri, 14 Jul 2023 18:35:22 +0800 Subject: [PATCH] ... --- include/pocketpy/pocketpy_c.h | 3 ++- src/pocketpy_c.cpp | 11 +++++++++-- src2/main.cpp | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/include/pocketpy/pocketpy_c.h b/include/pocketpy/pocketpy_c.h index 3ba4ca62..dffde873 100644 --- a/include/pocketpy/pocketpy_c.h +++ b/include/pocketpy/pocketpy_c.h @@ -49,7 +49,7 @@ PK_EXPORT bool pkpy_is_bool(pkpy_vm*, int i); PK_EXPORT bool pkpy_to_bool(pkpy_vm*, int i, bool* out); // string -PK_EXPORT bool pkpy_push_string(pkpy_vm*, const char*); +PK_EXPORT bool pkpy_push_string(pkpy_vm*, pkpy_CString); PK_EXPORT bool pkpy_is_string(pkpy_vm*, int i); PK_EXPORT bool pkpy_to_string(pkpy_vm*, int i, pkpy_CString* out); @@ -88,6 +88,7 @@ PK_EXPORT bool pkpy_vectorcall(pkpy_vm*, int argc); /* Special APIs */ PK_EXPORT void pkpy_free(void* p); +PK_EXPORT pkpy_CString pkpy_string(const char*); PK_EXPORT pkpy_CName pkpy_name(const char*); PK_EXPORT void pkpy_compile_to_string(pkpy_vm*, const char* source, const char* filename, int mode, bool* ok, char** out); diff --git a/src/pocketpy_c.cpp b/src/pocketpy_c.cpp index a177ebfb..e6776f39 100644 --- a/src/pocketpy_c.cpp +++ b/src/pocketpy_c.cpp @@ -216,10 +216,10 @@ bool pkpy_to_bool(pkpy_vm* vm_handle, int i, bool* out){ } // string -bool pkpy_push_string(pkpy_vm* vm_handle, const char* value) { +bool pkpy_push_string(pkpy_vm* vm_handle, pkpy_CString value) { VM* vm = (VM*) vm_handle; PK_ASSERT_NO_ERROR() - PyObject* res = py_var(vm, value); + PyObject* res = py_var(vm, std::string_view(value.data, value.size)); vm->s_data.push(res); return true; } @@ -483,6 +483,13 @@ void pkpy_free(void* p){ free(p); } +pkpy_CString pkpy_string(const char* value){ + pkpy_CString s; + s.data = value; + s.size = strlen(value); + return s; +} + pkpy_CName pkpy_name(const char* name){ return StrName(name).index; } diff --git a/src2/main.cpp b/src2/main.cpp index 1405c34b..d2ed5bd5 100644 --- a/src2/main.cpp +++ b/src2/main.cpp @@ -49,7 +49,7 @@ std::string f_input(){ static int f_input(pkpy_vm* vm){ bool eof; std::string output = pkpy_platform_getline(&eof); - pkpy_push_string(vm, output.c_str()); + pkpy_push_string(vm, pkpy_string(output.c_str())); return 1; }