X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Froute.cpp;h=78f96a638f7bf28463127ef9f69ac81cecccdf38;hb=4236c30c0a7a48854e9634e9ad7d8d6e0fd243a3;hp=58e50ddc7fb9fb3b39109f3a68dceb02fd2e7dd7;hpb=ce29d0ccf89840c9581314301de0ea2b5b261c43;p=r2c2.git diff --git a/source/libr2c2/route.cpp b/source/libr2c2/route.cpp index 58e50dd..78f96a6 100644 --- a/source/libr2c2/route.cpp +++ b/source/libr2c2/route.cpp @@ -1,4 +1,5 @@ #include +#include #include #include "layout.h" #include "route.h" @@ -154,12 +155,10 @@ void Route::set_turnout(unsigned addr, unsigned path) { if(!addr) throw InvalidParameterValue("Invalid turnout address"); - map::iterator i = turnouts.find(addr); - if(i==turnouts.end()) - throw KeyError("Turnout is not in this route"); - if(i->second>=0 && path!=static_cast(i->second)) + int &state = get_item(turnouts, addr); + if(state>=0 && path!=static_cast(state)) throw InvalidState("Setting conflicts with route"); - i->second = path; + state = path; } void Route::update_turnouts()