diff --git a/src/array2d.cpp b/src/array2d.cpp index 3519dbc2..a613ac1e 100644 --- a/src/array2d.cpp +++ b/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(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); diff --git a/src/iter.cpp b/src/iter.cpp index 3f2d6be6..12c70bac 100644 --- a/src/iter.cpp +++ b/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(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(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(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]);