1
0
mirror of https://github.com/cookiengineer/audacity synced 2026-03-16 11:25:26 +01:00
Files
audacity/src/update/VersionId.cpp
gera 87d94fe249 Add new review recommendations.
Clean up extra code, remake static title, move settings to UpdateManager class.
2021-06-18 09:46:40 -04:00

72 lines
1.9 KiB
C++

/*!********************************************************************
Audacity: A Digital Audio Editor
@file VersionId.h
@brief Declare a class with version number manipulation.
Anton Gerasimov
**********************************************************************/
#include "VersionId.h"
VersionId::VersionId(int version, int release, int revision)
: mVersion(version),
mRelease(release),
mRevision(revision)
{}
wxString VersionId::MakeString(int version, int release, int revision)
{
return std::to_string(version)
+ "." + std::to_string(release)
+ "." + std::to_string(revision);
}
VersionId VersionId::ParseFromString(wxString& versionString)
{
auto versionStringParts = wxSplit(versionString, '.');
// If we have corrupted version string,
// then return the zero version number, that not allow us to update.
if (versionStringParts.size() != 3)
return VersionId{};
for (auto& v : versionStringParts)
{
if (v.empty() || !v.IsNumber())
return VersionId{};
}
return VersionId(
std::stoi(versionStringParts[0].ToStdString()),
std::stoi(versionStringParts[1].ToStdString()),
std::stoi(versionStringParts[2].ToStdString())
);
}
wxString VersionId::GetString() const
{
return MakeString(mVersion, mRelease, mRevision);
}
bool VersionId::operator== (const VersionId& other)
{
return std::tie(mVersion, mRelease, mRevision) ==
std::tie(other.mVersion, other.mRelease, other.mRevision);
}
bool VersionId::operator!= (const VersionId& other)
{
return !(*this == other);
}
bool VersionId::operator< (const VersionId& other)
{
return std::tie(mVersion, mRelease, mRevision) <
std::tie(other.mVersion, other.mRelease, other.mRevision);
}
bool VersionId::operator> (const VersionId& other)
{
return !(*this < other) && (*this != other);
}