Author: Armin Rigo <[email protected]>
Branch:
Changeset: r58647:e3a20a600eaf
Date: 2012-10-31 17:47 +0100
http://bitbucket.org/pypy/pypy/changeset/e3a20a600eaf/
Log: Hopefully, fixes for 'test_buffer' after O2 or Ojit translation.
Hard to test...
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,4 +1,5 @@
from pypy.interpreter.error import operationerrfmt
+from pypy.interpreter.baseobjspace import Wrappable
from pypy.interpreter.buffer import RWBuffer
from pypy.interpreter.gateway import unwrap_spec, interp2app
from pypy.interpreter.typedef import TypeDef
@@ -35,15 +36,37 @@
for i in range(len(string)):
raw_cdata[i] = string[i]
-LLBuffer.typedef = TypeDef(
+
+class MiniBuffer(Wrappable):
+ # a different subclass of Wrappable for the MiniBuffer, because we
+ # want a slightly different (simplified) API at the level of Python.
+
+ def __init__(self, buffer):
+ self.buffer = buffer
+
+ def descr_len(self, space):
+ return self.buffer.descr_len(space)
+
+ def descr_getitem(self, space, w_index):
+ return self.buffer.descr_getitem(space, w_index)
+
+ @unwrap_spec(newstring='bufferstr')
+ def descr_setitem(self, space, w_index, newstring):
+ self.buffer.descr_setitem(space, w_index, newstring)
+
+ def descr__buffer__(self, space):
+ return self.buffer.descr__buffer__(space)
+
+
+MiniBuffer.typedef = TypeDef(
"buffer",
__module__ = "_cffi_backend",
- __len__ = interp2app(RWBuffer.descr_len),
- __getitem__ = interp2app(RWBuffer.descr_getitem),
- __setitem__ = interp2app(RWBuffer.descr_setitem),
- __buffer__ = interp2app(RWBuffer.descr__buffer__),
+ __len__ = interp2app(MiniBuffer.descr_len),
+ __getitem__ = interp2app(MiniBuffer.descr_getitem),
+ __setitem__ = interp2app(MiniBuffer.descr_setitem),
+ __buffer__ = interp2app(MiniBuffer.descr__buffer__),
)
-LLBuffer.typedef.acceptable_as_base_class = False
+MiniBuffer.typedef.acceptable_as_base_class = False
@unwrap_spec(cdata=cdataobj.W_CData, size=int)
@@ -63,4 +86,4 @@
raise operationerrfmt(space.w_TypeError,
"don't know the size pointed to by '%s'",
ctype.name)
- return space.wrap(LLBuffer(cdata._cdata, size))
+ return space.wrap(MiniBuffer(LLBuffer(cdata._cdata, size)))
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit