[pypy-svn] rev 672 - pypy/trunk/src/pypy/objspace/std
tismer at codespeak.net
tismer at codespeak.net
Thu May 29 15:38:33 CEST 2003
Author: tismer
Date: Thu May 29 15:38:33 2003
New Revision: 672
Modified:
pypy/trunk/src/pypy/objspace/std/listobject.py
Log:
more methods for listobject
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 15:38:33 2003
@@ -31,6 +31,9 @@
def insert(w_self, w_idx, w_obj):
return list_insert(w_self.space, w_self, w_idx, w_obj)
+ def extend(w_self, w_seq):
+ return list_extend(w_self.space, w_self, w_seq)
+
def list_unwrap(space, w_list):
items = [space.unwrap(w_item) for w_item in w_list.ob_item[:w_list.ob_size]]
@@ -173,7 +176,7 @@
w_res.ob_size = slicelength
return w_res
-StdObjSpace.setitem.register(setitem_list_slice, W_ListObject, W_SliceObject, W_ANY)
+StdObjSpace.setitem.register(setitem_list_slice, W_ListObject, W_SliceObject, W_ListObject)
def getattr_list(space, w_list, w_attr):
if space.is_true(space.eq(w_attr, space.wrap('append'))):
@@ -182,6 +185,9 @@
if space.is_true(space.eq(w_attr, space.wrap('insert'))):
w_builtinfn = make_builtin_func(space, W_ListObject.insert)
return W_InstMethObject(space, w_list, w_builtinfn)
+ if space.is_true(space.eq(w_attr, space.wrap('extend'))):
+ w_builtinfn = make_builtin_func(space, W_ListObject.extend)
+ return W_InstMethObject(space, w_list, w_builtinfn)
raise FailedToImplement(space.w_AttributeError)
StdObjSpace.getattr.register(getattr_list, W_ListObject, W_ANY)
@@ -245,9 +251,7 @@
items[p] = old_items[p]
def ins1(w_list, where, w_any):
- print w_list.ob_size, w_list.ob_item
list_resize(w_list, w_list.ob_size+1)
- print w_list.ob_size, w_list.ob_item
size = w_list.ob_size
items = w_list.ob_item
if where < 0:
@@ -258,11 +262,8 @@
where = size
for i in range(size, where, -1):
items[i] = items[i-1]
- print w_list.ob_size, w_list.ob_item
items[where] = w_any
- print w_list.ob_size, w_list.ob_item
w_list.ob_size += 1
- print w_list.ob_size, w_list.ob_item
def list_insert(space, w_list, w_where, w_any):
ins1(w_list, w_where.intval, w_any)
@@ -272,6 +273,16 @@
ins1(w_list, w_list.ob_size, w_any)
return space.w_None
+def list_extend(space, w_list, w_any):
+ lis = space.unpackiterable(w_any)
+ newlen = w_list.ob_size + len(lis)
+ list_resize(w_list, newlen)
+ d = w_list.ob_size
+ items = w_list.ob_item
+ for i in range(len(lis)):
+ items[d+i] = lis[i]
+ return space.w_None
+
"""
static PyMethodDef list_methods[] = {
{"append", (PyCFunction)listappend, METH_O, append_doc},
More information about the Pypy-commit
mailing list