diff src/oct-stream.cc @ 5279:bd32f770c09a

[project @ 2005-04-12 21:55:31 by jwe]
author jwe
date Tue, 12 Apr 2005 21:55:31 +0000
parents 23b37da9fd5b
children db290db95b33
line wrap: on
line diff
--- a/src/oct-stream.cc
+++ b/src/oct-stream.cc
@@ -1948,7 +1948,7 @@
       retval = mval;
 
       if (all_char_conv)
-	retval = retval.convert_to_str ();
+	retval = retval.convert_to_str (false, true);
     }
 
   return retval;
@@ -3583,6 +3583,31 @@
   return retval;
 }
 
+octave_value
+octave_stream::scanf (const octave_value& fmt, const Array<double>& size,
+		      int& count, const std::string& who)
+{
+  octave_value retval = Matrix ();
+
+  if (fmt.is_string ())
+    {
+      std::string sfmt = fmt.string_value ();
+
+      if (fmt.is_sq_string ())
+	sfmt = do_string_escapes (sfmt);
+
+      retval = scanf (sfmt, size, count, who);
+    }
+  else
+    {
+      // Note that this is not ::error () !
+
+      error (who + ": format must be a string");
+    }
+
+  return retval;
+}
+
 octave_value_list
 octave_stream::oscanf (const std::string& fmt, const std::string& who)
 {
@@ -3594,6 +3619,30 @@
   return retval;
 }
 
+octave_value_list
+octave_stream::oscanf (const octave_value& fmt, const std::string& who)
+{
+  octave_value_list retval;
+
+  if (fmt.is_string ())
+    {
+      std::string sfmt = fmt.string_value ();
+
+      if (fmt.is_sq_string ())
+	sfmt = do_string_escapes (sfmt);
+
+      retval = oscanf (sfmt, who);
+    }
+  else
+    {
+      // Note that this is not ::error () !
+
+      error (who + ": format must be a string");
+    }
+
+  return retval;
+}
+
 int
 octave_stream::printf (const std::string& fmt, const octave_value_list& args,
 		       const std::string& who)
@@ -3607,6 +3656,31 @@
 }
 
 int
+octave_stream::printf (const octave_value& fmt, const octave_value_list& args,
+		       const std::string& who)
+{
+  int retval = 0;
+
+  if (fmt.is_string ())
+    {
+      std::string sfmt = fmt.string_value ();
+
+      if (fmt.is_sq_string ())
+	sfmt = do_string_escapes (sfmt);
+
+      retval = printf (sfmt, args, who);
+    }
+  else
+    {
+      // Note that this is not ::error () !
+
+      error (who + ": format must be a string");
+    }
+
+  return retval;
+}
+
+int
 octave_stream::puts (const std::string& s, const std::string& who)
 {
   int retval = -1;
@@ -3627,7 +3701,7 @@
   if (tc_s.is_string ())
     {
       std::string s = tc_s.string_value ();      
-      retval = rep->puts (s, who);
+      retval = puts (s, who);
     }
   else
     {