@@ -46,6 +46,7 @@ STATIC mp_obj_t list_pop(size_t n_args, const mp_obj_t *args);
46
46
47
47
STATIC void list_print (const mp_print_t * print , mp_obj_t o_in , mp_print_kind_t kind ) {
48
48
mp_obj_list_t * o = MP_OBJ_TO_PTR (o_in );
49
+ //mp_obj_list_t *o = mp_instance_cast_to_native_base(o_in, &mp_type_list);
49
50
if (!(MICROPY_PY_UJSON && kind == PRINT_JSON )) {
50
51
kind = PRINT_REPR ;
51
52
}
@@ -93,7 +94,7 @@ STATIC mp_obj_t list_make_new(const mp_obj_type_t *type_in, size_t n_args, const
93
94
}
94
95
95
96
STATIC mp_obj_t list_unary_op (mp_unary_op_t op , mp_obj_t self_in ) {
96
- mp_obj_list_t * self = MP_OBJ_TO_PTR (self_in );
97
+ mp_obj_list_t * self = mp_instance_cast_to_native_base (self_in , & mp_type_list );
97
98
switch (op ) {
98
99
case MP_UNARY_OP_BOOL : return mp_obj_new_bool (self -> len != 0 );
99
100
case MP_UNARY_OP_LEN : return MP_OBJ_NEW_SMALL_INT (self -> len );
@@ -108,7 +109,7 @@ STATIC mp_obj_t list_unary_op(mp_unary_op_t op, mp_obj_t self_in) {
108
109
}
109
110
110
111
STATIC mp_obj_t list_binary_op (mp_binary_op_t op , mp_obj_t lhs , mp_obj_t rhs ) {
111
- mp_obj_list_t * o = MP_OBJ_TO_PTR (lhs );
112
+ mp_obj_list_t * o = mp_instance_cast_to_native_base (lhs , & mp_type_list );
112
113
switch (op ) {
113
114
case MP_BINARY_OP_ADD : {
114
115
if (!MP_OBJ_IS_TYPE (rhs , & mp_type_list )) {
@@ -239,7 +240,7 @@ STATIC mp_obj_t list_getiter(mp_obj_t o_in, mp_obj_iter_buf_t *iter_buf) {
239
240
240
241
mp_obj_t mp_obj_list_append (mp_obj_t self_in , mp_obj_t arg ) {
241
242
mp_check_self (MP_OBJ_IS_TYPE (self_in , & mp_type_list ));
242
- mp_obj_list_t * self = MP_OBJ_TO_PTR (self_in );
243
+ mp_obj_list_t * self = mp_instance_cast_to_native_base (self_in , & mp_type_list );
243
244
if (self -> len >= self -> alloc ) {
244
245
self -> items = m_renew (mp_obj_t , self -> items , self -> alloc , self -> alloc * 2 );
245
246
self -> alloc *= 2 ;
@@ -252,8 +253,8 @@ mp_obj_t mp_obj_list_append(mp_obj_t self_in, mp_obj_t arg) {
252
253
STATIC mp_obj_t list_extend (mp_obj_t self_in , mp_obj_t arg_in ) {
253
254
mp_check_self (MP_OBJ_IS_TYPE (self_in , & mp_type_list ));
254
255
if (MP_OBJ_IS_TYPE (arg_in , & mp_type_list )) {
255
- mp_obj_list_t * self = MP_OBJ_TO_PTR (self_in );
256
- mp_obj_list_t * arg = MP_OBJ_TO_PTR (arg_in );
256
+ mp_obj_list_t * self = mp_instance_cast_to_native_base (self_in , & mp_type_list );
257
+ mp_obj_list_t * arg = mp_instance_cast_to_native_base (arg_in , & mp_type_list );
257
258
258
259
if (self -> len + arg -> len > self -> alloc ) {
259
260
// TODO: use alloc policy for "4"
@@ -272,7 +273,7 @@ STATIC mp_obj_t list_extend(mp_obj_t self_in, mp_obj_t arg_in) {
272
273
273
274
STATIC mp_obj_t list_pop (size_t n_args , const mp_obj_t * args ) {
274
275
mp_check_self (MP_OBJ_IS_TYPE (args [0 ], & mp_type_list ));
275
- mp_obj_list_t * self = MP_OBJ_TO_PTR (args [0 ]);
276
+ mp_obj_list_t * self = mp_instance_cast_to_native_base (args [0 ], & mp_type_list );
276
277
if (self -> len == 0 ) {
277
278
mp_raise_IndexError (translate ("pop from empty list" ));
278
279
}
@@ -332,7 +333,7 @@ mp_obj_t mp_obj_list_sort(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_
332
333
MP_ARRAY_SIZE (allowed_args ), allowed_args , (mp_arg_val_t * )& args );
333
334
334
335
mp_check_self (MP_OBJ_IS_TYPE (pos_args [0 ], & mp_type_list ));
335
- mp_obj_list_t * self = MP_OBJ_TO_PTR (pos_args [0 ]);
336
+ mp_obj_list_t * self = mp_instance_cast_to_native_base (pos_args [0 ], & mp_type_list );
336
337
337
338
if (self -> len > 1 ) {
338
339
mp_quicksort (self -> items , self -> items + self -> len - 1 ,
@@ -345,7 +346,7 @@ mp_obj_t mp_obj_list_sort(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_
345
346
346
347
mp_obj_t mp_obj_list_clear (mp_obj_t self_in ) {
347
348
mp_check_self (MP_OBJ_IS_TYPE (self_in , & mp_type_list ));
348
- mp_obj_list_t * self = MP_OBJ_TO_PTR (self_in );
349
+ mp_obj_list_t * self = mp_instance_cast_to_native_base (self_in , & mp_type_list );
349
350
self -> len = 0 ;
350
351
self -> items = m_renew (mp_obj_t , self -> items , self -> alloc , LIST_MIN_ALLOC );
351
352
self -> alloc = LIST_MIN_ALLOC ;
@@ -355,25 +356,25 @@ mp_obj_t mp_obj_list_clear(mp_obj_t self_in) {
355
356
356
357
STATIC mp_obj_t list_copy (mp_obj_t self_in ) {
357
358
mp_check_self (MP_OBJ_IS_TYPE (self_in , & mp_type_list ));
358
- mp_obj_list_t * self = MP_OBJ_TO_PTR (self_in );
359
+ mp_obj_list_t * self = mp_instance_cast_to_native_base (self_in , & mp_type_list );
359
360
return mp_obj_new_list (self -> len , self -> items );
360
361
}
361
362
362
363
STATIC mp_obj_t list_count (mp_obj_t self_in , mp_obj_t value ) {
363
364
mp_check_self (MP_OBJ_IS_TYPE (self_in , & mp_type_list ));
364
- mp_obj_list_t * self = MP_OBJ_TO_PTR (self_in );
365
+ mp_obj_list_t * self = mp_instance_cast_to_native_base (self_in , & mp_type_list );
365
366
return mp_seq_count_obj (self -> items , self -> len , value );
366
367
}
367
368
368
369
STATIC mp_obj_t list_index (size_t n_args , const mp_obj_t * args ) {
369
370
mp_check_self (MP_OBJ_IS_TYPE (args [0 ], & mp_type_list ));
370
- mp_obj_list_t * self = MP_OBJ_TO_PTR (args [0 ]);
371
+ mp_obj_list_t * self = mp_instance_cast_to_native_base (args [0 ], & mp_type_list );
371
372
return mp_seq_index_obj (self -> items , self -> len , n_args , args );
372
373
}
373
374
374
375
STATIC mp_obj_t list_insert (mp_obj_t self_in , mp_obj_t idx , mp_obj_t obj ) {
375
376
mp_check_self (MP_OBJ_IS_TYPE (self_in , & mp_type_list ));
376
- mp_obj_list_t * self = MP_OBJ_TO_PTR (self_in );
377
+ mp_obj_list_t * self = mp_instance_cast_to_native_base (self_in , & mp_type_list );
377
378
// insert has its own strange index logic
378
379
mp_int_t index = MP_OBJ_SMALL_INT_VALUE (idx );
379
380
if (index < 0 ) {
@@ -407,7 +408,7 @@ mp_obj_t mp_obj_list_remove(mp_obj_t self_in, mp_obj_t value) {
407
408
408
409
STATIC mp_obj_t list_reverse (mp_obj_t self_in ) {
409
410
mp_check_self (MP_OBJ_IS_TYPE (self_in , & mp_type_list ));
410
- mp_obj_list_t * self = MP_OBJ_TO_PTR (self_in );
411
+ mp_obj_list_t * self = mp_instance_cast_to_native_base (self_in , & mp_type_list );
411
412
412
413
mp_int_t len = self -> len ;
413
414
for (mp_int_t i = 0 ; i < len /2 ; i ++ ) {
@@ -484,7 +485,7 @@ mp_obj_t mp_obj_new_list(size_t n, mp_obj_t *items) {
484
485
}
485
486
486
487
void mp_obj_list_get (mp_obj_t self_in , size_t * len , mp_obj_t * * items ) {
487
- mp_obj_list_t * self = MP_OBJ_TO_PTR (self_in );
488
+ mp_obj_list_t * self = mp_instance_cast_to_native_base (self_in , & mp_type_list );
488
489
* len = self -> len ;
489
490
* items = self -> items ;
490
491
}
@@ -497,7 +498,7 @@ void mp_obj_list_set_len(mp_obj_t self_in, size_t len) {
497
498
}
498
499
499
500
void mp_obj_list_store (mp_obj_t self_in , mp_obj_t index , mp_obj_t value ) {
500
- mp_obj_list_t * self = MP_OBJ_TO_PTR (self_in );
501
+ mp_obj_list_t * self = mp_instance_cast_to_native_base (self_in , & mp_type_list );
501
502
size_t i = mp_get_index (self -> base .type , self -> len , index , false);
502
503
self -> items [i ] = value ;
503
504
}
0 commit comments