py: Make objstr support buffer protocol (read only).

pull/335/head
Damien George 2014-03-09 19:58:18 +00:00
rodzic 0ec6bd47cb
commit 2da9830b92
1 zmienionych plików z 15 dodań i 0 usunięć

Wyświetl plik

@ -487,6 +487,20 @@ STATIC mp_obj_t str_replace(uint n_args, const mp_obj_t *args) {
return mp_obj_str_builder_end(replaced_str);
}
STATIC machine_int_t str_get_buffer(mp_obj_t self_in, buffer_info_t *bufinfo, int flags) {
if (flags == BUFFER_READ) {
GET_STR_DATA_LEN(self_in, str_data, str_len);
bufinfo->buf = (void*)str_data;
bufinfo->len = str_len;
return 0;
} else {
// can't write to a string
bufinfo->buf = NULL;
bufinfo->len = 0;
return 1;
}
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_find_obj, 2, 4, str_find);
STATIC MP_DEFINE_CONST_FUN_OBJ_2(str_join_obj, str_join);
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(str_split_obj, 1, 3, str_split);
@ -513,6 +527,7 @@ const mp_obj_type_t str_type = {
.binary_op = str_binary_op,
.getiter = mp_obj_new_str_iterator,
.methods = str_type_methods,
.buffer_p = { .get_buffer = str_get_buffer },
};
// Reuses most of methods from str