|
@@ -363,14 +363,22 @@ void __init_builtins(VM* _vm) {
|
|
|
return VAR(r);
|
|
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){
|
|
if(r.step > 0){
|
|
|
return vm->new_user_object<RangeIter>(r);
|
|
return vm->new_user_object<RangeIter>(r);
|
|
|
}else{
|
|
}else{
|
|
|
return vm->new_user_object<RangeIterR>(r);
|
|
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
|
|
// tp_nonetype
|
|
|
_vm->bind__repr__(_vm->_tp(_vm->None), [](VM* vm, PyVar _0) -> Str {
|
|
_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);
|
|
Tuple& self = _CAST(Tuple&, _0);
|
|
|
return vm->new_user_object<ArrayIter>(_0.get(), self.begin(), self.end());
|
|
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__getitem__(VM::tp_tuple, PyArrayGetItem<Tuple>);
|
|
|
_vm->bind__len__(VM::tp_tuple, [](VM* vm, PyVar obj) {
|
|
_vm->bind__len__(VM::tp_tuple, [](VM* vm, PyVar obj) {
|
|
|
return (i64)_CAST(Tuple&, obj).size();
|
|
return (i64)_CAST(Tuple&, obj).size();
|