QVersionNumber: add fromString(QStringView/QLatin1String) overloads
The parsing code anyway operated on a QByteArray created from toLatin1(), so expose this to the user by providing a QLatin1String overload. Also provide a QStringView overload, since we can. Port one user (in qmake) to the new overload. [ChangeLog][QtCore][QVersionNumber] Added QStringView and QLatin1String overloads of fromString(). Change-Id: Idbff44c3997f5cfa86ea1bce8b3da4b700a3d9cc Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
f5d8ad61a4
commit
de3785b8bc
@ -1569,7 +1569,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional(
|
|||||||
return ReturnFalse;
|
return ReturnFalse;
|
||||||
}
|
}
|
||||||
const QVersionNumber lvn = QVersionNumber::fromString(values(args.at(0).toKey()).join('.'));
|
const QVersionNumber lvn = QVersionNumber::fromString(values(args.at(0).toKey()).join('.'));
|
||||||
const QVersionNumber rvn = QVersionNumber::fromString(args.at(1).toQString());
|
const QVersionNumber rvn = QVersionNumber::fromString(args.at(1).toQStringView());
|
||||||
if (func_t == T_VERSION_AT_LEAST)
|
if (func_t == T_VERSION_AT_LEAST)
|
||||||
return returnBool(lvn >= rvn);
|
return returnBool(lvn >= rvn);
|
||||||
return returnBool(lvn <= rvn);
|
return returnBool(lvn <= rvn);
|
||||||
|
@ -95,6 +95,14 @@ void QObject::parse()
|
|||||||
// version is 5.4.0
|
// version is 5.4.0
|
||||||
// suffixIndex is 5
|
// suffixIndex is 5
|
||||||
//! [3]
|
//! [3]
|
||||||
|
|
||||||
|
//! [3-latin-1]
|
||||||
|
QLatin1String string("5.4.0-alpha");
|
||||||
|
int suffixIndex;
|
||||||
|
auto version = QVersionNumber::fromString(string, &suffixIndex);
|
||||||
|
// version is 5.4.0
|
||||||
|
// suffixIndex is 5
|
||||||
|
//! [3-latin-1]
|
||||||
}
|
}
|
||||||
|
|
||||||
void Object::equivalent()
|
void Object::equivalent()
|
||||||
|
@ -406,10 +406,8 @@ QString QVersionNumber::toString() const
|
|||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if QT_STRINGVIEW_LEVEL < 2
|
||||||
/*!
|
/*!
|
||||||
\fn QVersionNumber QVersionNumber::fromString(const QString &string,
|
|
||||||
int *suffixIndex)
|
|
||||||
|
|
||||||
Constructs a QVersionNumber from a specially formatted \a string of
|
Constructs a QVersionNumber from a specially formatted \a string of
|
||||||
non-negative decimal numbers delimited by '.'.
|
non-negative decimal numbers delimited by '.'.
|
||||||
|
|
||||||
@ -422,15 +420,54 @@ QString QVersionNumber::toString() const
|
|||||||
\sa isNull()
|
\sa isNull()
|
||||||
*/
|
*/
|
||||||
QVersionNumber QVersionNumber::fromString(const QString &string, int *suffixIndex)
|
QVersionNumber QVersionNumber::fromString(const QString &string, int *suffixIndex)
|
||||||
|
{
|
||||||
|
return fromString(QLatin1String(string.toLatin1()), suffixIndex);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\since 5.10
|
||||||
|
\overload
|
||||||
|
|
||||||
|
Constructs a QVersionNumber from a specially formatted \a string of
|
||||||
|
non-negative decimal numbers delimited by '.'.
|
||||||
|
|
||||||
|
Once the numerical segments have been parsed, the remainder of the string
|
||||||
|
is considered to be the suffix string. The start index of that string will be
|
||||||
|
stored in \a suffixIndex if it is not null.
|
||||||
|
|
||||||
|
\snippet qversionnumber/main.cpp 3
|
||||||
|
|
||||||
|
\sa isNull()
|
||||||
|
*/
|
||||||
|
QVersionNumber QVersionNumber::fromString(QStringView string, int *suffixIndex)
|
||||||
|
{
|
||||||
|
return fromString(QLatin1String(string.toLatin1()), suffixIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\since 5.10
|
||||||
|
\overload
|
||||||
|
|
||||||
|
Constructs a QVersionNumber from a specially formatted \a string of
|
||||||
|
non-negative decimal numbers delimited by '.'.
|
||||||
|
|
||||||
|
Once the numerical segments have been parsed, the remainder of the string
|
||||||
|
is considered to be the suffix string. The start index of that string will be
|
||||||
|
stored in \a suffixIndex if it is not null.
|
||||||
|
|
||||||
|
\snippet qversionnumber/main.cpp 3-latin1-1
|
||||||
|
|
||||||
|
\sa isNull()
|
||||||
|
*/
|
||||||
|
QVersionNumber QVersionNumber::fromString(QLatin1String string, int *suffixIndex)
|
||||||
{
|
{
|
||||||
QVector<int> seg;
|
QVector<int> seg;
|
||||||
|
|
||||||
const QByteArray cString(string.toLatin1());
|
const char *start = string.begin();
|
||||||
|
|
||||||
const char *start = cString.constData();
|
|
||||||
const char *end = start;
|
const char *end = start;
|
||||||
const char *lastGoodEnd = start;
|
const char *lastGoodEnd = start;
|
||||||
const char *endOfString = cString.constData() + cString.size();
|
const char *endOfString = string.end();
|
||||||
|
|
||||||
do {
|
do {
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
@ -443,7 +480,7 @@ QVersionNumber QVersionNumber::fromString(const QString &string, int *suffixInde
|
|||||||
} while (start < endOfString && (end < endOfString && *end == '.'));
|
} while (start < endOfString && (end < endOfString && *end == '.'));
|
||||||
|
|
||||||
if (suffixIndex)
|
if (suffixIndex)
|
||||||
*suffixIndex = int(lastGoodEnd - cString.constData());
|
*suffixIndex = int(lastGoodEnd - string.begin());
|
||||||
|
|
||||||
return QVersionNumber(qMove(seg));
|
return QVersionNumber(qMove(seg));
|
||||||
}
|
}
|
||||||
|
@ -280,7 +280,11 @@ public:
|
|||||||
Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber commonPrefix(const QVersionNumber &v1, const QVersionNumber &v2) Q_REQUIRED_RESULT;
|
Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber commonPrefix(const QVersionNumber &v1, const QVersionNumber &v2) Q_REQUIRED_RESULT;
|
||||||
|
|
||||||
Q_CORE_EXPORT QString toString() const Q_REQUIRED_RESULT;
|
Q_CORE_EXPORT QString toString() const Q_REQUIRED_RESULT;
|
||||||
|
#if QT_STRINGVIEW_LEVEL < 2
|
||||||
Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(const QString &string, int *suffixIndex = Q_NULLPTR) Q_REQUIRED_RESULT;
|
Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(const QString &string, int *suffixIndex = Q_NULLPTR) Q_REQUIRED_RESULT;
|
||||||
|
#endif
|
||||||
|
Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(QLatin1String string, int *suffixIndex = nullptr) Q_REQUIRED_RESULT;
|
||||||
|
Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(QStringView string, int *suffixIndex = nullptr) Q_REQUIRED_RESULT;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
#ifndef QT_NO_DATASTREAM
|
#ifndef QT_NO_DATASTREAM
|
||||||
|
@ -513,6 +513,14 @@ void tst_QVersionNumber::fromString()
|
|||||||
QCOMPARE(QVersionNumber::fromString(constructionString), expectedVersion);
|
QCOMPARE(QVersionNumber::fromString(constructionString), expectedVersion);
|
||||||
QCOMPARE(QVersionNumber::fromString(constructionString, &index), expectedVersion);
|
QCOMPARE(QVersionNumber::fromString(constructionString, &index), expectedVersion);
|
||||||
QCOMPARE(index, suffixIndex);
|
QCOMPARE(index, suffixIndex);
|
||||||
|
|
||||||
|
QCOMPARE(QVersionNumber::fromString(QStringView(constructionString)), expectedVersion);
|
||||||
|
QCOMPARE(QVersionNumber::fromString(QStringView(constructionString), &index), expectedVersion);
|
||||||
|
QCOMPARE(index, suffixIndex);
|
||||||
|
|
||||||
|
QCOMPARE(QVersionNumber::fromString(QLatin1String(constructionString.toLatin1())), expectedVersion);
|
||||||
|
QCOMPARE(QVersionNumber::fromString(QLatin1String(constructionString.toLatin1()), &index), expectedVersion);
|
||||||
|
QCOMPARE(index, suffixIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QVersionNumber::toString_data()
|
void tst_QVersionNumber::toString_data()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user