blueloveTH 1 年之前
父節點
當前提交
5be2745220
共有 5 個文件被更改,包括 10 次插入9 次删除
  1. 1 1
      src/array2d.cpp
  2. 2 2
      src/cffi.cpp
  3. 1 1
      src/collections.cpp
  4. 4 4
      src/linalg.cpp
  5. 2 1
      src/vm.cpp

+ 1 - 1
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<Array2d>(mod, "array2d");
+    vm->register_user_class<Array2d>(mod, "array2d", 0, true);
     vm->register_user_class<Array2dIter>(mod, "_array2d_iter");
 
     vm->bind__iter__(vm->_tp_user<Array2d>(), [](VM* vm, PyObject* _0){

+ 2 - 2
src/cffi.cpp

@@ -161,8 +161,8 @@ void add_module_c(VM* vm){
         return vm->None;
     });
 
-    vm->register_user_class<VoidP>(mod, "void_p");
-    vm->register_user_class<C99Struct>(mod, "struct");
+    vm->register_user_class<VoidP>(mod, "void_p", 0, true);
+    vm->register_user_class<C99Struct>(mod, "struct", 0, true);
     
     mod->attr().set("NULL", VAR_T(VoidP, nullptr));
 

+ 1 - 1
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<PyDeque>(mod, "deque");
+        vm->register_user_class<PyDeque>(mod, "deque", 0, true);
         vm->register_user_class<PyDequeIter>(mod, "_deque_iter");
         CodeObject_ code = vm->compile(kPythonLibs_collections, "collections.py", EXEC_MODE);
         vm->_exec(code, mod);

+ 4 - 4
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<Vec2>(linalg, "vec2");
-    vm->register_user_class<Vec3>(linalg, "vec3");
-    vm->register_user_class<Vec4>(linalg, "vec4");
-    vm->register_user_class<Mat3x3>(linalg, "mat3x3");
+    vm->register_user_class<Vec2>(linalg, "vec2", 0, true);
+    vm->register_user_class<Vec3>(linalg, "vec3", 0, true);
+    vm->register_user_class<Vec4>(linalg, "vec4", 0, true);
+    vm->register_user_class<Mat3x3>(linalg, "mat3x3", 0, true);
 
     PyObject* float_p = vm->_modules["c"]->attr("float_p");
     linalg->attr().set("vec2_p", float_p);

+ 2 - 1
src/vm.cpp

@@ -198,7 +198,8 @@ namespace pkpy{
         PyObject* obj = heap._new<Type>(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,