From: Torsten Dreyer Date: Sun, 12 Dec 2010 21:18:10 +0000 (+0100) Subject: metar: add string constants for cloud coverages X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=6c789f71655177b2a3314b9865d7ed00976dba18;p=simgear.git metar: add string constants for cloud coverages --- diff --git a/simgear/environment/metar.cxx b/simgear/environment/metar.cxx index 949995b2..569f0261 100644 --- a/simgear/environment/metar.cxx +++ b/simgear/environment/metar.cxx @@ -1212,6 +1212,22 @@ void SGMetarCloud::set(double alt, Coverage cov) _coverage = cov; } +SGMetarCloud::Coverage SGMetarCloud::getCoverage( const std::string & coverage ) +{ + if( coverage == "clear" ) return COVERAGE_CLEAR; + if( coverage == "few" ) return COVERAGE_FEW; + if( coverage == "scattered" ) return COVERAGE_SCATTERED; + if( coverage == "broken" ) return COVERAGE_BROKEN; + if( coverage == "overcast" ) return COVERAGE_OVERCAST; + return COVERAGE_NIL; +} + +const char * SGMetarCloud::COVERAGE_NIL_STRING = "nil"; +const char * SGMetarCloud::COVERAGE_CLEAR_STRING = "clear"; +const char * SGMetarCloud::COVERAGE_FEW_STRING = "few"; +const char * SGMetarCloud::COVERAGE_SCATTERED_STRING = "scattered"; +const char * SGMetarCloud::COVERAGE_BROKEN_STRING = "broken"; +const char * SGMetarCloud::COVERAGE_OVERCAST_STRING = "overcast"; void SGMetarVisibility::set(double dist, int dir, int mod, int tend) { diff --git a/simgear/environment/metar.hxx b/simgear/environment/metar.hxx index 18837284..e501a0c4 100644 --- a/simgear/environment/metar.hxx +++ b/simgear/environment/metar.hxx @@ -130,27 +130,35 @@ protected: class SGMetarCloud { friend class SGMetar; public: - enum Coverage { - COVERAGE_NIL = -1, - COVERAGE_CLEAR = 0, - COVERAGE_FEW = 1, - COVERAGE_SCATTERED = 2, - COVERAGE_BROKEN = 3, - COVERAGE_OVERCAST = 4 - }; + enum Coverage { + COVERAGE_NIL = -1, + COVERAGE_CLEAR = 0, + COVERAGE_FEW = 1, + COVERAGE_SCATTERED = 2, + COVERAGE_BROKEN = 3, + COVERAGE_OVERCAST = 4 + }; + + static const char * COVERAGE_NIL_STRING; + static const char * COVERAGE_CLEAR_STRING; + static const char * COVERAGE_FEW_STRING; + static const char * COVERAGE_SCATTERED_STRING; + static const char * COVERAGE_BROKEN_STRING; + static const char * COVERAGE_OVERCAST_STRING; SGMetarCloud() : _coverage(COVERAGE_NIL), _altitude(NaN), _type(0), _type_long(0) {} void set(double alt, Coverage cov = COVERAGE_NIL ); inline Coverage getCoverage() const { return _coverage; } + static Coverage getCoverage( const std::string & coverage ); inline double getAltitude_m() const { return _altitude; } inline double getAltitude_ft() const { return _altitude == NaN ? NaN : _altitude * SG_METER_TO_FEET; } inline const char *getTypeString() const { return _type; } inline const char *getTypeLongString() const { return _type_long; } protected: - Coverage _coverage; // quarters: 0 -> clear ... 4 -> overcast + Coverage _coverage; // quarters: 0 -> clear ... 4 -> overcast double _altitude; // 1000 m const char *_type; // CU const char *_type_long; // cumulus @@ -170,20 +178,20 @@ public: RTD }; - enum Intensity { - NIL = 0, - LIGHT = 1, - MODERATE = 2, - HEAVY = 3 - }; - - struct Weather { - Weather() { intensity = NIL; vincinity = false; } - Intensity intensity; - bool vincinity; - vector descriptions; - vector phenomena; - }; + enum Intensity { + NIL = 0, + LIGHT = 1, + MODERATE = 2, + HEAVY = 3 + }; + + struct Weather { + Weather() { intensity = NIL; vincinity = false; } + Intensity intensity; + bool vincinity; + vector descriptions; + vector phenomena; + }; inline const char *getData() const { return _data; } inline const char *getUnusedData() const { return _m; } @@ -232,7 +240,7 @@ public: inline const vector& getClouds() const { return _clouds; } inline const map& getRunways() const { return _runways; } inline const vector& getWeather() const { return _weather; } - inline const vector getWeather2() const { return _weather2; } + inline const vector getWeather2() const { return _weather2; } protected: string _url; @@ -259,7 +267,7 @@ protected: int _hail; int _snow; bool _cavok; - vector _weather2; + vector _weather2; SGMetarVisibility _min_visibility; SGMetarVisibility _max_visibility;