14 #include <QtCore/QString>
15 #include <QtCore/QStringList>
16 #include <QtCore/QHash>
17 #include <QtCore/QList>
88 virtual double metersToLocal(
double meters) = 0;
91 virtual double localToMeters(
double local) = 0;
306 myFcn(fcn), myReverse(reverse) {};
308 myFcn(orig.myFcn), myReverse(orig.myReverse) {};
318 DtUnit(
const QString& m,
const QString& t);
322 virtual QString stringRep()
const;
328 const QString&
time()
const {
return myTime; };
330 bool isValid()
const {
return (myMeasurement.length() || myTime.length()); };
333 static QString measurementTitle(
const DtUnit& u);
334 static void registerMeasurementTitle(
const QString& m,
const QString& t,
const QString& v);
338 static QString unitDisplayTitle(
const QString& u);
339 static void registerUnitDisplayTitle(
const QString& m,
const QString& t);
342 static QString unitForDisplayTitle(
const QString&);
344 static const QHash<QString, QString>& unitDisplayTitles();
358 virtual double convert(
double,
bool reverse =
false)
const {
return 0; };
370 virtual double convert(
double,
bool reverse =
false)
const;
379 virtual double convert(
double,
bool reverse =
false)
const;
388 virtual double convert(
double,
bool reverse =
false)
const;
396 virtual double convert(
double,
bool reverse =
false)
const;
404 virtual double convert(
double,
bool reverse =
false)
const;
412 virtual double convert(
double,
bool reverse =
false)
const;
420 virtual double convert(
double,
bool reverse =
false)
const;
428 virtual double convert(
double,
bool reverse =
false)
const;
436 virtual double convert(
double,
bool reverse =
false)
const;
444 virtual double convert(
double,
bool reverse =
false)
const;
454 virtual double convert(
double,
bool reverse =
false)
const;
476 virtual void registerUnitConversion(
const QString& from,
const QString& to,
DtConverterFcn fcn,
477 const QString& title =
"",
const QString& unitTitle =
"",
bool addTimeUnits =
false);
483 virtual void registerConversion(
const QString& from,
const QString& to,
DtConverterFcn);
488 virtual DtUnit parse(
const QString&)
const;
489 virtual bool canConvert(
const DtUnit&,
const DtUnit&)
const;
490 virtual double convert(
const DtUnit& from,
const DtUnit& to,
double val,
bool& valid,
bool reverse =
false)
const;
491 virtual double convert(DtConversionType,
const DtUnit& from,
const DtUnit& to,
double val,
bool& valid,
492 bool reverse =
false)
const;
493 virtual double convertReverse(
const DtUnit& from,
const DtUnit& to,
double val,
bool& valid)
const;
495 virtual void findPath(DtConversionType type,
const DtUnit& from,
const DtUnit& to,
const QHash<QString, DtConverterClass>&,
500 virtual double convertSourceToDestination(
double val,
const QString& source,
const QString& destination)
const;
503 virtual double convertDestinationToSource(
double val,
const QString& source,
const QString& destination)
const;
505 virtual QString unitTitle(
const QString& u)
const;
508 virtual void registerConverters();
509 virtual void registerConversion(
const QString& from,
const QString& to,
DtConverterFcn,
bool);