Mercurial > octave
changeset 27188:792fe198c105
don't print hidden or protected/private classdef properties (bug #55766)
* ov-classdef.cc (octave_classdef::print_raw): Skip hidden, protected,
and private properties in default display.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 14 Jun 2019 15:34:44 -0500 |
parents | 42efd1e986c7 |
children | 946c6f117091 |
files | libinterp/octave-value/ov-classdef.cc |
diffstat | 1 files changed, 37 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/octave-value/ov-classdef.cc Fri Jun 14 15:32:50 2019 -0500 +++ b/libinterp/octave-value/ov-classdef.cc Fri Jun 14 15:34:44 2019 -0500 @@ -266,14 +266,28 @@ increment_indent_level (); - std::map<std::string, octave::cdef_property> props; - - props = cls.get_property_map (); + std::map<std::string, octave::cdef_property> property_map + = cls.get_property_map (); size_t max_len = 0; - for (const auto& nm_prop : props) + for (const auto& pname_prop : property_map) { - const std::string& nm = nm_prop.first; + // FIXME: this loop duplicates a significant portion of the + // loop below and the loop in Fproperties. + + const octave::cdef_property& prop = pname_prop.second; + + const std::string nm = prop.get_name (); + + octave_value acc = prop.get ("GetAccess"); + + if (! acc.is_string () || acc.string_value () != "public") + continue; + + octave_value hid = prop.get ("Hidden"); + + if (hid.bool_value ()) + continue; size_t sz = nm.size (); @@ -281,18 +295,28 @@ max_len = sz; } - for (auto& nm_prop : props) + for (auto& pname_prop : property_map) { + const octave::cdef_property& prop = pname_prop.second; + + const std::string nm = prop.get_name (); + + octave_value acc = prop.get ("GetAccess"); + + if (! acc.is_string () || acc.string_value () != "public") + continue; + + octave_value hid = prop.get ("Hidden"); + + if (hid.bool_value ()) + continue; + indent (os); - const std::string& nm = nm_prop.first; - if (is_array) os << " " << nm; else { - octave::cdef_property& prop = nm_prop.second; - octave_value val = prop.get_value (object, false); dim_vector dims = val.dims (); @@ -562,6 +586,9 @@ for (const auto& pname_prop : property_map) { + // FIXME: this loop duplicates a significant portion of the loops + // in octave_classdef::print_raw. + const octave::cdef_property& prop = pname_prop.second; std::string nm = prop.get_name ();