]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/route.cpp
Reduce interface clutter in Layout by storing Objects in a uniform way
[r2c2.git] / source / libr2c2 / route.cpp
index 80c61088eda68223be46299bac6621b289291d35..685ad666404688275cfa87eda6f7a48a0e60c9b4 100644 (file)
@@ -147,7 +147,7 @@ Route::Route(Layout &l):
        temporary(false)
 {
        layout.add_route(*this);
-       layout.signal_track_removed.connect(sigc::mem_fun(this, &Route::track_removed));
+       layout.signal_object_removed.connect(sigc::mem_fun(this, &Route::object_removed));
 }
 
 Route::~Route()
@@ -402,9 +402,10 @@ RouteValidityMask Route::check_validity(Track &trk) const
        return static_cast<RouteValidityMask>(result);
 }
 
-void Route::track_removed(Track &t)
+void Route::object_removed(Object &o)
 {
-       tracks.erase(&t);
+       if(Track *t = dynamic_cast<Track *>(&o))
+               tracks.erase(t);
 }
 
 Route *Route::find(const TrackIter &from, Track &to)
@@ -437,7 +438,7 @@ Route::Loader::Loader(Route &r):
 
 void Route::Loader::finish()
 {
-       const set<Track *> &ltracks = obj.layout.get_tracks();
+       const set<Track *> &ltracks = obj.layout.get_all<Track>();
        for(set<Track *>::const_iterator i=ltracks.begin(); i!=ltracks.end(); ++i)
        {
                unsigned tid = (*i)->get_turnout_id();