void AirspaceNearestSort::visit_sorted(const Airspaces &airspaces, AirspaceVisitor &visitor, const fixed range) { populate_queue(airspaces, range); while (!m_q.empty()) { visitor.Visit(*m_q.top().second.second.get_airspace()); m_q.pop(); } }
void Airspaces::VisitInside(const GeoPoint &loc, AirspaceVisitor& visitor) const { if (empty()) return; // nothing to do Airspace bb_target(loc, task_projection); AirspaceVector vectors; airspace_tree.find_within_range(bb_target, 0, std::back_inserter(vectors)); for (auto &v : vectors) if (v.IsInside(loc)) visitor.Visit(v); }
void Airspaces::visit_inside(const GeoPoint &loc, AirspaceVisitor& visitor) const { if (empty()) return; // nothing to do Airspace bb_target(loc, task_projection); AirspaceVector vectors; airspace_tree.find_within_range(bb_target, 0, std::back_inserter(vectors)); for (auto v = vectors.begin(); v != vectors.end(); ++v) { if ((*v).inside(loc)) visitor.Visit(*v); } }
void Airspaces::VisitInside(const GeoPoint &loc, AirspaceVisitor &visitor) const { if (IsEmpty()) // nothing to do return; Airspace bb_target(loc, task_projection); std::function<void(const Airspace &)> visitor2 = [&loc, &visitor](const Airspace &v){ if (v.IsInside(loc)) visitor.Visit(v); }; airspace_tree.visit_within_range(bb_target, 0, visitor2); }
void visit_inside(AirspaceVisitor &visitor) const { for (auto it = ids_inside.begin(), end = ids_inside.end(); it != end; ++it) if (!is_acked(**it)) visitor.Visit(**it); }
void visit_warned(AirspaceVisitor &visitor) const { for (auto it = ids_warning.begin(), end = ids_warning.end(); it != end; ++it) if (!is_acked(**it)) visitor.Visit(**it); }
void operator()(Airspace as) { AbstractAirspace &aas = *as.get_airspace(); if (predicate->condition(aas)) visitor->Visit(as); }
void operator()(Airspace as) { AbstractAirspace &aas = *as.GetAirspace(); if (predicate->operator()(aas)) visitor->Visit(as); }
void VisitWarnings(AirspaceVisitor &visitor) const { for (auto it = ids_warning.begin(), end = ids_warning.end(); it != end; ++it) if (!IsAcked(**it)) visitor.Visit(**it); }