Mercurial > octave
diff libinterp/corefcn/oct-prcstrm.cc @ 26703:29ea2369971d
Add basic backend for encodings in file streams (bug #55452).
* oct-stream.h (base_stream): Store encoding in class.
* oct-stream.cc (do_scanf_conv): Convert strings from encoding.
(do_printf_string): Convert strings to encoding.
(base_stream::printf): Convert format string to encoding.
* oct-stdstrm.h (octave_stdiostream, octave_tstdiostream, octave_zstdiostream,
create): Pass encoding through to base_stream.
* oct-prcstrm.[cc,h] (octave_iprocstream, octave_oprocstream, create): Pass
encoding through to octave_stdiostream.
* oct-strstrm.[cc,h] (octave_istrstream, octave_ostrstream, create): Pass
encoding through to base_stream.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Sat, 09 Feb 2019 16:43:11 +0100 |
parents | 00f796120a6d |
children | b442ec6dda5c |
line wrap: on
line diff
--- a/libinterp/corefcn/oct-prcstrm.cc Sat Feb 02 20:07:45 2019 +0100 +++ b/libinterp/corefcn/oct-prcstrm.cc Sat Feb 09 16:43:11 2019 +0100 @@ -31,16 +31,18 @@ octave::stream octave_iprocstream::create (const std::string& n, std::ios::openmode arg_md, - octave::mach_info::float_format ff) + octave::mach_info::float_format ff, + const std::string& encoding) { - return octave::stream (new octave_iprocstream (n, arg_md, ff)); + return octave::stream (new octave_iprocstream (n, arg_md, ff, encoding)); } octave_iprocstream::octave_iprocstream (const std::string& n, std::ios::openmode arg_md, - octave::mach_info::float_format ff) + octave::mach_info::float_format ff, + const std::string& encoding) : octave_stdiostream (n, octave::popen (n.c_str (), "r"), - arg_md, ff, octave::pclose) + arg_md, ff, encoding, octave::pclose) { } octave_iprocstream::~octave_iprocstream (void) @@ -50,16 +52,18 @@ octave::stream octave_oprocstream::create (const std::string& n, std::ios::openmode arg_md, - octave::mach_info::float_format ff) + octave::mach_info::float_format ff, + const std::string& encoding) { - return octave::stream (new octave_oprocstream (n, arg_md, ff)); + return octave::stream (new octave_oprocstream (n, arg_md, ff, encoding)); } octave_oprocstream::octave_oprocstream (const std::string& n, std::ios::openmode arg_md, - octave::mach_info::float_format ff) + octave::mach_info::float_format ff, + const std::string& encoding) : octave_stdiostream (n, octave::popen (n.c_str (), "w"), - arg_md, ff, octave::pclose) + arg_md, ff, encoding, octave::pclose) { } octave_oprocstream::~octave_oprocstream (void)