def make_array_flatiter(context, builder, arrty, arr): flatitercls = make_array_flat_cls(types.NumpyFlatType(arrty)) flatiter = flatitercls(context, builder) arrayptr = cgutils.alloca_once_value(builder, arr) flatiter.array = arrayptr arrcls = context.make_array(arrty) arr = arrcls(context, builder, ref=arrayptr) flatiter.init_specific(context, builder, arrty, arr) return flatiter._getvalue()
def make_array_flatiter(context, builder, arrty, arr): flatitercls = make_array_flat_cls(types.NumpyFlatType(arrty)) flatiter = flatitercls(context, builder) iters = cgutils.alloca_once(builder, context.get_value_type(types.intp), size=context.get_constant( types.intp, arrty.ndim)) arrayptr = cgutils.alloca_once(builder, arr.type) builder.store(arr, arrayptr) zero = context.get_constant(types.intp, 0) for i in range(arrty.ndim): p = builder.gep(iters, [context.get_constant(types.intp, i)]) builder.store(zero, p) flatiter.array = arrayptr flatiter.iters = iters return flatiter._getvalue()
def resolve_flat(self, ary): return types.NumpyFlatType(ary)