add some methods

This commit is contained in:
blueloveTH 2022-11-14 20:25:21 +08:00
parent 1b0f29781c
commit 3177406e1d
3 changed files with 39 additions and 1 deletions

View File

@ -51,4 +51,4 @@ r'''/*
f.write(final_text) f.write(final_text)
shutil.copy("src/main.cpp", "amalgamated/main.cpp") shutil.copy("src/main.cpp", "amalgamated/main.cpp")
os.system("g++ -o pocketpy amalgamated/main.cpp --std=c++17 -O1") os.system("g++ -o pocketpy amalgamated/main.cpp --std=c++17 -O1 -pthread")

View File

@ -23,6 +23,14 @@ def __str4split(self, sep):
str.split = __str4split str.split = __str4split
del __str4split del __str4split
def __str4index(self, sub):
for i in range(len(self) - len(sub) + 1):
if self[i:i+len(sub)] == sub:
return i
return -1
str.index = __str4index
del __str4index
list.__repr__ = lambda self: '[' + ', '.join([repr(i) for i in self]) + ']' list.__repr__ = lambda self: '[' + ', '.join([repr(i) for i in self]) + ']'
tuple.__repr__ = lambda self: '(' + ', '.join([repr(i) for i in self]) + ')' tuple.__repr__ = lambda self: '(' + ', '.join([repr(i) for i in self]) + ')'
list.__json__ = lambda self: '[' + ', '.join([i.__json__() for i in self]) + ']' list.__json__ = lambda self: '[' + ', '.join([i.__json__() for i in self]) + ']'

View File

@ -605,6 +605,36 @@ extern "C" {
return vm->exec(code) != nullptr; return vm->exec(code) != nullptr;
} }
__EXPORT
PyObjectDump* pkpy_get_global(VM* vm, const char* name){
auto it = vm->_main->attribs.find(name);
if(it == vm->_main->attribs.end()) return nullptr;
return new PyObjectDump(
it->second->getTypeName().c_str(),
vm->PyStr_AS_C(vm->asJson(it->second)).c_str()
);
}
__EXPORT
void pkpy_set_global_int(VM* vm, const char* name, _Int value){
vm->setAttr(vm->_main, name, vm->PyInt(value));
}
__EXPORT
void pkpy_set_global_float(VM* vm, const char* name, _Float value){
vm->setAttr(vm->_main, name, vm->PyFloat(value));
}
__EXPORT
void pkpy_set_global_str(VM* vm, const char* name, const char* value){
vm->setAttr(vm->_main, name, vm->PyStr(value));
}
__EXPORT
void pkpy_set_global_bool(VM* vm, const char* name, bool value){
vm->setAttr(vm->_main, name, vm->PyBool(value));
}
__EXPORT __EXPORT
PyObjectDump* pkpy_eval(VM* vm, const char* source){ PyObjectDump* pkpy_eval(VM* vm, const char* source){
_Code code = compile(vm, source, "<eval>", EVAL_MODE); _Code code = compile(vm, source, "<eval>", EVAL_MODE);