1
0
Fork 0

Patch from Melchior Franz:

- merged the _MWERKS_ and the generic branch, only the loop head needs
  different treatment
- created a constructor; the operator>> wouldn't have initialized all
  variables in case of a broken default.fix.gz entry, so we would have
  got a mixture of the broken one and the previous one; (valgrind
  complained ...)
- move the automatic FGFix variable into the loop, so that the gets
  cleanly constructed for every database entry.
- don't access fix.type before it is initialized
- updated the commented out debug output statements (they were copied
  over from navlist.cxx but never adapted)
This commit is contained in:
david 2002-03-30 12:50:01 +00:00
parent 57bccb1827
commit ce4ea1d432
2 changed files with 34 additions and 31 deletions

View file

@ -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;
}

View file

@ -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;
}