diff src/ov-re-mat.cc @ 4844:9f7ef92b50b0

[project @ 2004-04-02 17:26:53 by jwe]
author jwe
date Fri, 02 Apr 2004 17:26:54 +0000
parents 81f78a2ff8a6
children 35bfb4e0b96b
line wrap: on
line diff
--- a/src/ov-re-mat.cc	Fri Apr 02 14:54:20 2004 +0000
+++ b/src/ov-re-mat.cc	Fri Apr 02 17:26:54 2004 +0000
@@ -186,66 +186,54 @@
 octave_matrix::convert_to_str_internal (bool, bool) const
 {
   octave_value retval;
+  dim_vector dv = dims ();
+  int nel = dv.numel ();
 
-  int nr = matrix.rows ();
-  int nc = matrix.columns ();
-
-  if (nr == 0 && nc == 0)
+  if (nel == 0)
     {
       char s = '\0';
       retval = octave_value (&s);
     }
   else
     {
-      if (nr == 0 || nc == 0)
-	{
-	  char s = '\0';
-	  retval = octave_value (&s);
-	}
-      else
-	{
-	  charMatrix chm (nr, nc);
+      charNDArray chm (dv);
 	  
-	  bool warned = false;
+      bool warned = false;
+
+      for (int i = 0; i < nel; i++)
+	{
+	  OCTAVE_QUIT;
+
+	  double d = matrix (i);
 
-	  for (int j = 0; j < nc; j++)
+	  if (xisnan (d))
 	    {
-	      for (int i = 0; i < nr; i++)
+	      ::error ("invalid conversion from NaN to character");
+	      return retval;
+	    }
+	  else
+	    {
+	      int ival = NINT (d);
+
+	      if (ival < 0 || ival > UCHAR_MAX)
 		{
-		  OCTAVE_QUIT;
+		  // XXX FIXME XXX -- is there something
+		  // better we could do?
 
-		  double d = matrix (i, j);
+		  ival = 0;
 
-		  if (xisnan (d))
+		  if (! warned)
 		    {
-		      ::error ("invalid conversion from NaN to character");
-		      return retval;
-		    }
-		  else
-		    {
-		      int ival = NINT (d);
-
-		      if (ival < 0 || ival > UCHAR_MAX)
-			{
-			  // XXX FIXME XXX -- is there something
-			  // better we could do?
-
-			  ival = 0;
-
-			  if (! warned)
-			    {
-			      ::warning ("range error for conversion to character value");
-			      warned = true;
-			    }
-			}
-
-		      chm (i, j) = static_cast<char> (ival);
+		      ::warning ("range error for conversion to character value");
+		      warned = true;
 		    }
 		}
-	    }
 
-	  retval = octave_value (chm, 1);
+	      chm (i) = static_cast<char> (ival);
+	    }
 	}
+
+      retval = octave_value (chm, 1);
     }
 
   return retval;