mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30:18 +00:00
...
This commit is contained in:
parent
e0541ee854
commit
7e66cb1cdd
@ -305,13 +305,14 @@ bool pkpy_push_null(pkpy_vm* vm_handle) {
|
|||||||
// function
|
// function
|
||||||
static PyObject* c_function_wrapper(VM* vm, ArgsView args) {
|
static PyObject* c_function_wrapper(VM* vm, ArgsView args) {
|
||||||
LuaStyleFuncC f = lambda_get_userdata<LuaStyleFuncC>(args.begin());
|
LuaStyleFuncC f = lambda_get_userdata<LuaStyleFuncC>(args.begin());
|
||||||
PyObject** curr_sp = &vm->s_data.top();
|
PyObject** curr_sp = vm->s_data._sp;
|
||||||
int retc = f(vm);
|
int retc = f(vm);
|
||||||
// propagate_if_errored
|
// propagate_if_errored
|
||||||
if (vm->_c.error != nullptr){
|
if (vm->_c.error != nullptr){
|
||||||
Exception e = _py_cast<Exception&>(vm, vm->_c.error);
|
Exception e = _py_cast<Exception&>(vm, vm->_c.error);
|
||||||
vm->_c.error = nullptr;
|
vm->_c.error = nullptr;
|
||||||
vm->_error(e);
|
vm->_error(e);
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
PK_ASSERT(retc == vm->s_data._sp-curr_sp);
|
PK_ASSERT(retc == vm->s_data._sp-curr_sp);
|
||||||
if(retc == 0) return vm->None;
|
if(retc == 0) return vm->None;
|
||||||
|
@ -41,9 +41,17 @@ std::string pkpy_platform_getline(bool* eof){
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// std::string f_input(){
|
std::string f_input(){
|
||||||
// return pkpy::platform_getline();
|
bool eof;
|
||||||
// }
|
return pkpy_platform_getline(&eof);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int f_input(pkpy_vm* vm){
|
||||||
|
bool eof;
|
||||||
|
std::string output = pkpy_platform_getline(&eof);
|
||||||
|
pkpy_push_string(vm, output.c_str());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv){
|
int main(int argc, char** argv){
|
||||||
#if _WIN32
|
#if _WIN32
|
||||||
@ -54,7 +62,12 @@ int main(int argc, char** argv){
|
|||||||
dlopen("libpocketpy.dylib", RTLD_NOW | RTLD_GLOBAL);
|
dlopen("libpocketpy.dylib", RTLD_NOW | RTLD_GLOBAL);
|
||||||
#endif
|
#endif
|
||||||
pkpy_vm* vm = pkpy_new_vm(true);
|
pkpy_vm* vm = pkpy_new_vm(true);
|
||||||
// pkpy::_bind(vm, vm->builtins, "input() -> str", &f_input);
|
|
||||||
|
pkpy_push_function(vm, "input() -> str", f_input);
|
||||||
|
pkpy_eval(vm, "__import__('builtins')");
|
||||||
|
pkpy_store_attr(vm, pkpy_name("input"));
|
||||||
|
|
||||||
|
PK_ASSERT(pkpy_stack_size(vm) == 0);
|
||||||
|
|
||||||
if(argc == 1){
|
if(argc == 1){
|
||||||
void* repl = pkpy_new_repl(vm);
|
void* repl = pkpy_new_repl(vm);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user