Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
ac736f15
Commit
ac736f15
authored
Jul 13, 2014
by
Paul Sokolovsky
Browse files
stream: Factor out mp_stream_write() method to write a memstring to stream.
parent
122c9db3
Changes
2
Hide whitespace changes
Inline
Side-by-side
py/stream.c
View file @
ac736f15
...
...
@@ -98,18 +98,15 @@ STATIC mp_obj_t stream_read(uint n_args, const mp_obj_t *args) {
}
}
STATIC
mp_obj_t
stream_write
(
mp_obj_t
self_in
,
mp_obj_t
arg
)
{
mp_obj_t
mp_
stream_write
(
mp_obj_t
self_in
,
const
void
*
buf
,
mp_uint_t
len
)
{
struct
_mp_obj_base_t
*
o
=
(
struct
_mp_obj_base_t
*
)
self_in
;
if
(
o
->
type
->
stream_p
==
NULL
||
o
->
type
->
stream_p
->
write
==
NULL
)
{
// CPython: io.UnsupportedOperation, OSError subclass
nlr_raise
(
mp_obj_new_exception_msg
(
&
mp_type_OSError
,
"Operation not supported"
));
}
mp_buffer_info_t
bufinfo
;
mp_get_buffer_raise
(
arg
,
&
bufinfo
,
MP_BUFFER_READ
);
int
error
;
mp_int_t
out_sz
=
o
->
type
->
stream_p
->
write
(
self_in
,
buf
info
.
buf
,
bufinfo
.
len
,
&
error
);
mp_int_t
out_sz
=
o
->
type
->
stream_p
->
write
(
self_in
,
buf
,
len
,
&
error
);
if
(
out_sz
==
-
1
)
{
if
(
is_nonblocking_error
(
error
))
{
// http://docs.python.org/3/library/io.html#io.RawIOBase.write
...
...
@@ -125,6 +122,12 @@ STATIC mp_obj_t stream_write(mp_obj_t self_in, mp_obj_t arg) {
}
}
STATIC
mp_obj_t
stream_write_method
(
mp_obj_t
self_in
,
mp_obj_t
arg
)
{
mp_buffer_info_t
bufinfo
;
mp_get_buffer_raise
(
arg
,
&
bufinfo
,
MP_BUFFER_READ
);
return
mp_stream_write
(
self_in
,
bufinfo
.
buf
,
bufinfo
.
len
);
}
STATIC
mp_obj_t
stream_readall
(
mp_obj_t
self_in
)
{
struct
_mp_obj_base_t
*
o
=
(
struct
_mp_obj_base_t
*
)
self_in
;
if
(
o
->
type
->
stream_p
==
NULL
||
o
->
type
->
stream_p
->
read
==
NULL
)
{
...
...
@@ -248,4 +251,4 @@ mp_obj_t mp_stream_unbuffered_iter(mp_obj_t self) {
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
);
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN
(
mp_stream_unbuffered_readline_obj
,
1
,
2
,
stream_unbuffered_readline
);
MP_DEFINE_CONST_FUN_OBJ_2
(
mp_stream_write_obj
,
stream_write
);
MP_DEFINE_CONST_FUN_OBJ_2
(
mp_stream_write_obj
,
stream_write
_method
);
py/stream.h
View file @
ac736f15
...
...
@@ -32,3 +32,5 @@ MP_DECLARE_CONST_FUN_OBJ(mp_stream_write_obj);
// Iterator which uses mp_stream_unbuffered_readline_obj
mp_obj_t
mp_stream_unbuffered_iter
(
mp_obj_t
self
);
mp_obj_t
mp_stream_write
(
mp_obj_t
self_in
,
const
void
*
buf
,
mp_uint_t
len
);
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment