mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-29 05:48:47 +03:00
Improve Utils::Version class
Add operator>=() and operator<=(). More methods are suitable to be constexpr. Remove redundant boundary checking.
This commit is contained in:
parent
cd21071c69
commit
b38925413d
1 changed files with 29 additions and 17 deletions
|
@ -84,31 +84,31 @@ namespace Utils
|
|||
{
|
||||
}
|
||||
|
||||
ComponentType majorNumber() const
|
||||
constexpr ComponentType majorNumber() const
|
||||
{
|
||||
static_assert(N >= 1, "The number of version components is too small");
|
||||
return (*this)[0];
|
||||
return m_components[0];
|
||||
}
|
||||
|
||||
ComponentType minorNumber() const
|
||||
constexpr ComponentType minorNumber() const
|
||||
{
|
||||
static_assert(N >= 2, "The number of version components is too small");
|
||||
return (*this)[1];
|
||||
return m_components[1];
|
||||
}
|
||||
|
||||
ComponentType revisionNumber() const
|
||||
constexpr ComponentType revisionNumber() const
|
||||
{
|
||||
static_assert(N >= 3, "The number of version components is too small");
|
||||
return (*this)[2];
|
||||
return m_components[2];
|
||||
}
|
||||
|
||||
ComponentType patchNumber() const
|
||||
constexpr ComponentType patchNumber() const
|
||||
{
|
||||
static_assert(N >= 4, "The number of version components is too small");
|
||||
return (*this)[3];
|
||||
return m_components[3];
|
||||
}
|
||||
|
||||
ComponentType operator[](std::size_t i) const
|
||||
constexpr ComponentType operator[](const std::size_t i) const
|
||||
{
|
||||
return m_components.at(i);
|
||||
}
|
||||
|
@ -129,19 +129,19 @@ namespace Utils
|
|||
return res;
|
||||
}
|
||||
|
||||
bool operator==(const ThisType &other) const
|
||||
constexpr bool operator==(const ThisType &other) const
|
||||
{
|
||||
return m_components == other.m_components;
|
||||
return (m_components == other.m_components);
|
||||
}
|
||||
|
||||
bool operator<(const ThisType &other) const
|
||||
constexpr bool operator<(const ThisType &other) const
|
||||
{
|
||||
return m_components < other.m_components;
|
||||
return (m_components < other.m_components);
|
||||
}
|
||||
|
||||
bool operator>(const ThisType &other) const
|
||||
constexpr bool operator>(const ThisType &other) const
|
||||
{
|
||||
return m_components > other.m_components;
|
||||
return (m_components > other.m_components);
|
||||
}
|
||||
|
||||
template <typename StringClassWithSplitMethod>
|
||||
|
@ -150,7 +150,7 @@ namespace Utils
|
|||
try {
|
||||
return Version(s);
|
||||
}
|
||||
catch (std::runtime_error &er) {
|
||||
catch (const std::runtime_error &er) {
|
||||
qDebug() << "Error parsing version:" << er.what();
|
||||
return defaultVersion;
|
||||
}
|
||||
|
@ -186,10 +186,22 @@ namespace Utils
|
|||
};
|
||||
|
||||
template <typename T, std::size_t N, std::size_t Mandatory>
|
||||
inline bool operator!=(const Version<T, N, Mandatory> &left, const Version<T, N, Mandatory> &right)
|
||||
constexpr bool operator!=(const Version<T, N, Mandatory> &left, const Version<T, N, Mandatory> &right)
|
||||
{
|
||||
return !(left == right);
|
||||
}
|
||||
|
||||
template <typename T, std::size_t N, std::size_t Mandatory>
|
||||
constexpr bool operator<=(const Version<T, N, Mandatory> &left, const Version<T, N, Mandatory> &right)
|
||||
{
|
||||
return !(left > right);
|
||||
}
|
||||
|
||||
template <typename T, std::size_t N, std::size_t Mandatory>
|
||||
constexpr bool operator>=(const Version<T, N, Mandatory> &left, const Version<T, N, Mandatory> &right)
|
||||
{
|
||||
return !(left < right);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // QBITTORRENT_UTILS_VERSION_H
|
||||
|
|
Loading…
Reference in a new issue