void Visit(const AirspaceWarning& as) { if (as.GetWarningState() == AirspaceWarning::WARNING_INSIDE) { ids_inside.checked_append(&as.GetAirspace()); } else if (as.GetWarningState() > AirspaceWarning::WARNING_CLEAR) { ids_warning.checked_append(&as.GetAirspace()); locations.checked_append(as.GetSolution().location); } if (!as.IsAckExpired()) ids_acked.checked_append(&as.GetAirspace()); }
bool AirspaceWarning::operator<(const AirspaceWarning &other) const { // compare bother.ack if (IsAckExpired() != other.IsAckExpired()) // least expired top return IsAckExpired() > other.IsAckExpired(); // compare bother.state if (GetWarningState() != other.GetWarningState()) // most severe top return GetWarningState() > other.GetWarningState(); // state and ack equal, compare bother.time to intersect return GetSolution().elapsed_time < other.GetSolution().elapsed_time; }
WarningItem(const AirspaceWarning &warning) :airspace(&warning.GetAirspace()), state(warning.GetWarningState()), solution(warning.GetSolution()), ack_expired(warning.IsAckExpired()), ack_day(warning.GetAckDay()) {}