QString: make argToQStringImpl() SCARY
Move the visitation of the QAnyStringView pattern from argToQString() to parseMultiArgFormatString(). The latter is the only part of the former that depends on the type (L1, U8, U16) of the pattern, the rest is independent. By retaining the QAnyStringView as a variant for longer, we share the post-processing steps previously duplicated for each view type. Amends a193d5c30347d4f9e2cb4caf2bded10f93a54406, but the duplication existed since 35431062bd7bf0d27b9bf785ab3cbc7fac5a69da (Qt 5). Task-number: QTBUG-124365 Change-Id: I8c346da45d72aeda92d18c6afa2236b62b842cc2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
This commit is contained in:
parent
cc24213bdb
commit
2c8302682e
@ -9209,7 +9209,7 @@ typedef QVarLengthArray<Part, ExpectedParts> ParseResult;
|
||||
typedef QVarLengthArray<int, ExpectedParts/2> ArgIndexToPlaceholderMap;
|
||||
|
||||
template <typename StringView>
|
||||
static ParseResult parseMultiArgFormatString(StringView s)
|
||||
static ParseResult parseMultiArgFormatString_impl(StringView s)
|
||||
{
|
||||
ParseResult result;
|
||||
|
||||
@ -9240,6 +9240,11 @@ static ParseResult parseMultiArgFormatString(StringView s)
|
||||
return result;
|
||||
}
|
||||
|
||||
static ParseResult parseMultiArgFormatString(QAnyStringView s)
|
||||
{
|
||||
return s.visit([] (auto s) { return parseMultiArgFormatString_impl(s); });
|
||||
}
|
||||
|
||||
static ArgIndexToPlaceholderMap makeArgIndexToPlaceholderMap(const ParseResult &parts)
|
||||
{
|
||||
ArgIndexToPlaceholderMap result;
|
||||
@ -9285,8 +9290,7 @@ static qsizetype resolveStringRefsAndReturnTotalSize(ParseResult &parts, const A
|
||||
|
||||
} // unnamed namespace
|
||||
|
||||
template <typename StringView>
|
||||
static QString argToQStringImpl(StringView pattern, size_t numArgs, const QtPrivate::ArgBase **args)
|
||||
QString QtPrivate::argToQString(QAnyStringView pattern, size_t numArgs, const ArgBase **args)
|
||||
{
|
||||
// Step 1-2 above
|
||||
ParseResult parts = parseMultiArgFormatString(pattern);
|
||||
@ -9338,13 +9342,6 @@ static QString argToQStringImpl(StringView pattern, size_t numArgs, const QtPriv
|
||||
return result;
|
||||
}
|
||||
|
||||
QString QtPrivate::argToQString(QAnyStringView pattern, size_t n, const ArgBase **args)
|
||||
{
|
||||
return pattern.visit([n, args](auto pattern) {
|
||||
return argToQStringImpl(pattern, n, args);
|
||||
});
|
||||
}
|
||||
|
||||
/*! \fn bool QString::isRightToLeft() const
|
||||
|
||||
Returns \c true if the string is read right to left.
|
||||
|
Loading…
x
Reference in New Issue
Block a user