Commit d54bef76 authored by Paul Sokolovsky's avatar Paul Sokolovsky
Browse files

stream: Add generic unbuffered iternext method.

Uses stream_unbuffered_readline underline.
parent dff3f896
......@@ -137,9 +137,18 @@ static mp_obj_t stream_unbuffered_readline(uint n_args, const mp_obj_t *args) {
// TODO: \0
vstr_add_byte(vstr, 0);
vstr_shrink(vstr);
return mp_obj_new_str(qstr_from_str_take(vstr_str(vstr), vstr_len(vstr)));
return MP_OBJ_NEW_QSTR(qstr_from_str_take(vstr_str(vstr), vstr_len(vstr)));
}
mp_obj_t mp_stream_unbuffered_iter(mp_obj_t self) {
mp_obj_t l_in = stream_unbuffered_readline(1, &self);
const char *l = qstr_str(MP_OBJ_QSTR_VALUE(l_in));
// TODO: \0
if (*l != 0) {
return l_in;
}
return mp_const_stop_iteration;
}
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_stream_read_obj, 1, 2, stream_read);
MP_DEFINE_CONST_FUN_OBJ_1(mp_stream_readall_obj, stream_readall);
......
......@@ -2,3 +2,6 @@ extern const mp_obj_fun_native_t mp_stream_read_obj;
extern const mp_obj_fun_native_t mp_stream_readall_obj;
extern const mp_obj_fun_native_t mp_stream_unbuffered_readline_obj;
extern const mp_obj_fun_native_t mp_stream_write_obj;
// Iterator which uses mp_stream_unbuffered_readline_obj
mp_obj_t mp_stream_unbuffered_iter(mp_obj_t self);
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment