Author: Ronan Lamy <ronan.l...@gmail.com> Branch: PyBuffer Changeset: r90848:afa6dad368e3 Date: 2017-03-28 17:23 +0100 http://bitbucket.org/pypy/pypy/changeset/afa6dad368e3/
Log: Fix translation and give BufferView1D and BufferViewND a common base class diff --git a/pypy/interpreter/buffer.py b/pypy/interpreter/buffer.py --- a/pypy/interpreter/buffer.py +++ b/pypy/interpreter/buffer.py @@ -123,49 +123,6 @@ def getstrides(self): return [1] -class BufferView1D(Buffer): - def __init__(self, data, format, itemsize): - self.data = data - self.readonly = data.readonly - self.format = format - self.itemsize = itemsize - - def getlength(self): - return self.data.getlength() - - def as_str(self): - return self.data.as_str() - - def as_str_and_offset_maybe(self): - return self.data.as_str_and_offset_maybe() - - def getitem(self, index): - return self.data.getitem(index) - - def setitem(self, index, value): - return self.data.setitem(index, value) - - def get_raw_address(self): - return self.data.get_raw_address() - - def as_binary(self): - return self.data - - def getformat(self): - return self.format - - def getitemsize(self): - return self.itemsize - - def getndim(self): - return 1 - - def getshape(self): - return [self.getlength() // self.itemsize] - - def getstrides(self): - return [self.itemsize] - class BinaryBuffer(Buffer): """Base class for buffers of bytes""" diff --git a/pypy/objspace/std/memoryobject.py b/pypy/objspace/std/memoryobject.py --- a/pypy/objspace/std/memoryobject.py +++ b/pypy/objspace/std/memoryobject.py @@ -6,7 +6,7 @@ from rpython.rlib.objectmodel import compute_hash from rpython.rlib.rstruct.error import StructError from pypy.interpreter.baseobjspace import W_Root -from pypy.interpreter.buffer import Buffer, SubBuffer, StringBuffer, BufferView1D +from pypy.interpreter.buffer import Buffer, SubBuffer from pypy.interpreter.error import OperationError, oefmt from pypy.interpreter.gateway import interp2app from pypy.interpreter.typedef import TypeDef, GetSetProperty, make_weakref_descr @@ -721,6 +721,8 @@ return 0 class BufferSlice(Buffer): + _immutable_ = True + _attrs_ = ['buf', 'readonly', 'shape', 'strides', 'offset', 'step'] def __init__(self, buf, start, step, length): self.buf = buf self.readonly = self.buf.readonly @@ -783,15 +785,10 @@ def getstrides(self): return self.strides -class BufferViewND(Buffer): - def __init__(self, parent, ndim, shape, strides): - assert parent.getndim() == 1 - assert len(shape) == len(strides) == ndim - self.parent = parent - self.readonly = parent.readonly - self.ndim = ndim - self.shape = shape - self.strides = strides + +class BufferViewBase(Buffer): + _immutable_ = True + _attrs_ = ['readonly', 'parent'] def getlength(self): return self.parent.getlength() @@ -802,14 +799,11 @@ def as_str_and_offset_maybe(self): return self.parent.as_str_and_offset_maybe() - def as_binary(self): - return self.parent.as_binary() - def getitem(self, index): return self.parent.getitem(index) - def setitem(self, index, char): - self.parent.setitem(index, char) + def setitem(self, index, value): + return self.parent.setitem(index, value) def getslice(self, start, stop, step, size): return self.parent.getslice(start, stop, step, size) @@ -820,6 +814,47 @@ def get_raw_address(self): return self.parent.get_raw_address() + def as_binary(self): + return self.parent.as_binary() + +class BufferView1D(BufferViewBase): + _immutable_ = True + _attrs_ = ['readonly', 'parent', 'format', 'itemsize'] + + def __init__(self, parent, format, itemsize): + self.parent = parent + self.readonly = parent.readonly + self.format = format + self.itemsize = itemsize + + def getformat(self): + return self.format + + def getitemsize(self): + return self.itemsize + + def getndim(self): + return 1 + + def getshape(self): + return [self.getlength() // self.itemsize] + + def getstrides(self): + return [self.itemsize] + +class BufferViewND(BufferViewBase): + _immutable_ = True + _attrs_ = ['readonly', 'parent', 'ndim', 'shape', 'strides'] + + def __init__(self, parent, ndim, shape, strides): + assert parent.getndim() == 1 + assert len(shape) == len(strides) == ndim + self.parent = parent + self.readonly = parent.readonly + self.ndim = ndim + self.shape = shape + self.strides = strides + def getformat(self): return self.parent.getformat() _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit