mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30:18 +00:00
up
This commit is contained in:
parent
90fce36a8c
commit
9f01810981
@ -32,6 +32,10 @@ class _MyAppState extends State<MyApp> {
|
|||||||
// create a REPL
|
// create a REPL
|
||||||
repl = pkpy.REPL(vm);
|
repl = pkpy.REPL(vm);
|
||||||
|
|
||||||
|
// create a binding
|
||||||
|
vm.bind<int>("builtins", "add", (int x, int y) => x + y);
|
||||||
|
vm.bind<String>("builtins", "test", (String x) => x.split(',').join('|'));
|
||||||
|
|
||||||
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
|
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
|
||||||
refresh();
|
refresh();
|
||||||
});
|
});
|
||||||
|
@ -108,7 +108,7 @@ packages:
|
|||||||
path: ".."
|
path: ".."
|
||||||
relative: true
|
relative: true
|
||||||
source: path
|
source: path
|
||||||
version: "0.8.0+1"
|
version: "0.8.1"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -21,7 +21,6 @@ class StrWrapper {
|
|||||||
|
|
||||||
dynamic invoke_f_any(ffi.Pointer<Utf8> p) {
|
dynamic invoke_f_any(ffi.Pointer<Utf8> p) {
|
||||||
String s = p.toDartString();
|
String s = p.toDartString();
|
||||||
malloc.free(p);
|
|
||||||
var parts = s.split(' ');
|
var parts = s.split(' ');
|
||||||
List<dynamic> args = [];
|
List<dynamic> args = [];
|
||||||
for (int i = 1; i < parts.length; i++) {
|
for (int i = 1; i < parts.length; i++) {
|
||||||
|
@ -124,7 +124,7 @@ class VM {
|
|||||||
pointer, StrWrapper(mod).p, StrWrapper(name).p, t_code<T>());
|
pointer, StrWrapper(mod).p, StrWrapper(name).p, t_code<T>());
|
||||||
if (p == ffi.nullptr) throw Exception("vm.bind() failed");
|
if (p == ffi.nullptr) throw Exception("vm.bind() failed");
|
||||||
String s = p.toDartString();
|
String s = p.toDartString();
|
||||||
malloc.free(p);
|
_Bindings.pkpy_delete(p);
|
||||||
register(s, f);
|
register(s, f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
name: pocketpy
|
name: pocketpy
|
||||||
description: A lightweight Python interpreter for game engines. It supports Android/iOS/Web.
|
description: A lightweight Python interpreter for game engines. It supports Android/iOS/Web.
|
||||||
version: 0.8.0+2
|
version: 0.8.1
|
||||||
homepage: https://pocketpy.dev
|
homepage: https://pocketpy.dev
|
||||||
repository: https://github.com/blueloveth/pocketpy
|
repository: https://github.com/blueloveth/pocketpy
|
||||||
|
|
||||||
|
@ -2055,10 +2055,6 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
operator const char*() const {
|
|
||||||
return c_str();
|
|
||||||
}
|
|
||||||
|
|
||||||
~_Str(){
|
~_Str(){
|
||||||
if(_u8_index != nullptr) delete _u8_index;
|
if(_u8_index != nullptr) delete _u8_index;
|
||||||
}
|
}
|
||||||
@ -6719,11 +6715,11 @@ extern "C" {
|
|||||||
return strdup(ss.str().c_str());
|
return strdup(ss.str().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef i64 (*f_int_t)(const char*);
|
typedef i64 (*f_int_t)(char*);
|
||||||
typedef f64 (*f_float_t)(const char*);
|
typedef f64 (*f_float_t)(char*);
|
||||||
typedef bool (*f_bool_t)(const char*);
|
typedef bool (*f_bool_t)(char*);
|
||||||
typedef const char* (*f_str_t)(const char*);
|
typedef char* (*f_str_t)(char*);
|
||||||
typedef void (*f_None_t)(const char*);
|
typedef void (*f_None_t)(char*);
|
||||||
|
|
||||||
static f_int_t f_int = nullptr;
|
static f_int_t f_int = nullptr;
|
||||||
static f_float_t f_float = nullptr;
|
static f_float_t f_float = nullptr;
|
||||||
@ -6752,19 +6748,25 @@ extern "C" {
|
|||||||
PyVar obj = vm->new_module_if_not_existed(mod);
|
PyVar obj = vm->new_module_if_not_existed(mod);
|
||||||
vm->bindFunc<-1>(obj, name, [ret_code, f_header](VM* vm, const pkpy::Args& args){
|
vm->bindFunc<-1>(obj, name, [ret_code, f_header](VM* vm, const pkpy::Args& args){
|
||||||
_StrStream ss;
|
_StrStream ss;
|
||||||
ss << f_header << ' ';
|
ss << f_header;
|
||||||
for(int i=0; i<args.size(); i++){
|
for(int i=0; i<args.size(); i++){
|
||||||
|
ss << ' ';
|
||||||
PyVar x = vm->call(args[i], __json__);
|
PyVar x = vm->call(args[i], __json__);
|
||||||
ss << vm->PyStr_AS_C(x);
|
ss << vm->PyStr_AS_C(x);
|
||||||
if(i != args.size() - 1) ss << ' ';
|
|
||||||
}
|
}
|
||||||
|
char* packet = strdup(ss.str().c_str());
|
||||||
switch(ret_code){
|
switch(ret_code){
|
||||||
case 'i': return vm->PyInt(f_int(ss.str().c_str()));
|
case 'i': return vm->PyInt(f_int(packet));
|
||||||
case 'f': return vm->PyFloat(f_float(ss.str().c_str()));
|
case 'f': return vm->PyFloat(f_float(packet));
|
||||||
case 'b': return vm->PyBool(f_bool(ss.str().c_str()));
|
case 'b': return vm->PyBool(f_bool(packet));
|
||||||
case 's': return vm->PyStr(f_str(ss.str().c_str()));
|
case 's': {
|
||||||
case 'N': f_None(ss.str().c_str()); return vm->None;
|
char* p = f_str(packet);
|
||||||
|
if(p == nullptr) return vm->None;
|
||||||
|
return vm->PyStr(p); // no need to free(p)
|
||||||
}
|
}
|
||||||
|
case 'N': f_None(packet); return vm->None;
|
||||||
|
}
|
||||||
|
free(packet);
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
return vm->None;
|
return vm->None;
|
||||||
});
|
});
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 3765c55407d883e12457e44981c87062c446b529
|
Subproject commit d9f2b2d3e282cf420b360b12bb1a985f8cfb836c
|
@ -2055,10 +2055,6 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
operator const char*() const {
|
|
||||||
return c_str();
|
|
||||||
}
|
|
||||||
|
|
||||||
~_Str(){
|
~_Str(){
|
||||||
if(_u8_index != nullptr) delete _u8_index;
|
if(_u8_index != nullptr) delete _u8_index;
|
||||||
}
|
}
|
||||||
@ -6719,11 +6715,11 @@ extern "C" {
|
|||||||
return strdup(ss.str().c_str());
|
return strdup(ss.str().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef i64 (*f_int_t)(const char*);
|
typedef i64 (*f_int_t)(char*);
|
||||||
typedef f64 (*f_float_t)(const char*);
|
typedef f64 (*f_float_t)(char*);
|
||||||
typedef bool (*f_bool_t)(const char*);
|
typedef bool (*f_bool_t)(char*);
|
||||||
typedef const char* (*f_str_t)(const char*);
|
typedef char* (*f_str_t)(char*);
|
||||||
typedef void (*f_None_t)(const char*);
|
typedef void (*f_None_t)(char*);
|
||||||
|
|
||||||
static f_int_t f_int = nullptr;
|
static f_int_t f_int = nullptr;
|
||||||
static f_float_t f_float = nullptr;
|
static f_float_t f_float = nullptr;
|
||||||
@ -6752,19 +6748,25 @@ extern "C" {
|
|||||||
PyVar obj = vm->new_module_if_not_existed(mod);
|
PyVar obj = vm->new_module_if_not_existed(mod);
|
||||||
vm->bindFunc<-1>(obj, name, [ret_code, f_header](VM* vm, const pkpy::Args& args){
|
vm->bindFunc<-1>(obj, name, [ret_code, f_header](VM* vm, const pkpy::Args& args){
|
||||||
_StrStream ss;
|
_StrStream ss;
|
||||||
ss << f_header << ' ';
|
ss << f_header;
|
||||||
for(int i=0; i<args.size(); i++){
|
for(int i=0; i<args.size(); i++){
|
||||||
|
ss << ' ';
|
||||||
PyVar x = vm->call(args[i], __json__);
|
PyVar x = vm->call(args[i], __json__);
|
||||||
ss << vm->PyStr_AS_C(x);
|
ss << vm->PyStr_AS_C(x);
|
||||||
if(i != args.size() - 1) ss << ' ';
|
|
||||||
}
|
}
|
||||||
|
char* packet = strdup(ss.str().c_str());
|
||||||
switch(ret_code){
|
switch(ret_code){
|
||||||
case 'i': return vm->PyInt(f_int(ss.str().c_str()));
|
case 'i': return vm->PyInt(f_int(packet));
|
||||||
case 'f': return vm->PyFloat(f_float(ss.str().c_str()));
|
case 'f': return vm->PyFloat(f_float(packet));
|
||||||
case 'b': return vm->PyBool(f_bool(ss.str().c_str()));
|
case 'b': return vm->PyBool(f_bool(packet));
|
||||||
case 's': return vm->PyStr(f_str(ss.str().c_str()));
|
case 's': {
|
||||||
case 'N': f_None(ss.str().c_str()); return vm->None;
|
char* p = f_str(packet);
|
||||||
|
if(p == nullptr) return vm->None;
|
||||||
|
return vm->PyStr(p); // no need to free(p)
|
||||||
}
|
}
|
||||||
|
case 'N': f_None(packet); return vm->None;
|
||||||
|
}
|
||||||
|
free(packet);
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
return vm->None;
|
return vm->None;
|
||||||
});
|
});
|
||||||
|
@ -793,11 +793,11 @@ extern "C" {
|
|||||||
return strdup(ss.str().c_str());
|
return strdup(ss.str().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef i64 (*f_int_t)(const char*);
|
typedef i64 (*f_int_t)(char*);
|
||||||
typedef f64 (*f_float_t)(const char*);
|
typedef f64 (*f_float_t)(char*);
|
||||||
typedef bool (*f_bool_t)(const char*);
|
typedef bool (*f_bool_t)(char*);
|
||||||
typedef const char* (*f_str_t)(const char*);
|
typedef char* (*f_str_t)(char*);
|
||||||
typedef void (*f_None_t)(const char*);
|
typedef void (*f_None_t)(char*);
|
||||||
|
|
||||||
static f_int_t f_int = nullptr;
|
static f_int_t f_int = nullptr;
|
||||||
static f_float_t f_float = nullptr;
|
static f_float_t f_float = nullptr;
|
||||||
@ -826,19 +826,25 @@ extern "C" {
|
|||||||
PyVar obj = vm->new_module_if_not_existed(mod);
|
PyVar obj = vm->new_module_if_not_existed(mod);
|
||||||
vm->bindFunc<-1>(obj, name, [ret_code, f_header](VM* vm, const pkpy::Args& args){
|
vm->bindFunc<-1>(obj, name, [ret_code, f_header](VM* vm, const pkpy::Args& args){
|
||||||
_StrStream ss;
|
_StrStream ss;
|
||||||
ss << f_header << ' ';
|
ss << f_header;
|
||||||
for(int i=0; i<args.size(); i++){
|
for(int i=0; i<args.size(); i++){
|
||||||
|
ss << ' ';
|
||||||
PyVar x = vm->call(args[i], __json__);
|
PyVar x = vm->call(args[i], __json__);
|
||||||
ss << vm->PyStr_AS_C(x);
|
ss << vm->PyStr_AS_C(x);
|
||||||
if(i != args.size() - 1) ss << ' ';
|
|
||||||
}
|
}
|
||||||
|
char* packet = strdup(ss.str().c_str());
|
||||||
switch(ret_code){
|
switch(ret_code){
|
||||||
case 'i': return vm->PyInt(f_int(ss.str().c_str()));
|
case 'i': return vm->PyInt(f_int(packet));
|
||||||
case 'f': return vm->PyFloat(f_float(ss.str().c_str()));
|
case 'f': return vm->PyFloat(f_float(packet));
|
||||||
case 'b': return vm->PyBool(f_bool(ss.str().c_str()));
|
case 'b': return vm->PyBool(f_bool(packet));
|
||||||
case 's': return vm->PyStr(f_str(ss.str().c_str()));
|
case 's': {
|
||||||
case 'N': f_None(ss.str().c_str()); return vm->None;
|
char* p = f_str(packet);
|
||||||
|
if(p == nullptr) return vm->None;
|
||||||
|
return vm->PyStr(p); // no need to free(p)
|
||||||
}
|
}
|
||||||
|
case 'N': f_None(packet); return vm->None;
|
||||||
|
}
|
||||||
|
free(packet);
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
return vm->None;
|
return vm->None;
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user