Пример #1
0
 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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
 def _setval(self, value):
     d = result()
     d.value = value
     self._buffer[0] = swap_bytes(d.value, sizeof(self), name,
                                  'set')
Пример #5
0
 def _getval(self):
     return swap_bytes(self._buffer[0], sizeof(self), name, 'get')
Пример #6
0
 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