mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 19:40:18 +00:00
more op__iter__
This commit is contained in:
parent
8f34024833
commit
bb94e595d1
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user