@@ -46,6 +46,11 @@ static mp_obj_t mp_obj_deque_extend(mp_obj_t self_in, mp_obj_t arg_in);
46
46
static mp_obj_t mp_obj_new_deque_it (mp_obj_t deque , mp_obj_iter_buf_t * iter_buf );
47
47
#endif
48
48
49
+ // CIRCUITPY-CHANGE
50
+ static mp_obj_deque_t * native_deque (mp_obj_t self_in ) {
51
+ return MP_OBJ_TO_PTR (mp_obj_cast_to_native_base (self_in , MP_OBJ_FROM_PTR (& mp_type_deque )));
52
+ }
53
+
49
54
static mp_obj_t deque_make_new (const mp_obj_type_t * type , size_t n_args , size_t n_kw , const mp_obj_t * args ) {
50
55
mp_arg_check_num (n_args , n_kw , 2 , 3 , false);
51
56
@@ -79,7 +84,8 @@ static size_t deque_len(mp_obj_deque_t *self) {
79
84
}
80
85
81
86
static mp_obj_t deque_unary_op (mp_unary_op_t op , mp_obj_t self_in ) {
82
- mp_obj_deque_t * self = MP_OBJ_TO_PTR (self_in );
87
+ // CIRCUITPY-CHANGE
88
+ mp_obj_deque_t * self = native_deque (self_in );
83
89
switch (op ) {
84
90
case MP_UNARY_OP_BOOL :
85
91
return mp_obj_new_bool (self -> i_get != self -> i_put );
@@ -98,7 +104,8 @@ static mp_obj_t deque_unary_op(mp_unary_op_t op, mp_obj_t self_in) {
98
104
}
99
105
100
106
static mp_obj_t mp_obj_deque_append (mp_obj_t self_in , mp_obj_t arg ) {
101
- mp_obj_deque_t * self = MP_OBJ_TO_PTR (self_in );
107
+ // CIRCUITPY-CHANGE
108
+ mp_obj_deque_t * self = native_deque (self_in );
102
109
103
110
size_t new_i_put = self -> i_put + 1 ;
104
111
if (new_i_put == self -> alloc ) {
@@ -123,7 +130,8 @@ static mp_obj_t mp_obj_deque_append(mp_obj_t self_in, mp_obj_t arg) {
123
130
static MP_DEFINE_CONST_FUN_OBJ_2 (deque_append_obj , mp_obj_deque_append ) ;
124
131
125
132
static mp_obj_t mp_obj_deque_appendleft (mp_obj_t self_in , mp_obj_t arg ) {
126
- mp_obj_deque_t * self = MP_OBJ_TO_PTR (self_in );
133
+ // CIRCUITPY-CHANGE
134
+ mp_obj_deque_t * self = native_deque (self_in );
127
135
128
136
size_t new_i_get = self -> i_get - 1 ;
129
137
if (self -> i_get == 0 ) {
@@ -162,7 +170,8 @@ static mp_obj_t mp_obj_deque_extend(mp_obj_t self_in, mp_obj_t arg_in) {
162
170
static MP_DEFINE_CONST_FUN_OBJ_2 (deque_extend_obj , mp_obj_deque_extend ) ;
163
171
164
172
static mp_obj_t deque_popleft (mp_obj_t self_in ) {
165
- mp_obj_deque_t * self = MP_OBJ_TO_PTR (self_in );
173
+ // CIRCUITPY-CHANGE
174
+ mp_obj_deque_t * self = native_deque (self_in );
166
175
167
176
if (self -> i_get == self -> i_put ) {
168
177
mp_raise_msg (& mp_type_IndexError , MP_ERROR_TEXT ("empty" ));
@@ -180,7 +189,8 @@ static mp_obj_t deque_popleft(mp_obj_t self_in) {
180
189
static MP_DEFINE_CONST_FUN_OBJ_1 (deque_popleft_obj , deque_popleft ) ;
181
190
182
191
static mp_obj_t deque_pop (mp_obj_t self_in ) {
183
- mp_obj_deque_t * self = MP_OBJ_TO_PTR (self_in );
192
+ // CIRCUITPY-CHANGE
193
+ mp_obj_deque_t * self = native_deque (self_in );
184
194
185
195
if (self -> i_get == self -> i_put ) {
186
196
mp_raise_msg (& mp_type_IndexError , MP_ERROR_TEXT ("empty" ));
@@ -205,7 +215,8 @@ static mp_obj_t deque_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
205
215
// delete not supported, fall back to mp_obj_subscr() error message
206
216
return MP_OBJ_NULL ;
207
217
}
208
- mp_obj_deque_t * self = MP_OBJ_TO_PTR (self_in );
218
+ // CIRCUITPY-CHANGE
219
+ mp_obj_deque_t * self = native_deque (self_in );
209
220
210
221
size_t offset = mp_get_index (self -> base .type , deque_len (self ), index , false);
211
222
size_t index_val = self -> i_get + offset ;
@@ -226,7 +237,8 @@ static mp_obj_t deque_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
226
237
227
238
#if 0
228
239
static mp_obj_t deque_clear (mp_obj_t self_in ) {
229
- mp_obj_deque_t * self = MP_OBJ_TO_PTR (self_in );
240
+ // CIRCUITPY-CHANGE
241
+ mp_obj_deque_t * self = native_deque (self_in );
230
242
self -> i_get = self -> i_put = 0 ;
231
243
mp_seq_clear (self -> items , 0 , self -> alloc , sizeof (* self -> items ));
232
244
return mp_const_none ;
@@ -286,7 +298,8 @@ typedef struct _mp_obj_deque_it_t {
286
298
287
299
static mp_obj_t deque_it_iternext (mp_obj_t self_in ) {
288
300
mp_obj_deque_it_t * self = MP_OBJ_TO_PTR (self_in );
289
- mp_obj_deque_t * deque = MP_OBJ_TO_PTR (self -> deque );
301
+ // CIRCUITPY-CHANGE
302
+ mp_obj_deque_t * deque = native_deque (self -> deque );
290
303
if (self -> cur != deque -> i_put ) {
291
304
mp_obj_t o_out = deque -> items [self -> cur ];
292
305
if (++ self -> cur == deque -> alloc ) {
@@ -298,9 +311,10 @@ static mp_obj_t deque_it_iternext(mp_obj_t self_in) {
298
311
}
299
312
}
300
313
301
- static mp_obj_t mp_obj_new_deque_it (mp_obj_t deque , mp_obj_iter_buf_t * iter_buf ) {
302
- mp_obj_deque_t * deque_ = MP_OBJ_TO_PTR (deque );
303
- size_t i_get = deque_ -> i_get ;
314
+ static mp_obj_t mp_obj_new_deque_it (mp_obj_t deque_in , mp_obj_iter_buf_t * iter_buf ) {
315
+ // CIRCUITPY-CHANGE
316
+ mp_obj_deque_t * deque = native_deque (deque_in );
317
+ size_t i_get = deque -> i_get ;
304
318
assert (sizeof (mp_obj_deque_it_t ) <= sizeof (mp_obj_iter_buf_t ));
305
319
mp_obj_deque_it_t * o = (mp_obj_deque_it_t * )iter_buf ;
306
320
o -> base .type = & mp_type_polymorph_iter ;
0 commit comments