more op__iter__

This commit is contained in:
blueloveTH 2024-05-26 13:42:57 +08:00
parent 8f34024833
commit bb94e595d1

View File

@ -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<RangeIter>(r);
}else{
return vm->new_user_object<RangeIterR>(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<RangeIter>(VM::tp_range, r);
}else{
vm->new_stack_object<RangeIterR>(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<ArrayIter>(_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<ArrayIter>(vm->_tp_user<ArrayIter>(), _0.get(), self.begin(), self.end());
};
_vm->bind__getitem__(VM::tp_tuple, PyArrayGetItem<Tuple>);
_vm->bind__len__(VM::tp_tuple, [](VM* vm, PyVar obj) {
return (i64)_CAST(Tuple&, obj).size();