7 #include <QRegularExpression>
24 namespace swift::misc::physical_quantities
39 const auto match = regex.match(value);
40 if (!match.hasMatch()) {
return v; }
47 const double numberD =
parseNumber(number, success, mode);
48 if (!success) {
return v; }
50 if (CMeasurementUnit::isValidUnitSymbol<CAccelerationUnit>(unit))
52 const CAcceleration pq(numberD, CMeasurementUnit::unitFromSymbol<CAccelerationUnit>(unit,
false));
56 if (CMeasurementUnit::isValidUnitSymbol<CAngleUnit>(unit))
58 const CAngle pq(numberD, CMeasurementUnit::unitFromSymbol<CAngleUnit>(unit,
false));
62 if (CMeasurementUnit::isValidUnitSymbol<CFrequencyUnit>(unit))
64 const CFrequency pq(numberD, CMeasurementUnit::unitFromSymbol<CFrequencyUnit>(unit,
false));
68 if (CMeasurementUnit::isValidUnitSymbol<CLengthUnit>(unit))
70 const CLength pq(numberD, CMeasurementUnit::unitFromSymbol<CLengthUnit>(unit,
false));
74 if (CMeasurementUnit::isValidUnitSymbol<CMassUnit>(unit))
76 const CMass pq(numberD, CMeasurementUnit::unitFromSymbol<CMassUnit>(unit,
false));
80 if (CMeasurementUnit::isValidUnitSymbol<CPressureUnit>(unit))
82 const CPressure pq(numberD, CMeasurementUnit::unitFromSymbol<CPressureUnit>(unit,
false));
86 if (CMeasurementUnit::isValidUnitSymbol<CSpeedUnit>(unit))
88 const CSpeed pq(numberD, CMeasurementUnit::unitFromSymbol<CSpeedUnit>(unit,
false));
92 if (CMeasurementUnit::isValidUnitSymbol<CTimeUnit>(unit))
94 const CTime pq(numberD, CMeasurementUnit::unitFromSymbol<CTimeUnit>(unit,
false));
98 if (CMeasurementUnit::isValidUnitSymbol<CTemperatureUnit>(unit))
100 const CTemperature pq(numberD, CMeasurementUnit::unitFromSymbol<CTemperatureUnit>(unit,
false));
114 numberD = number.
toDouble(&success);
117 default: qFatal(
"Wrong mode");
break;
Wrapper around QVariant which provides transparent access to CValueObject methods of the contained ob...
static CVariant from(T &&value)
Synonym for fromValue().
Physical unit angle (radians, degrees)
Physical unit length (length)
static CVariant parseToVariant(const QString &value, SeparatorMode mode=SeparatorQtDefault)
Parse a string value like "100m", "10.3Mhz".
SeparatorMode
Number separators / group separators.
@ SeparatorLocale
depending on QLocale, e.g.
@ SeparatorBestGuess
try to figure out
@ SeparatorQtDefault
100000.00 no group separator
QString convertToQString(bool i18n=false) const
Cast as QString.
static double parseNumber(const QString &number, bool &success, SeparatorMode mode=SeparatorBestGuess)
Locale aware parsing.
Physical unit temperature.
double toDouble(QStringView s, bool *ok) const const
bool isEmpty() const const
QString & replace(QChar before, QChar after, Qt::CaseSensitivity cs)
QString simplified() const const
double toDouble(bool *ok) const const
QString trimmed() const const
#define SWIFT_DEFINE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template definition of mixins for a CValueObject subclass.