]> git.mxchange.org Git - flightgear.git/blobdiff - src/Environment/fgclouds.cxx
don't destroy iterated map entries; delete _menubar; restore closed
[flightgear.git] / src / Environment / fgclouds.cxx
index 9821a92b64e9d8e0d9be959bed5340e36dd1ba99..b3964c2961c987bbc4f5d80c7967465369a3db95 100644 (file)
@@ -74,7 +74,7 @@ void FGClouds::init(void) {
        }
 }
 
-SGNewCloud *FGClouds::buildCloud(SGPropertyNode *cloud_def_root, string name) {
+SGNewCloud *FGClouds::buildCloud(SGPropertyNode *cloud_def_root, const string& name) {
        SGPropertyNode *cld_def=NULL;
 
        cld_def = cloud_def_root->getChild(name.c_str());
@@ -103,7 +103,7 @@ SGNewCloud *FGClouds::buildCloud(SGPropertyNode *cloud_def_root, string name) {
        return cld;
 }
 
-void FGClouds::buildLayer(SGCloudField *layer, string name, double alt, double coverage) {
+void FGClouds::buildLayer(SGCloudField *layer, const string& name, double alt, double coverage) {
        struct {
                string name;
                double count;
@@ -275,7 +275,7 @@ FGClouds::update_metar_properties( FGMetar *m )
     fgSetDouble("/environment/metar/max-visibility-m",
                 m->getMaxVisibility().getVisibility_m() );
 
-    SGMetarVisibility *dirvis = m->getDirVisibility();
+    const SGMetarVisibility *dirvis = m->getDirVisibility();
     for (i = 0; i < 8; i++, dirvis++) {
         const char *min = "/environment/metar/visibility[%d]/min-m";
         const char *max = "/environment/metar/visibility[%d]/max-m";
@@ -306,7 +306,7 @@ FGClouds::update_metar_properties( FGMetar *m )
                 m->getPressure_inHg() );
 
     vector<SGMetarCloud> cv = m->getClouds();
-    vector<SGMetarCloud>::iterator cloud;
+    vector<SGMetarCloud>::const_iterator cloud;
 
     const char *cl = "/environment/clouds/layer[%i]";
     for (i = 0, cloud = cv.begin(); cloud != cv.end(); cloud++, i++) {
@@ -378,7 +378,7 @@ FGClouds::update_env_config ()
 }
 
 
-void FGClouds::setLayer( int iLayer, float alt_ft, string coverage, string layer_type ) {
+void FGClouds::setLayer( int iLayer, float alt_ft, const string& coverage, const string& layer_type ) {
        double coverage_norm = 0.0;
        if( coverage == "few" )
                coverage_norm = 2.0/8.0;        // <1-2
@@ -393,7 +393,7 @@ void FGClouds::setLayer( int iLayer, float alt_ft, string coverage, string layer
        buildLayer(layer3D, layer_type, station_elevation_ft + alt_ft * SG_FEET_TO_METER, coverage_norm);
 }
 
-void FGClouds::buildScenario( string scenario ) {
+void FGClouds::buildScenario( const string& scenario ) {
        string fakeMetar="";
        string station = fgGetString("/environment/metar/station-id", "XXXX");
 
@@ -401,8 +401,8 @@ void FGClouds::buildScenario( string scenario ) {
     if( station == "XXXX" )
         station_elevation_ft = fgGetDouble("/position/ground-elev-m", 0.0);
     else {
-        FGAirport a = globals->get_airports()->search( station );
-        station_elevation_ft = a.getElevation();
+        const FGAirport* a = globals->get_airports()->search( station );
+        station_elevation_ft = (a ? a->getElevation() : 0.0);
     }
 
        for(int iLayer = 0 ; iLayer < thesky->get_cloud_layer_count(); iLayer++) {