]> git.mxchange.org Git - flightgear.git/blobdiff - src/Navaids/navdb.cxx
James Turner:
[flightgear.git] / src / Navaids / navdb.cxx
index 60aac0c3ea24724033861f559028feb6968eb39e..089639f042500403c325292984aa0e6a3fd8c61a 100644 (file)
 //
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 //
 // $Id$
 
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
 
 #include <simgear/compiler.h>
 
-#include STL_STRING
+#include <string>
 
 #include <simgear/debug/logstream.hxx>
+#include <simgear/math/sg_geodesy.hxx>
 
 #include <Airports/runways.hxx>
 #include <Airports/simple.hxx>
@@ -34,7 +38,7 @@
 #include "navrecord.hxx"
 #include "navdb.hxx"
 
-SG_USING_STD( string );
+using std::string;
 
 
 // load and initialize the navigational databases
@@ -70,18 +74,11 @@ bool fgNavDBInit( FGAirportList *airports,
     in >> skipeol;
     in >> skipeol;
 
-
-#ifdef __MWERKS__
-    char c = 0;
-    while ( in.get(c) && c != '\0'  ) {
-        in.putback(c);
-#else
     while ( ! in.eof() ) {
-#endif
-
         FGNavRecord *r = new FGNavRecord;
         in >> (*r);
         if ( r->get_type() > 95 ) {
+            delete r;
             break;
         }
 
@@ -119,11 +116,11 @@ bool fgNavDBInit( FGAirportList *airports,
         {
             // Marker Beacon = 7,8,9
             mkrlist->add( r );
-        } else if ( r->get_type() == 12 ) {
-            // DME=12
+        } else if ( r->get_type() == 12 || r->get_type() == 13) {
+            // DME with ILS=12; standalone DME=13
             string str1( r->get_name() );
-            unsigned int loc1= str1.find( "TACAN", 0 );
-            unsigned int loc2 = str1.find( "VORTAC", 0 );
+            string::size_type loc1= str1.find( "TACAN", 0 );
+            string::size_type loc2 = str1.find( "VORTAC", 0 );
                        
             if( loc1 != string::npos || loc2 != string::npos ){
                  //cout << " name = " << r->get_name() ;
@@ -146,7 +143,7 @@ bool fgNavDBInit( FGAirportList *airports,
     path.append( "Navaids/carrier_nav.dat" );
     
     file = path.str();
-    SG_LOG( SG_GENERAL, SG_ALERT, "opening file: " << path.str() );
+    SG_LOG( SG_GENERAL, SG_INFO, "opening file: " << path.str() );
     
     sg_gzifstream incarrier( path.str() );
     
@@ -159,14 +156,7 @@ bool fgNavDBInit( FGAirportList *airports,
     //incarrier >> skipeol;
     //incarrier >> skipeol;
     
-#ifdef __MWERKS__
-    char c = 0;
-    while ( incarrier.get(c) && c != '\0'  ) {
-        incarrier.putback(c);
-#else
     while ( ! incarrier.eof() ) {
-#endif
-        
         FGNavRecord *r = new FGNavRecord;
         incarrier >> (*r);
         carrierlist->add ( r );
@@ -187,9 +177,8 @@ bool fgNavDBInit( FGAirportList *airports,
     path = globals->get_fg_root();
     path.append( "Navaids/TACAN_freq.dat" );
     
-    file = path.str();
-    cout << file << endl;
-    //
+    SG_LOG( SG_GENERAL, SG_INFO, "opening file: " << path.str() );
+        
     sg_gzifstream inchannel( path.str() );
     
     if ( !inchannel.is_open() ) {
@@ -199,15 +188,7 @@ bool fgNavDBInit( FGAirportList *airports,
     
     // skip first line
     inchannel >> skipeol;
-    
-#ifdef __MWERKS__
-    char c = 0;
-    while ( inchannel.get(c) && c != '\0'  ) {
-        in.putback(c);
-#else
     while ( ! inchannel.eof() ) {
-#endif
-
         FGTACANRecord *r = new FGTACANRecord;
         inchannel >> (*r);
         channellist->add ( r );