py/objstr: Make str.count() method configurable.
Configurable via MICROPY_PY_BUILTINS_STR_COUNT. Default is enabled. Disabled for bare-arm, minimal, unix-minimal and zephyr ports. Disabling it saves 408 bytes on x86.
This commit is contained in:
parent
7795b2e5c3
commit
5a91fce9f8
|
@ -29,6 +29,7 @@
|
||||||
#define MICROPY_PY_BUILTINS_SET (0)
|
#define MICROPY_PY_BUILTINS_SET (0)
|
||||||
#define MICROPY_PY_BUILTINS_SLICE (0)
|
#define MICROPY_PY_BUILTINS_SLICE (0)
|
||||||
#define MICROPY_PY_BUILTINS_PROPERTY (0)
|
#define MICROPY_PY_BUILTINS_PROPERTY (0)
|
||||||
|
#define MICROPY_PY_BUILTINS_STR_COUNT (0)
|
||||||
#define MICROPY_PY_BUILTINS_STR_OP_MODULO (0)
|
#define MICROPY_PY_BUILTINS_STR_OP_MODULO (0)
|
||||||
#define MICROPY_PY___FILE__ (0)
|
#define MICROPY_PY___FILE__ (0)
|
||||||
#define MICROPY_PY_GC (0)
|
#define MICROPY_PY_GC (0)
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
#define MICROPY_PY_BUILTINS_SLICE (0)
|
#define MICROPY_PY_BUILTINS_SLICE (0)
|
||||||
#define MICROPY_PY_BUILTINS_PROPERTY (0)
|
#define MICROPY_PY_BUILTINS_PROPERTY (0)
|
||||||
#define MICROPY_PY_BUILTINS_MIN_MAX (0)
|
#define MICROPY_PY_BUILTINS_MIN_MAX (0)
|
||||||
|
#define MICROPY_PY_BUILTINS_STR_COUNT (0)
|
||||||
#define MICROPY_PY_BUILTINS_STR_OP_MODULO (0)
|
#define MICROPY_PY_BUILTINS_STR_OP_MODULO (0)
|
||||||
#define MICROPY_PY___FILE__ (0)
|
#define MICROPY_PY___FILE__ (0)
|
||||||
#define MICROPY_PY_GC (0)
|
#define MICROPY_PY_GC (0)
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
#define MICROPY_PY_BUILTINS_REVERSED (0)
|
#define MICROPY_PY_BUILTINS_REVERSED (0)
|
||||||
#define MICROPY_PY_BUILTINS_SET (0)
|
#define MICROPY_PY_BUILTINS_SET (0)
|
||||||
#define MICROPY_PY_BUILTINS_SLICE (0)
|
#define MICROPY_PY_BUILTINS_SLICE (0)
|
||||||
|
#define MICROPY_PY_BUILTINS_STR_COUNT (0)
|
||||||
#define MICROPY_PY_BUILTINS_STR_OP_MODULO (0)
|
#define MICROPY_PY_BUILTINS_STR_OP_MODULO (0)
|
||||||
#define MICROPY_PY_BUILTINS_STR_UNICODE (0)
|
#define MICROPY_PY_BUILTINS_STR_UNICODE (0)
|
||||||
#define MICROPY_PY_BUILTINS_PROPERTY (0)
|
#define MICROPY_PY_BUILTINS_PROPERTY (0)
|
||||||
|
|
|
@ -51,6 +51,7 @@
|
||||||
#define MICROPY_PY_BUILTINS_RANGE_ATTRS (0)
|
#define MICROPY_PY_BUILTINS_RANGE_ATTRS (0)
|
||||||
#define MICROPY_PY_BUILTINS_REVERSED (0)
|
#define MICROPY_PY_BUILTINS_REVERSED (0)
|
||||||
#define MICROPY_PY_BUILTINS_SET (0)
|
#define MICROPY_PY_BUILTINS_SET (0)
|
||||||
|
#define MICROPY_PY_BUILTINS_STR_COUNT (0)
|
||||||
#define MICROPY_PY_BUILTINS_HELP (1)
|
#define MICROPY_PY_BUILTINS_HELP (1)
|
||||||
#define MICROPY_PY_BUILTINS_HELP_TEXT zephyr_help_text
|
#define MICROPY_PY_BUILTINS_HELP_TEXT zephyr_help_text
|
||||||
#define MICROPY_PY_ARRAY (0)
|
#define MICROPY_PY_ARRAY (0)
|
||||||
|
|
|
@ -765,6 +765,11 @@ typedef double mp_float_t;
|
||||||
#define MICROPY_PY_BUILTINS_STR_CENTER (0)
|
#define MICROPY_PY_BUILTINS_STR_CENTER (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Whether str.count() method provided
|
||||||
|
#ifndef MICROPY_PY_BUILTINS_STR_COUNT
|
||||||
|
#define MICROPY_PY_BUILTINS_STR_COUNT (1)
|
||||||
|
#endif
|
||||||
|
|
||||||
// Whether str % (...) formatting operator provided
|
// Whether str % (...) formatting operator provided
|
||||||
#ifndef MICROPY_PY_BUILTINS_STR_OP_MODULO
|
#ifndef MICROPY_PY_BUILTINS_STR_OP_MODULO
|
||||||
#define MICROPY_PY_BUILTINS_STR_OP_MODULO (1)
|
#define MICROPY_PY_BUILTINS_STR_OP_MODULO (1)
|
||||||
|
|
|
@ -1697,6 +1697,7 @@ STATIC mp_obj_t str_replace(size_t n_args, const mp_obj_t *args) {
|
||||||
}
|
}
|
||||||
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_replace_obj, 3, 4, str_replace);
|
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_replace_obj, 3, 4, str_replace);
|
||||||
|
|
||||||
|
#if MICROPY_PY_BUILTINS_STR_COUNT
|
||||||
STATIC mp_obj_t str_count(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t str_count(size_t n_args, const mp_obj_t *args) {
|
||||||
const mp_obj_type_t *self_type = mp_obj_get_type(args[0]);
|
const mp_obj_type_t *self_type = mp_obj_get_type(args[0]);
|
||||||
mp_check_self(MP_OBJ_IS_STR_OR_BYTES(args[0]));
|
mp_check_self(MP_OBJ_IS_STR_OR_BYTES(args[0]));
|
||||||
|
@ -1737,6 +1738,7 @@ STATIC mp_obj_t str_count(size_t n_args, const mp_obj_t *args) {
|
||||||
return MP_OBJ_NEW_SMALL_INT(num_occurrences);
|
return MP_OBJ_NEW_SMALL_INT(num_occurrences);
|
||||||
}
|
}
|
||||||
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_count_obj, 2, 4, str_count);
|
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_count_obj, 2, 4, str_count);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if MICROPY_PY_BUILTINS_STR_PARTITION
|
#if MICROPY_PY_BUILTINS_STR_PARTITION
|
||||||
STATIC mp_obj_t str_partitioner(mp_obj_t self_in, mp_obj_t arg, int direction) {
|
STATIC mp_obj_t str_partitioner(mp_obj_t self_in, mp_obj_t arg, int direction) {
|
||||||
|
@ -1947,7 +1949,9 @@ STATIC const mp_rom_map_elem_t str8_locals_dict_table[] = {
|
||||||
{ MP_ROM_QSTR(MP_QSTR_rstrip), MP_ROM_PTR(&str_rstrip_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_rstrip), MP_ROM_PTR(&str_rstrip_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_format), MP_ROM_PTR(&str_format_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_format), MP_ROM_PTR(&str_format_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_replace), MP_ROM_PTR(&str_replace_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_replace), MP_ROM_PTR(&str_replace_obj) },
|
||||||
|
#if MICROPY_PY_BUILTINS_STR_COUNT
|
||||||
{ MP_ROM_QSTR(MP_QSTR_count), MP_ROM_PTR(&str_count_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_count), MP_ROM_PTR(&str_count_obj) },
|
||||||
|
#endif
|
||||||
#if MICROPY_PY_BUILTINS_STR_PARTITION
|
#if MICROPY_PY_BUILTINS_STR_PARTITION
|
||||||
{ MP_ROM_QSTR(MP_QSTR_partition), MP_ROM_PTR(&str_partition_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_partition), MP_ROM_PTR(&str_partition_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_rpartition), MP_ROM_PTR(&str_rpartition_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_rpartition), MP_ROM_PTR(&str_rpartition_obj) },
|
||||||
|
|
|
@ -243,7 +243,9 @@ STATIC const mp_rom_map_elem_t struni_locals_dict_table[] = {
|
||||||
{ MP_ROM_QSTR(MP_QSTR_rstrip), MP_ROM_PTR(&str_rstrip_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_rstrip), MP_ROM_PTR(&str_rstrip_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_format), MP_ROM_PTR(&str_format_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_format), MP_ROM_PTR(&str_format_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_replace), MP_ROM_PTR(&str_replace_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_replace), MP_ROM_PTR(&str_replace_obj) },
|
||||||
|
#if MICROPY_PY_BUILTINS_STR_COUNT
|
||||||
{ MP_ROM_QSTR(MP_QSTR_count), MP_ROM_PTR(&str_count_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_count), MP_ROM_PTR(&str_count_obj) },
|
||||||
|
#endif
|
||||||
#if MICROPY_PY_BUILTINS_STR_PARTITION
|
#if MICROPY_PY_BUILTINS_STR_PARTITION
|
||||||
{ MP_ROM_QSTR(MP_QSTR_partition), MP_ROM_PTR(&str_partition_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_partition), MP_ROM_PTR(&str_partition_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_rpartition), MP_ROM_PTR(&str_rpartition_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_rpartition), MP_ROM_PTR(&str_rpartition_obj) },
|
||||||
|
|
Loading…
Reference in New Issue