[pypy-commit] pypy py3k: MiniBuffer's API actually differs from MemoryView, fix
pjenvey
noreply at buildbot.pypy.org
Sat Mar 22 00:51:50 CET 2014
Author: Philip Jenvey <pjenvey at underboss.org>
Branch: py3k
Changeset: r70149:4f39e0698984
Date: 2014-03-21 16:32 -0700
http://bitbucket.org/pypy/pypy/changeset/4f39e0698984/
Log: MiniBuffer's API actually differs from MemoryView, fix
diff --git a/pypy/module/_cffi_backend/cbuffer.py b/pypy/module/_cffi_backend/cbuffer.py
--- a/pypy/module/_cffi_backend/cbuffer.py
+++ b/pypy/module/_cffi_backend/cbuffer.py
@@ -1,9 +1,10 @@
+from pypy.interpreter.baseobjspace import W_Root
from pypy.interpreter.buffer import RWBuffer
from pypy.interpreter.error import oefmt
from pypy.interpreter.gateway import unwrap_spec, interp2app
from pypy.interpreter.typedef import TypeDef, make_weakref_descr
from pypy.module._cffi_backend import cdataobj, ctypeptr, ctypearray
-from pypy.objspace.std.memoryview import W_MemoryView
+from pypy.objspace.std.memoryview import _buffer_setitem
from rpython.rtyper.annlowlevel import llstr
from rpython.rtyper.lltypesystem import rffi
@@ -41,11 +42,30 @@
# Override the typedef to narrow down the interface that's exposed to app-level
-class MiniBuffer(W_MemoryView):
+class MiniBuffer(W_Root):
def __init__(self, buffer, keepalive=None):
- W_MemoryView.__init__(self, buffer)
+ self.buffer = buffer
self.keepalive = keepalive
+ def buffer_w(self, space):
+ return self.buffer
+
+ def descr_len(self, space):
+ return space.wrap(self.buffer.getlength())
+
+ def descr_getitem(self, space, w_index):
+ start, stop, step, size = space.decode_index4(w_index,
+ self.buffer.getlength())
+ if step == 0:
+ return space.wrapbytes(self.buffer.getitem(start))
+ res = self.buffer.getslice(start, stop, step, size)
+ return space.wrapbytes(res)
+
+ @unwrap_spec(newstring='bufferstr')
+ def descr_setitem(self, space, w_index, newstring):
+ _buffer_setitem(space, self.buffer, w_index, newstring)
+
+
MiniBuffer.typedef = TypeDef(
"buffer",
__module__ = "_cffi_backend",
More information about the pypy-commit
mailing list