def test_copy_list_to_raw_array(self): ARRAY = rffi.CArray(lltype.Signed) buf = lltype.malloc(ARRAY, 4, flavor='raw') lst = [1, 2, 3, 4] copy_list_to_raw_array(lst, buf) for i in range(4): assert buf[i] == i+1 lltype.free(buf, flavor='raw')
def test_copy_list_to_raw_array(self): ARRAY = rffi.CArray(lltype.Signed) buf = lltype.malloc(ARRAY, 4, flavor='raw') lst = [1, 2, 3, 4] copy_list_to_raw_array(lst, buf) for i in range(4): assert buf[i] == i + 1 lltype.free(buf, flavor='raw')
def pack_list_of_items(self, cdata, w_ob): float_list = self.space.listview_float(w_ob) if float_list is not None: if self.size == rffi.sizeof(rffi.DOUBLE): # fastest path from rpython.rlib.rrawarray import copy_list_to_raw_array cdata = rffi.cast(rffi.DOUBLEP, cdata) copy_list_to_raw_array(float_list, cdata) return True elif self.size == rffi.sizeof(rffi.FLOAT): misc.pack_float_list_to_raw_array(float_list, cdata, rffi.FLOAT, rffi.FLOATP) return True return W_CTypePrimitive.pack_list_of_items(self, cdata, w_ob)
def pack_list_of_items(self, cdata, w_ob): int_list = self.space.listview_int(w_ob) if int_list is not None: if self.size == rffi.sizeof(rffi.LONG): # fastest path from rpython.rlib.rrawarray import copy_list_to_raw_array cdata = rffi.cast(rffi.LONGP, cdata) copy_list_to_raw_array(int_list, cdata) else: overflowed = misc.pack_list_to_raw_array_bounds_signed( int_list, cdata, self.size) if overflowed != 0: self._overflow(self.space.wrap(overflowed)) return True return W_CTypePrimitive.pack_list_of_items(self, cdata, w_ob)
def fn(): buf = lltype.malloc(INTARRAY, 3, flavor='raw') lst = [1, 2, 3] copy_list_to_raw_array(lst, buf) for i in range(3): assert buf[i] == lst[i] # buf2 = lltype.malloc(FLOATARRAY, 3, flavor='raw') lst = [1.1, 2.2, 3.3] copy_list_to_raw_array(lst, buf2) for i in range(3): assert buf2[i] == lst[i] # lltype.free(buf, flavor='raw') lltype.free(buf2, flavor='raw')
def pack_list_of_items(self, cdata, w_ob, expected_length): int_list = self.space.listview_int(w_ob) if (int_list is not None and self._within_bounds(len(int_list), expected_length)): if self.size == rffi.sizeof(rffi.SIGNED): # fastest path from rpython.rlib.rrawarray import copy_list_to_raw_array cdata = rffi.cast(rffi.SIGNEDP, cdata) copy_list_to_raw_array(int_list, cdata) else: overflowed = misc.pack_list_to_raw_array_bounds_signed( int_list, cdata, self.size) if overflowed != 0: self._overflow(self.space.newint(overflowed)) return True return W_CTypePrimitive.pack_list_of_items(self, cdata, w_ob, expected_length)