Implement str() and repr() builtin functions.
This commit is contained in:
parent
76d982ef34
commit
36c4499d36
16
py/builtin.c
16
py/builtin.c
|
@ -338,3 +338,19 @@ static mp_obj_t mp_builtin_sorted(mp_obj_t args, mp_map_t *kwargs) {
|
|||
return self;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_KW(mp_builtin_sorted_obj, 1, mp_builtin_sorted);
|
||||
|
||||
mp_obj_t mp_builtin_str(mp_obj_t o) {
|
||||
vstr_t *vstr = vstr_new();
|
||||
mp_obj_print_helper(vstr_printf_wrapper, vstr, o, PRINT_STR);
|
||||
return mp_obj_new_str(qstr_from_str_take(vstr->buf, vstr->alloc));
|
||||
}
|
||||
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(mp_builtin_str_obj, mp_builtin_str);
|
||||
|
||||
mp_obj_t mp_builtin_repr(mp_obj_t o) {
|
||||
vstr_t *vstr = vstr_new();
|
||||
mp_obj_print_helper(vstr_printf_wrapper, vstr, o, PRINT_REPR);
|
||||
return mp_obj_new_str(qstr_from_str_take(vstr->buf, vstr->alloc));
|
||||
}
|
||||
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(mp_builtin_repr_obj, mp_builtin_repr);
|
||||
|
|
|
@ -23,3 +23,5 @@ MP_DECLARE_CONST_FUN_OBJ(mp_builtin_print_obj);
|
|||
MP_DECLARE_CONST_FUN_OBJ(mp_builtin_range_obj);
|
||||
MP_DECLARE_CONST_FUN_OBJ(mp_builtin_sorted_obj);
|
||||
MP_DECLARE_CONST_FUN_OBJ(mp_builtin_sum_obj);
|
||||
MP_DECLARE_CONST_FUN_OBJ(mp_builtin_str_obj);
|
||||
MP_DECLARE_CONST_FUN_OBJ(mp_builtin_repr_obj);
|
||||
|
|
|
@ -81,6 +81,8 @@ void vstr_add_strn(vstr_t *vstr, const char *str, int len);
|
|||
//void vstr_add_le32(vstr_t *vstr, unsigned int v);
|
||||
void vstr_cut_tail(vstr_t *vstr, int len);
|
||||
void vstr_printf(vstr_t *vstr, const char *fmt, ...);
|
||||
// TODO: do we need wrapper at all?
|
||||
void vstr_printf_wrapper(void *env, const char *fmt, ...);
|
||||
|
||||
#ifdef va_start
|
||||
void vstr_vprintf(vstr_t *vstr, const char *fmt, va_list ap);
|
||||
|
|
|
@ -56,9 +56,11 @@ Q(ord)
|
|||
Q(pow)
|
||||
Q(print)
|
||||
Q(range)
|
||||
Q(repr)
|
||||
Q(set)
|
||||
Q(sorted)
|
||||
Q(sum)
|
||||
Q(str)
|
||||
Q(tuple)
|
||||
Q(type)
|
||||
Q(zip)
|
||||
|
|
|
@ -136,6 +136,8 @@ void rt_init(void) {
|
|||
mp_map_add_qstr(&map_builtins, MP_QSTR_range, (mp_obj_t)&mp_builtin_range_obj);
|
||||
mp_map_add_qstr(&map_builtins, MP_QSTR_sorted, (mp_obj_t)&mp_builtin_sorted_obj);
|
||||
mp_map_add_qstr(&map_builtins, MP_QSTR_sum, (mp_obj_t)&mp_builtin_sum_obj);
|
||||
mp_map_add_qstr(&map_builtins, MP_QSTR_str, (mp_obj_t)&mp_builtin_str_obj);
|
||||
mp_map_add_qstr(&map_builtins, MP_QSTR_repr, (mp_obj_t)&mp_builtin_repr_obj);
|
||||
|
||||
next_unique_code_id = 1; // 0 indicates "no code"
|
||||
unique_codes_alloc = 0;
|
||||
|
|
Loading…
Reference in New Issue