[pypy-svn] rev 688 - pypy/trunk/src/pypy/objspace/std
tismer at codespeak.net
tismer at codespeak.net
Thu May 29 16:54:25 CEST 2003
Author: tismer
Date: Thu May 29 16:54:25 2003
New Revision: 688
Modified:
pypy/trunk/src/pypy/objspace/std/listobject.py
Log:
list.remove 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:54:25 2003
@@ -37,6 +37,9 @@
def pop(w_self, w_idx=-1):
return list_pop(w_self.space, w_self, w_idx)
+ def remove(w_self, w_any):
+ return list_remove(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)
@@ -193,6 +196,9 @@
if space.is_true(space.eq(w_attr, space.wrap('pop'))):
w_builtinfn = make_builtin_func(space, W_ListObject.pop)
return W_InstMethObject(space, w_list, w_builtinfn)
+ 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)
raise FailedToImplement(space.w_AttributeError)
StdObjSpace.getattr.register(getattr_list, W_ListObject, W_ANY)
@@ -304,6 +310,7 @@
recycle = [items[i] for i in range(ilow, ihigh)]
for i in range(ilow, ihigh):
items[i] = items[i+d]
+ w_list.ob_size -= d
# note that the default value will come back wrapped!!!
def list_pop(space, w_list, w_idx=-1):
@@ -320,6 +327,17 @@
_del_slice(w_list, i, i+1)
return w_res
+def list_remove(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):
+ _del_slice(w_list, i, i+1)
+ return space.w_None
+ raise OperationError(space.w_IndexError,
+ space.wrap("list.remove(x): x not in list"))
+
"""
static PyMethodDef list_methods[] = {
{"append", (PyCFunction)listappend, METH_O, append_doc},
More information about the Pypy-commit
mailing list