changeset 24769:e574b957b01b

don't print extra newline after matrices with format free (bug #53168) * pr-output.cc (octave_print_free): New static template function. (octave_print_internal): Use octave_print_free to handle free format printing for Matrix, ComplexMatrix, DiagMatrix, ComplexDiagMatrix, and PermMatrix objects. Handle Range objects as a special case.
author John W. Eaton <jwe@octave.org>
date Fri, 16 Feb 2018 00:42:39 -0500
parents 11cc3973381b
children 39186eac5a05
files libinterp/corefcn/pr-output.cc
diffstat 1 files changed, 31 insertions(+), 41 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/pr-output.cc	Thu Feb 15 18:34:08 2018 -0600
+++ b/libinterp/corefcn/pr-output.cc	Fri Feb 16 00:42:39 2018 -0500
@@ -1746,6 +1746,29 @@
     }
 }
 
+template <typename MT>
+static void
+octave_print_free (std::ostream& os, const MT& m, bool pr_as_read_syntax)
+{
+  octave_idx_type nr = m.rows ();
+  octave_idx_type nc = m.columns ();
+
+  if (pr_as_read_syntax)
+    os << "[\n";
+
+  for (octave_idx_type i = 0; i < nr; i++)
+    {
+      for (octave_idx_type j = 0; j < nc; j++)
+        os << ' ' << m.elem(i,j);
+
+      if (i < nr - 1)
+        os << "\n";
+    }
+
+  if (pr_as_read_syntax)
+    os << ']';
+}
+
 void
 octave_print_internal (std::ostream& os, const Matrix& m,
                        bool pr_as_read_syntax, int extra_indent)
@@ -1789,14 +1812,7 @@
 
       if (free_format)
         {
-          if (pr_as_read_syntax)
-            os << "[\n";
-
-          os << m;
-
-          if (pr_as_read_syntax)
-            os << ']';
-
+          octave_print_free (os, m, pr_as_read_syntax);
           return;
         }
 
@@ -1925,14 +1941,7 @@
 
       if (free_format)
         {
-          if (pr_as_read_syntax)
-            os << "[\n";
-
-          os << Matrix (m);
-
-          if (pr_as_read_syntax)
-            os << ']';
-
+          octave_print_free (os, m, pr_as_read_syntax);
           return;
         }
 
@@ -2205,14 +2214,7 @@
 
       if (free_format)
         {
-          if (pr_as_read_syntax)
-            os << "[\n";
-
-          os << cm;
-
-          if (pr_as_read_syntax)
-            os << ']';
-
+          octave_print_free (os, cm, pr_as_read_syntax);
           return;
         }
 
@@ -2344,14 +2346,7 @@
 
       if (free_format)
         {
-          if (pr_as_read_syntax)
-            os << "[\n";
-
-          os << ComplexMatrix (cm);
-
-          if (pr_as_read_syntax)
-            os << ']';
-
+          octave_print_free (os, cm, pr_as_read_syntax);
           return;
         }
 
@@ -2488,14 +2483,7 @@
 
       if (free_format)
         {
-          if (pr_as_read_syntax)
-            os << "[\n";
-
-          os << Matrix (m);
-
-          if (pr_as_read_syntax)
-            os << ']';
-
+          octave_print_free (os, m, pr_as_read_syntax);
           return;
         }
 
@@ -2704,7 +2692,9 @@
 
           if (free_format)
             {
-              os << r;
+              os << ' ';
+              for (octave_idx_type i = 0; i < num_elem; i++)
+                os << ' ' << r.elem(i);
               return;
             }