[pypy-svn] r15788 - pypy/dist/pypy/objspace/std

ale at codespeak.net ale at codespeak.net
Mon Aug 8 20:19:04 CEST 2005


Author: ale
Date: Mon Aug  8 20:19:03 2005
New Revision: 15788

Modified:
   pypy/dist/pypy/objspace/std/listtype.py
Log:
rewrote __reversed__ for list in interpreter level using W_SeqIterObject support for reverse iteration

Modified: pypy/dist/pypy/objspace/std/listtype.py
==============================================================================
--- pypy/dist/pypy/objspace/std/listtype.py	(original)
+++ pypy/dist/pypy/objspace/std/listtype.py	Mon Aug  8 20:19:03 2005
@@ -1,5 +1,6 @@
 from __future__ import generators
 from pypy.objspace.std.stdtypedef import *
+from pypy.objspace.std.iterobject import W_SeqIterObject
 from pypy.objspace.std.register_all import register_all
 from sys import maxint
 
@@ -13,17 +14,21 @@
 list_reverse  = MultiMethod('reverse',1)
 list_sort     = MultiMethod('sort',   4, defaults=(None, None, False), argnames=['cmp', 'key', 'reverse'])
 list_reversed = MultiMethod('__reversed__', 1)
-
-# gateway is imported in the stdtypedef module
-list_reversed__ANY = gateway.applevel('''
-    # NOT_RPYTHON -- uses yield
-
-    def reversed(lst):
-        for index in range(len(lst)-1, -1, -1):
-            yield lst[index]
-
-''', filename=__file__).interphook('reversed')
-
+##
+### gateway is imported in the stdtypedef module
+##list_reversed__ANY = gateway.applevel('''
+##    # NOT_RPYTHON -- uses yield
+##
+##    def reversed(lst):
+##        return iter([x for x in lst[::-1]])
+##    #    for index in range(len(lst)-1, -1, -1):
+##    #        yield lst[index]
+##
+##''', filename=__file__).interphook('reversed')
+def list_reversed__ANY(space, w_list):
+    w_list.running_iter = W_SeqIterObject(space,w_list,-1,True)
+    return w_list.running_iter
+    
 register_all(vars(), globals())
 
 # ____________________________________________________________



More information about the Pypy-commit mailing list