@@ -39,23 +39,25 @@ typedef struct _mp_obj_enumerate_t {
3939
4040STATIC mp_obj_t enumerate_iternext (mp_obj_t self_in );
4141
42- STATIC const mp_arg_t enumerate_make_new_args [] = {
43- { MP_QSTR_iterable , MP_ARG_REQUIRED | MP_ARG_OBJ , {.u_obj = MP_OBJ_NULL } },
44- { MP_QSTR_start , MP_ARG_INT , {.u_int = 0 } },
45- };
46- #define ENUMERATE_MAKE_NEW_NUM_ARGS MP_ARRAY_SIZE(enumerate_make_new_args)
47-
4842STATIC mp_obj_t enumerate_make_new (const mp_obj_type_t * type , size_t n_args , size_t n_kw , const mp_obj_t * args ) {
4943#if MICROPY_CPYTHON_COMPAT
44+ static const mp_arg_t allowed_args [] = {
45+ { MP_QSTR_iterable , MP_ARG_REQUIRED | MP_ARG_OBJ , {.u_obj = MP_OBJ_NULL } },
46+ { MP_QSTR_start , MP_ARG_INT , {.u_int = 0 } },
47+ };
48+
5049 // parse args
51- mp_arg_val_t vals [ENUMERATE_MAKE_NEW_NUM_ARGS ];
52- mp_arg_parse_all_kw_array (n_args , n_kw , args , ENUMERATE_MAKE_NEW_NUM_ARGS , enumerate_make_new_args , vals );
50+ struct {
51+ mp_arg_val_t iterable , start ;
52+ } arg_vals ;
53+ mp_arg_parse_all_kw_array (n_args , n_kw , args ,
54+ MP_ARRAY_SIZE (allowed_args ), allowed_args , (mp_arg_val_t * )& arg_vals );
5355
5456 // create enumerate object
5557 mp_obj_enumerate_t * o = m_new_obj (mp_obj_enumerate_t );
5658 o -> base .type = type ;
57- o -> iter = mp_getiter (vals [ 0 ] .u_obj );
58- o -> cur = vals [ 1 ] .u_int ;
59+ o -> iter = mp_getiter (arg_vals . iterable .u_obj );
60+ o -> cur = arg_vals . start .u_int ;
5961#else
6062 (void )n_kw ;
6163 mp_obj_enumerate_t * o = m_new_obj (mp_obj_enumerate_t );
0 commit comments