]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/layout.cpp
Improve the handling of sensor events in Train
[r2c2.git] / source / libmarklin / layout.cpp
index 121e19e937a1366ec1c4afd259a36943f522edd1..1df37d3d3ea6b742dfb75e7f893a1d7056426fa0 100644 (file)
@@ -45,6 +45,14 @@ void Layout::add_route(Route &r)
                signal_route_added.emit(r);
 }
 
+Route &Layout::get_route(const string &name) const
+{
+       for(set<Route *>::const_iterator i=routes.begin(); i!=routes.end(); ++i)
+               if((*i)->get_name()==name)
+                       return **i;
+       throw KeyError("Unknown route", name);
+}
+
 void Layout::remove_route(Route &r)
 {
        if(routes.erase(&r))
@@ -137,9 +145,7 @@ void Layout::check_routes()
                Track *start = track;
                while(1)
                {
-                       int out_ep = track->traverse(ep, trk_path);
-                       if(out_ep<0)
-                               break;
+                       unsigned out_ep = track->traverse(ep, trk_path);
                        Track *next = track->get_links()[out_ep];
                        if(!next || next == start)
                                break;