From 5be2745220333d683172921baed4c7b5e0bbdaef Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Thu, 2 May 2024 16:03:24 +0800 Subject: [PATCH] some fix --- src/array2d.cpp | 2 +- src/cffi.cpp | 4 ++-- src/collections.cpp | 2 +- src/linalg.cpp | 8 ++++---- src/vm.cpp | 3 ++- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/array2d.cpp b/src/array2d.cpp index 9440aeb9..85988ae1 100644 --- a/src/array2d.cpp +++ b/src/array2d.cpp @@ -373,7 +373,7 @@ struct Array2dIter{ void add_module_array2d(VM* vm){ PyObject* mod = vm->new_module("array2d"); - vm->register_user_class(mod, "array2d"); + vm->register_user_class(mod, "array2d", 0, true); vm->register_user_class(mod, "_array2d_iter"); vm->bind__iter__(vm->_tp_user(), [](VM* vm, PyObject* _0){ diff --git a/src/cffi.cpp b/src/cffi.cpp index 2f6c9f88..32dc526d 100644 --- a/src/cffi.cpp +++ b/src/cffi.cpp @@ -161,8 +161,8 @@ void add_module_c(VM* vm){ return vm->None; }); - vm->register_user_class(mod, "void_p"); - vm->register_user_class(mod, "struct"); + vm->register_user_class(mod, "void_p", 0, true); + vm->register_user_class(mod, "struct", 0, true); mod->attr().set("NULL", VAR_T(VoidP, nullptr)); diff --git a/src/collections.cpp b/src/collections.cpp index fe365734..c4025d71 100644 --- a/src/collections.cpp +++ b/src/collections.cpp @@ -545,7 +545,7 @@ namespace pkpy void add_module_collections(VM *vm) { PyObject *mod = vm->new_module("collections"); - vm->register_user_class(mod, "deque"); + vm->register_user_class(mod, "deque", 0, true); vm->register_user_class(mod, "_deque_iter"); CodeObject_ code = vm->compile(kPythonLibs_collections, "collections.py", EXEC_MODE); vm->_exec(code, mod); diff --git a/src/linalg.cpp b/src/linalg.cpp index 8a6602b3..f54e0588 100644 --- a/src/linalg.cpp +++ b/src/linalg.cpp @@ -541,10 +541,10 @@ static Vec2 SmoothDamp(Vec2 current, Vec2 target, Vec2& currentVelocity, float s void add_module_linalg(VM* vm){ PyObject* linalg = vm->new_module("linalg"); - vm->register_user_class(linalg, "vec2"); - vm->register_user_class(linalg, "vec3"); - vm->register_user_class(linalg, "vec4"); - vm->register_user_class(linalg, "mat3x3"); + vm->register_user_class(linalg, "vec2", 0, true); + vm->register_user_class(linalg, "vec3", 0, true); + vm->register_user_class(linalg, "vec4", 0, true); + vm->register_user_class(linalg, "mat3x3", 0, true); PyObject* float_p = vm->_modules["c"]->attr("float_p"); linalg->attr().set("vec2_p", float_p); diff --git a/src/vm.cpp b/src/vm.cpp index 28a59a66..f02f56d0 100644 --- a/src/vm.cpp +++ b/src/vm.cpp @@ -198,7 +198,8 @@ namespace pkpy{ PyObject* obj = heap._new(tp_type, _all_types.size()); const PyTypeInfo& base_info = _all_types[base]; if(!base_info.subclass_enabled){ - TypeError(_S("type ", base_info.name.escape(), " is not `subclass_enabled`")); + Str error = _S("type ", base_info.name.escape(), " is not `subclass_enabled`"); + throw std::runtime_error(error.c_str()); } PyTypeInfo info{ obj,