def make_enumerate_object(context, builder, sig, args): assert len( args) == 1 or len(args) == 2 # enumerate(it) or enumerate(it, start) srcty = sig.args[0] if len(args) == 1: src = args[0] start_val = context.get_constant(types.intp, 0) elif len(args) == 2: src = args[0] start_val = context.cast(builder, args[1], sig.args[1], types.intp) iterobj = call_getiter(context, builder, srcty, src) enumcls = make_enumerate_cls(sig.return_type) enum = enumcls(context, builder) countptr = cgutils.alloca_once(builder, start_val.type) builder.store(start_val, countptr) enum.count = countptr enum.iter = iterobj res = enum._getvalue() return impl_ret_new_ref(context, builder, sig.return_type, res)
def make_zip_object(context, builder, sig, args): zip_type = sig.return_type assert len(args) == len(zip_type.source_types) zipobj = context.make_helper(builder, zip_type) for i, (arg, srcty) in enumerate(zip(args, sig.args)): zipobj[i] = call_getiter(context, builder, srcty, arg) res = zipobj._getvalue() return impl_ret_new_ref(context, builder, sig.return_type, res)
def make_zip_object(context, builder, sig, args): zip_type = sig.return_type assert len(args) == len(zip_type.source_types) zipcls = make_zip_cls(zip_type) zipobj = zipcls(context, builder) for i, (arg, srcty) in enumerate(zip(args, sig.args)): zipobj[i] = call_getiter(context, builder, srcty, arg) return zipobj._getvalue()
def make_enumerate_object(context, builder, sig, args): [srcty] = sig.args [src] = args iterobj = call_getiter(context, builder, srcty, src) enumcls = make_enumerate_cls(sig.return_type) enum = enumcls(context, builder) zero = context.get_constant(types.intp, 0) countptr = cgutils.alloca_once(builder, zero.type) builder.store(zero, countptr) enum.count = countptr enum.iter = iterobj return enum._getvalue()
def make_enumerate_object(context, builder, sig, args): assert len(args) == 1 or len(args) == 2 # enumerate(it) or enumerate(it, start) srcty = sig.args[0] if len(args) == 1: src = args[0] start_val = context.get_constant(types.intp, 0) elif len(args) == 2: src = args[0] start_val = context.cast(builder, args[1], sig.args[1], types.intp) iterobj = call_getiter(context, builder, srcty, src) enumcls = make_enumerate_cls(sig.return_type) enum = enumcls(context, builder) countptr = cgutils.alloca_once(builder, start_val.type) builder.store(start_val, countptr) enum.count = countptr enum.iter = iterobj return enum._getvalue()