- Track *track=queue.front();
- queue.erase(queue.begin());
-
- const Track::EndpointSeq &epl=track->get_endpoints();
- for(Track::EndpointSeq::const_iterator j=epl.begin(); j!=epl.end(); ++j)
- if(j->link && tracks.insert(j->link).second)
- {
- queue.push_back(j->link);
- changed=true;
- }
- }
- for(TrackSet::iterator i=tracks.begin(); i!=tracks.end(); ++i)
- {
- const Track::EndpointSeq &epl=(*i)->get_endpoints();
- for(Track::EndpointSeq::const_iterator j=epl.begin(); j!=epl.end(); ++j)
- if(j->link && tracks.insert(j->link).second)
- changed=true;
+ Object *obj = queue.front();
+ queue.pop_front();
+
+ unsigned nls = obj->get_n_link_slots();
+ for(unsigned j=0; j<nls; ++j)
+ if(Object *linked = obj->get_link(j))
+ if(objects.insert(linked).second)
+ {
+ queue.push_back(linked);
+ changed = true;
+ }