+const TrainRouteMetric &TrainRouter::get_metric(int index) const
+{
+ if(!destination)
+ throw logic_error("no metrics");
+ else if(update_pending)
+ throw logic_error("metrics are stale");
+
+ if(index<0)
+ return *metrics.front();
+ else if(static_cast<unsigned>(index)>=waypoints.size())
+ throw out_of_range("TrainRouter::get_metric");
+ else
+ return *metrics[index+1];
+}
+