use crate::algorithm::per_call::run_per_call_query;
use crate::cache::RaptorCache;
use crate::ids::StopIdx;
use crate::journey::Journey;
use crate::label::ArrivalTime;
use crate::labels::{ArrivalAndFare, ArrivalAndWalk, FareTable};
use crate::time::{Duration, SecondOfDay};
use crate::timetable::Timetable;
pub fn run_arrival<T: Timetable + ?Sized>(
tt: &T,
origins: &[(StopIdx, Duration)],
targets: &[(StopIdx, Duration)],
max_transfers: u8,
depart: SecondOfDay,
require_wheelchair_accessible: bool,
) -> Vec<Journey<ArrivalTime>> {
let mut cache = RaptorCache::<ArrivalTime>::for_timetable(tt);
run_per_call_query(
tt,
&(),
&mut cache,
usize::from(max_transfers),
depart,
origins,
targets,
require_wheelchair_accessible,
)
}
pub fn run_walk<T: Timetable + ?Sized>(
tt: &T,
origins: &[(StopIdx, Duration)],
targets: &[(StopIdx, Duration)],
max_transfers: u8,
depart: SecondOfDay,
require_wheelchair_accessible: bool,
) -> Vec<Journey<ArrivalAndWalk>> {
let mut cache = RaptorCache::<ArrivalAndWalk>::for_timetable(tt);
run_per_call_query(
tt,
&(),
&mut cache,
usize::from(max_transfers),
depart,
origins,
targets,
require_wheelchair_accessible,
)
}
pub fn run_fare<T: Timetable + ?Sized>(
tt: &T,
fares: &FareTable,
origins: &[(StopIdx, Duration)],
targets: &[(StopIdx, Duration)],
max_transfers: u8,
depart: SecondOfDay,
require_wheelchair_accessible: bool,
) -> Vec<Journey<ArrivalAndFare>> {
let mut cache = RaptorCache::<ArrivalAndFare>::for_timetable(tt);
run_per_call_query(
tt,
fares,
&mut cache,
usize::from(max_transfers),
depart,
origins,
targets,
require_wheelchair_accessible,
)
}