]> git.mxchange.org Git - flightgear.git/blobdiff - src/Navaids/navlist.cxx
remove redundant semi-colon
[flightgear.git] / src / Navaids / navlist.cxx
index db55bebbdaaa6c016dfe7e3cfd9c489e0c955867..a145bac0d9d5d7090e4c237597062da2234d6366 100644 (file)
@@ -54,13 +54,18 @@ FGNavList::FGNavList( void )
 
 FGNavList::~FGNavList( void )
 {
+    navaids_by_tile.erase( navaids_by_tile.begin(), navaids_by_tile.end() );
+    nav_list_type navlist = navaids.begin()->second;
+    navaids.erase( navaids.begin(), navaids.end() );
 }
 
 
 // load the navaids and build the map
 bool FGNavList::init()
 {
-    // FIXME: leaves all the individual navaid entries leaked
+    // No need to delete the original navaid structures
+    // since we're using an SGSharedPointer
+    nav_list_type navlist = navaids.begin()->second;
     navaids.erase( navaids.begin(), navaids.end() );
     navaids_by_tile.erase( navaids_by_tile.begin(), navaids_by_tile.end() );
     ident_navaids.erase( ident_navaids.begin(), ident_navaids.end() );
@@ -80,7 +85,7 @@ static void real_add( nav_map_type &navmap, const int master_index,
 // front end for add a marker beacon
 static void tile_add( nav_map_type &navmap, FGNavRecord *n )
 {
-    double diff;
+    double diff = 0;
 
     double lon = n->get_lon();
     double lat = n->get_lat();
@@ -243,12 +248,13 @@ FGNavRecord *FGNavList::findByIdentAndFreq( const char* ident, const double freq
         // sometimes there can be duplicated idents.  If a freq is
         // specified, use it to refine the search.
         int f = (int)(freq*100.0 + 0.5);
-        for ( unsigned int i = 0; i < stations.size(); ++i ) {
-            if ( f == stations[i]->get_freq() ) {
-                return stations[i];
+        nav_list_const_iterator it, end = stations.end();
+        for ( it = stations.begin(); it != end; ++it ) {
+            if ( f == (*it)->get_freq() ) {
+                return (*it);
             }
         }
-    } else if (stations.size()) {
+    } else if (!stations.empty()) {
         return stations[0];
     }
 
@@ -266,10 +272,13 @@ FGNavRecord *FGNavList::findNavFromList( const SGVec3d &aircraft,
     double min_dist
         = FG_NAV_MAX_RANGE*SG_NM_TO_METER*FG_NAV_MAX_RANGE*SG_NM_TO_METER;
 
+    nav_list_const_iterator it;
+    nav_list_const_iterator end = stations.end();
     // find the closest station within a sensible range (FG_NAV_MAX_RANGE)
-    for ( unsigned int i = 0; i < stations.size(); ++i ) {
+    for ( it = stations.begin(); it != end; ++it ) {
+        FGNavRecord *station = *it;
         // cout << "testing " << current->get_ident() << endl;
-        d2 = distSqr(stations[i]->get_cart(), aircraft);
+        d2 = distSqr(station->get_cart(), aircraft);
 
         // cout << "  dist = " << sqrt(d)
         //      << "  range = " << current->get_range() * SG_NM_TO_METER
@@ -285,19 +294,19 @@ FGNavRecord *FGNavList::findNavFromList( const SGVec3d &aircraft,
         // placed from each other.  (Do the expensive check only for
         // directional atennas and only when there is a chance it is
         // the closest station.)
+        int type = station->get_type();
         if ( d2 < min_dist &&
-             (stations[i]->get_type() == 4 || stations[i]->get_type() == 5 ||
-              stations[i]->get_type() == 6 || stations[i]->get_type() == 12 ||
-              stations[i]->get_type() == 13) )
+             (type == 4 || type == 5 || type == 6 || type == 12 || type == 13) )
         {
             double hdg_deg = 0.0;
-            if ( stations[i]->get_type() == 4 || stations[i]->get_type() == 5 ){
-                hdg_deg = stations[i]->get_multiuse();
-            } else if ( stations[i]->get_type() == 6 ) {
-                int tmp = (int)(stations[i]->get_multiuse() / 1000.0);
-                hdg_deg = stations[i]->get_multiuse() - (tmp * 1000);
-            } else if ( stations[i]->get_type() == 12 ||
-                        stations[i]->get_type() == 13 ) {
+            if ( type == 4 || type == 5 ){
+                hdg_deg = station->get_multiuse();
+
+            } else if ( type == 6 ) {
+                int tmp = (int)(station->get_multiuse() / 1000.0);
+                hdg_deg = station->get_multiuse() - (tmp * 1000);
+
+            } else if ( type == 12 || type == 13 ) {
                 // oops, Robin's data format doesn't give us the
                 // needed information to compute a heading for a DME
                 // transmitter.  FIXME Robin!
@@ -305,9 +314,8 @@ FGNavRecord *FGNavList::findNavFromList( const SGVec3d &aircraft,
 
             double az1 = 0.0, az2 = 0.0, s = 0.0;
             SGGeod geod = SGGeod::fromCart(aircraft);
-            geo_inverse_wgs_84( geod, stations[i]->get_pos(),
-                                &az1, &az2, &s);
-            az1 = az1 - stations[i]->get_multiuse();
+            geo_inverse_wgs_84( geod, station->get_pos(), &az1, &az2, &s);
+            az1 = az1 - station->get_multiuse();
             if ( az1 >  180.0) az1 -= 360.0;
             if ( az1 < -180.0) az1 += 360.0;
             // penalize opposite facing stations by adding 5000 meters
@@ -321,7 +329,7 @@ FGNavRecord *FGNavList::findNavFromList( const SGVec3d &aircraft,
 
         if ( d2 < min_dist ) {
             min_dist = d2;
-            nav = stations[i];
+            nav = station;
         }
     }
 
@@ -398,7 +406,7 @@ FGNavRecord *FGNavList::findStationByFreq( double freq )
 
     SG_LOG( SG_INSTR, SG_DEBUG, "findStationByFreq " << freq << " size " << stations.size()  );
 
-    if (stations.size()) {
+    if (!stations.empty()) {
         return stations[0];
     }
     return NULL;
@@ -438,7 +446,7 @@ FGTACANRecord *FGTACANList::findByChannel( const string& channel )
     const tacan_list_type& stations = ident_channels[channel];
     SG_LOG( SG_INSTR, SG_DEBUG, "findByChannel " << channel<< " size " << stations.size() );
 
-    if (stations.size()) {
+    if (!stations.empty()) {
         return stations[0];
     }
     return NULL;