ProjectVersion: Some refactoring

This commit is contained in:
Lukas W
2015-01-15 17:26:55 +01:00
parent a18f86bde7
commit ebf68d57a9
2 changed files with 26 additions and 29 deletions

View File

@@ -40,18 +40,17 @@ class ProjectVersion
{
public:
ProjectVersion(QString version, CompareType c = CompareType::Build);
ProjectVersion(const char * version, CompareType c = CompareType::Build);
static int compare(ProjectVersion v1, ProjectVersion v2);
int getMajor() { return m_major; }
int getMinor() { return m_minor; }
int getRelease() { return m_release; }
QString getBuild() { return m_build; }
CompareType getCompareType() { return m_compareType; }
int getMajor() const { return m_major; }
int getMinor() const { return m_minor; }
int getRelease() const { return m_release; }
QString getBuild() const { return m_build; }
CompareType getCompareType() const { return m_compareType; }
ProjectVersion setCompareType(CompareType compareType) { m_compareType = compareType; return * this; }
static int compare(const ProjectVersion& a, const ProjectVersion& b, CompareType c);
static int compare(ProjectVersion v1, ProjectVersion v2);
private:
QString m_version;

View File

@@ -63,52 +63,50 @@ ProjectVersion::ProjectVersion(const char* version, CompareType c) :
{
}
int ProjectVersion::compare(ProjectVersion v1, ProjectVersion v2)
int ProjectVersion::compare(const ProjectVersion& a, const ProjectVersion& b, CompareType c)
{
if(v1.getMajor() != v2.getMajor())
if (a.getMajor() != b.getMajor())
{
return v1.getMajor() - v2.getMajor();
return a.getMajor() - b.getMajor();
}
// return prematurely for Major comparison
if(v1.getCompareType() == CompareType::Major ||
v2.getCompareType() == CompareType::Major)
else if (c == CompareType::Major)
{
return 0;
}
if(v1.getMinor() != v2.getMinor())
if (a.getMinor() != b.getMinor())
{
return v1.getMinor() - v2.getMinor();
return a.getMinor() - b.getMinor();
}
// return prematurely for Minor comparison
if(v1.getCompareType() == CompareType::Minor ||
v2.getCompareType() == CompareType::Minor)
else if (c == CompareType::Minor)
{
return 0;
}
if(v1.getRelease() != v2.getRelease())
if (a.getRelease() != b.getRelease())
{
return v1.getRelease() - v2.getRelease();
return a.getRelease() - b.getRelease();
}
if(v1.getCompareType() == CompareType::Release ||
v2.getCompareType() == CompareType::Release) {
else if (c == CompareType::Release)
{
return 0;
}
// make sure 0.x.y > 0.x.y-patch
if(v1.getBuild().isEmpty())
if(a.getBuild().isEmpty())
{
return 1;
}
if(v2.getBuild().isEmpty())
if(b.getBuild().isEmpty())
{
return -1;
}
return QString::compare(v1.getBuild(), v2.getBuild());
return QString::compare(a.getBuild(), b.getBuild());
}
int ProjectVersion::compare(ProjectVersion v1, ProjectVersion v2)
{
return compare(v1, v2, std::min(v1.getCompareType(), v2.getCompareType()));
}