|
|
|
/*
|
|
|
|
* Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
|
|
|
|
*
|
|
|
|
* This file is part of Open-Sankoré.
|
|
|
|
*
|
|
|
|
* Open-Sankoré is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation, version 3 of the License,
|
|
|
|
* with a specific linking exception for the OpenSSL project's
|
|
|
|
* "OpenSSL" library (or with modified versions of it that use the
|
|
|
|
* same license as the "OpenSSL" library).
|
|
|
|
*
|
|
|
|
* Open-Sankoré is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with Open-Sankoré. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "UBVersion.h"
|
|
|
|
|
|
|
|
#include <QtCore>
|
|
|
|
#include <QStringList>
|
|
|
|
|
|
|
|
|
|
|
|
#include "core/memcheck.h"
|
|
|
|
|
|
|
|
//UBVersion::UBVersion()
|
|
|
|
// : mIsValid(false)
|
|
|
|
// , mPlatform(-1)
|
|
|
|
// , mMajor(-1)
|
|
|
|
// , mMinor(-1)
|
|
|
|
//{
|
|
|
|
// // NOOP
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
UBVersion::UBVersion(const QString &string)
|
|
|
|
{
|
|
|
|
mString = string;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint UBVersion::toUInt() const
|
|
|
|
{
|
|
|
|
uint result = 0;
|
|
|
|
QStringList list = mString.split(".");
|
|
|
|
switch (list.count()) {
|
|
|
|
case 2:
|
|
|
|
//short version 1.0
|
|
|
|
result = (list.at(0).toUInt() * 1000000) + (list.at(1).toUInt() * 10000);
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
//release version 1.0.0
|
|
|
|
result = (list.at(0).toUInt() * 1000000) + (list.at(1).toUInt() * 10000) + list.at(2).toUInt();
|
|
|
|
break;
|
|
|
|
case 4:{
|
|
|
|
//standard version 1.0.a/b/r.0
|
|
|
|
uint releaseStage = list.at(2).startsWith("a") ? Alpha :(list.at(2).startsWith("b") ? Beta : ReleaseCandidate);
|
|
|
|
result = (list.at(0).toUInt() * 1000000) + (list.at(1).toUInt() * 10000) + (releaseStage * 100) + list.at(3).toUInt();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
qWarning() << "Unknown version format.";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
UBVersion::~UBVersion()
|
|
|
|
{
|
|
|
|
// NOOP
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//QString UBVersion::toString() const
|
|
|
|
//{
|
|
|
|
// return isValid() ? mString : "INVALID";
|
|
|
|
//}
|
|
|
|
|
|
|
|
//void UBVersion::setString(const QString &string)
|
|
|
|
//{
|
|
|
|
// mIsValid = true;
|
|
|
|
// mString = string;
|
|
|
|
// QStringList versionParts = string.split(".");
|
|
|
|
// int count = versionParts.count();
|
|
|
|
|
|
|
|
// if (count < 2)
|
|
|
|
// {
|
|
|
|
// mIsValid = false;
|
|
|
|
// return;
|
|
|
|
// }
|
|
|
|
|
|
|
|
// mPlatform = versionParts.at(0).toInt(&mIsValid);
|
|
|
|
// if (!isValid()) return;
|
|
|
|
// mMajor = versionParts.at(1).toInt(&mIsValid);
|
|
|
|
// if (!isValid()) return;
|
|
|
|
|
|
|
|
// if (count == 2)
|
|
|
|
// {
|
|
|
|
// mMinor = 0;
|
|
|
|
// mReleaseStage = ReleaseCandidate;
|
|
|
|
// }
|
|
|
|
// else if (count == 3)
|
|
|
|
// {
|
|
|
|
// // Format 4.1.2 (implicitly release)
|
|
|
|
// mMinor = versionParts.at(2).toInt(&mIsValid);
|
|
|
|
// if (!isValid()) return;
|
|
|
|
// mReleaseStage = ReleaseCandidate;
|
|
|
|
// }
|
|
|
|
// else if (count >= 4)
|
|
|
|
// {
|
|
|
|
// // Format 4.1.x.2 (where x = a|b|r|<integer>)
|
|
|
|
// if ("a" == versionParts.at(2))
|
|
|
|
// {
|
|
|
|
// mReleaseStage = Alpha;
|
|
|
|
// }
|
|
|
|
// else if ("b" == versionParts.at(2))
|
|
|
|
// {
|
|
|
|
// mReleaseStage = Beta;
|
|
|
|
// }
|
|
|
|
// else if ("r" == versionParts.at(2))
|
|
|
|
// {
|
|
|
|
// mReleaseStage = ReleaseCandidate;
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// mMinor = versionParts.at(2).toInt(&mIsValid);
|
|
|
|
// if (!isValid()) return;
|
|
|
|
// mReleaseStage = ReleaseCandidate;
|
|
|
|
// return;
|
|
|
|
// }
|
|
|
|
|
|
|
|
// QStringList lastParts = versionParts.at(3).split(" ");
|
|
|
|
// mMinor = lastParts.at(0).toInt();
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
|
|
|
|
//bool UBVersion::isValid() const
|
|
|
|
//{
|
|
|
|
// return mIsValid;
|
|
|
|
//}
|
|
|
|
|
|
|
|
//int UBVersion::platformNumber() const
|
|
|
|
//{
|
|
|
|
// Q_ASSERT(isValid());
|
|
|
|
// return mPlatform;
|
|
|
|
//}
|
|
|
|
|
|
|
|
//int UBVersion::majorNumber() const
|
|
|
|
//{
|
|
|
|
// Q_ASSERT(isValid());
|
|
|
|
// return mMajor;
|
|
|
|
//}
|
|
|
|
|
|
|
|
//ReleaseStage UBVersion::releaseStage() const
|
|
|
|
//{
|
|
|
|
// Q_ASSERT(isValid());
|
|
|
|
// return mReleaseStage;
|
|
|
|
//}
|
|
|
|
|
|
|
|
//int UBVersion::minorNumber() const
|
|
|
|
//{
|
|
|
|
// Q_ASSERT(isValid());
|
|
|
|
// return mMinor;
|
|
|
|
//}
|
|
|
|
|
|
|
|
//bool UBVersion::operator < (const UBVersion &otherVersion) const
|
|
|
|
//{
|
|
|
|
// Q_ASSERT(isValid());
|
|
|
|
// Q_ASSERT(otherVersion.isValid());
|
|
|
|
|
|
|
|
// if (platformNumber() != otherVersion.platformNumber())
|
|
|
|
// return platformNumber() < otherVersion.platformNumber();
|
|
|
|
// if (majorNumber() != otherVersion.majorNumber())
|
|
|
|
// return majorNumber() < otherVersion.majorNumber();
|
|
|
|
// if (releaseStage() != otherVersion.releaseStage())
|
|
|
|
// return releaseStage() < otherVersion.releaseStage();
|
|
|
|
// if (minorNumber() != otherVersion.minorNumber())
|
|
|
|
// return minorNumber() < otherVersion.minorNumber();
|
|
|
|
// return false;
|
|
|
|
//}
|
|
|
|
|
|
|
|
//bool UBVersion::operator == (const UBVersion &otherVersion) const
|
|
|
|
//{
|
|
|
|
// Q_ASSERT(isValid());
|
|
|
|
// Q_ASSERT(otherVersion.isValid());
|
|
|
|
|
|
|
|
// return (platformNumber() == otherVersion.platformNumber() &&
|
|
|
|
// majorNumber() == otherVersion.majorNumber() &&
|
|
|
|
// releaseStage() == otherVersion.releaseStage() &&
|
|
|
|
// minorNumber() == otherVersion.minorNumber());
|
|
|
|
//}
|
|
|
|
|
|
|
|
//bool UBVersion::operator > (const UBVersion &otherVersion) const
|
|
|
|
//{
|
|
|
|
// Q_ASSERT(isValid());
|
|
|
|
// Q_ASSERT(otherVersion.isValid());
|
|
|
|
|
|
|
|
// if (platformNumber() != otherVersion.platformNumber())
|
|
|
|
// return platformNumber() > otherVersion.platformNumber();
|
|
|
|
// if (majorNumber() != otherVersion.majorNumber())
|
|
|
|
// return majorNumber() > otherVersion.majorNumber();
|
|
|
|
// if (releaseStage() != otherVersion.releaseStage())
|
|
|
|
// return releaseStage() > otherVersion.releaseStage();
|
|
|
|
// if (minorNumber() != otherVersion.minorNumber())
|
|
|
|
// return minorNumber() > otherVersion.minorNumber();
|
|
|
|
// return false;
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
bool UBVersion::operator < (const UBVersion &otherVersion) const
|
|
|
|
{
|
|
|
|
return toUInt() < otherVersion.toUInt();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool UBVersion::operator == (const UBVersion &otherVersion) const
|
|
|
|
{
|
|
|
|
return toUInt() == otherVersion.toUInt();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool UBVersion::operator > (const UBVersion &otherVersion) const
|
|
|
|
{
|
|
|
|
return toUInt() > otherVersion.toUInt();
|
|
|
|
}
|