def test_rawstring2charp(self): import _rawffi A = _rawffi.Array('c') a = A(10, 'x'*10) _rawffi.rawstring2charp(a.buffer, "foobar") assert ''.join([a[i] for i in range(10)]) == "foobarxxxx" _rawffi.rawstring2charp(a.buffer, buffer("baz")) assert ''.join([a[i] for i in range(10)]) == "bazbarxxxx" a.free()
def test_rawstring2charp(self): import _rawffi A = _rawffi.Array('c') a = A(10, 'x' * 10) _rawffi.rawstring2charp(a.buffer, "foobar") assert ''.join([a[i] for i in range(10)]) == "foobarxxxx" _rawffi.rawstring2charp(a.buffer, buffer("baz")) assert ''.join([a[i] for i in range(10)]) == "bazbarxxxx" a.free()
def test_rawstring2charp(self): import _rawffi A = _rawffi.Array('c') a = A(10, b'x' * 10) _rawffi.rawstring2charp(a.buffer, b"foobar") assert b''.join([a[i] for i in range(10)]) == b"foobarxxxx" _rawffi.rawstring2charp(a.buffer, memoryview(b"baz")) assert b''.join([a[i] for i in range(10)]) == b"bazbarxxxx" a.free()
def test_rawstring2charp(self): import _rawffi A = _rawffi.Array('c') a = A(10, b'x'*10) _rawffi.rawstring2charp(a.buffer, b"foobar") assert b''.join([a[i] for i in range(10)]) == b"foobarxxxx" _rawffi.rawstring2charp(a.buffer, memoryview(b"baz")) assert b''.join([a[i] for i in range(10)]) == b"bazbarxxxx" a.free()
def setvalue(self, val): # we don't want to have buffers here if len(val) > self._length_: raise ValueError("%r too long" % (val,)) if isinstance(val, str): _rawffi.rawstring2charp(self._buffer.buffer, val) else: for i in range(len(val)): self[i] = val[i] if len(val) < self._length_: self._buffer[len(val)] = '\x00'
def setvalue(self, val): # we don't want to have buffers here if len(val) > self._length_: raise ValueError("%r too long" % (val,)) if isinstance(val, str): _rawffi.rawstring2charp(self._buffer.buffer, val) else: for i in range(len(val)): self[i] = val[i] if len(val) < self._length_: self._buffer[len(val)] = '\x00'
def from_buffer_copy(self, obj, offset=0): size = self._sizeofinstances() buf = buffer(obj, offset, size) if len(buf) < size: raise ValueError( "Buffer size too small (%d instead of at least %d bytes)" % (len(buf) + offset, size + offset)) result = self() dest = result._buffer.buffer try: raw_addr = buf._pypy_raw_address() except ValueError: _rawffi.rawstring2charp(dest, buf) else: from ctypes import memmove memmove(dest, raw_addr, size) return result
def from_buffer_copy(self, obj, offset=0): size = self._sizeofinstances() buf = buffer(obj, offset, size) if len(buf) < size: raise ValueError( "Buffer size too small (%d instead of at least %d bytes)" % (len(buf) + offset, size + offset)) result = self() dest = result._buffer.buffer try: raw_addr = buf._pypy_raw_address() except ValueError: _rawffi.rawstring2charp(dest, buf) else: from ctypes import memmove memmove(dest, raw_addr, size) return result
def from_buffer_copy(self, obj, offset=0): size = self._sizeofinstances() buf = memoryview(obj) if buf.nbytes < offset + size: raise ValueError( "Buffer size too small (%d instead of at least %d bytes)" % (buf.nbytes, offset + size)) result = self._newowninstance_() dest = result._buffer.buffer try: raw_addr = buf._pypy_raw_address() + offset except ValueError: _rawffi.rawstring2charp(dest, buf, offset, size) else: from ctypes import memmove memmove(dest, raw_addr, size) return result
def setraw(self, buffer): if len(buffer) > self._length_: raise ValueError("%r too long" % (buffer,)) _rawffi.rawstring2charp(self._buffer.buffer, buffer)
def setraw(self, buffer): if len(buffer) > self._length_: raise ValueError("%r too long" % (buffer,)) _rawffi.rawstring2charp(self._buffer.buffer, buffer)