[pypy-svn] rev 689 - pypy/trunk/src/pypy/objspace/std

tismer at codespeak.net tismer at codespeak.net
Thu May 29 16:58:30 CEST 2003


Author: tismer
Date: Thu May 29 16:58:30 2003
New Revision: 689

Modified:
   pypy/trunk/src/pypy/objspace/std/listobject.py
Log:
list.index works

Modified: pypy/trunk/src/pypy/objspace/std/listobject.py
==============================================================================
--- pypy/trunk/src/pypy/objspace/std/listobject.py	(original)
+++ pypy/trunk/src/pypy/objspace/std/listobject.py	Thu May 29 16:58:30 2003
@@ -40,6 +40,9 @@
     def remove(w_self, w_any):
         return list_remove(w_self.space, w_self, w_any)
 
+    def index(w_self, w_any):
+        return list_index(w_self.space, w_self, w_any)
+
 def list_unwrap(space, w_list):
     items = [space.unwrap(w_item) for w_item in w_list.ob_item[:w_list.ob_size]]
     return list(items)
@@ -199,6 +202,9 @@
     if space.is_true(space.eq(w_attr, space.wrap('remove'))):
         w_builtinfn = make_builtin_func(space, W_ListObject.remove)
         return W_InstMethObject(space, w_list, w_builtinfn)
+    if space.is_true(space.eq(w_attr, space.wrap('index'))):
+        w_builtinfn = make_builtin_func(space, W_ListObject.index)
+        return W_InstMethObject(space, w_list, w_builtinfn)
     raise FailedToImplement(space.w_AttributeError)
 
 StdObjSpace.getattr.register(getattr_list, W_ListObject, W_ANY)
@@ -338,6 +344,17 @@
     raise OperationError(space.w_IndexError,
                          space.wrap("list.remove(x): x not in list"))
 
+def list_index(space, w_list, w_any):
+    eq = space.eq
+    items = w_list.ob_item
+    for i in range(w_list.ob_size):
+        cmp = eq(items[i], w_any)
+        if space.is_true(cmp):
+            return space.wrap(i)
+    raise OperationError(space.w_ValueError,
+                         space.wrap("list.index(x): x not in list"))
+
+
 """
 static PyMethodDef list_methods[] = {
     {"append",  (PyCFunction)listappend,  METH_O, append_doc},


More information about the Pypy-commit mailing list