예제 #1
0
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()
예제 #2
0
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()
예제 #3
0
 def resolve_flat(self, ary):
     return types.NumpyFlatType(ary)