From a31ce64b9c5d0c33f06ecf5633722f3a7bf723f5 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Mon, 25 May 2009 17:00:31 +0200 Subject: [PATCH] qstringbuilder: also accept QStringRef --- src/libs/utils/qstringbuilder.h | 9 +++++++++ tests/benchmarks/qstringbuilder/main.cpp | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/libs/utils/qstringbuilder.h b/src/libs/utils/qstringbuilder.h index 30a5a53e3a2..487f20fc2bf 100644 --- a/src/libs/utils/qstringbuilder.h +++ b/src/libs/utils/qstringbuilder.h @@ -137,6 +137,7 @@ inline int qStringBuilderSize(const QLatin1Char) { return 1; } inline int qStringBuilderSize(const QLatin1String a) { return qstrlen(a.latin1()); } + template <typename A> inline void qStringBuilderAppend(const A a, QChar *&out) { a.appendTo(out); } @@ -150,6 +151,14 @@ inline void qStringBuilderAppend(QLatin1String a, QChar *&out) *out++ = QLatin1Char(*s++); } +inline void qStringBuilderAppend(QStringRef a, QChar *&out) +{ + const int n = a.size(); + memcpy(out, (char*)a.constData(), sizeof(QChar) * n); + out += n; +} + + template <typename A, typename B> class QStringBuilderPair diff --git a/tests/benchmarks/qstringbuilder/main.cpp b/tests/benchmarks/qstringbuilder/main.cpp index c4a832c7049..167d55a596c 100644 --- a/tests/benchmarks/qstringbuilder/main.cpp +++ b/tests/benchmarks/qstringbuilder/main.cpp @@ -22,6 +22,7 @@ public: : l1literal("some string literal"), l1string("some string literal"), string(l1string), + stringref(&string, 2, 10), achar('c') {} @@ -90,6 +91,18 @@ private slots: } + void separator_2c() { SEP("2 string refs"); } + + void b_2_stringref() { + QBENCHMARK { r = stringref % stringref; } + COMPARE(r, stringref.toString() + stringref.toString()); + } + void s_2_stringref() { + QBENCHMARK { r = stringref.toString() + stringref.toString(); } + COMPARE(r, QString(stringref % stringref)); + } + + void separator_2b() { SEP("3 strings"); } void b_3_string() { @@ -188,6 +201,7 @@ private: const QLatin1Literal l1literal; const QLatin1String l1string; const QString string; + const QStringRef stringref; const QLatin1Char achar; QString r; -- GitLab