Mercurial > octave
diff libinterp/corefcn/oct-stdstrm.h @ 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 | 92ba3434f0b0 |
line wrap: on
line diff
--- a/libinterp/corefcn/oct-stdstrm.h Sat Feb 02 20:07:45 2019 +0100 +++ b/libinterp/corefcn/oct-stdstrm.h Sat Feb 09 16:43:11 2019 +0100 @@ -40,8 +40,9 @@ std::ios::openmode m = std::ios::in | std::ios::out, octave::mach_info::float_format ff = octave::mach_info::native_float_format (), + const std::string& encoding = "utf-8", typename BUF_T::close_fcn cf = BUF_T::file_close) - : octave::base_stream (m, ff), nm (n), md (m), + : octave::base_stream (m, ff, encoding), nm (n), md (m), s (f ? new STREAM_T (f, cf) : nullptr), fnum (fid) { } @@ -108,18 +109,20 @@ std::ios::openmode m = std::ios::in | std::ios::out, octave::mach_info::float_format ff = octave::mach_info::native_float_format (), + const std::string& encoding = "utf-8", c_file_ptr_buf::close_fcn cf = c_file_ptr_buf::file_close) : octave_tstdiostream<c_file_ptr_buf, io_c_file_ptr_stream, FILE *> - (n, f, f ? fileno (f) : -1, m, ff, cf) { } + (n, f, f ? fileno (f) : -1, m, ff, encoding, cf) { } static octave::stream create (const std::string& n, FILE *f = nullptr, std::ios::openmode m = std::ios::in | std::ios::out, octave::mach_info::float_format ff = octave::mach_info::native_float_format (), + const std::string& encoding = "utf-8", c_file_ptr_buf::close_fcn cf = c_file_ptr_buf::file_close) { - return octave::stream (new octave_stdiostream (n, f, m, ff, cf)); + return octave::stream (new octave_stdiostream (n, f, m, ff, encoding, cf)); } // No copying! @@ -145,19 +148,22 @@ std::ios::openmode m = std::ios::in | std::ios::out, octave::mach_info::float_format ff = octave::mach_info::native_float_format (), + const std::string& encoding = "utf-8", c_zfile_ptr_buf::close_fcn cf = c_zfile_ptr_buf::file_close) : octave_tstdiostream<c_zfile_ptr_buf, io_c_zfile_ptr_stream, gzFile> - (n, f, fid, m, ff, cf) { } + (n, f, fid, m, ff, encoding, cf) { } static octave::stream create (const std::string& n, gzFile f = nullptr, int fid = 0, std::ios::openmode m = std::ios::in | std::ios::out, octave::mach_info::float_format ff = octave::mach_info::native_float_format (), + const std::string& encoding = "utf-8", c_zfile_ptr_buf::close_fcn cf = c_zfile_ptr_buf::file_close) { - return octave::stream (new octave_zstdiostream (n, f, fid, m, ff, cf)); + return octave::stream (new octave_zstdiostream (n, f, fid, m, ff, encoding, + cf)); } // No copying!