diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-01-20 18:35:32 +0200 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-01-20 18:42:08 +0200 |
commit | d54bef76921ae719bcbaf4ad7f9915da10f25574 (patch) | |
tree | 3f9904ab9f77b95dfe7f44fda45ea82976cd9147 /py/stream.c | |
parent | dff3f896d7f7ef20762f0be7c8d5aa457c04b71a (diff) | |
download | micropython-d54bef76921ae719bcbaf4ad7f9915da10f25574.tar.gz micropython-d54bef76921ae719bcbaf4ad7f9915da10f25574.zip |
stream: Add generic unbuffered iternext method.
Uses stream_unbuffered_readline underline.
Diffstat (limited to 'py/stream.c')
-rw-r--r-- | py/stream.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/py/stream.c b/py/stream.c index d3a11affbc..3a87d0444c 100644 --- a/py/stream.c +++ b/py/stream.c @@ -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); |