[pypy-svn] pypy improve-unwrap_spec: New unwrap_spec in interpreter/buffer.py
amauryfa
commits-noreply at bitbucket.org
Wed Feb 16 19:20:31 CET 2011
Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: improve-unwrap_spec
Changeset: r42091:510c7d13e5b9
Date: 2011-02-16 19:08 +0100
http://bitbucket.org/pypy/pypy/changeset/510c7d13e5b9/
Log: New unwrap_spec in interpreter/buffer.py
diff --git a/pypy/interpreter/buffer.py b/pypy/interpreter/buffer.py
--- a/pypy/interpreter/buffer.py
+++ b/pypy/interpreter/buffer.py
@@ -17,7 +17,7 @@
import operator
from pypy.interpreter.baseobjspace import Wrappable
from pypy.interpreter.typedef import TypeDef
-from pypy.interpreter.gateway import interp2app, ObjSpace, W_Root
+from pypy.interpreter.gateway import interp2app, unwrap_spec
from pypy.interpreter.error import OperationError
from pypy.rlib.objectmodel import compute_hash
@@ -47,7 +47,6 @@
def descr_len(self, space):
return space.wrap(self.getlength())
- descr_len.unwrap_spec = ['self', ObjSpace]
def descr_getitem(self, space, w_index):
start, stop, step, size = space.decode_index4(w_index, self.getlength())
@@ -55,8 +54,8 @@
return space.wrap(self.getitem(start))
res = self.getslice(start, stop, step, size)
return space.wrap(res)
- descr_getitem.unwrap_spec = ['self', ObjSpace, W_Root]
+ @unwrap_spec(newstring='bufferstr')
def descr_setitem(self, space, w_index, newstring):
if not isinstance(self, RWBuffer):
raise OperationError(space.w_TypeError,
@@ -78,19 +77,16 @@
raise OperationError(space.w_ValueError,
space.wrap("buffer object does not support"
" slicing with a step"))
- descr_setitem.unwrap_spec = ['self', ObjSpace, W_Root, 'bufferstr']
def descr__buffer__(self, space):
return space.wrap(self)
- descr__buffer__.unwrap_spec = ['self', ObjSpace]
def descr_str(self, space):
return space.wrap(self.as_str())
- descr_str.unwrap_spec = ['self', ObjSpace]
+ @unwrap_spec(other='bufferstr')
def descr_add(self, space, other):
return space.wrap(self.as_str() + other)
- descr_add.unwrap_spec = ['self', ObjSpace, 'bufferstr']
def _make_descr__cmp(name):
def descr__cmp(self, space, w_other):
@@ -101,7 +97,6 @@
str1 = self.as_str()
str2 = other.as_str()
return space.wrap(getattr(operator, name)(str1, str2))
- descr__cmp.unwrap_spec = ['self', ObjSpace, W_Root]
descr__cmp.func_name = name
return descr__cmp
@@ -114,7 +109,6 @@
def descr_hash(self, space):
return space.wrap(compute_hash(self.as_str()))
- descr_hash.unwrap_spec = ['self', ObjSpace]
def descr_mul(self, space, w_times):
# xxx not the most efficient implementation
@@ -122,7 +116,6 @@
# use the __mul__ method instead of space.mul() so that we
# return NotImplemented instead of raising a TypeError
return space.call_method(w_string, '__mul__', w_times)
- descr_mul.unwrap_spec = ['self', ObjSpace, W_Root]
def descr_repr(self, space):
if isinstance(self, RWBuffer):
@@ -133,7 +126,6 @@
return space.wrap("<%s for 0x%s, size %d>" %
(info, addrstring, self.getlength()))
- descr_repr.unwrap_spec = ['self', ObjSpace]
class RWBuffer(Buffer):
@@ -150,7 +142,7 @@
for i in range(len(string)):
self.setitem(start + i, string[i])
-
+ at unwrap_spec(offset=int, size=int)
def descr_buffer__new__(space, w_subtype, w_object, offset=0, size=-1):
# w_subtype can only be exactly 'buffer' for now
if not space.is_w(w_subtype, space.gettypefor(Buffer)):
@@ -184,7 +176,6 @@
else:
buffer = SubBuffer(buffer, offset, size)
return space.wrap(buffer)
-descr_buffer__new__.unwrap_spec = [ObjSpace, W_Root, W_Root, int, int]
Buffer.typedef = TypeDef(
More information about the Pypy-commit
mailing list