This commit is contained in:
BLUELOVETH 2023-07-14 18:35:22 +08:00
parent c0dc98042e
commit d0a26c5a09
3 changed files with 12 additions and 4 deletions

View File

@ -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); PK_EXPORT bool pkpy_to_bool(pkpy_vm*, int i, bool* out);
// string // 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_is_string(pkpy_vm*, int i);
PK_EXPORT bool pkpy_to_string(pkpy_vm*, int i, pkpy_CString* out); 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 */ /* Special APIs */
PK_EXPORT void pkpy_free(void* p); 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 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); PK_EXPORT void pkpy_compile_to_string(pkpy_vm*, const char* source, const char* filename, int mode, bool* ok, char** out);

View File

@ -216,10 +216,10 @@ bool pkpy_to_bool(pkpy_vm* vm_handle, int i, bool* out){
} }
// string // 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; VM* vm = (VM*) vm_handle;
PK_ASSERT_NO_ERROR() 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); vm->s_data.push(res);
return true; return true;
} }
@ -483,6 +483,13 @@ void pkpy_free(void* p){
free(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){ pkpy_CName pkpy_name(const char* name){
return StrName(name).index; return StrName(name).index;
} }

View File

@ -49,7 +49,7 @@ std::string f_input(){
static int f_input(pkpy_vm* vm){ static int f_input(pkpy_vm* vm){
bool eof; bool eof;
std::string output = pkpy_platform_getline(&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; return 1;
} }