1414#include "runtime.h"
1515#include "map.h"
1616
17- mp_obj_t mp_obj_get_type (mp_obj_t o_in ) {
17+ mp_obj_type_t * mp_obj_get_type (mp_obj_t o_in ) {
1818 if (MP_OBJ_IS_SMALL_INT (o_in )) {
1919 return (mp_obj_t )& int_type ;
2020 } else if (MP_OBJ_IS_QSTR (o_in )) {
@@ -26,14 +26,7 @@ mp_obj_t mp_obj_get_type(mp_obj_t o_in) {
2626}
2727
2828const char * mp_obj_get_type_str (mp_obj_t o_in ) {
29- if (MP_OBJ_IS_SMALL_INT (o_in )) {
30- return "int" ;
31- } else if (MP_OBJ_IS_QSTR (o_in )) {
32- return "str" ;
33- } else {
34- mp_obj_base_t * o = o_in ;
35- return o -> type -> name ;
36- }
29+ return mp_obj_get_type (o_in )-> name ;
3730}
3831
3932void printf_wrapper (void * env , const char * fmt , ...) {
@@ -44,17 +37,11 @@ void printf_wrapper(void *env, const char *fmt, ...) {
4437}
4538
4639void mp_obj_print_helper (void (* print )(void * env , const char * fmt , ...), void * env , mp_obj_t o_in , mp_print_kind_t kind ) {
47- if (MP_OBJ_IS_SMALL_INT (o_in )) {
48- print (env , "%d" , (int )MP_OBJ_SMALL_INT_VALUE (o_in ));
49- } else if (MP_OBJ_IS_QSTR (o_in )) {
50- mp_obj_str_print_qstr (print , env , MP_OBJ_QSTR_VALUE (o_in ), kind );
40+ mp_obj_type_t * type = mp_obj_get_type (o_in );
41+ if (type -> print != NULL ) {
42+ type -> print (print , env , o_in , kind );
5143 } else {
52- mp_obj_base_t * o = o_in ;
53- if (o -> type -> print != NULL ) {
54- o -> type -> print (print , env , o_in , kind );
55- } else {
56- print (env , "<%s>" , o -> type -> name );
57- }
44+ print (env , "<%s>" , type -> name );
5845 }
5946}
6047
@@ -94,12 +81,10 @@ machine_int_t mp_obj_hash(mp_obj_t o_in) {
9481 return 1 ; // needs to hash to same as the integer 1, since True==1
9582 } else if (MP_OBJ_IS_SMALL_INT (o_in )) {
9683 return MP_OBJ_SMALL_INT_VALUE (o_in );
97- } else if (MP_OBJ_IS_QSTR (o_in )) {
98- return MP_OBJ_QSTR_VALUE (o_in );
84+ } else if (MP_OBJ_IS_STR (o_in )) {
85+ return mp_obj_str_get_hash (o_in );
9986 } else if (MP_OBJ_IS_TYPE (o_in , & none_type )) {
10087 return (machine_int_t )o_in ;
101- } else if (MP_OBJ_IS_TYPE (o_in , & str_type )) {
102- return mp_obj_str_get (o_in );
10388 } else {
10489 assert (0 );
10590 return 0 ;
@@ -138,10 +123,8 @@ bool mp_obj_equal(mp_obj_t o1, mp_obj_t o2) {
138123 }
139124 return false;
140125 }
141- } else if (MP_OBJ_IS_QSTR (o1 ) || MP_OBJ_IS_QSTR (o2 )) {
142- return false;
143- } else if (MP_OBJ_IS_TYPE (o1 , & str_type ) && MP_OBJ_IS_TYPE (o2 , & str_type )) {
144- return mp_obj_str_get (o1 ) == mp_obj_str_get (o2 );
126+ } else if (MP_OBJ_IS_STR (o1 ) && MP_OBJ_IS_STR (o2 )) {
127+ return mp_obj_str_equal (o1 , o2 );
145128 } else {
146129 mp_obj_base_t * o = o1 ;
147130 if (o -> type -> binary_op != NULL ) {
@@ -218,17 +201,6 @@ void mp_obj_get_complex(mp_obj_t arg, mp_float_t *real, mp_float_t *imag) {
218201}
219202#endif
220203
221- qstr mp_obj_get_qstr (mp_obj_t arg ) {
222- if (MP_OBJ_IS_QSTR (arg )) {
223- return MP_OBJ_QSTR_VALUE (arg );
224- } else if (MP_OBJ_IS_TYPE (arg , & str_type )) {
225- return mp_obj_str_get (arg );
226- } else {
227- assert (0 );
228- return 0 ;
229- }
230- }
231-
232204mp_obj_t * mp_obj_get_array_fixed_n (mp_obj_t o_in , machine_int_t n ) {
233205 if (MP_OBJ_IS_TYPE (o_in , & tuple_type ) || MP_OBJ_IS_TYPE (o_in , & list_type )) {
234206 uint seq_len ;
@@ -266,8 +238,8 @@ uint mp_get_index(const mp_obj_type_t *type, machine_uint_t len, mp_obj_t index)
266238// may return MP_OBJ_NULL
267239mp_obj_t mp_obj_len_maybe (mp_obj_t o_in ) {
268240 mp_small_int_t len = 0 ;
269- if (MP_OBJ_IS_TYPE (o_in , & str_type )) {
270- len = qstr_len ( mp_obj_str_get ( o_in ) );
241+ if (MP_OBJ_IS_STR (o_in )) {
242+ len = mp_obj_str_get_len ( o_in );
271243 } else if (MP_OBJ_IS_TYPE (o_in , & tuple_type )) {
272244 uint seq_len ;
273245 mp_obj_t * seq_items ;
0 commit comments