Base: Units: hide internals

This commit is contained in:
Ladislav Michl
2024-07-07 21:09:59 +02:00
committed by Yorik van Havre
parent c4a8bd680a
commit 539b7d43cf
5 changed files with 373 additions and 318 deletions

View File

@@ -31,29 +31,6 @@
namespace Base
{
#define UnitSignatureLengthBits 4
#define UnitSignatureMassBits 4
#define UnitSignatureTimeBits 4
#define UnitSignatureElectricCurrentBits 4
#define UnitSignatureThermodynamicTemperatureBits 4
#define UnitSignatureAmountOfSubstanceBits 4
#define UnitSignatureLuminousIntensityBits 4
#define UnitSignatureAngleBits 4
// Hint:
// https://en.cppreference.com/w/cpp/language/bit_field
// https://stackoverflow.com/questions/33723631/signed-bit-field-in-c14
struct UnitSignature
{
int32_t Length: UnitSignatureLengthBits;
int32_t Mass: UnitSignatureMassBits;
int32_t Time: UnitSignatureTimeBits;
int32_t ElectricCurrent: UnitSignatureElectricCurrentBits;
int32_t ThermodynamicTemperature: UnitSignatureThermodynamicTemperatureBits;
int32_t AmountOfSubstance: UnitSignatureAmountOfSubstanceBits;
int32_t LuminousIntensity: UnitSignatureLuminousIntensityBits;
int32_t Angle: UnitSignatureAngleBits;
};
/**
* The Unit class.
*/
@@ -76,11 +53,11 @@ public:
/// Destruction
~Unit() = default;
/** Operators. */
//@{
inline Unit& operator*=(const Unit& that);
inline Unit& operator/=(const Unit& that);
int operator[](int index) const;
Unit operator*(const Unit&) const;
Unit operator/(const Unit&) const;
bool operator==(const Unit&) const;
@@ -91,12 +68,17 @@ public:
Unit& operator=(const Unit&) = default;
Unit& operator=(Unit&&) = default;
Unit pow(double exp) const;
Unit sqrt() const;
Unit cbrt() const;
//@}
/// get the unit signature
const UnitSignature& getSignature() const
{
return Sig;
}
int length() const;
int mass() const;
int time() const;
int electricCurrent() const;
int thermodynamicTemperature() const;
int amountOfSubstance() const;
int luminousIntensity() const;
int angle() const;
bool isEmpty() const;
QString getString() const;
@@ -177,7 +159,7 @@ public:
//@}
private:
UnitSignature Sig;
uint32_t Val;
};
inline Unit& Unit::operator*=(const Unit& that)