# HG changeset patch # User John W. Eaton # Date 1260585722 18000 # Node ID d32a6cc0193b308048f0cfff94303382c6c4bca8 # Parent d0680ace5fcb1eabb79af1bbddb491bf70fd3907 unshare dynamic properties diff -r d0680ace5fcb -r d32a6cc0193b src/ChangeLog --- a/src/ChangeLog Fri Dec 11 20:59:27 2009 -0500 +++ b/src/ChangeLog Fri Dec 11 21:42:02 2009 -0500 @@ -1,3 +1,31 @@ +2009-12-11 John W. Eaton + + * graphics.h.in (base_properties::all_dynamic_properties): + No longer static. + (base_properties::set (const caseless_str&, const octave_value&)): + Only provide decl, not definition. + (base_properties::set (const caseless_str&, const std::string&, + const octave_value&)): Delete. + (base_properties::dynamic_properties): Rename from + all_dynamic_properties. No longer static. Now protected. + (base_properties::has_dynamic_property, + base_properties::dynamic_property_names, + base_properties::set_dynamic): Omit class name argument. + * graphics.cc (base_properties::all_dynamic_properties): + Delete obsolete definition. + (base_properties::dynamic_property_names): Now const. + Omit class name argument. Simply return dynamic_properties set. + (base_properties::has_dynamic_property): Omit class name argument. + Simply return dynamic_properties set. Don't pass class name to + dynamic_property_names function. + (base_properties::set_dynamic): Omit class name argument. + Dynamic_properties is no longer a map. + + * genprops.awk: Omit class name from arguments of generated + base_properties::all_property_names and base_properties::set + functions. Don't pass class name to base_properties::set in + generated derived class set functions. + 2009-12-11 John W. Eaton * Makefile.am (DOCSTRINGS): Use $(cp_update_rule) instead of diff -r d0680ace5fcb -r d32a6cc0193b src/genprops.awk --- a/src/genprops.awk Fri Dec 11 20:59:27 2009 -0500 +++ b/src/genprops.awk Fri Dec 11 21:42:02 2009 -0500 @@ -264,12 +264,7 @@ if (class_name && ! base) emit_common_declarations(); - printf ("public:\n\n\n static std::set core_property_names (void);\n\n static bool has_core_property (const caseless_str& pname);\n\n std::set all_property_names ("); - if (base) - printf ("const std::string& cname"); - else - printf ("void"); - printf (") const;\n\n"); + printf ("public:\n\n\n static std::set core_property_names (void);\n\n static bool has_core_property (const caseless_str& pname);\n\n std::set all_property_names (void) const;\n\n"); if (! base) printf (" bool has_property (const caseless_str& pname) const;\n\n"); @@ -439,7 +434,7 @@ ## set method if (base) - printf ("void\nbase_properties::set (const caseless_str& pname, const std::string& cname, const octave_value& val)\n{\n"); + printf ("void\nbase_properties::set (const caseless_str& pname, const octave_value& val)\n{\n"); else printf ("void\n%s::properties::set (const caseless_str& pname_arg, const octave_value& val)\n{\n", class_name); @@ -460,9 +455,9 @@ } if (base) - printf (" else\n set_dynamic (pname, cname, val);\n}\n\n"); + printf (" else\n set_dynamic (pname, val);\n}\n\n"); else - printf (" else\n base_properties::set (pname, \"%s\", val);\n}\n\n", class_name); + printf (" else\n base_properties::set (pname, val);\n}\n\n"); ## get "all" method @@ -610,16 +605,11 @@ printf ("base_properties"); else printf ("%s::properties", class_name); - printf ("::all_property_names ("); + printf ("::all_property_names (void) const\n{\n static std::set all_pnames = core_property_names ();\n\n"); if (base) - printf ("const std::string& cname"); + printf (" std::set retval = all_pnames;\n std::set dyn_props = dynamic_property_names ();\n retval.insert (dyn_props.begin (), dyn_props.end ());\n for (std::map::const_iterator p = all_props.begin ();\n p != all_props.end (); p++)\n retval.insert (p->first);\n\n return retval;\n}\n\n"); else - printf ("void"); - printf (") const\n{\n static std::set all_pnames = core_property_names ();\n\n"); - if (base) - printf (" std::set retval = all_pnames;\n std::set dyn_props = dynamic_property_names (cname);\n retval.insert (dyn_props.begin (), dyn_props.end ());\n for (std::map::const_iterator p = all_props.begin ();\n p != all_props.end (); p++)\n retval.insert (p->first);\n\n return retval;\n}\n\n"); - else - printf (" std::set retval = all_pnames;\n std::set base_props = base_properties::all_property_names (\"%s\");\n retval.insert (base_props.begin (), base_props.end ());\n\n return retval;\n}\n\n", class_name); + printf (" std::set retval = all_pnames;\n std::set base_props = base_properties::all_property_names ();\n retval.insert (base_props.begin (), base_props.end ());\n\n return retval;\n}\n\n"); if (! base) printf ("bool\n%s::properties::has_property (const caseless_str& pname) const\n{\n std::set pnames = all_property_names ();\n\n return pnames.find (pname) != pnames.end ();\n}\n\n", class_name); diff -r d0680ace5fcb -r d32a6cc0193b src/graphics.cc --- a/src/graphics.cc Fri Dec 11 20:59:27 2009 -0500 +++ b/src/graphics.cc Fri Dec 11 21:42:02 2009 -0500 @@ -1804,26 +1804,22 @@ return m; } -std::map > base_properties::all_dynamic_properties; - std::set -base_properties::dynamic_property_names (const std::string& cname) -{ - return all_dynamic_properties[cname]; +base_properties::dynamic_property_names (void) const +{ + return dynamic_properties; } bool -base_properties::has_dynamic_property (const std::string& pname, - const std::string& cname) -{ - const std::set& dynprops = dynamic_property_names (cname); +base_properties::has_dynamic_property (const std::string& pname) +{ + const std::set& dynprops = dynamic_property_names (); return dynprops.find (pname) != dynprops.end (); } void base_properties::set_dynamic (const caseless_str& pname, - const std::string& cname, const octave_value& val) { std::map::iterator it = all_props.find (pname); @@ -1835,7 +1831,7 @@ if (! error_state) { - all_dynamic_properties[cname].insert (pname); + dynamic_properties.insert (pname); mark_modified (); } diff -r d0680ace5fcb -r d32a6cc0193b src/graphics.h.in --- a/src/graphics.h.in Fri Dec 11 20:59:27 2009 -0500 +++ b/src/graphics.h.in Fri Dec 11 21:42:02 2009 -0500 @@ -1642,13 +1642,7 @@ all_props[name] = p; } - virtual void set (const caseless_str&, const octave_value&) - { - panic_impossible (); - } - - void set (const caseless_str& pname, const std::string& cname, - const octave_value& val); + virtual void set (const caseless_str&, const octave_value&); virtual octave_value get (const caseless_str& pname) const; @@ -1744,16 +1738,14 @@ return ! handlevisibility.is ("off"); } - static std::map > all_dynamic_properties; - - static std::set dynamic_property_names (const std::string& cname); - - static bool has_dynamic_property (const std::string& pname, - const std::string& cname); + std::set dynamic_property_names (void) const; + + bool has_dynamic_property (const std::string& pname); protected: - void set_dynamic (const caseless_str& pname, const std::string& cname, - const octave_value& val); + std::set dynamic_properties; + + void set_dynamic (const caseless_str& pname, const octave_value& val); octave_value get_dynamic (const caseless_str& pname) const;