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