server_node * previous_node(server_node * node) { assert(has_child(node)); server_node_list::iterator it = server_node_list::s_iterator_to(*node); if (unlikely(it == child_nodes.begin())) return nullptr; else return &(*--it); }
void apply_deep_on_children(functor const & f) { for (server_node_list::iterator it = child_nodes.begin(); it != child_nodes.end(); ++it) { if (it->is_group()) { abstract_group & grp = static_cast<abstract_group&>(*it); grp.apply_deep_on_children(f); } f(*it); } }
void free_synths_deep(void) { child_nodes.remove_and_dispose_if(std::mem_fn(&server_node::is_synth), std::mem_fn(&server_node::clear_parent)); /* now there are only group classes */ for(server_node_list::iterator it = child_nodes.begin(); it != child_nodes.end(); ++it) { abstract_group * group = static_cast<abstract_group*>(&*it); group->free_synths_deep(); } assert(child_synth_count == 0); }
void apply_on_children(functor const & f) const { for (server_node_list::const_iterator it = child_nodes.begin(); it != child_nodes.end(); ++it) f(*it); }