diff libinterp/corefcn/oct-strstrm.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 b0abae0bd94b
line wrap: on
line diff
--- a/libinterp/corefcn/oct-strstrm.h	Sat Feb 02 20:07:45 2019 +0100
+++ b/libinterp/corefcn/oct-strstrm.h	Sat Feb 09 16:43:11 2019 +0100
@@ -37,8 +37,9 @@
 
   octave_base_strstream (std::ios::openmode m = std::ios::out,
                          octave::mach_info::float_format ff
-                           = octave::mach_info::native_float_format ())
-    : octave::base_stream (m, ff) { }
+                           = octave::mach_info::native_float_format (),
+                         const std::string& encoding = "utf-8")
+    : octave::base_stream (m, ff, encoding) { }
 
   // No copying!
 
@@ -79,14 +80,16 @@
   octave_istrstream (const char *data,
                      std::ios::openmode arg_md = std::ios::out,
                      octave::mach_info::float_format ff
-                       = octave::mach_info::native_float_format ())
-    : octave_base_strstream (arg_md, ff), is (data) { }
+                       = octave::mach_info::native_float_format (),
+                     const std::string& encoding = "utf-8")
+    : octave_base_strstream (arg_md, ff, encoding), is (data) { }
 
   octave_istrstream (const std::string& data,
                      std::ios::openmode arg_md = std::ios::out,
                      octave::mach_info::float_format ff
-                       = octave::mach_info::native_float_format ())
-    : octave_base_strstream (arg_md, ff), is (data) { }
+                       = octave::mach_info::native_float_format (),
+                     const std::string& encoding = "utf-8")
+    : octave_base_strstream (arg_md, ff, encoding), is (data) { }
 
   // No copying!
 
@@ -104,12 +107,14 @@
   static octave::stream
   create (const char *data, std::ios::openmode arg_md = std::ios::out,
           octave::mach_info::float_format ff
-            = octave::mach_info::native_float_format ());
+            = octave::mach_info::native_float_format (),
+          const std::string& encoding = "utf-8");
 
   static octave::stream
   create (const std::string& data, std::ios::openmode arg_md = std::ios::out,
           octave::mach_info::float_format ff
-            = octave::mach_info::native_float_format ());
+            = octave::mach_info::native_float_format (),
+          const std::string& encoding = "utf-8");
 
   // Return nonzero if EOF has been reached on this stream.
 
@@ -139,8 +144,9 @@
 
   octave_ostrstream (std::ios::openmode arg_md = std::ios::out,
                      octave::mach_info::float_format ff
-                       = octave::mach_info::native_float_format ())
-    : octave_base_strstream (arg_md, ff), os () { }
+                       = octave::mach_info::native_float_format (),
+                     const std::string& encoding = "utf-8")
+    : octave_base_strstream (arg_md, ff, encoding), os () { }
 
   // No copying!
 
@@ -157,7 +163,8 @@
   static octave::stream
   create (std::ios::openmode arg_md = std::ios::out,
           octave::mach_info::float_format ff
-            = octave::mach_info::native_float_format ());
+            = octave::mach_info::native_float_format (),
+          const std::string& encoding = "utf-8");
 
   // Return nonzero if EOF has been reached on this stream.