diff libinterp/octave-value/ov-str-mat.cc @ 20611:40ed9b46a800

new octave_value::string_value method with optional error message * ov.h (octave_value::string_vector): New method. ov-base.cc, ov-base.h (octave_base_value::string_vector): New default method. ov-str-mat.cc, ov-str-mat.h (octave_char_matrix_str::string_value): New method.
author John W. Eaton <jwe@octave.org>
date Thu, 08 Oct 2015 16:43:22 -0400
parents f90c8372b7ba
children
line wrap: on
line diff
--- a/libinterp/octave-value/ov-str-mat.cc	Thu Oct 08 20:15:19 2015 +0100
+++ b/libinterp/octave-value/ov-str-mat.cc	Thu Oct 08 16:43:22 2015 -0400
@@ -252,6 +252,38 @@
   return retval;
 }
 
+std::string
+octave_char_matrix_str::string_value (const char *fmt, va_list args) const
+{
+  std::string retval;
+
+  if (! fmt)
+    return string_value ();
+
+  bool conversion_error = false;
+
+  if (matrix.ndims () == 2)
+    {
+      charMatrix chm (matrix);
+
+      try
+        {
+          retval = chm.row_as_string (0);  // FIXME?
+        }
+      catch (const octave_execution_exception&)
+        {
+          conversion_error = true;
+        }
+    }
+  else
+    conversion_error = true;
+
+  if (conversion_error)
+    verror (fmt, args);
+
+  return retval;
+}
+
 Array<std::string>
 octave_char_matrix_str::cellstr_value (void) const
 {