[RFC] octave-to-backend notification of property change

Maciek Gajewski maciej.gajewski0 at gmail.com
Fri Jul 4 15:55:20 CDT 2008


Michael Goffioul write:
> > Let all "set" methods notify backend using the same method, with
> > signature like this:
> >
> > virtual void base_graphics_backend::property_changed( const
> > graphics_handle& owner, const std::string& name );
>
> I also considered that possibility, but I found it way less efficient than
> having specific methods
>
> virtual void base_graphics_backend::figure_property_changed(...)
>
> Indeed, from the octave point of view, when such notification method
> is called, it knows the object and property (because it's called from
> the set_xxx handler), so it can call a specific method directly.
> OTOH, using generic signature as you propose would just force
> the backend to re-do a lot of string comparisons to know which
> property was changed.

So, do you want to have notifier method for each property? That would require 
backend author to re-implement a whole lot of methods, most of which would be 
almost identical.

String comparisons are cheap these days. I could event bet, that entire 
processor time used for these comparisons, on all octave instances, all 
around the world, would be shorter that time spent by programmers to code and 
maintain all these methods :)

Besides - these notifiers would be used in interactive environments, when 
performance isn't all that important as in - for example - running large 
batch calculations.

At the other side - it could be good to have sepearate notifiers per object 
class:

void figure_property_changed( graphics_handle fh,  std::string prop_name );
void axes_property_changed( graphics_handle ah,  std::string prop_name );
void axes_item_property_changed( graphics_handle ih,  std::string prop_name );
void uiobject_property_changed( graphics_handle uh,  std::string prop_name );

Maciek Gajewski



More information about the Octave-maintainers mailing list