Skip to content

Commit 9731912

Browse files
committed
py: Prune unneeded code from objstrunicode, reuse code in objstr.
1 parent 165eb69 commit 9731912

4 files changed

Lines changed: 144 additions & 1769 deletions

File tree

py/objstr.c

Lines changed: 27 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,6 @@
4343
STATIC mp_obj_t str_modulo_format(mp_obj_t pattern, uint n_args, const mp_obj_t *args, mp_obj_t dict);
4444
const mp_obj_t mp_const_empty_bytes;
4545

46-
// use this macro to extract the string hash
47-
#define GET_STR_HASH(str_obj_in, str_hash) uint str_hash; if (MP_OBJ_IS_QSTR(str_obj_in)) { str_hash = qstr_hash(MP_OBJ_QSTR_VALUE(str_obj_in)); } else { str_hash = ((mp_obj_str_t*)str_obj_in)->hash; }
48-
49-
// use this macro to extract the string length
50-
#define GET_STR_LEN(str_obj_in, str_len) uint str_len; if (MP_OBJ_IS_QSTR(str_obj_in)) { str_len = qstr_len(MP_OBJ_QSTR_VALUE(str_obj_in)); } else { str_len = ((mp_obj_str_t*)str_obj_in)->len; }
51-
52-
// use this macro to extract the string data and length
53-
#define GET_STR_DATA_LEN(str_obj_in, str_data, str_len) const byte *str_data; uint str_len; if (MP_OBJ_IS_QSTR(str_obj_in)) { str_data = qstr_data(MP_OBJ_QSTR_VALUE(str_obj_in), &str_len); } else { str_len = ((mp_obj_str_t*)str_obj_in)->len; str_data = ((mp_obj_str_t*)str_obj_in)->data; }
54-
5546
STATIC mp_obj_t mp_obj_new_str_iterator(mp_obj_t str);
5647
STATIC mp_obj_t mp_obj_new_bytes_iterator(mp_obj_t str);
5748
STATIC NORETURN void bad_implicit_conversion(mp_obj_t self_in);
@@ -259,7 +250,7 @@ STATIC const byte *find_subbytes(const byte *haystack, machine_uint_t hlen, cons
259250
return NULL;
260251
}
261252

262-
STATIC mp_obj_t str_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) {
253+
mp_obj_t str_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) {
263254
GET_STR_DATA_LEN(lhs_in, lhs_data, lhs_len);
264255
mp_obj_type_t *lhs_type = mp_obj_get_type(lhs_in);
265256
mp_obj_type_t *rhs_type = mp_obj_get_type(rhs_in);
@@ -1627,33 +1618,33 @@ STATIC machine_int_t str_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo,
16271618
}
16281619

16291620
#if MICROPY_CPYTHON_COMPAT
1630-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bytes_decode_obj, 1, 3, bytes_decode);
1631-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_encode_obj, 1, 3, str_encode);
1621+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bytes_decode_obj, 1, 3, bytes_decode);
1622+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_encode_obj, 1, 3, str_encode);
16321623
#endif
1633-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_find_obj, 2, 4, str_find);
1634-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_rfind_obj, 2, 4, str_rfind);
1635-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_index_obj, 2, 4, str_index);
1636-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_rindex_obj, 2, 4, str_rindex);
1637-
STATIC MP_DEFINE_CONST_FUN_OBJ_2(str_join_obj, str_join);
1638-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_split_obj, 1, 3, str_split);
1639-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_rsplit_obj, 1, 3, str_rsplit);
1640-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_startswith_obj, 2, 3, str_startswith);
1641-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_endswith_obj, 2, 3, str_endswith);
1642-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_strip_obj, 1, 2, str_strip);
1643-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_lstrip_obj, 1, 2, str_lstrip);
1644-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_rstrip_obj, 1, 2, str_rstrip);
1645-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR(str_format_obj, 1, mp_obj_str_format);
1646-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_replace_obj, 3, 4, str_replace);
1647-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_count_obj, 2, 4, str_count);
1648-
STATIC MP_DEFINE_CONST_FUN_OBJ_2(str_partition_obj, str_partition);
1649-
STATIC MP_DEFINE_CONST_FUN_OBJ_2(str_rpartition_obj, str_rpartition);
1650-
STATIC MP_DEFINE_CONST_FUN_OBJ_1(str_lower_obj, str_lower);
1651-
STATIC MP_DEFINE_CONST_FUN_OBJ_1(str_upper_obj, str_upper);
1652-
STATIC MP_DEFINE_CONST_FUN_OBJ_1(str_isspace_obj, str_isspace);
1653-
STATIC MP_DEFINE_CONST_FUN_OBJ_1(str_isalpha_obj, str_isalpha);
1654-
STATIC MP_DEFINE_CONST_FUN_OBJ_1(str_isdigit_obj, str_isdigit);
1655-
STATIC MP_DEFINE_CONST_FUN_OBJ_1(str_isupper_obj, str_isupper);
1656-
STATIC MP_DEFINE_CONST_FUN_OBJ_1(str_islower_obj, str_islower);
1624+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_find_obj, 2, 4, str_find);
1625+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_rfind_obj, 2, 4, str_rfind);
1626+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_index_obj, 2, 4, str_index);
1627+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_rindex_obj, 2, 4, str_rindex);
1628+
MP_DEFINE_CONST_FUN_OBJ_2(str_join_obj, str_join);
1629+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_split_obj, 1, 3, str_split);
1630+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_rsplit_obj, 1, 3, str_rsplit);
1631+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_startswith_obj, 2, 3, str_startswith);
1632+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_endswith_obj, 2, 3, str_endswith);
1633+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_strip_obj, 1, 2, str_strip);
1634+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_lstrip_obj, 1, 2, str_lstrip);
1635+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_rstrip_obj, 1, 2, str_rstrip);
1636+
MP_DEFINE_CONST_FUN_OBJ_VAR(str_format_obj, 1, mp_obj_str_format);
1637+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_replace_obj, 3, 4, str_replace);
1638+
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_count_obj, 2, 4, str_count);
1639+
MP_DEFINE_CONST_FUN_OBJ_2(str_partition_obj, str_partition);
1640+
MP_DEFINE_CONST_FUN_OBJ_2(str_rpartition_obj, str_rpartition);
1641+
MP_DEFINE_CONST_FUN_OBJ_1(str_lower_obj, str_lower);
1642+
MP_DEFINE_CONST_FUN_OBJ_1(str_upper_obj, str_upper);
1643+
MP_DEFINE_CONST_FUN_OBJ_1(str_isspace_obj, str_isspace);
1644+
MP_DEFINE_CONST_FUN_OBJ_1(str_isalpha_obj, str_isalpha);
1645+
MP_DEFINE_CONST_FUN_OBJ_1(str_isdigit_obj, str_isdigit);
1646+
MP_DEFINE_CONST_FUN_OBJ_1(str_isupper_obj, str_isupper);
1647+
MP_DEFINE_CONST_FUN_OBJ_1(str_islower_obj, str_islower);
16571648

