|
|
@@ -2553,42 +2553,6 @@ class dict:
|
|
|
a.append(k.__json__()+': '+v.__json__())
|
|
|
return '{'+ ', '.join(a) + '}'
|
|
|
|
|
|
-import ffi
|
|
|
-
|
|
|
-def input():
|
|
|
- return ffi.input()
|
|
|
-
|
|
|
-class FileIO:
|
|
|
- def __init__(self, path, mode):
|
|
|
- assert type(path) is str
|
|
|
- assert type(mode) is str
|
|
|
- assert mode in ['r', 'w', 'rt', 'wt']
|
|
|
- self.path = path
|
|
|
- self.mode = mode
|
|
|
- self.fp = ffi.fopen(path, mode)
|
|
|
-
|
|
|
- def read(self):
|
|
|
- assert self.mode in ['r', 'rt']
|
|
|
- return ffi.fread(self.fp)
|
|
|
-
|
|
|
- def write(self, s):
|
|
|
- assert self.mode in ['w', 'wt']
|
|
|
- assert type(s) is str
|
|
|
- ffi.fwrite(self.fp, s)
|
|
|
-
|
|
|
- def close(self):
|
|
|
- ffi.fclose(self.fp)
|
|
|
-
|
|
|
- def __enter__(self):
|
|
|
- pass
|
|
|
-
|
|
|
- def __exit__(self):
|
|
|
- self.close()
|
|
|
-
|
|
|
-def open(path, mode='r'):
|
|
|
- return FileIO(path, mode)
|
|
|
-
|
|
|
-
|
|
|
class set:
|
|
|
def __init__(self, iterable=None):
|
|
|
iterable = iterable or []
|
|
|
@@ -6674,14 +6638,14 @@ extern "C" {
|
|
|
__EXPORT
|
|
|
/// Get a global variable of a virtual machine.
|
|
|
///
|
|
|
- /// Return a json representing the result.
|
|
|
+ /// Return __repr__ of the result.
|
|
|
/// If the variable is not found, return `nullptr`.
|
|
|
char* pkpy_vm_get_global(VM* vm, const char* name){
|
|
|
auto it = vm->_main->attribs.find(name);
|
|
|
if(it == vm->_main->attribs.end()) return nullptr;
|
|
|
try{
|
|
|
- _Str _json = vm->PyStr_AS_C(vm->asJson(it->second));
|
|
|
- return strdup(_json.c_str());
|
|
|
+ _Str _repr = vm->PyStr_AS_C(vm->asRepr(it->second));
|
|
|
+ return strdup(_repr.c_str());
|
|
|
}catch(...){
|
|
|
return nullptr;
|
|
|
}
|
|
|
@@ -6690,14 +6654,14 @@ extern "C" {
|
|
|
__EXPORT
|
|
|
/// Evaluate an expression.
|
|
|
///
|
|
|
- /// Return a json representing the result.
|
|
|
+ /// Return __repr__ of the result.
|
|
|
/// If there is any error, return `nullptr`.
|
|
|
char* pkpy_vm_eval(VM* vm, const char* source){
|
|
|
PyVarOrNull ret = vm->exec(source, "<eval>", EVAL_MODE);
|
|
|
if(ret == nullptr) return nullptr;
|
|
|
try{
|
|
|
- _Str _json = vm->PyStr_AS_C(vm->asJson(ret));
|
|
|
- return strdup(_json.c_str());
|
|
|
+ _Str _repr = vm->PyStr_AS_C(vm->asRepr(ret));
|
|
|
+ return strdup(_repr.c_str());
|
|
|
}catch(...){
|
|
|
return nullptr;
|
|
|
}
|
|
|
@@ -6729,9 +6693,6 @@ extern "C" {
|
|
|
__add_module_math(vm);
|
|
|
__add_module_re(vm);
|
|
|
__add_module_dis(vm);
|
|
|
-
|
|
|
-
|
|
|
- vm->new_module("ffi");
|
|
|
|
|
|
// add builtins | no exception handler | must succeed
|
|
|
_Code code = vm->compile(__BUILTINS_CODE, "<builtins>", EXEC_MODE);
|