Mercurial > octave
diff libinterp/corefcn/pr-output.cc @ 24760:b784d68f7c44
fix printing of logical values (bug #53160)
* pr-output.h, pr-output.cc (make_format): Provide specialization for
boolNDArray objects.
(octave_print_internal): Define more consistently.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 14 Feb 2018 23:28:40 -0500 |
parents | 6114be517240 |
children | d7c3918955e6 |
line wrap: on
line diff
--- a/libinterp/corefcn/pr-output.cc Wed Feb 14 16:08:12 2018 -0800 +++ b/libinterp/corefcn/pr-output.cc Wed Feb 14 23:28:40 2018 -0500 @@ -1647,6 +1647,13 @@ return make_format (FloatComplexMatrix (nda), r_fw, i_fw, scale); } +template <> +float_display_format +make_format (const boolNDArray&) +{ + return float_display_format (float_format (1, 1)); +} + // FIXME: all this mess with abs is an attempt to avoid seeing // // warning: comparison of unsigned expression < 0 is always false @@ -1775,17 +1782,23 @@ MAKE_INT_SCALAR_FORMAT (uint64_t) void -octave_print_internal (std::ostream&, char, bool) +octave_print_internal (std::ostream& os, const float_display_format& fmt, + bool d, bool pr_as_read_syntax) { - panic_impossible (); + octave_print_internal (os, fmt, octave_uint8 (d), pr_as_read_syntax); } void -octave_print_internal (std::ostream& os, double d, - bool pr_as_read_syntax) +octave_print_internal (std::ostream& os, bool d, bool pr_as_read_syntax) { - set_format (d); - octave_print_internal (os, curr_float_display_fmt, d, pr_as_read_syntax); + octave_print_internal (os, octave_uint8 (d), pr_as_read_syntax); +} + +void +octave_print_internal (std::ostream&, const float_display_format&, + char, bool) +{ + panic_impossible (); } void @@ -2202,14 +2215,6 @@ os << 'c'; } -void -octave_print_internal (std::ostream& os, const Complex& c, - bool pr_as_read_syntax) -{ - set_format (c); - octave_print_internal (os, curr_float_display_fmt, c, pr_as_read_syntax); -} - extern void octave_print_internal (std::ostream& os, const float_display_format& fmt, const Complex& c, bool pr_as_read_syntax) @@ -2666,21 +2671,9 @@ } } -void -octave_print_internal (std::ostream& os, bool d, bool pr_as_read_syntax) -{ - octave_print_internal (os, octave_uint8 (d), pr_as_read_syntax); -} - // FIXME: write single precision versions of the printing functions. void -octave_print_internal (std::ostream& os, float d, bool pr_as_read_syntax) -{ - octave_print_internal (os, double (d), pr_as_read_syntax); -} - -void octave_print_internal (std::ostream& os, const FloatMatrix& m, bool pr_as_read_syntax, int extra_indent) { @@ -2702,13 +2695,6 @@ } void -octave_print_internal (std::ostream& os, const FloatComplex& c, - bool pr_as_read_syntax) -{ - octave_print_internal (os, Complex (c), pr_as_read_syntax); -} - -void octave_print_internal (std::ostream& os, const FloatComplexMatrix& cm, bool pr_as_read_syntax, int extra_indent) {