16581649
STATIC const mp_map_elem_t str_locals_dict_table[] = {
16591650
#if MICROPY_CPYTHON_COMPAT

py/objstr.h

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,49 @@ typedef struct _mp_obj_str_t {
3535

3636
#define MP_DEFINE_STR_OBJ(obj_name, str) mp_obj_str_t obj_name = {{&mp_type_str}, 0, sizeof(str) - 1, (const byte*)str};
3737

38+
// use this macro to extract the string hash
39+
#define GET_STR_HASH(str_obj_in, str_hash) \
40+
uint str_hash; if (MP_OBJ_IS_QSTR(str_obj_in)) \
41+
{ str_hash = qstr_hash(MP_OBJ_QSTR_VALUE(str_obj_in)); } else { str_hash = ((mp_obj_str_t*)str_obj_in)->hash; }
42+
43+
// use this macro to extract the string length
44+
#define GET_STR_LEN(str_obj_in, str_len) \
45+
uint str_len; if (MP_OBJ_IS_QSTR(str_obj_in)) \
46+
{ str_len = qstr_len(MP_OBJ_QSTR_VALUE(str_obj_in)); } else { str_len = ((mp_obj_str_t*)str_obj_in)->len; }
47+
48+
// use this macro to extract the string data and length
49+
#define GET_STR_DATA_LEN(str_obj_in, str_data, str_len) \
50+
const byte *str_data; uint str_len; if (MP_OBJ_IS_QSTR(str_obj_in)) \
51+
{ str_data = qstr_data(MP_OBJ_QSTR_VALUE(str_obj_in), &str_len); } \
52+
else { str_len = ((mp_obj_str_t*)str_obj_in)->len; str_data = ((mp_obj_str_t*)str_obj_in)->data; }
53+
3854
mp_obj_t mp_obj_str_format(uint n_args, const mp_obj_t *args);
3955
mp_obj_t mp_obj_new_str_of_type(const mp_obj_type_t *type, const byte* data, uint len);
56+
57+
mp_obj_t str_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in);
58+
59+
MP_DECLARE_CONST_FUN_OBJ(str_encode_obj);
60+
MP_DECLARE_CONST_FUN_OBJ(str_find_obj);
61+
MP_DECLARE_CONST_FUN_OBJ(str_rfind_obj);
62+
MP_DECLARE_CONST_FUN_OBJ(str_index_obj);
63+
MP_DECLARE_CONST_FUN_OBJ(str_rindex_obj);
64+
MP_DECLARE_CONST_FUN_OBJ(str_join_obj);
65+
MP_DECLARE_CONST_FUN_OBJ(str_split_obj);
66+
MP_DECLARE_CONST_FUN_OBJ(str_rsplit_obj);
67+
MP_DECLARE_CONST_FUN_OBJ(str_startswith_obj);
68+
MP_DECLARE_CONST_FUN_OBJ(str_endswith_obj);
69+
MP_DECLARE_CONST_FUN_OBJ(str_strip_obj);
70+
MP_DECLARE_CONST_FUN_OBJ(str_lstrip_obj);
71+
MP_DECLARE_CONST_FUN_OBJ(str_rstrip_obj);
72+
MP_DECLARE_CONST_FUN_OBJ(str_format_obj);
73+
MP_DECLARE_CONST_FUN_OBJ(str_replace_obj);
74+
MP_DECLARE_CONST_FUN_OBJ(str_count_obj);
75+
MP_DECLARE_CONST_FUN_OBJ(str_partition_obj);
76+
MP_DECLARE_CONST_FUN_OBJ(str_rpartition_obj);
77+
MP_DECLARE_CONST_FUN_OBJ(str_lower_obj);
78+
MP_DECLARE_CONST_FUN_OBJ(str_upper_obj);
79+
MP_DECLARE_CONST_FUN_OBJ(str_isspace_obj);
80+
MP_DECLARE_CONST_FUN_OBJ(str_isalpha_obj);
81+
MP_DECLARE_CONST_FUN_OBJ(str_isdigit_obj);
82+
MP_DECLARE_CONST_FUN_OBJ(str_isupper_obj);
83+
MP_DECLARE_CONST_FUN_OBJ(str_islower_obj);

0 commit comments

Comments
 (0)