summaryrefslogtreecommitdiffstats
path: root/src/corelib/text/qstring.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2024-11-05 09:58:44 +0100
committerMarc Mutz <marc.mutz@qt.io>2024-11-05 19:53:02 +0100
commit2c8302682ec45abf9688380021e915e216d9ae3d (patch)
treee6baa6efb3f1b8f98e9657d7595d317dcf5c4567 /src/corelib/text/qstring.cpp
parentcc24213bdb286b200ad1c637ed244c48a2a32495 (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.cpp17
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.