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:
parent
57bccb1827
commit
ce4ea1d432
2 changed files with 34 additions and 31 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue