Exemple #1
0
 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()
Exemple #2
0
 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()
Exemple #3
0
 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()
Exemple #4
0
 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'
Exemple #6
0
 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'
Exemple #7
0
 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
Exemple #8
0
 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
Exemple #9
0
 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
Exemple #10
0
 def setraw(self, buffer):
     if len(buffer) > self._length_:
         raise ValueError("%r too long" % (buffer,))
     _rawffi.rawstring2charp(self._buffer.buffer, buffer)
Exemple #11
0
 def setraw(self, buffer):
     if len(buffer) > self._length_:
         raise ValueError("%r too long" % (buffer,))
     _rawffi.rawstring2charp(self._buffer.buffer, buffer)