Author: Manuel Jacob
Branch: remove-set-smm
Changeset: r64142:820d454b3e8b
Date: 2013-05-15 12:09 +0200
http://bitbucket.org/pypy/pypy/changeset/820d454b3e8b/

Log:    Remove setiterator multi-methods.

diff --git a/pypy/objspace/std/setobject.py b/pypy/objspace/std/setobject.py
--- a/pypy/objspace/std/setobject.py
+++ b/pypy/objspace/std/setobject.py
@@ -1410,28 +1410,29 @@
         w_self.space = space
         w_self.iterimplementation = iterimplementation
 
-def descr_setiterator__length_hint__(space, w_self):
-    assert isinstance(w_self, W_SetIterObject)
-    return space.wrap(w_self.iterimplementation.length())
+    def descr_length_hint(self, space):
+        return space.wrap(self.iterimplementation.length())
+
+    def descr_iter(self, space):
+        return self
+
+    def descr_next(self, space):
+        iterimplementation = self.iterimplementation
+        w_key = iterimplementation.next()
+        if w_key is not None:
+            return w_key
+        raise OperationError(space.w_StopIteration, space.w_None)
 
 W_SetIterObject.typedef = StdTypeDef("setiterator",
-    __length_hint__ = gateway.interp2app(descr_setiterator__length_hint__),
+    __length_hint__ = gateway.interp2app(W_SetIterObject.descr_length_hint),
+    __iter__ = gateway.interp2app(W_SetIterObject.descr_iter),
+    next = gateway.interp2app(W_SetIterObject.descr_next)
     )
 setiter_typedef = W_SetIterObject.typedef
 
 registerimplementation(W_SetIterObject)
 
 
-def iter__SetIterObject(space, w_setiter):
-    return w_setiter
-
-def next__SetIterObject(space, w_setiter):
-    iterimplementation = w_setiter.iterimplementation
-    w_key = iterimplementation.next()
-    if w_key is not None:
-        return w_key
-    raise OperationError(space.w_StopIteration, space.w_None)
-
 # some helper functions
 
 def newset(space):
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to