mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-29 04:35:41 +08:00
Using friend function comparison and arithmetic operators, for parameter symmetry.
This commit is contained in:
@@ -265,10 +265,10 @@ namespace BlackMisc
|
|||||||
void detach() { m_impl.detach(); }
|
void detach() { m_impl.detach(); }
|
||||||
|
|
||||||
//! Test for equality.
|
//! Test for equality.
|
||||||
bool operator ==(const CCollection &other) const { return m_impl == other.m_impl; }
|
friend bool operator ==(const CCollection &a, const CCollection &b) { return a.m_impl == b.m_impl; }
|
||||||
|
|
||||||
//! Test for inequality.
|
//! Test for inequality.
|
||||||
bool operator !=(const CCollection &other) const { return m_impl != other.m_impl; }
|
friend bool operator !=(const CCollection &a, const CCollection &b) { return a.m_impl != b.m_impl; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QOrderedSet<T> m_impl;
|
QOrderedSet<T> m_impl;
|
||||||
|
|||||||
@@ -16,17 +16,6 @@ namespace BlackMisc
|
|||||||
{
|
{
|
||||||
namespace PhysicalQuantities
|
namespace PhysicalQuantities
|
||||||
{
|
{
|
||||||
bool CMeasurementUnit::operator ==(const CMeasurementUnit &other) const
|
|
||||||
{
|
|
||||||
if (this == &other) return true;
|
|
||||||
return m_data->m_name == other.m_data->m_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CMeasurementUnit::operator !=(const CMeasurementUnit &other) const
|
|
||||||
{
|
|
||||||
return !(other == *this);
|
|
||||||
}
|
|
||||||
|
|
||||||
double CMeasurementUnit::convertFrom(double value, const CMeasurementUnit &unit) const
|
double CMeasurementUnit::convertFrom(double value, const CMeasurementUnit &unit) const
|
||||||
{
|
{
|
||||||
if (this->isNull() || unit.isNull()) return 0;
|
if (this->isNull() || unit.isNull()) return 0;
|
||||||
|
|||||||
@@ -272,10 +272,17 @@ namespace BlackMisc
|
|||||||
}
|
}
|
||||||
|
|
||||||
//! Equal operator ==
|
//! Equal operator ==
|
||||||
bool operator == (const CMeasurementUnit &other) const;
|
friend bool operator == (const CMeasurementUnit &a, const CMeasurementUnit &b)
|
||||||
|
{
|
||||||
|
if (&a == &b) return true;
|
||||||
|
return a.m_data->m_name == b.m_data->m_name;
|
||||||
|
}
|
||||||
|
|
||||||
//! Unequal operator !=
|
//! Unequal operator !=
|
||||||
bool operator != (const CMeasurementUnit &other) const;
|
friend bool operator != (const CMeasurementUnit &a, const CMeasurementUnit &b)
|
||||||
|
{
|
||||||
|
return !(a == b);
|
||||||
|
}
|
||||||
|
|
||||||
//! \copydoc CValueObject::qHash
|
//! \copydoc CValueObject::qHash
|
||||||
friend uint qHash(const CMeasurementUnit &unit)
|
friend uint qHash(const CMeasurementUnit &unit)
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ namespace BlackMisc
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class MU, class PQ>
|
template <class MU, class PQ>
|
||||||
bool CPhysicalQuantity<MU, PQ>::operator ==(const CPhysicalQuantity<MU, PQ> &other) const
|
bool CPhysicalQuantity<MU, PQ>::equals(const CPhysicalQuantity<MU, PQ> &other) const
|
||||||
{
|
{
|
||||||
if (this == &other) return true;
|
if (this == &other) return true;
|
||||||
|
|
||||||
@@ -87,12 +87,6 @@ namespace BlackMisc
|
|||||||
return diff <= m_unit.getEpsilon();
|
return diff <= m_unit.getEpsilon();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class MU, class PQ>
|
|
||||||
bool CPhysicalQuantity<MU, PQ>::operator !=(const CPhysicalQuantity<MU, PQ> &other) const
|
|
||||||
{
|
|
||||||
return !((*this) == other);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class MU, class PQ>
|
template <class MU, class PQ>
|
||||||
CPhysicalQuantity<MU, PQ> &CPhysicalQuantity<MU, PQ>::operator +=(const CPhysicalQuantity<MU, PQ> &other)
|
CPhysicalQuantity<MU, PQ> &CPhysicalQuantity<MU, PQ>::operator +=(const CPhysicalQuantity<MU, PQ> &other)
|
||||||
{
|
{
|
||||||
@@ -100,14 +94,6 @@ namespace BlackMisc
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class MU, class PQ>
|
|
||||||
PQ CPhysicalQuantity<MU, PQ>::operator +(const PQ &other) const
|
|
||||||
{
|
|
||||||
PQ copy(other);
|
|
||||||
copy += *this;
|
|
||||||
return copy;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class MU, class PQ>
|
template <class MU, class PQ>
|
||||||
void CPhysicalQuantity<MU, PQ>::addValueSameUnit(double value)
|
void CPhysicalQuantity<MU, PQ>::addValueSameUnit(double value)
|
||||||
{
|
{
|
||||||
@@ -127,14 +113,6 @@ namespace BlackMisc
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class MU, class PQ>
|
|
||||||
PQ CPhysicalQuantity<MU, PQ>::operator -(const PQ &other) const
|
|
||||||
{
|
|
||||||
PQ copy = *derived();
|
|
||||||
copy -= other;
|
|
||||||
return copy;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class MU, class PQ>
|
template <class MU, class PQ>
|
||||||
bool CPhysicalQuantity<MU, PQ>::isZeroEpsilonConsidered() const
|
bool CPhysicalQuantity<MU, PQ>::isZeroEpsilonConsidered() const
|
||||||
{
|
{
|
||||||
@@ -241,7 +219,7 @@ namespace BlackMisc
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class MU, class PQ>
|
template <class MU, class PQ>
|
||||||
bool CPhysicalQuantity<MU, PQ>::operator <(const CPhysicalQuantity<MU, PQ> &other) const
|
bool CPhysicalQuantity<MU, PQ>::lessThan(const CPhysicalQuantity<MU, PQ> &other) const
|
||||||
{
|
{
|
||||||
if (*this == other) return false;
|
if (*this == other) return false;
|
||||||
if (this->isNull() || other.isNull()) return false;
|
if (this->isNull() || other.isNull()) return false;
|
||||||
@@ -249,26 +227,6 @@ namespace BlackMisc
|
|||||||
return (m_value < other.value(m_unit));
|
return (m_value < other.value(m_unit));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class MU, class PQ>
|
|
||||||
bool CPhysicalQuantity<MU, PQ>::operator >(const CPhysicalQuantity<MU, PQ> &other) const
|
|
||||||
{
|
|
||||||
return other < *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class MU, class PQ>
|
|
||||||
bool CPhysicalQuantity<MU, PQ>::operator >=(const CPhysicalQuantity<MU, PQ> &other) const
|
|
||||||
{
|
|
||||||
if (*this == other) return true;
|
|
||||||
return *this > other;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class MU, class PQ>
|
|
||||||
bool CPhysicalQuantity<MU, PQ>::operator <=(const CPhysicalQuantity<MU, PQ> &other) const
|
|
||||||
{
|
|
||||||
if (*this == other) return true;
|
|
||||||
return *this < other;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class MU, class PQ>
|
template <class MU, class PQ>
|
||||||
PQ &CPhysicalQuantity<MU, PQ>::switchUnit(const MU &newUnit)
|
PQ &CPhysicalQuantity<MU, PQ>::switchUnit(const MU &newUnit)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -160,10 +160,10 @@ namespace BlackMisc
|
|||||||
PQ operator /(double divide) const;
|
PQ operator /(double divide) const;
|
||||||
|
|
||||||
//! Equal operator ==
|
//! Equal operator ==
|
||||||
bool operator==(const CPhysicalQuantity &other) const;
|
friend bool operator==(const CPhysicalQuantity &a, const CPhysicalQuantity &b) { return a.equals(b); }
|
||||||
|
|
||||||
//! Not equal operator !=
|
//! Not equal operator !=
|
||||||
bool operator!=(const CPhysicalQuantity &other) const;
|
friend bool operator!=(const CPhysicalQuantity &a, const CPhysicalQuantity &b) { return !a.equals(b); }
|
||||||
|
|
||||||
//! Plus operator +=
|
//! Plus operator +=
|
||||||
CPhysicalQuantity &operator +=(const CPhysicalQuantity &other);
|
CPhysicalQuantity &operator +=(const CPhysicalQuantity &other);
|
||||||
@@ -172,22 +172,22 @@ namespace BlackMisc
|
|||||||
CPhysicalQuantity &operator -=(const CPhysicalQuantity &other);
|
CPhysicalQuantity &operator -=(const CPhysicalQuantity &other);
|
||||||
|
|
||||||
//! Greater operator >
|
//! Greater operator >
|
||||||
bool operator >(const CPhysicalQuantity &other) const;
|
friend bool operator>(const CPhysicalQuantity &a, const CPhysicalQuantity &b) { return b.lessThan(a); }
|
||||||
|
|
||||||
//! Less operator <
|
//! Less operator <
|
||||||
bool operator <(const CPhysicalQuantity &other) const;
|
friend bool operator<(const CPhysicalQuantity &a, const CPhysicalQuantity &b) { return a.lessThan(b); }
|
||||||
|
|
||||||
//! Less equal operator <=
|
//! Less equal operator <=
|
||||||
bool operator <=(const CPhysicalQuantity &other) const;
|
friend bool operator<=(const CPhysicalQuantity &a, const CPhysicalQuantity &b) { return !b.lessThan(a); }
|
||||||
|
|
||||||
//! Greater equal operator >=
|
//! Greater equal operator >=
|
||||||
bool operator >=(const CPhysicalQuantity &other) const;
|
friend bool operator>=(const CPhysicalQuantity &a, const CPhysicalQuantity &b) { return !a.lessThan(b); }
|
||||||
|
|
||||||
//! Plus operator +
|
//! Plus operator +
|
||||||
PQ operator +(const PQ &other) const;
|
friend PQ operator +(const PQ &a, const PQ &b) { PQ copy(a); copy += b; return copy; }
|
||||||
|
|
||||||
//! Minus operator -
|
//! Minus operator -
|
||||||
PQ operator -(const PQ &other) const;
|
friend PQ operator -(const PQ &a, const PQ &b) { PQ copy(a); copy -= b; return copy; }
|
||||||
|
|
||||||
//! Quantity value <= epsilon
|
//! Quantity value <= epsilon
|
||||||
bool isZeroEpsilonConsidered() const;
|
bool isZeroEpsilonConsidered() const;
|
||||||
@@ -281,6 +281,12 @@ namespace BlackMisc
|
|||||||
//! Implementation of compare
|
//! Implementation of compare
|
||||||
static int compareImpl(const PQ &, const PQ &);
|
static int compareImpl(const PQ &, const PQ &);
|
||||||
|
|
||||||
|
//! Private implementation of equality operators
|
||||||
|
bool equals(const CPhysicalQuantity &other) const;
|
||||||
|
|
||||||
|
//! Private implementation of comparison operators
|
||||||
|
bool lessThan(const CPhysicalQuantity &other) const;
|
||||||
|
|
||||||
//! Easy access to derived class (CRTP template parameter)
|
//! Easy access to derived class (CRTP template parameter)
|
||||||
PQ const *derived() const;
|
PQ const *derived() const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user