X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fenvironment%2Fmetar.hxx;h=2f2e5d0218c08fb1a3a915ebb0c8c9e08fca154d;hb=a62f11c5509f8d7b2a4c3b587c0e7af8d4f5a39b;hp=e501a0c4611ff8b8c6a235cd0cfb92063d6ef7c6;hpb=c33f66b69185a016c72b50404bfce20db1a7e035;p=simgear.git diff --git a/simgear/environment/metar.hxx b/simgear/environment/metar.hxx index e501a0c4..2f2e5d02 100644 --- a/simgear/environment/metar.hxx +++ b/simgear/environment/metar.hxx @@ -29,18 +29,12 @@ #include -using std::vector; -using std::map; -using std::string; - -const double SGMetarNaN = -1E20; -#define NaN SGMetarNaN - struct Token { const char *id; const char *text; }; +const double SGMetarNaN = -1E20; class SGMetar; @@ -48,7 +42,7 @@ class SGMetarVisibility { friend class SGMetar; public: SGMetarVisibility() : - _distance(NaN), + _distance(SGMetarNaN), _direction(-1), _modifier(EQUALS), _tendency(NONE) {} @@ -70,8 +64,8 @@ public: void set(double dist, int dir = -1, int mod = -1, int tend = -1); inline double getVisibility_m() const { return _distance; } - inline double getVisibility_ft() const { return _distance == NaN ? NaN : _distance * SG_METER_TO_FEET; } - inline double getVisibility_sm() const { return _distance == NaN ? NaN : _distance * SG_METER_TO_SM; } + inline double getVisibility_ft() const { return _distance == SGMetarNaN ? SGMetarNaN : _distance * SG_METER_TO_FEET; } + inline double getVisibility_sm() const { return _distance == SGMetarNaN ? SGMetarNaN : _distance * SG_METER_TO_SM; } inline int getDirection() const { return _direction; } inline int getModifier() const { return _modifier; } inline int getTendency() const { return _tendency; } @@ -93,8 +87,8 @@ public: _deposit_string(0), _extent(-1), _extent_string(0), - _depth(NaN), - _friction(NaN), + _depth(SGMetarNaN), + _friction(SGMetarNaN), _friction_string(0), _comment(0), _wind_shear(false) {} @@ -107,7 +101,7 @@ public: inline double getFriction() const { return _friction; } inline const char *getFrictionString() const { return _friction_string; } inline const char *getComment() const { return _comment; } - inline const bool getWindShear() const { return _wind_shear; } + inline bool getWindShear() const { return _wind_shear; } inline const SGMetarVisibility& getMinVisibility() const { return _min_visibility; } inline const SGMetarVisibility& getMaxVisibility() const { return _max_visibility; } @@ -146,14 +140,14 @@ public: static const char * COVERAGE_BROKEN_STRING; static const char * COVERAGE_OVERCAST_STRING; - SGMetarCloud() : _coverage(COVERAGE_NIL), _altitude(NaN), _type(0), _type_long(0) {} + SGMetarCloud() : _coverage(COVERAGE_NIL), _altitude(SGMetarNaN), _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 double getAltitude_ft() const { return _altitude == SGMetarNaN ? SGMetarNaN : _altitude * SG_METER_TO_FEET; } inline const char *getTypeString() const { return _type; } inline const char *getTypeLongString() const { return _type_long; } @@ -167,8 +161,7 @@ protected: class SGMetar { public: - SGMetar(const string& m, const string& proxy = "", const string& port = "", - const string &auth = "", const time_t time = 0); + SGMetar(const std::string& m); ~SGMetar(); enum ReportType { @@ -189,13 +182,13 @@ public: Weather() { intensity = NIL; vincinity = false; } Intensity intensity; bool vincinity; - vector descriptions; - vector phenomena; + std::vector descriptions; + std::vector phenomena; }; inline const char *getData() const { return _data; } inline const char *getUnusedData() const { return _m; } - inline const bool getProxy() const { return _x_proxy; } + inline bool getProxy() const { return _x_proxy; } inline const char *getId() const { return _icao; } inline int getYear() const { return _year; } inline int getMonth() const { return _month; } @@ -206,14 +199,14 @@ public: inline int getWindDir() const { return _wind_dir; } inline double getWindSpeed_mps() const { return _wind_speed; } - inline double getWindSpeed_kmh() const { return _wind_speed == NaN ? NaN : _wind_speed * SG_MPS_TO_KMH; } - inline double getWindSpeed_kt() const { return _wind_speed == NaN ? NaN : _wind_speed * SG_MPS_TO_KT; } - inline double getWindSpeed_mph() const { return _wind_speed == NaN ? NaN : _wind_speed * SG_MPS_TO_MPH; } + inline double getWindSpeed_kmh() const { return _wind_speed == SGMetarNaN ? SGMetarNaN : _wind_speed * SG_MPS_TO_KMH; } + inline double getWindSpeed_kt() const { return _wind_speed == SGMetarNaN ? SGMetarNaN : _wind_speed * SG_MPS_TO_KT; } + inline double getWindSpeed_mph() const { return _wind_speed == SGMetarNaN ? SGMetarNaN : _wind_speed * SG_MPS_TO_MPH; } inline double getGustSpeed_mps() const { return _gust_speed; } - inline double getGustSpeed_kmh() const { return _gust_speed == NaN ? NaN : _gust_speed * SG_MPS_TO_KMH; } - inline double getGustSpeed_kt() const { return _gust_speed == NaN ? NaN : _gust_speed * SG_MPS_TO_KT; } - inline double getGustSpeed_mph() const { return _gust_speed == NaN ? NaN : _gust_speed * SG_MPS_TO_MPH; } + inline double getGustSpeed_kmh() const { return _gust_speed == SGMetarNaN ? SGMetarNaN : _gust_speed * SG_MPS_TO_KMH; } + inline double getGustSpeed_kt() const { return _gust_speed == SGMetarNaN ? SGMetarNaN : _gust_speed * SG_MPS_TO_KT; } + inline double getGustSpeed_mph() const { return _gust_speed == SGMetarNaN ? SGMetarNaN : _gust_speed * SG_MPS_TO_MPH; } inline int getWindRangeFrom() const { return _wind_range_from; } inline int getWindRangeTo() const { return _wind_range_to; } @@ -224,11 +217,11 @@ public: inline const SGMetarVisibility *getDirVisibility() const { return _dir_visibility; } inline double getTemperature_C() const { return _temp; } - inline double getTemperature_F() const { return _temp == NaN ? NaN : 1.8 * _temp + 32; } + inline double getTemperature_F() const { return _temp == SGMetarNaN ? SGMetarNaN : 1.8 * _temp + 32; } inline double getDewpoint_C() const { return _dewp; } - inline double getDewpoint_F() const { return _dewp == NaN ? NaN : 1.8 * _dewp + 32; } - inline double getPressure_hPa() const { return _pressure == NaN ? NaN : _pressure / 100; } - inline double getPressure_inHg() const { return _pressure == NaN ? NaN : _pressure * SG_PA_TO_INHG; } + inline double getDewpoint_F() const { return _dewp == SGMetarNaN ? SGMetarNaN : 1.8 * _dewp + 32; } + inline double getPressure_hPa() const { return _pressure == SGMetarNaN ? SGMetarNaN : _pressure / 100; } + inline double getPressure_inHg() const { return _pressure == SGMetarNaN ? SGMetarNaN : _pressure * SG_PA_TO_INHG; } inline int getRain() const { return _rain; } inline int getHail() const { return _hail; } @@ -237,13 +230,13 @@ public: double getRelHumidity() const; - 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 std::vector& getClouds() const { return _clouds; } + inline const std::map& getRunways() const { return _runways; } + inline const std::vector& getWeather() const { return _weather; } + inline const std::vector getWeather2() const { return _weather2; } protected: - string _url; + std::string _url; int _grpcount; bool _x_proxy; char *_data; @@ -267,15 +260,15 @@ protected: int _hail; int _snow; bool _cavok; - vector _weather2; + std::vector _weather2; SGMetarVisibility _min_visibility; SGMetarVisibility _max_visibility; SGMetarVisibility _vert_visibility; SGMetarVisibility _dir_visibility[8]; - vector _clouds; - map _runways; - vector _weather; + std::vector _clouds; + std::map _runways; + std::vector _weather; bool scanPreambleDate(); bool scanPreambleTime(); @@ -303,10 +296,7 @@ protected: int scanNumber(char **str, int *num, int min, int max = 0); bool scanBoundary(char **str); const struct Token *scanToken(char **str, const struct Token *list); - char *loadData(const char *id, const string& proxy, const string& port, - const string &auth, time_t time); void normalizeData(); }; -#undef NaN #endif // _METAR_HXX