From ebf68d57a9e64f7af11fde3b3374f0cc56e671fa Mon Sep 17 00:00:00 2001 From: Lukas W Date: Thu, 15 Jan 2015 17:26:55 +0100 Subject: [PATCH] ProjectVersion: Some refactoring --- include/ProjectVersion.h | 15 +++++++------- src/core/ProjectVersion.cpp | 40 ++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/include/ProjectVersion.h b/include/ProjectVersion.h index f4a2fc101..37cc83565 100644 --- a/include/ProjectVersion.h +++ b/include/ProjectVersion.h @@ -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; diff --git a/src/core/ProjectVersion.cpp b/src/core/ProjectVersion.cpp index 3db29c418..7fc602c67 100644 --- a/src/core/ProjectVersion.cpp +++ b/src/core/ProjectVersion.cpp @@ -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())); }