def __setitem__(self, index, value): cobj = self._type_.from_param(value) if ensure_objects(cobj) is not None: store_reference(self, index, cobj._objects) address = self._buffer[0] address += index * sizeof(self._type_) cobj._copy_to(address)
def __buffer__(self, flags): shape = [] obj = self while 1: shape.append(obj._length_) try: obj[0]._length_ except (AttributeError, IndexError): break obj = obj[0] fmt = obj._type_._getformat() itemsize = sizeof(obj._type_) return __pypy__.newmemoryview(memoryview(self._buffer), itemsize, fmt, shape)
def __buffer__(self, flags): shape = [] obj = self while 1: shape.append(obj._length_) try: obj[0]._length_ except (AttributeError, IndexError): break obj = obj[0] fmt = get_format_str(obj._type_) try: itemsize = struct.calcsize(fmt[1:]) except: itemsize = sizeof(obj[0]) return __pypy__.newmemoryview(memoryview(self._buffer), itemsize, fmt, shape)
def _setval(self, value): d = result() d.value = value self._buffer[0] = swap_bytes(d.value, sizeof(self), name, 'set')
def _getval(self): return swap_bytes(self._buffer[0], sizeof(self), name, 'get')
def _subarray(self, index=0): """Return a _rawffi array of length 1 whose address is the same as the index'th item to which self is pointing.""" address = self._buffer[0] address += index * sizeof(self._type_) return self._type_.from_address(address)._buffer