From 66c513c698e8ffdcb68cb90f73688bf68e91394f Mon Sep 17 00:00:00 2001 From: 0penBrain <48731257+0penBrain@users.noreply.github.com> Date: Wed, 8 Dec 2021 11:35:28 +0100 Subject: [PATCH] [Core] Fix Quantity construction with value as double + unit as string --- src/Base/Quantity.cpp | 17 +++++++++++++++-- src/Base/Quantity.h | 3 ++- src/Base/Unit.h | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/Base/Quantity.cpp b/src/Base/Quantity.cpp index f5dbb3a453..446e0dd555 100644 --- a/src/Base/Quantity.cpp +++ b/src/Base/Quantity.cpp @@ -83,10 +83,23 @@ Quantity::Quantity(const Quantity& that) *this = that ; } -Quantity::Quantity(double Value, const Unit& unit) +Quantity::Quantity(double value, const Unit& unit) { this->_Unit = unit; - this->_Value = Value; + this->_Value = value; +} + +Quantity::Quantity(double value, const QString& unit) +{ + try { + auto tmpQty = parse(unit); + this->_Unit = tmpQty.getUnit(); + this->_Value = value * tmpQty.getValue(); + } + catch (const Base::Exception&) { + this->_Value = 0.0; + this->_Unit = Unit(); + } } double Quantity::getValueAs(const Quantity &q)const diff --git a/src/Base/Quantity.h b/src/Base/Quantity.h index 1aee268d6a..cb8c3dbfdd 100644 --- a/src/Base/Quantity.h +++ b/src/Base/Quantity.h @@ -113,7 +113,8 @@ public: /// default constructor Quantity(void); Quantity(const Quantity&); - explicit Quantity(double Value, const Unit& unit=Unit()); + explicit Quantity(double value, const Unit& unit=Unit()); + explicit Quantity(double value, const QString& unit); /// Destruction ~Quantity () {} diff --git a/src/Base/Unit.h b/src/Base/Unit.h index 048b8b3f01..665813ef80 100644 --- a/src/Base/Unit.h +++ b/src/Base/Unit.h @@ -66,7 +66,7 @@ public: Unit(int8_t Length,int8_t Mass=0,int8_t Time=0,int8_t ElectricCurrent=0,int8_t ThermodynamicTemperature=0,int8_t AmountOfSubstance=0,int8_t LuminousIntensity=0,int8_t Angle=0); Unit(void); Unit(const Unit&); - Unit(const QString& expr); + explicit Unit(const QString& expr); /// Destruction ~Unit () {}