# HG changeset patch # User John W. Eaton # Date 1560544484 18000 # Node ID 792fe198c105d191384a2f9ba838c9e8bc5365da # Parent 42efd1e986c727a0dd5a9ce4017abc0a556e9140 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. diff -r 42efd1e986c7 -r 792fe198c105 libinterp/octave-value/ov-classdef.cc --- 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 props; - - props = cls.get_property_map (); + std::map 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 ();