X-Git-Url: http://git.tdb.fi/?p=r2c2.git;a=blobdiff_plain;f=source%2Flibr2c2%2Ftrainroutemetric.cpp;h=7e4d4856fe91a484f794470ce8a2e66a03151b96;hp=a2cffbc896504d7df252905a449c63fbbe11c91b;hb=3dd660ffad729fbd6e75e6401f5c7f27b9013faf;hpb=1c15570729bbce44f0518373ca5bf8bf41cfa3b3 diff --git a/source/libr2c2/trainroutemetric.cpp b/source/libr2c2/trainroutemetric.cpp index a2cffbc..7e4d485 100644 --- a/source/libr2c2/trainroutemetric.cpp +++ b/source/libr2c2/trainroutemetric.cpp @@ -7,16 +7,21 @@ using namespace std; namespace R2C2 { -TrainRouteMetric::TrainRouteMetric(const TrackChain &tc) +TrainRouteMetric::TrainRouteMetric(const TrackChain &tc, TrackChain::Direction dir) { const TrackChain::TrackSet &ctracks = tc.get_tracks(); for(TrackChain::TrackSet::const_iterator i=ctracks.begin(); i!=ctracks.end(); ++i) { - unsigned nls = (*i)->get_n_link_slots(); - for(unsigned j=0; jget_link(j)) - if(!ctracks.count(link)) - goals.push_back(TrackIter(*i, j)); + if(dir==TrackChain::UNSPECIFIED) + { + unsigned nls = (*i)->get_n_link_slots(); + for(unsigned j=0; jget_link(j)) + if(!ctracks.count(link)) + goals.push_back(TrackIter(*i, j)); + } + else if(TrackIter iter = tc.iter_for(**i, reverse_dir)) + goals.push_back(iter); } list queue;