-public:
- orderingFunctor(FGIdentOrdering* aOrder) :
- mOrdering(aOrder)
- { assert(aOrder); }
-
- bool operator()(const airport_map::value_type& aA, const std::string& aB) const
- {
- return mOrdering->compare(aA.first,aB);
- }
-
- bool operator()(const std::string& aA, const airport_map::value_type& aB) const
- {
- return mOrdering->compare(aA, aB.first);
- }
-
- bool operator()(const airport_map::value_type& aA, const airport_map::value_type& aB) const
- {
- return mOrdering->compare(aA.first, aB.first);
- }
-
-private:
- FGIdentOrdering* mOrdering;
-};
-
-const FGAirport* FGAirportList::findFirstById(const std::string& aIdent, FGIdentOrdering* aOrder)
-{
- airport_map_iterator itr;
- if (aOrder) {
- orderingFunctor func(aOrder);
- itr = std::lower_bound(airports_by_id.begin(),airports_by_id.end(), aIdent, func);
- } else {
- itr = airports_by_id.lower_bound(aIdent);
- }
-
- if (itr == airports_by_id.end()) {
- return NULL;
+ FGPositionedRef r;
+ PortsFilter filter;
+ r = FGPositioned::findNextWithPartialId(r, aIdent, &filter);
+ if (!r) {
+ throw sg_range_exception("No such airport with ident: " + aIdent);