Better switching of comparators, char[] constructor

This commit is contained in:
Tres Finocchiaro
2015-01-13 11:38:17 -05:00
parent 260694077d
commit 17f32f344f
2 changed files with 33 additions and 11 deletions

View File

@@ -31,6 +31,24 @@
enum CompareType { Major, Minor, Release, Build };
static inline int parseMajor(QString & version) {
return version.section( '.', 0, 0 ).toInt();
}
static inline int parseMinor(QString & version) {
return version.section( '.', 1, 1 ).toInt();
}
static inline int parseRelease(QString & version) {
return version.section( '.', 2 ).section( '-', 0, 0 ).toInt();
}
static inline QString parseBuild(QString & version) {
return version.section( '.', 2 ).section( '-', 1 );
}
/*! \brief Version number parsing and comparison
*
* Parses and compares version information. i.e. "1.0.3" < "1.0.10"
@@ -40,10 +58,20 @@ class ProjectVersion
public:
ProjectVersion(QString version, CompareType c = CompareType::Build) :
m_version(version),
m_major(version.section( '.', 0, 0 ).toInt()) ,
m_minor(version.section( '.', 1, 1 ).toInt()) ,
m_release(version.section( '.', 2 ).section( '-', 0, 0 ).toInt()) ,
m_build(version.section( '.', 2 ).section( '-', 1 )),
m_major(parseMajor(m_version)),
m_minor(parseMinor(m_version)),
m_release(parseRelease(m_version)) ,
m_build(parseBuild(m_version)),
m_compareType(c)
{
}
ProjectVersion(const char * version, CompareType c = CompareType::Build) :
m_version(QString(version)),
m_major(parseMajor(m_version)),
m_minor(parseMinor(m_version)),
m_release(parseRelease(m_version)) ,
m_build(parseBuild(m_version)),
m_compareType(c)
{
}
@@ -55,7 +83,7 @@ public:
int getRelease() { return m_release; }
QString getBuild() { return m_build; }
CompareType getCompareType() { return m_compareType; }
void setCompareType(CompareType compareType) { m_compareType = compareType; }
ProjectVersion setCompareType(CompareType compareType) { m_compareType = compareType; return * this; }
private:
@@ -67,17 +95,12 @@ private:
CompareType m_compareType;
} ;
inline int compare(ProjectVersion v1, QString v2)
{
return ProjectVersion::compare(v1, ProjectVersion(v2));
}
/*
* ProjectVersion v. char[]
*/

View File

@@ -76,4 +76,3 @@ int ProjectVersion::compare(ProjectVersion v1, ProjectVersion v2)
return QString::compare(v1.getBuild(), v2.getBuild());
}