From bb94e595d1d78e447daddfcdfde40171e76d89a6 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Sun, 26 May 2024 13:42:57 +0800 Subject: [PATCH] more op__iter__ --- src/pocketpy.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/pocketpy.cpp b/src/pocketpy.cpp index 600ced52..10edf7a8 100644 --- a/src/pocketpy.cpp +++ b/src/pocketpy.cpp @@ -363,14 +363,22 @@ void __init_builtins(VM* _vm) { return VAR(r); }); - _vm->bind__iter__(VM::tp_range, [](VM* vm, PyVar obj) { - const Range& r = PK_OBJ_GET(Range, obj); + _vm->bind__iter__(VM::tp_range, [](VM* vm, PyVar _0) { + const Range& r = PK_OBJ_GET(Range, _0); if(r.step > 0){ return vm->new_user_object(r); }else{ return vm->new_user_object(r); } }); + _vm->_all_types[VM::tp_range].op__iter__ = [](VM* vm, PyVar _0){ + const Range& r = PK_OBJ_GET(Range, _0); + if(r.step > 0){ + vm->new_stack_object(VM::tp_range, r); + }else{ + vm->new_stack_object(VM::tp_range, r); + } + }; // tp_nonetype _vm->bind__repr__(_vm->_tp(_vm->None), [](VM* vm, PyVar _0) -> Str { @@ -1064,6 +1072,11 @@ void __init_builtins(VM* _vm) { Tuple& self = _CAST(Tuple&, _0); return vm->new_user_object(_0.get(), self.begin(), self.end()); }); + _vm->_all_types[VM::tp_tuple].op__iter__ = [](VM* vm, PyVar _0){ + Tuple& self = _CAST(Tuple&, _0); + vm->new_stack_object(vm->_tp_user(), _0.get(), self.begin(), self.end()); + }; + _vm->bind__getitem__(VM::tp_tuple, PyArrayGetItem); _vm->bind__len__(VM::tp_tuple, [](VM* vm, PyVar obj) { return (i64)_CAST(Tuple&, obj).size();