Revert "..."

This reverts commit ec56ecce870fa7c869c963b4170988c09cc16d72.
This commit is contained in:
blueloveTH 2023-05-17 14:53:53 +08:00
parent ec56ecce87
commit 5ea3769b72
2 changed files with 1 additions and 12 deletions

View File

@ -223,7 +223,6 @@ inline void init_builtins(VM* _vm) {
_vm->bind_method<0>("range", "__iter__", CPP_LAMBDA( _vm->bind_method<0>("range", "__iter__", CPP_LAMBDA(
vm->PyIter(RangeIter(vm, args[0])) vm->PyIter(RangeIter(vm, args[0]))
)); ));
_vm->_type_info("range")->m__iter__ = PyGetIter<RangeIter>;
_vm->bind_method<0>("NoneType", "__repr__", CPP_LAMBDA(VAR("None"))); _vm->bind_method<0>("NoneType", "__repr__", CPP_LAMBDA(VAR("None")));
_vm->bind_method<0>("NoneType", "__json__", CPP_LAMBDA(VAR("null"))); _vm->bind_method<0>("NoneType", "__json__", CPP_LAMBDA(VAR("null")));
@ -366,7 +365,6 @@ inline void init_builtins(VM* _vm) {
_vm->bind_method<0>("str", "__str__", CPP_LAMBDA(args[0])); _vm->bind_method<0>("str", "__str__", CPP_LAMBDA(args[0]));
_vm->bind_method<0>("str", "__iter__", CPP_LAMBDA(vm->PyIter(StringIter(vm, args[0])))); _vm->bind_method<0>("str", "__iter__", CPP_LAMBDA(vm->PyIter(StringIter(vm, args[0]))));
_vm->_type_info("str")->m__iter__ = PyGetIter<StringIter>;
_vm->bind_method<0>("str", "__repr__", [](VM* vm, ArgsView args) { _vm->bind_method<0>("str", "__repr__", [](VM* vm, ArgsView args) {
const Str& self = _CAST(Str&, args[0]); const Str& self = _CAST(Str&, args[0]);
@ -541,13 +539,13 @@ inline void init_builtins(VM* _vm) {
_vm->bind_method<0>("list", "__iter__", [](VM* vm, ArgsView args) { _vm->bind_method<0>("list", "__iter__", [](VM* vm, ArgsView args) {
return vm->PyIter(ArrayIter<List>(vm, args[0])); return vm->PyIter(ArrayIter<List>(vm, args[0]));
}); });
_vm->bind_method<1>("list", "__getitem__", [](VM* vm, ArgsView args) { _vm->bind_method<1>("list", "__getitem__", [](VM* vm, ArgsView args) {
return PyArrayGetItem<List>(vm, args[0], args[1]); return PyArrayGetItem<List>(vm, args[0], args[1]);
}); });
_vm->bind_method<2>("list", "__setitem__", [](VM* vm, ArgsView args) { _vm->bind_method<2>("list", "__setitem__", [](VM* vm, ArgsView args) {
return PyListSetItem(vm, args[0], args[1], args[2]); return PyListSetItem(vm, args[0], args[1], args[2]);
}); });
_vm->_type_info("list")->m__iter__ = PyGetIter<ArrayIter<List>>;
_vm->_type_info("list")->m__getitem__ = PyArrayGetItem<List>; _vm->_type_info("list")->m__getitem__ = PyArrayGetItem<List>;
_vm->_type_info("list")->m__setitem__ = PyListSetItem; _vm->_type_info("list")->m__setitem__ = PyListSetItem;
@ -568,7 +566,6 @@ inline void init_builtins(VM* _vm) {
_vm->bind_method<0>("tuple", "__iter__", [](VM* vm, ArgsView args) { _vm->bind_method<0>("tuple", "__iter__", [](VM* vm, ArgsView args) {
return vm->PyIter(ArrayIter<Tuple>(vm, args[0])); return vm->PyIter(ArrayIter<Tuple>(vm, args[0]));
}); });
_vm->_type_info("tuple")->m__iter__ = PyGetIter<ArrayIter<Tuple>>;
_vm->bind_method<1>("tuple", "__getitem__", [](VM* vm, ArgsView args) { _vm->bind_method<1>("tuple", "__getitem__", [](VM* vm, ArgsView args) {
return PyArrayGetItem<Tuple>(vm, args[0], args[1]); return PyArrayGetItem<Tuple>(vm, args[0], args[1]);

View File

@ -68,7 +68,6 @@ struct PyTypeInfo{
// cached special methods // cached special methods
PyObject* (*m__getitem__)(VM* vm, PyObject*, PyObject*) = nullptr; PyObject* (*m__getitem__)(VM* vm, PyObject*, PyObject*) = nullptr;
PyObject* (*m__setitem__)(VM* vm, PyObject*, PyObject*, PyObject*) = nullptr; PyObject* (*m__setitem__)(VM* vm, PyObject*, PyObject*, PyObject*) = nullptr;
PyObject* (*m__iter__)(VM* vm, PyObject*) = nullptr;
}; };
struct FrameId{ struct FrameId{
@ -137,8 +136,6 @@ public:
PyObject* asIter(PyObject* obj){ PyObject* asIter(PyObject* obj){
if(is_type(obj, tp_iterator)) return obj; if(is_type(obj, tp_iterator)) return obj;
const PyTypeInfo* ti = _inst_type_info(obj);
if(ti->m__iter__) return ti->m__iter__(this, obj);
PyObject* self; PyObject* self;
PyObject* iter_f = get_unbound_method(obj, __iter__, &self, false); PyObject* iter_f = get_unbound_method(obj, __iter__, &self, false);
if(self != PY_NULL) return call_method(self, iter_f); if(self != PY_NULL) return call_method(self, iter_f);
@ -1281,9 +1278,4 @@ inline PyObject* PyStrGetItem(VM* vm, PyObject* obj, PyObject* index){
return VAR(self.u8_getitem(i)); return VAR(self.u8_getitem(i));
} }
template<typename T>
inline PyObject* PyGetIter(VM* vm, PyObject* obj){
return vm->PyIter(T(vm, obj));
}
} // namespace pkpy } // namespace pkpy