3#include <QExplicitlySharedDataPointer>
9 class UnitRegistration;
115 static cres_qresult<Unit>
bySymbol(
const QString& _symbol);
119 static cres_qresult<Unit>
byName(
const QString& _name);
126 QExplicitlySharedDataPointer<const Private> d;
127 Unit(
const QExplicitlySharedDataPointer<const Private>& _d);
138 using PrefixToScale = std::function<double(Unit::Prefix)>;
140 using PrefixToString = std::function<QString(Unit::Prefix)>;
142 UnitRegistration(
const QString& _symbol,
const QString& _name,
const QString& _uri,
144 const PrefixToString& _to_uri);
145 UnitRegistration(
const QString& _symbol,
const QString& _name,
const QString& _uri,
147 const PrefixToString& _to_uri);
153#define __KNOWCORE_UNIT_ADD_PREFIX(X, I) knowCore::Unit::Prefix::X,
155#define KNOWCORE_UNIT_PREFIX_LIST(...) KNOWCORE_FOREACH(__KNOWCORE_UNIT_ADD_PREFIX, __VA_ARGS__)
170#define KNOWCORE_DEFINE_UNIT(_CPP_SYMBOL_, _SYMBOL_, _NAME_, _URI_, _SCALE_F_, _TO_URI_F_, ...) \
171 knowCore::UnitRegistration __KNOWCORE_UNIQUE_STATIC_NAME(_CPP_SYMBOL_)( \
172 _SYMBOL_, _NAME_, _URI_, {KNOWCORE_UNIT_PREFIX_LIST(__VA_ARGS__)}, _SCALE_F_, _TO_URI_F_)
187#define KNOWCORE_DEFINE_COMPOSITE_UNIT(_CPP_SYMBOL_, _SYMBOL_, _NAME_, _URI_, _SCALE_F_, \
189 knowCore::UnitRegistration __KNOWCORE_UNIQUE_STATIC_NAME(_CPP_SYMBOL_)( \
190 _SYMBOL_, _NAME_, _URI_, {__VA_ARGS__}, _SCALE_F_, _TO_URI_F_)
192#include "Formatter.h"
196 return std::format_to(ctx.out(),
"{}", p.symbol());
static qreal prefixScale(Prefix p)
Definition Unit.cpp:346
cres_qresult< Unit > operator/(const Unit &_unit) const
Definition Unit.cpp:261
static QList< Unit > baseUnits()
Definition Unit.cpp:375
bool operator==(const Unit &_unit) const
Definition Unit.cpp:257
qreal scale() const
Definition Unit.cpp:255
Unit base() const
Definition Unit.cpp:251
static QString prefixName(Prefix p)
Definition Unit.cpp:275
static QString prefixSymbol(Prefix p)
Definition Unit.cpp:309
static cres_qresult< Unit > byName(const QString &_name)
Definition Unit.cpp:389
static cres_qresult< Unit > byUri(const knowCore::Uri &_symbol)
Definition Unit.cpp:401
QString name() const
Definition Unit.cpp:247
cres_qresult< Unit > operator*(const Unit &_unit) const
Definition Unit.cpp:266
QList< Unit > derivedUnits() const
Definition Unit.cpp:253
QString symbol() const
Definition Unit.cpp:245
bool isValid() const
Definition Unit.cpp:259
static cres_qresult< Unit > bySymbol(const QString &_symbol)
Definition Unit.cpp:377
knowCore::Uri uri() const
Definition Unit.cpp:249