diff --git a/src/Navaids/fix.hxx b/src/Navaids/fix.hxx index 3804fb4b2..9fd6115c9 100644 --- a/src/Navaids/fix.hxx +++ b/src/Navaids/fix.hxx @@ -57,7 +57,7 @@ class FGFix { public: - inline FGFix(void) {} + inline FGFix(void); inline ~FGFix(void) {} inline string get_ident() const { return ident; } @@ -68,15 +68,28 @@ public: }; +inline +FGFix::FGFix() + : ident(""), + lon(0.0), + lat(0.0) +{ +} + + inline istream& operator >> ( istream& in, FGFix& f ) { - in >> f.ident >> f.lat >> f.lon; + in >> f.ident; + + if ( f.ident[0] == '[' ) + return in >> skipeol; + + in >> f.lat >> f.lon; // cout << "id = " << f.ident << endl; - // return in >> skipeol; - return in; + return in >> skipeol; } diff --git a/src/Navaids/fixlist.cxx b/src/Navaids/fixlist.cxx index e3a02a84e..3fa380e4b 100644 --- a/src/Navaids/fixlist.cxx +++ b/src/Navaids/fixlist.cxx @@ -47,7 +47,6 @@ FGFixList::~FGFixList( void ) { // load the navaids and build the map bool FGFixList::init( SGPath path ) { - FGFix fix; fixlist.erase( fixlist.begin(), fixlist.end() ); @@ -63,36 +62,27 @@ bool FGFixList::init( SGPath path ) { in >> skipcomment; #ifdef __MWERKS__ - char c = 0; - while ( in.get(c) && c != '\0' && fix.get_ident() != (string)"[End]" ) { + while ( in.get(c) && c != '\0' ) { in.putback(c); - in >> fix; - if ( fix.get_ident() != (string)"[End]" ) { - fixlist[fix.get_ident()] = fix; - } - in >> skipcomment; - } - -#else - - while ( ! in.eof() && fix.get_ident() != (string)"[End]" ) { - in >> fix; - /* cout << "id = " << n.get_ident() << endl; - cout << " type = " << n.get_type() << endl; - cout << " lon = " << n.get_lon() << endl; - cout << " lat = " << n.get_lat() << endl; - cout << " elev = " << n.get_elev() << endl; - cout << " freq = " << n.get_freq() << endl; - cout << " range = " << n.get_range() << endl; */ - if ( fix.get_ident() != (string)"[End]" ) { - fixlist[fix.get_ident()] = fix; - } - in >> skipcomment; - } - +#else + while ( ! in.eof() ) { #endif + FGFix fix; + in >> fix; + if ( fix.get_ident() == "[End]" ) { + break; + } + + /* cout << "ident=" << fix.get_ident() + << ", lat=" << fix.get_lat() + << ", lon=" << fix.get_lon() << endl; */ + + fixlist[fix.get_ident()] = fix; + in >> skipcomment; + } + return true; }