Patch from Melchior Franz:
My last patch fixed the initialization problem only for the main branch, but ignored the _MWERKS_ branch. - merged the branches, only the loop head needs different treatment; - don't access n.type before it is initialized (valgrind complaint) - created a constructor; the operator>> wouldn't have initialized all variables in case of a broken default.nav.gz entry, so we would have got a mixture of the broken one and the previous one; in case of the first entry, that would have made nice random values ... ;-) - move the automatic FGNav variable into the loop, so that the gets cleanly constructed for every database entry. - commented out the frequency min/max exploration, which isn't used at all - updated the commented out debug output statements, which were simply copied over from the nav* files, but never adapted (I needed them :-)
This commit is contained in:
parent
1ba6272e3c
commit
50e25151e1
4 changed files with 80 additions and 48 deletions
|
@ -83,7 +83,7 @@ class FGILS {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
inline FGILS(void) {}
|
inline FGILS(void);
|
||||||
inline ~FGILS(void) {}
|
inline ~FGILS(void) {}
|
||||||
|
|
||||||
inline char get_ilstype() const { return ilstype; }
|
inline char get_ilstype() const { return ilstype; }
|
||||||
|
@ -124,6 +124,42 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
inline
|
||||||
|
FGILS::FGILS(void)
|
||||||
|
: ilstype(0),
|
||||||
|
locfreq(0),
|
||||||
|
locheading(0.0),
|
||||||
|
loclat(0.0),
|
||||||
|
loclon(0.0),
|
||||||
|
x(0.0), y(0.0), z(0.0),
|
||||||
|
has_gs(false),
|
||||||
|
gselev(0.0),
|
||||||
|
gsangle(0.0),
|
||||||
|
gslat(0.0),
|
||||||
|
gslon(0.0),
|
||||||
|
gs_x(0.0), gs_y(0.0), gs_z(0.0),
|
||||||
|
has_dme(false),
|
||||||
|
dmelat(0.0),
|
||||||
|
dmelon(0.0),
|
||||||
|
dme_x(0.0), dme_y(0.0), dme_z(0.0),
|
||||||
|
omlat(0.0),
|
||||||
|
omlon(0.0),
|
||||||
|
mmlat(0.0),
|
||||||
|
mmlon(0.0),
|
||||||
|
imlat(0.0),
|
||||||
|
imlon(0.0),
|
||||||
|
trans_ident(""),
|
||||||
|
loc_failed(false),
|
||||||
|
gs_failed(false),
|
||||||
|
dme_failed(false)
|
||||||
|
{
|
||||||
|
ilstypename[0] = '\0';
|
||||||
|
aptcode[0] = '\0';
|
||||||
|
rwyno[0] = '\0';
|
||||||
|
locident[0] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
inline istream&
|
inline istream&
|
||||||
operator >> ( istream& in, FGILS& i )
|
operator >> ( istream& in, FGILS& i )
|
||||||
{
|
{
|
||||||
|
|
|
@ -48,7 +48,6 @@ FGILSList::~FGILSList( void ) {
|
||||||
|
|
||||||
// load the navaids and build the map
|
// load the navaids and build the map
|
||||||
bool FGILSList::init( SGPath path ) {
|
bool FGILSList::init( SGPath path ) {
|
||||||
FGILS ils;
|
|
||||||
|
|
||||||
ilslist.erase( ilslist.begin(), ilslist.end() );
|
ilslist.erase( ilslist.begin(), ilslist.end() );
|
||||||
|
|
||||||
|
@ -63,47 +62,38 @@ bool FGILSList::init( SGPath path ) {
|
||||||
in >> skipeol;
|
in >> skipeol;
|
||||||
in >> skipcomment;
|
in >> skipcomment;
|
||||||
|
|
||||||
|
// double min = 1000000.0;
|
||||||
|
// double max = 0.0;
|
||||||
|
|
||||||
#ifdef __MWERKS__
|
#ifdef __MWERKS__
|
||||||
|
|
||||||
char c = 0;
|
char c = 0;
|
||||||
while ( in.get(c) && c != '\0' && ils.get_ilstype() != '[' ) {
|
while ( in.get(c) && c != '\0' ) {
|
||||||
in.putback(c);
|
in.putback(c);
|
||||||
in >> ils;
|
|
||||||
if ( ils.get_ilstype() != '[' ) {
|
|
||||||
ilslist[ils.get_locfreq()].push_back(ils);
|
|
||||||
}
|
|
||||||
in >> skipcomment;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
double min = 1000000.0;
|
|
||||||
double max = 0.0;
|
|
||||||
|
|
||||||
while ( ! in.eof() ) {
|
while ( ! in.eof() ) {
|
||||||
in >> ils;
|
#endif
|
||||||
|
|
||||||
|
FGILS ils;
|
||||||
|
in >> ils;
|
||||||
if ( ils.get_ilstype() == '[' ) {
|
if ( ils.get_ilstype() == '[' ) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* cout << "id = " << n.get_ident() << endl;
|
/* cout << "typename = " << ils.get_ilstypename() << endl;
|
||||||
cout << " type = " << n.get_type() << endl;
|
cout << " aptcode = " << ils.get_aptcode() << endl;
|
||||||
cout << " lon = " << n.get_lon() << endl;
|
cout << " twyno = " << ils.get_rwyno() << endl;
|
||||||
cout << " lat = " << n.get_lat() << endl;
|
cout << " locfreq = " << ils.get_locfreq() << endl;
|
||||||
cout << " elev = " << n.get_elev() << endl;
|
cout << " locident = " << ils.get_locident() << endl << endl; */
|
||||||
cout << " freq = " << n.get_freq() << endl;
|
|
||||||
cout << " range = " << n.get_range() << endl; */
|
|
||||||
|
|
||||||
ilslist[ils.get_locfreq()].push_back(ils);
|
ilslist[ils.get_locfreq()].push_back(ils);
|
||||||
in >> skipcomment;
|
in >> skipcomment;
|
||||||
|
|
||||||
if ( ils.get_locfreq() < min ) {
|
/* if ( ils.get_locfreq() < min ) {
|
||||||
min = ils.get_locfreq();
|
min = ils.get_locfreq();
|
||||||
}
|
}
|
||||||
if ( ils.get_locfreq() > max ) {
|
if ( ils.get_locfreq() > max ) {
|
||||||
max = ils.get_locfreq();
|
max = ils.get_locfreq();
|
||||||
}
|
} */
|
||||||
|
|
||||||
// update the marker beacon list
|
// update the marker beacon list
|
||||||
if ( fabs(ils.get_omlon()) > SG_EPSILON ||
|
if ( fabs(ils.get_omlon()) > SG_EPSILON ||
|
||||||
|
@ -126,8 +116,6 @@ bool FGILSList::init( SGPath path ) {
|
||||||
// cout << "min freq = " << min << endl;
|
// cout << "min freq = " << min << endl;
|
||||||
// cout << "max freq = " << max << endl;
|
// cout << "max freq = " << max << endl;
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ class FGNav {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
inline FGNav(void) {}
|
inline FGNav(void);
|
||||||
inline ~FGNav(void) {}
|
inline ~FGNav(void) {}
|
||||||
|
|
||||||
inline char get_type() const { return type; }
|
inline char get_type() const { return type; }
|
||||||
|
@ -96,6 +96,24 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
inline
|
||||||
|
FGNav::FGNav(void) :
|
||||||
|
type(0),
|
||||||
|
lon(0.0), lat(0.0),
|
||||||
|
elev(0.0),
|
||||||
|
x(0.0), y(0.0), z(0.0),
|
||||||
|
freq(0),
|
||||||
|
range(0),
|
||||||
|
has_dme(false),
|
||||||
|
ident(""),
|
||||||
|
magvar(0.0),
|
||||||
|
trans_ident(""),
|
||||||
|
nav_failed(false),
|
||||||
|
dme_failed(false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
inline istream&
|
inline istream&
|
||||||
operator >> ( istream& in, FGNav& n )
|
operator >> ( istream& in, FGNav& n )
|
||||||
{
|
{
|
||||||
|
|
|
@ -47,7 +47,6 @@ FGNavList::~FGNavList( void ) {
|
||||||
|
|
||||||
// load the navaids and build the map
|
// load the navaids and build the map
|
||||||
bool FGNavList::init( SGPath path ) {
|
bool FGNavList::init( SGPath path ) {
|
||||||
FGNav n;
|
|
||||||
|
|
||||||
navaids.erase( navaids.begin(), navaids.end() );
|
navaids.erase( navaids.begin(), navaids.end() );
|
||||||
|
|
||||||
|
@ -62,26 +61,19 @@ bool FGNavList::init( SGPath path ) {
|
||||||
in >> skipeol;
|
in >> skipeol;
|
||||||
in >> skipcomment;
|
in >> skipcomment;
|
||||||
|
|
||||||
|
// double min = 100000;
|
||||||
|
// double max = 0;
|
||||||
|
|
||||||
#ifdef __MWERKS__
|
#ifdef __MWERKS__
|
||||||
|
|
||||||
char c = 0;
|
char c = 0;
|
||||||
while ( in.get(c) && c != '\0' && n.get_type() != '[' ) {
|
while ( in.get(c) && c != '\0' ) {
|
||||||
in.putback(c);
|
in.putback(c);
|
||||||
in >> n;
|
|
||||||
if ( n.get_type() != '[' ) {
|
|
||||||
navaids[n.get_freq()].push_back(n);
|
|
||||||
}
|
|
||||||
in >> skipcomment;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
double min = 100000;
|
|
||||||
double max = 0;
|
|
||||||
|
|
||||||
while ( ! in.eof() ) {
|
while ( ! in.eof() ) {
|
||||||
in >> n;
|
#endif
|
||||||
|
|
||||||
|
FGNav n;
|
||||||
|
in >> n;
|
||||||
if ( n.get_type() == '[' ) {
|
if ( n.get_type() == '[' ) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -92,26 +84,24 @@ bool FGNavList::init( SGPath path ) {
|
||||||
cout << " lat = " << n.get_lat() << endl;
|
cout << " lat = " << n.get_lat() << endl;
|
||||||
cout << " elev = " << n.get_elev() << endl;
|
cout << " elev = " << n.get_elev() << endl;
|
||||||
cout << " freq = " << n.get_freq() << endl;
|
cout << " freq = " << n.get_freq() << endl;
|
||||||
cout << " range = " << n.get_range() << endl; */
|
cout << " range = " << n.get_range() << endl << endl; */
|
||||||
|
|
||||||
navaids[n.get_freq()].push_back(n);
|
navaids[n.get_freq()].push_back(n);
|
||||||
in >> skipcomment;
|
in >> skipcomment;
|
||||||
|
|
||||||
if ( n.get_type() != 'N' ) {
|
/* if ( n.get_type() != 'N' ) {
|
||||||
if ( n.get_freq() < min ) {
|
if ( n.get_freq() < min ) {
|
||||||
min = n.get_freq();
|
min = n.get_freq();
|
||||||
}
|
}
|
||||||
if ( n.get_freq() > max ) {
|
if ( n.get_freq() > max ) {
|
||||||
max = n.get_freq();
|
max = n.get_freq();
|
||||||
}
|
}
|
||||||
}
|
} */
|
||||||
}
|
}
|
||||||
|
|
||||||
// cout << "min freq = " << min << endl;
|
// cout << "min freq = " << min << endl;
|
||||||
// cout << "max freq = " << max << endl;
|
// cout << "max freq = " << max << endl;
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue