Author: Romain Guillebert <romain...@gmail.com> Branch: numpy-subarrays Changeset: r64040:3acd856274de Date: 2013-05-13 19:51 +0200 http://bitbucket.org/pypy/pypy/changeset/3acd856274de/
Log: Start to make VoidType subarray friendly diff --git a/pypy/module/micronumpy/types.py b/pypy/module/micronumpy/types.py --- a/pypy/module/micronumpy/types.py +++ b/pypy/module/micronumpy/types.py @@ -1700,6 +1700,24 @@ class VoidType(BaseType, BaseStringType): T = lltype.Char + def coerce(self, space, dtype, w_items): + items_w = space.fixedview(w_items) + arr = VoidBoxStorage(self.size, dtype) + ofs = 0 + for i in range(len(items_w)): + subdtype = dtype.subdtype + itemtype = subdtype.itemtype + w_box = itemtype.coerce(space, dtype.subdtype, items_w[i]) + itemtype.store(arr, 0, ofs, w_box) + ofs += itemtype.get_element_size() + return interp_boxes.W_VoidBox(arr, 0, dtype) + + @jit.unroll_safe + def store(self, arr, i, ofs, box): + assert isinstance(box, interp_boxes.W_VoidBox) + for k in range(self.get_element_size()): + arr.storage[k + ofs] = box.arr.storage[k + box.ofs] + NonNativeVoidType = VoidType NonNativeStringType = StringType _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit