diff options
| author | Marc Mutz <marc.mutz@qt.io> | 2024-11-05 09:58:44 +0100 |
|---|---|---|
| committer | Marc Mutz <marc.mutz@qt.io> | 2024-11-05 19:53:02 +0100 |
| commit | 2c8302682ec45abf9688380021e915e216d9ae3d (patch) | |
| tree | e6baa6efb3f1b8f98e9657d7595d317dcf5c4567 /src/corelib/text/qstring.cpp | |
| parent | cc24213bdb286b200ad1c637ed244c48a2a32495 (diff) | |
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>
Diffstat (limited to 'src/corelib/text/qstring.cpp')
| -rw-r--r-- | src/corelib/text/qstring.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp index 03e6eb0593a..7d2d675f2ba 100644 --- a/src/corelib/text/qstring.cpp +++ b/src/corelib/text/qstring.cpp @@ -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. |
