This commit is contained in:
blueloveTH 2024-04-27 22:58:01 +08:00
parent a9820102eb
commit 9837ef8354
2 changed files with 14 additions and 12 deletions

View File

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

View File

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