mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30:18 +00:00
some fix
This commit is contained in:
parent
a9820102eb
commit
9837ef8354
@ -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);
|
||||
|
18
src/iter.cpp
18
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]);
|
||||
|
Loading…
x
Reference in New Issue
Block a user