22
33#include < ranges>
44
5- // #define trace(...) fmt::println(__VA_ARGS__)
6- #define trace (...)
5+ #define trace (...) fmt::println(__VA_ARGS__)
6+ // #define trace(...)
77
88namespace nigiri ::loader::gtfs {
99
@@ -12,6 +12,9 @@ void build_seated_trips(timetable& tt,
1212 expanded_seated& seated,
1313 std::function<void (utc_trip&&)> const & consumer) {
1414 [[maybe_unused]] auto const base = tt.internal_interval_days ().from_ ;
15+ [[maybe_unused]] auto const display_name = [&](gtfs_trip_idx_t const t) {
16+ return tt.trip_display_names_ [trip_data.get (t).trip_idx_ ].view ();
17+ };
1518
1619 auto const is_empty = [](utc_trip const & x) {
1720 return x.utc_traffic_days_ .none ();
@@ -59,8 +62,7 @@ void build_seated_trips(timetable& tt,
5962 // Find first trip with unprocessed/remaining traffic days.
6063 auto const non_empty_it = utl::find_if (remaining, is_not_empty);
6164 assert (non_empty_it != end (remaining));
62- trace (" ORIGIN {}" ,
63- trip_data.get (non_empty_it->trips_ .front ()).display_name ());
65+ trace (" ORIGIN {}" , display_name (non_empty_it->trips_ .front ()));
6466
6567 // ===============================
6668 // PART 1: Find maximum component.
@@ -83,7 +85,7 @@ void build_seated_trips(timetable& tt,
8385 auto & current = remaining[current_idx];
8486 q.erase (curr_it);
8587
86- trace (" \n EXTRACT {}, offset={}" , get_trp ( current_idx). display_name ( ),
88+ trace (" \n EXTRACT {}, offset={}" , display_name ( get_trp_idx ( current_idx)),
8789 offset);
8890
8991 // Intersect traffic days.
@@ -117,7 +119,7 @@ void build_seated_trips(timetable& tt,
117119 trace (
118120 " EXPAND OUT: {}, day_change_offset={} (curr_dep={}, "
119121 " curr_arr={}, next_dep={}) => {}" ,
120- trip_data. get (out_trp). display_name (),
122+ display_name (out_trp ),
121123 get_day_change_offset (current_idx, out),
122124 first_dep (current_idx), last_arr (current_idx), first_dep (out),
123125 o);
@@ -133,9 +135,9 @@ void build_seated_trips(timetable& tt,
133135 trace (
134136 " EXPAND IN: {}, day_change_offset={} (pred_dep={}, "
135137 " pred_arr={}, curr_dep={}) => {}" ,
136- trip_data. get (in_trp). display_name ( ),
137- get_day_change_offset (in, current_idx), first_dep (in ),
138- last_arr (current_idx), first_dep (current_idx), o);
138+ display_name (in_trp), get_day_change_offset (in, current_idx ),
139+ first_dep (in), last_arr ( current_idx), first_dep (current_idx ),
140+ o);
139141 q.emplace (in, o);
140142 }
141143 }
@@ -165,8 +167,8 @@ void build_seated_trips(timetable& tt,
165167 std::pair<utc_trip /* concatenated transport */ ,
166168 int /* transport offset relative to component */ >>{};
167169 for (auto const & [remaining_idx, offset] : component) {
168- [[maybe_unused]] auto const & trp = get_trp (remaining_idx);
169- trace (" -> {}: {} on {}" , trp. display_name (), offset,
170+ [[maybe_unused]] auto const & trp = get_trp_idx (remaining_idx);
171+ trace (" -> {}: {} on {}" , display_name (trp ), offset,
170172 day_list{shift (component_traffic_days, offset), base});
171173 auto const is_entry = std::ranges::empty (
172174 get_trp (remaining_idx).seated_in_ |
@@ -178,7 +180,7 @@ void build_seated_trips(timetable& tt,
178180 shift (component_traffic_days, offset);
179181 assert ((remaining.at (remaining_idx).utc_traffic_days_ &
180182 transport_traffic_days) == transport_traffic_days);
181- trace (" -> PUSH {}, on={} (transport_offset={})" , trp. display_name (),
183+ trace (" -> PUSH {}, on={} (transport_offset={})" , display_name (trp ),
182184 day_list{transport_traffic_days, base}, -offset);
183185 auto start = remaining.at (remaining_idx);
184186 start.utc_traffic_days_ = transport_traffic_days;
@@ -214,7 +216,7 @@ void build_seated_trips(timetable& tt,
214216 std::next (begin (next_stop_seq)),
215217 end (next_stop_seq));
216218 trace (" append {} (offset={}): {}" ,
217- get_trp ( remaining_idx). display_name ( ), offset,
219+ display_name ( get_trp_idx ( remaining_idx)), offset,
218220 copy.utc_times_ | std::views::transform (std::identity{}));
219221 assert (std::ranges::is_sorted (copy.utc_times_ ));
220222 q.emplace_back (std::move (copy), transport_offset);
@@ -225,15 +227,16 @@ void build_seated_trips(timetable& tt,
225227 if (!has_next) { // Terminal?
226228 // No outgoing seated-transfer *in this component*.
227229 // Pass finished transport to consumer.
228- trace (" adding trips={}, stops={}, times={}" ,
229- curr.trips_ | std::views::transform ([&](gtfs_trip_idx_t const t) {
230- return trip_data.get (t).display_name ();
231- }),
232- curr.stop_seq_ |
233- std::views::transform ([&](stop::value_type const & s) {
234- return location{tt, stop{s}.location_idx ()};
235- }),
236- curr.utc_times_ | std::views::transform (std::identity{}));
230+ trace (
231+ " adding trips={}, stops={}, times={}" ,
232+ curr.trips_ | std::views::transform ([&](gtfs_trip_idx_t const t) {
233+ return tt.trip_display_names_ [trip_data.get (t).trip_idx_ ].view ();
234+ }),
235+ curr.stop_seq_ |
236+ std::views::transform ([&](stop::value_type const & s) {
237+ return nigiri::location{tt, stop{s}.location_idx ()};
238+ }),
239+ curr.utc_times_ | std::views::transform (std::identity{}));
237240 consumer (std::move (curr));
238241 }
239242 }
0 commit comments