blueloveTH 1 год назад
Родитель
Сommit
9837ef8354
2 измененных файлов с 14 добавлено и 12 удалено
  1. 5 3
      src/array2d.cpp
  2. 9 9
      src/iter.cpp

+ 5 - 3
src/array2d.cpp

@@ -356,7 +356,9 @@ struct Array2d{
 
 
 struct Array2dIter{
+    PK_ALWAYS_PASS_BY_POINTER(Array2dIter)
     PY_CLASS(Array2dIter, array2d, _array2d_iterator)
+    
     PyObject* ref;
     int i;
     Array2dIter(PyObject* ref) : ref(ref), i(0) {}
@@ -366,9 +368,9 @@ struct Array2dIter{
     static void _register(VM* vm, PyObject* mod, PyObject* type){
         vm->_all_types[PK_OBJ_GET(Type, type)].subclass_enabled = false;
         vm->bind_notimplemented_constructor<Array2dIter>(type);
-        vm->bind__iter__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* obj){ return obj; });
-        vm->bind__next__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* obj){
-            Array2dIter& self = _CAST(Array2dIter&, obj);
+        vm->bind__iter__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* _0) { return _0; });
+        vm->bind__next__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* _0){
+            Array2dIter& self = PK_OBJ_GET(Array2dIter, _0);
             Array2d& a = PK_OBJ_GET(Array2d, self.ref);
             if(self.i == a.numel) return vm->StopIteration;
             std::div_t res = std::div(self.i, a.n_cols);

+ 9 - 9
src/iter.cpp

@@ -5,9 +5,9 @@ namespace pkpy{
     void RangeIter::_register(VM* vm, PyObject* mod, PyObject* type){
         vm->_all_types[PK_OBJ_GET(Type, type)].subclass_enabled = false;
         vm->bind_notimplemented_constructor<RangeIter>(type);
-        vm->bind__iter__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* obj){ return obj; });
-        vm->bind__next__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* obj){
-            RangeIter& self = PK_OBJ_GET(RangeIter, obj);
+        vm->bind__iter__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* _0){ return _0; });
+        vm->bind__next__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* _0){
+            RangeIter& self = PK_OBJ_GET(RangeIter, _0);
             if(self.r.step > 0){
                 if(self.current >= self.r.stop) return vm->StopIteration;
             }else{
@@ -22,9 +22,9 @@ namespace pkpy{
     void ArrayIter::_register(VM* vm, PyObject* mod, PyObject* type){
         vm->_all_types[PK_OBJ_GET(Type, type)].subclass_enabled = false;
         vm->bind_notimplemented_constructor<ArrayIter>(type);
-        vm->bind__iter__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* obj){ return obj; });
-        vm->bind__next__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* obj){
-            ArrayIter& self = _CAST(ArrayIter&, obj);
+        vm->bind__iter__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* _0){ return _0; });
+        vm->bind__next__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* _0){
+            ArrayIter& self = _CAST(ArrayIter&, _0);
             if(self.current == self.end) return vm->StopIteration;
             return *self.current++;
         });
@@ -33,9 +33,9 @@ namespace pkpy{
     void StringIter::_register(VM* vm, PyObject* mod, PyObject* type){
         vm->_all_types[PK_OBJ_GET(Type, type)].subclass_enabled = false;
         vm->bind_notimplemented_constructor<StringIter>(type);
-        vm->bind__iter__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* obj){ return obj; });
-        vm->bind__next__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* obj){
-            StringIter& self = _CAST(StringIter&, obj);
+        vm->bind__iter__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* _0){ return _0; });
+        vm->bind__next__(PK_OBJ_GET(Type, type), [](VM* vm, PyObject* _0){
+            StringIter& self = _CAST(StringIter&, _0);
             if(self.index == self.str->size) return vm->StopIteration;
             int start = self.index;
             int len = utf8len(self.str->data[self.index]);