X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FNavaids%2Ffixlist.cxx;h=c51534b1dd8c57095d2cc37f2090e3687238de45;hb=4a79d82ba62fa4e5be759fa0fc4b20220e8da303;hp=31537e1d2b3dd898cd916a14fa64f5fb93a3255c;hpb=be703a92b400344740b909e5c667a8dadd2067d6;p=flightgear.git diff --git a/src/Navaids/fixlist.cxx b/src/Navaids/fixlist.cxx index 31537e1d2..c51534b1d 100644 --- a/src/Navaids/fixlist.cxx +++ b/src/Navaids/fixlist.cxx @@ -2,7 +2,7 @@ // // Written by Curtis Olson, started April 2000. // -// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org +// Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as @@ -16,7 +16,7 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ @@ -32,9 +32,6 @@ #include "fixlist.hxx" -FGFixList *current_fixlist; - - // Constructor FGFixList::FGFixList( void ) { } @@ -47,7 +44,6 @@ FGFixList::~FGFixList( void ) { // load the navaids and build the map bool FGFixList::init( SGPath path ) { - fixlist.erase( fixlist.begin(), fixlist.end() ); sg_gzifstream in( path.str() ); @@ -56,10 +52,11 @@ bool FGFixList::init( SGPath path ) { exit(-1); } - // read in each line of the file - + // toss the first two lines of the file in >> skipeol; - in >> skipcomment; + in >> skipeol; + + // read in each remaining line of the file #ifdef __MWERKS__ char c = 0; @@ -71,7 +68,7 @@ bool FGFixList::init( SGPath path ) { FGFix fix; in >> fix; - if ( fix.get_ident() == "[End]" ) { + if ( fix.get_lat() > 95.0 ) { break; } @@ -82,7 +79,6 @@ bool FGFixList::init( SGPath path ) { fixlist[fix.get_ident()] = fix; in >> skipcomment; } - return true; } @@ -119,3 +115,18 @@ bool FGFixList::query_and_offset( const string& ident, double lon, double lat, *dist = s; return true; } + +const FGFix* FGFixList::findFirstByIdent( const string& ident, bool exact) +{ + fix_map_iterator itr; + if(exact) { + itr = fixlist.find(ident); + } else { + itr = fixlist.lower_bound(ident); + } + if(itr == fixlist.end()) { + return(NULL); + } else { + return(&(itr->second)); + } +}