comparison libinterp/octave-value/ov-classdef.h @ 18416:bcd71a2531d3

Support disp/display overloading in classdef * ov-classdef.h (octave_classdef::print, octave_classdef::print_raw): Move definition to C++ file. (octave_classdef::print_as_scalar): Removed method. (octave_classdef::print_name_tag, octave_classdef::print_with_name): New methods. * ov-classdef.cc (octave_classdef::print): Moved from header. (octave_classdef::print_raw): Likewise. Call overloaded disp, if defined and not called from builtin. (octave_classdef::print_name_tag): New method. (octave_classdef::print_with_name): New method, calls overloaded "display" if defined. * pr-output.cc (octave_print_internal(std::ostream, bool): Avoid compilation warning. (Frats, Fdisp, Ffdisp): Allow to call non-const octave_value::print. * ov.h (octave_value::print): Make non-const. * ov-base.h (octave_base_value::print): Likewise. * ov-base.cc (octave_base_value::print): Likewise. * ov-base-diag.h (octave_base_diag::print): Likewise. * ov-base-diag.cc (octave_base_diag::print): Likewise. * ov-base-mat.h (octave_base_matrix::print): Likewise. * ov-base-mat.cc (octave_base_matrix::print): Likewise. * ov-base-scalar.h (octave_base_scalar::print): Likewise. * ov-base-scalar.cc (octave_base_scalar::print): Likewise. * ov-base-sparse.h (octave_base_sparse::print): Likewise. * ov-base-sparse.cc (octave_base_sparse::print): Likewise. * ov-cell.h (octave_cell::print): Likewise. * ov-cell.cc (octave_cell::print): Likewise. * ov-class.h (octave_class::print): Likewise. * ov-class.cc (octave_class::print): Likewise. * ov-colon.h (octave_magic_colon::print): Likewise. * ov-colon.cc (octave_magic_colon::print): Likewise. * ov-fcn-handle.h (octave_fcn_handle::print): Likewise. * ov-fcn-handle.cc (octave_fcn_handle::print): Likewise. * ov-fcn-inline.h (octave_fcn_inline::print): Likewise. * ov-fcn-inline.cc (octave_fcn_inline::print): Likewise. * ov-java.h (octave_java::print): Likewise. * ov-java.cc (octave_java::print): Likewise. * ov-lazy-idx.h (octave_lazy_index::print): Likewise. * ov-oncleanup.h (octave_oncleanup::print): Likewise. * ov-oncleanup.cc (octave_oncleanup::print): Likewise. * ov-perm.h (octave_perm_matrix::print): Likewise. * ov-perm.cc (octave_perm_matrix::print): Likewise. * ov-range.h (octave_range::print): Likewise. * ov-range.cc (octave_range::print): Likewise. * ov-struct.h (octave_struct::print, octave_scalar_struct): Likewise. * ov-struct.cc (octave_struct::print, octave_scalar_struct): Likewise.
author Michael Goffioul <michael.goffioul@gmail.com>
date Fri, 31 Jan 2014 11:41:19 -0500
parents 642fc1165f3f
children fe0e34be5576
comparison
equal deleted inserted replaced
18414:68fc31c69fcb 18416:bcd71a2531d3
1411 1411
1412 bool is_map (void) const { return true; } 1412 bool is_map (void) const { return true; }
1413 1413
1414 bool is_object (void) const { return true; } 1414 bool is_object (void) const { return true; }
1415 1415
1416 bool print_as_scalar (void) const { return true; } 1416 void print (std::ostream& os, bool pr_as_read_syntax = false);
1417 1417
1418 void print(std::ostream& os, bool pr_as_read_syntax = false) const 1418 void print_raw (std::ostream& os, bool pr_as_read_syntax = false) const;
1419 { 1419
1420 // FIXME: should call "display" method 1420 bool print_name_tag (std::ostream& os, const std::string& name) const;
1421 print_raw(os, pr_as_read_syntax); 1421
1422 newline(os); 1422 void print_with_name (std::ostream& os, const std::string& name,
1423 } 1423 bool print_padding = true);
1424
1425 void print_raw(std::ostream& os, bool /* pr_as_read_syntax */ = false) const
1426 {
1427 if (object.is_array ())
1428 os << "array (" << object.dims ().str () << ") of "
1429 << object.class_name () << " objects";
1430 else
1431 os << object.class_name () << " object";
1432 }
1433 1424
1434 octave_value_list subsref (const std::string& type, 1425 octave_value_list subsref (const std::string& type,
1435 const std::list<octave_value_list>& idx, int nargout); 1426 const std::list<octave_value_list>& idx,
1427 int nargout);
1436 1428
1437 octave_value subsref (const std::string& type, 1429 octave_value subsref (const std::string& type,
1438 const std::list<octave_value_list>& idx) 1430 const std::list<octave_value_list>& idx)
1439 { 1431 {
1440 octave_value_list retval = subsref (type, idx, 1); 1432 octave_value_list retval = subsref (type, idx, 1);