add vm->eval

This commit is contained in:
BLUELOVETH 2023-08-24 11:51:54 +08:00
parent 8b3504cc2e
commit a01d1a5057
2 changed files with 5 additions and 0 deletions

View File

@ -168,6 +168,7 @@ public:
PyObject* find_name_in_mro(PyObject* cls, StrName name); PyObject* find_name_in_mro(PyObject* cls, StrName name);
bool isinstance(PyObject* obj, Type cls_t); bool isinstance(PyObject* obj, Type cls_t);
PyObject* exec(Str source, Str filename, CompileMode mode, PyObject* _module=nullptr); PyObject* exec(Str source, Str filename, CompileMode mode, PyObject* _module=nullptr);
PyObject* eval(Str source, PyObject* _module=nullptr);
template<typename ...Args> template<typename ...Args>
PyObject* _exec(Args&&... args){ PyObject* _exec(Args&&... args){

View File

@ -114,6 +114,10 @@ namespace pkpy{
return nullptr; return nullptr;
} }
PyObject* VM::eval(Str source, PyObject* _module){
return exec(source, "<eval>", EVAL_MODE, _module);
}
PyObject* VM::new_type_object(PyObject* mod, StrName name, Type base, bool subclass_enabled){ PyObject* VM::new_type_object(PyObject* mod, StrName name, Type base, bool subclass_enabled){
PyObject* obj = heap._new<Type>(tp_type, _all_types.size()); PyObject* obj = heap._new<Type>(tp_type, _all_types.size());
const PyTypeInfo& base_info = _all_types[base]; const PyTypeInfo& base_info = _all_types[base];