diff --git a/src/xswiftbus/datarefs.h b/src/xswiftbus/datarefs.h index bdd3a9d28..5b93428c1 100644 --- a/src/xswiftbus/datarefs.h +++ b/src/xswiftbus/datarefs.h @@ -97,6 +97,12 @@ namespace XSwiftBus //! Set the value of the dataref (if it is writable) void set(DataRefType d) { DataRefImpl::implSet(d); } + //! Set as integer, avoids cast warnings such as "possible loss of data" + void setAsInt(int d) { this->set(static_cast(d)); } + + //! Set as integer, avoids cast warnings such as "possible loss of data" + void setAsDouble(double d) { this->set(static_cast(d)); } + //! Get the value of the dataref DataRefType get() const { return DataRefImpl::implGet(); } }; diff --git a/src/xswiftbus/weather.cpp b/src/xswiftbus/weather.cpp index c49165f68..ea2a2503b 100644 --- a/src/xswiftbus/weather.cpp +++ b/src/xswiftbus/weather.cpp @@ -24,10 +24,10 @@ namespace XSwiftBus template void setCloudLayerImpl(T &layer, int base, int tops, int type, int coverage) { - layer.base.set(base); - layer.tops.set(tops); + layer.base.setAsInt(base); + layer.tops.setAsInt(tops); layer.type.set(type); - layer.coverage.set(coverage); + layer.coverage.setAsInt(coverage); } void CWeather::setCloudLayer(int layer, int base, int tops, int type, int coverage) @@ -45,12 +45,12 @@ namespace XSwiftBus template void setWindLayerImpl(T &layer, int altitude, double direction, int speed, int shearDirection, int shearSpeed, int turbulence) { - layer.altitude.set(altitude); + layer.altitude.setAsInt(altitude); layer.direction.set(static_cast(direction)); - layer.speed.set(speed); - layer.shearDirection.set(shearDirection); - layer.shearSpeed.set(shearSpeed); - layer.turbulence.set(turbulence); + layer.speed.setAsInt(speed); + layer.shearDirection.setAsInt(shearDirection); + layer.shearSpeed.setAsInt(shearSpeed); + layer.turbulence.setAsInt(turbulence); } void CWeather::setWindLayer(int layer, int altitude, double direction, int speed, int shearDirection, int shearSpeed, int turbulence) @@ -248,7 +248,6 @@ namespace XSwiftBus invokeQueuedDBusCalls(); return 1; } - } //! \endcond diff --git a/src/xswiftbus/weather.h b/src/xswiftbus/weather.h index 5e8140ac7..2139d900f 100644 --- a/src/xswiftbus/weather.h +++ b/src/xswiftbus/weather.h @@ -59,10 +59,10 @@ namespace XSwiftBus void setVisibility(double visibilityM) { m_visibilityM.set(static_cast(visibilityM)); } //! Set temperature at sea level in degrees C. - void setTemperature(int degreesC) { m_temperatureC.set(degreesC); } + void setTemperature(int degreesC) { m_temperatureC.setAsInt(degreesC); } //! Set dew point at sea level in degrees C. - void setDewPoint(int degreesC) { m_dewPointC.set(degreesC); } + void setDewPoint(int degreesC) { m_dewPointC.setAsInt(degreesC); } //! Set barometric pressure at sea level in inches of mercury. void setQNH(double inHg) { m_qnhInhg.set(static_cast(inHg)); } @@ -77,7 +77,7 @@ namespace XSwiftBus void setTurbulenceRatio(double turbulenceRatio) { m_turbulenceRatio.set(static_cast(turbulenceRatio)); } //! Set runway friction, 0=dry, 1=damp, 2=wet. - void setRunwayFriction(int friction) { m_runwayFriction.set(friction); } + void setRunwayFriction(int friction) { m_runwayFriction.setAsInt(friction); } //! Set a cloud layer. //! \param layer Layer 0, 1, or 2.