37 #define ROUND_ALLOC(a) (((a) & ((~0U) - 7)) + 8) 100 char *p = new_buf + vstr->
alloc;
107 if (vstr->
len + size > vstr->
alloc) {
115 vstr->
alloc = new_alloc;
126 char *buf = vstr->
buf + vstr->
len;
137 vstr->
buf[vstr->
len] =
'\0';
147 #if MICROPY_PY_BUILTINS_STR_UNICODE 153 }
else if (
c < 0x800) {
155 buf[0] = (
c >> 6) | 0xC0;
156 buf[1] = (
c & 0x3F) | 0x80;
157 }
else if (
c < 0x10000) {
159 buf[0] = (
c >> 12) | 0xE0;
160 buf[1] = ((
c >> 6) & 0x3F) | 0x80;
161 buf[2] = (
c & 0x3F) | 0x80;
165 buf[0] = (
c >> 18) | 0xF0;
166 buf[1] = ((
c >> 12) & 0x3F) | 0x80;
167 buf[2] = ((
c >> 6) & 0x3F) | 0x80;
168 buf[3] = (
c & 0x3F) | 0x80;
186 size_t l = vstr->
len;
194 memmove(vstr->
buf + byte_pos + byte_len, vstr->
buf + byte_pos, l - byte_pos);
196 vstr->
len += byte_len;
198 return vstr->
buf + byte_pos;
217 if (len > vstr->
len) {
225 if (byte_pos >= vstr->
len) {
227 }
else if (byte_pos + bytes_to_cut >= vstr->
len) {
228 vstr->
len = byte_pos;
230 memmove(vstr->
buf + byte_pos, vstr->
buf + byte_pos + bytes_to_cut, vstr->
len - byte_pos - bytes_to_cut);
231 vstr->
len -= bytes_to_cut;
void vstr_init_print(vstr_t *vstr, size_t alloc, mp_print_t *print)
NORETURN void mp_raise_msg(const mp_obj_type_t *exc_type, const char *msg)
STATIC char * vstr_ins_blank_bytes(vstr_t *vstr, size_t byte_pos, size_t byte_len)
mp_print_strn_t print_strn
#define m_del(type, ptr, num)
vstr_t * vstr_new(size_t alloc)
void vstr_ins_char(vstr_t *vstr, size_t char_pos, unichar chr)
void vstr_add_byte(vstr_t *vstr, byte b)
void vstr_clear(vstr_t *vstr)
void vstr_add_strn(vstr_t *vstr, const char *str, size_t len)
void vstr_cut_head_bytes(vstr_t *vstr, size_t bytes_to_cut)
void vstr_printf(vstr_t *vstr, const char *fmt,...)
#define m_del_obj(type, ptr)
size_t strlen(const char *s)
void vstr_free(vstr_t *vstr)
void * memmove(void *dst, const void *src, size_t n)
void vstr_init_fixed_buf(vstr_t *vstr, size_t alloc, char *buf)
void vstr_add_char(vstr_t *vstr, unichar c)
void vstr_add_str(vstr_t *vstr, const char *str)
void vstr_hint_size(vstr_t *vstr, size_t size)
void vstr_init(vstr_t *vstr, size_t alloc)
char * vstr_null_terminated_str(vstr_t *vstr)
char * vstr_add_len(vstr_t *vstr, size_t len)
void(* mp_print_strn_t)(void *data, const char *str, size_t len)
#define m_renew(type, ptr, old_num, new_num)
void vstr_ins_byte(vstr_t *vstr, size_t byte_pos, byte b)
void vstr_cut_out_bytes(vstr_t *vstr, size_t byte_pos, size_t bytes_to_cut)
void vstr_vprintf(vstr_t *vstr, const char *fmt, va_list ap)
void vstr_cut_tail_bytes(vstr_t *vstr, size_t len)
__builtin_va_list va_list
int mp_vprintf(const mp_print_t *print, const char *fmt, va_list args)
void vstr_init_len(vstr_t *vstr, size_t len)
char * vstr_extend(vstr_t *vstr, size_t size)
#define va_start(ap, last)
STATIC void vstr_ensure_extra(vstr_t *vstr, size_t size)
const mp_obj_type_t mp_type_RuntimeError