ProjectVersion: Some refactoring
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user