]> git.mxchange.org Git - flightgear.git/commitdiff
Patch from Melchior Franz:
authordavid <david>
Sat, 30 Mar 2002 12:50:01 +0000 (12:50 +0000)
committerdavid <david>
Sat, 30 Mar 2002 12:50:01 +0000 (12:50 +0000)
- 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)

src/Navaids/fix.hxx
src/Navaids/fixlist.cxx

index 3804fb4b286ce02c246c6e34f15bd5731eb72581..9fd6115c949c526239750b6fe5de8eaa81a648bb 100644 (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;
 }
 
 
index e3a02a84e6402183cfc452ac059d57ea5d78562b..3fa380e4b56191107d0a85e5fecb1e923c112be2 100644 (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);
+#else  
+    while ( ! in.eof() ) {
+#endif
+
+        FGFix fix;
         in >> fix;
-       if ( fix.get_ident() != (string)"[End]" ) {
-           fixlist[fix.get_ident()] = fix;
-       }
-        in >> skipcomment;
-    }
+        if ( fix.get_ident() == "[End]" ) {
+            break;
+        }
 
-#else
+        /* cout << "ident=" << fix.get_ident()
+             << ", lat=" << fix.get_lat()
+             << ", lon=" << fix.get_lon() << endl; */
 
-    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;
-       }
+        fixlist[fix.get_ident()] = fix;
         in >> skipcomment;
     }
-
-#endif
-
+    
     return true;
 }