Base: Units: hide internals
This commit is contained in:
committed by
Yorik van Havre
parent
c4a8bd680a
commit
539b7d43cf
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user