diff options
author | Carl Hetherington <carl@carlh.net> | 2011-01-09 15:10:26 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2011-01-09 15:10:26 +0000 |
commit | ddb1a76e5b1b0645d28a83f4735f2070b204fc38 (patch) | |
tree | 3ef75c743d83588e3acd293dde3c946f1d837c13 /libs | |
parent | e137f663032a3798a861ec0612874ffdb824e3fa (diff) |
Replace RouteGroup's collection of apply() methods with a single one.
git-svn-id: svn://localhost/ardour2/branches/3.0@8485 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/route_group.h | 29 | ||||
-rw-r--r-- | libs/ardour/route.cc | 10 |
2 files changed, 8 insertions, 31 deletions
diff --git a/libs/ardour/ardour/route_group.h b/libs/ardour/ardour/route_group.h index d5e4b274e1..215f9f6bd7 100644 --- a/libs/ardour/ardour/route_group.h +++ b/libs/ardour/ardour/route_group.h @@ -92,33 +92,10 @@ class RouteGroup : public SessionObject int add (boost::shared_ptr<Route>); int remove (boost::shared_ptr<Route>); - void apply (void (Route::*func)(void *), void *src) { + template<typename Function> + void foreach_route (Function f) { for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) { - ((*i).get()->*func)(src); - } - } - - void apply (void (Route::*func)()) { - for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) { - ((*i).get()->*func)(); - } - } - - template<class T> void apply (void (Route::*func)(T, void *), T val, void *src) { - for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) { - ((*i).get()->*func)(val, src); - } - } - - template<class T> void apply (void (Route::*func)(T), T val) { - for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) { - ((*i).get()->*func)(val); - } - } - - template<class T> void foreach_route (T *obj, void (T::*func)(Route&)) { - for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) { - (obj->*func)(**i); + f (i->get()); } } diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 6f9780d4b9..90867940a1 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -353,11 +353,11 @@ Route::set_gain (gain_t val, void *src) } } - _route_group->apply (&Route::inc_gain, factor, _route_group); + _route_group->foreach_route (boost::bind (&Route::inc_gain, _1, factor, _route_group)); } else { - _route_group->apply (&Route::set_gain, val, _route_group); + _route_group->foreach_route (boost::bind (&Route::set_gain, _1, val, _route_group)); } return; @@ -614,7 +614,7 @@ Route::set_solo (bool yn, void *src) } if (_route_group && src != _route_group && _route_group->is_active() && _route_group->is_solo()) { - _route_group->apply (&Route::set_solo, yn, _route_group); + _route_group->foreach_route (boost::bind (&Route::set_solo, _1, yn, _route_group)); return; } @@ -724,7 +724,7 @@ Route::set_solo_isolated (bool yn, void *src) } if (_route_group && src != _route_group && _route_group->is_active() && _route_group->is_solo()) { - _route_group->apply (&Route::set_solo_isolated, yn, _route_group); + _route_group->foreach_route (boost::bind (&Route::set_solo_isolated, _1, yn, _route_group)); return; } @@ -792,7 +792,7 @@ void Route::set_mute (bool yn, void *src) { if (_route_group && src != _route_group && _route_group->is_active() && _route_group->is_mute()) { - _route_group->apply (&Route::set_mute, yn, _route_group); + _route_group->foreach_route (boost::bind (&Route::set_mute, _1, yn, _route_group)); return; } |