diff src/ov-cell.cc @ 7285:c8d362c69013

[project @ 2007-12-11 01:54:19 by jwe]
author jwe
date Tue, 11 Dec 2007 01:54:19 +0000
parents 1f16da18d85d
children 8c32f95c2639 1a7ef7a48be1
line wrap: on
line diff
--- a/src/ov-cell.cc	Mon Dec 10 23:27:18 2007 +0000
+++ b/src/ov-cell.cc	Tue Dec 11 01:54:19 2007 +0000
@@ -342,46 +342,44 @@
 {
   string_vector retval;
 
-  octave_idx_type nr = rows ();
-  octave_idx_type nc = columns ();
+  octave_idx_type nel = numel ();
 
   int n_elts = 0;
 
   octave_idx_type max_len = 0;
 
-  for (octave_idx_type j = 0; j < nc; j++)
+  for (octave_idx_type i = 0; i < nel; i++)
     {
-      for (octave_idx_type i = 0; i < nr; i++)
-	{
-	  string_vector s = matrix(i,j).all_strings ();
+      string_vector s = matrix(i).all_strings ();
+
+      if (error_state)
+	return retval;
 
-	  if (error_state)
-	    return retval;
+      octave_idx_type s_len = s.length ();
 
-	  n_elts += s.length ();
+      n_elts += s_len ? s_len : 1;
 
-	  octave_idx_type s_max_len = s.max_length ();
+      octave_idx_type s_max_len = s.max_length ();
 
-	  if (s_max_len > max_len)
-	    max_len = s_max_len;
-	}
+      if (s_max_len > max_len)
+	max_len = s_max_len;
     }
 
   retval.resize (n_elts);
 
   octave_idx_type k = 0;
 
-  for (octave_idx_type j = 0; j < nc; j++)
+  for (octave_idx_type i = 0; i < nel; i++)
     {
-      for (octave_idx_type i = 0; i < nr; i++)
-	{
-	  string_vector s = matrix(i,j).all_strings ();
+      string_vector s = matrix(i).all_strings ();
+
+      octave_idx_type s_len = s.length ();
 
-	  int n = s.length ();
-
-	  for (octave_idx_type ii = 0; ii < n; ii++)
+      if (s_len)
+	{
+	  for (octave_idx_type j = 0; j < s_len; j++)
 	    {
-	      std::string t = s[ii];
+	      std::string t = s[j];
 	      int t_len = t.length ();
 
 	      if (pad && max_len > t_len)
@@ -390,6 +388,10 @@
 	      retval[k++] = t;
 	    }
 	}
+      else if (pad)
+	retval[k++] = std::string (max_len, ' ');
+      else
+	retval[k++] = std::string ();
     }
 
   return retval;