Mercurial > octave
diff libinterp/corefcn/pr-output.cc @ 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 | 7b8a3f503575 |
children | 39186eac5a05 |
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; }