Пример #1
0
 def f(n):
     lst = ['a', 'b', 'c']
     lst = rgc.resizable_list_supporting_raw_ptr(lst)
     lst.append(chr(n))
     assert lst[3] == chr(n)
     assert lst[-1] == chr(n)
     #
     ptr = rgc.nonmoving_raw_ptr_for_resizable_list(lst)
     assert lst[:] == ['a', 'b', 'c', chr(n)]
     assert lltype.typeOf(ptr) == rffi.CCHARP
     assert [ptr[i] for i in range(4)] == ['a', 'b', 'c', chr(n)]
     #
     lst[-3] = 'X'
     assert ptr[1] == 'X'
     ptr[2] = 'Y'
     assert lst[-2] == 'Y'
     #
     addr = rffi.cast(lltype.Signed, ptr)
     ptr = rffi.cast(rffi.CCHARP, addr)
     rgc.collect()    # should not move lst.items
     lst[-4] = 'g'
     assert ptr[0] == 'g'
     ptr[3] = 'H'
     assert lst[-1] == 'H'
     return lst
Пример #2
0
 def f(n):
     lst = ['a', 'b', 'c', 'd', 'e']
     lst = rgc.resizable_list_supporting_raw_ptr(lst)
     lst = lst[:3]
     lst.append(chr(n))
     assert lst[3] == chr(n)
     assert lst[-1] == chr(n)
     #
     ptr = rgc.nonmoving_raw_ptr_for_resizable_list(lst)
     assert lst[:] == ['a', 'b', 'c', chr(n)]
     assert lltype.typeOf(ptr) == rffi.CCHARP
     assert [ptr[i] for i in range(4)] == ['a', 'b', 'c', chr(n)]
     return lst
Пример #3
0
 def get_raw_address(self):
     ba = self.ba
     p = nonmoving_raw_ptr_for_resizable_list(ba._data)
     p = rffi.ptradd(p, ba._offset)
     return p
Пример #4
0
 def get_raw_address(self):
     return nonmoving_raw_ptr_for_resizable_list(self.data)
Пример #5
0
 def get_raw_address(self):
     ptr = nonmoving_raw_ptr_for_resizable_list(self.buf)
     return rffi.ptradd(ptr, self.start)
Пример #6
0
 def get_raw_address(self):
     return nonmoving_raw_ptr_for_resizable_list(self.data)