Example #1
0
 def test_getslice(self):
     buf = RBuffer(10)
     buf.setitem(0, '\x01')
     buf.setitem(1, '\x02')
     buf.setitem(2, '\x03')
     assert buf.getslice(0, 3) == '\x01\x02\x03'
     buf.free()
Example #2
0
 def test_getslice(self):
     buf = RBuffer(10)
     buf.setitem(0, "\x01")
     buf.setitem(1, "\x02")
     buf.setitem(2, "\x03")
     assert buf.getslice(0, 3) == "\x01\x02\x03"
     buf.free()
Example #3
0
 def __init__(self, space, w_arg):
     if space.is_true(space.isinstance(w_arg, space.w_unicode)):
         arg = space.unicode_w(w_arg)
         size = len(arg) * rffi.sizeof(lltype.UniChar)
         self._buffer = RBuffer(size)
         # XXX memory copy interface, redesign and share
         UNICODE_ARRAY_P = rffi.CArrayPtr(lltype.UniChar)
         ll_buffer = rffi.cast(UNICODE_ARRAY_P, self._buffer.ll_buffer)
         for i in range(len(arg)):
             ll_buffer[i] = arg[i]
     else:
         size = space.int_w(space.len(w_arg))
         self._buffer = RBuffer(size)
         for i in range(size):
             self._buffer.setitem(i, rffi.cast(lltype.Char, space.int_w(space.getitem(w_arg, space.wrap(i)))))
     self.size = size
Example #4
0
 def __init__(self, space, w_arg):
     if space.is_true(space.isinstance(w_arg, space.w_unicode)):
         arg = space.unicode_w(w_arg)
         size = len(arg) * rffi.sizeof(lltype.UniChar)
         self._buffer = RBuffer(size)
         # XXX memory copy interface, redesign and share
         UNICODE_ARRAY_P = rffi.CArrayPtr(lltype.UniChar)
         ll_buffer = rffi.cast(UNICODE_ARRAY_P, self._buffer.ll_buffer)
         for i in range(len(arg)):
             ll_buffer[i] = arg[i]
     else:
         size = space.int_w(space.len(w_arg))
         self._buffer = RBuffer(size)
         for i in range(size):
             self._buffer.setitem(
                 i,
                 rffi.cast(lltype.Char,
                           space.int_w(space.getitem(w_arg,
                                                     space.wrap(i)))))
     self.size = size
Example #5
0
class W_Buffer(Wrappable):
    def __init__(self, space, w_arg):
        if space.is_true(space.isinstance(w_arg, space.w_unicode)):
            arg = space.unicode_w(w_arg)
            size = len(arg) * rffi.sizeof(lltype.UniChar)
            self._buffer = RBuffer(size)
            # XXX memory copy interface, redesign and share
            UNICODE_ARRAY_P = rffi.CArrayPtr(lltype.UniChar)
            ll_buffer = rffi.cast(UNICODE_ARRAY_P, self._buffer.ll_buffer)
            for i in range(len(arg)):
                ll_buffer[i] = arg[i]
        else:
            size = space.int_w(space.len(w_arg))
            self._buffer = RBuffer(size)
            for i in range(size):
                self._buffer.setitem(
                    i,
                    rffi.cast(lltype.Char,
                              space.int_w(space.getitem(w_arg,
                                                        space.wrap(i)))))
        self.size = size

    def getitem(self, space, w_item):
        if space.is_true(space.isinstance(w_item, space.w_slice)):
            start, stop, step = space.sliceindices(w_item,
                                                   space.wrap(self.size))
            # XXX a bit of code duplication from listobject

            if (step < 0 and stop >= start) or (step > 0 and start >= stop):
                slicelength = 0
            elif step < 0:
                slicelength = (stop - start + 1) / step + 1
            else:
                slicelength = (stop - start - 1) / step + 1
            res = ['\x00'] * slicelength
            for i in range(slicelength):
                res[i] = self._buffer.getitem(start)
                start += step
            return space.wrap("".join(res))
        return space.wrap(self._buffer.getitem(space.int_w(w_item)))

    getitem.unwrap_spec = ['self', ObjSpace, W_Root]

    def len(self, space):
        return space.wrap(self._buffer.size)

    len.unwrap_spec = ['self', ObjSpace]

    def delete(self):
        # XXX when exactly???
        self._buffer.free()
Example #6
0
class W_Buffer(Wrappable):
    def __init__(self, space, w_arg):
        if space.is_true(space.isinstance(w_arg, space.w_unicode)):
            arg = space.unicode_w(w_arg)
            size = len(arg) * rffi.sizeof(lltype.UniChar)
            self._buffer = RBuffer(size)
            # XXX memory copy interface, redesign and share
            UNICODE_ARRAY_P = rffi.CArrayPtr(lltype.UniChar)
            ll_buffer = rffi.cast(UNICODE_ARRAY_P, self._buffer.ll_buffer)
            for i in range(len(arg)):
                ll_buffer[i] = arg[i]
        else:
            size = space.int_w(space.len(w_arg))
            self._buffer = RBuffer(size)
            for i in range(size):
                self._buffer.setitem(i, rffi.cast(lltype.Char, space.int_w(space.getitem(w_arg, space.wrap(i)))))
        self.size = size

    def getitem(self, space, w_item):
        if space.is_true(space.isinstance(w_item, space.w_slice)):
            start, stop, step = space.sliceindices(w_item, space.wrap(self.size))
            # XXX a bit of code duplication from listobject

            if (step < 0 and stop >= start) or (step > 0 and start >= stop):
                slicelength = 0
            elif step < 0:
                slicelength = (stop - start + 1) / step + 1
            else:
                slicelength = (stop - start - 1) / step + 1
            res = ["\x00"] * slicelength
            for i in range(slicelength):
                res[i] = self._buffer.getitem(start)
                start += step
            return space.wrap("".join(res))
        return space.wrap(self._buffer.getitem(space.int_w(w_item)))

    getitem.unwrap_spec = ["self", ObjSpace, W_Root]

    def len(self, space):
        return space.wrap(self._buffer.size)

    len.unwrap_spec = ["self", ObjSpace]

    def delete(self):
        # XXX when exactly???
        self._buffer.free()
Example #7
0
 def test_creation(self):
     buf = RBuffer(3)
     assert buf.address()
     buf.free()
Example #8
0
 def test_fromaddress(self):
     buf = RBuffer(10)
     buf.setitem(2, "\x03")
     buf2 = RBuffer(7, buf.address() + 2)
     assert buf2.getitem(0) == "\x03"
     buf.free()
Example #9
0
 def test_getsetitem(self):
     buf = RBuffer(10)
     assert buf.getitem(3) == "\x00"
     buf.setitem(4, "\x01")
     assert buf.getitem(4) == "\x01"
     buf.free()
Example #10
0
 def test_creation(self):
     buf = RBuffer(3)
     assert buf.address()
     buf.free()
Example #11
0
 def test_fromaddress(self):
     buf = RBuffer(10)
     buf.setitem(2, '\x03')
     buf2 = RBuffer(7, buf.address() + 2)
     assert buf2.getitem(0) == '\x03'
     buf.free()
Example #12
0
 def test_getsetitem(self):
     buf = RBuffer(10)
     assert buf.getitem(3) == '\x00'
     buf.setitem(4, '\x01')
     assert buf.getitem(4) == '\x01'
     buf.free()