diff --git a/include/pocketpy/vm.h b/include/pocketpy/vm.h index 0349e335..65eb5b86 100644 --- a/include/pocketpy/vm.h +++ b/include/pocketpy/vm.h @@ -168,6 +168,7 @@ public: PyObject* find_name_in_mro(PyObject* cls, StrName name); bool isinstance(PyObject* obj, Type cls_t); PyObject* exec(Str source, Str filename, CompileMode mode, PyObject* _module=nullptr); + PyObject* eval(Str source, PyObject* _module=nullptr); template PyObject* _exec(Args&&... args){ diff --git a/src/vm.cpp b/src/vm.cpp index 4c712d82..2d975015 100644 --- a/src/vm.cpp +++ b/src/vm.cpp @@ -114,6 +114,10 @@ namespace pkpy{ return nullptr; } + PyObject* VM::eval(Str source, PyObject* _module){ + return exec(source, "", EVAL_MODE, _module); + } + PyObject* VM::new_type_object(PyObject* mod, StrName name, Type base, bool subclass_enabled){ PyObject* obj = heap._new(tp_type, _all_types.size()); const PyTypeInfo& base_info = _all_types[base];