From f4ba8f1de31adb44af2624f350a8cbc0caca2251 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Tue, 26 May 2009 14:21:02 +0200
Subject: [PATCH] qstringbuilder: more logic optimizations

Drop original QStringBuilder class, rename QStringBuilderPair to
QStringBuilder. Put everything except the QLatin1Literal class and
the global operator%() in a private namespace.
---
 src/libs/utils/qstringbuilder.h | 64 ++++++++++++++++-----------------
 1 file changed, 32 insertions(+), 32 deletions(-)

diff --git a/src/libs/utils/qstringbuilder.h b/src/libs/utils/qstringbuilder.h
index ffe120cca53..ba3d452c5f9 100644
--- a/src/libs/utils/qstringbuilder.h
+++ b/src/libs/utils/qstringbuilder.h
@@ -87,17 +87,6 @@ private:
 };
 
 
-template <typename A, typename B>
-class QStringBuilderPair
-{
-public:
-    QStringBuilderPair(const A &a_, const B &b_) : a(a_), b(b_) {}
-
-    const A &a;
-    const B &b;
-};
-
-
 namespace Qt {
 
 inline int qStringBuilderSize(const char) { return 1; }
@@ -112,12 +101,10 @@ inline int qStringBuilderSize(const QString &a) { return a.size(); }
 
 inline int qStringBuilderSize(const QStringRef &a) { return a.size(); }
 
-template <typename A, typename B>
-inline int qStringBuilderSize(const QStringBuilderPair<A, B> &p)
-{
-    return qStringBuilderSize(p.a) + qStringBuilderSize(p.b);
-}
+template <typename A, typename B> class  QStringBuilder;
 
+template <typename A, typename B>
+inline int qStringBuilderSize(const QStringBuilder<A, B> &p);
 
 inline void qStringBuilderAppend(const char c, QChar *&out)
 {
@@ -156,42 +143,55 @@ inline void qStringBuilderAppend(const QLatin1Literal &a, QChar *&out)
 }
 
 template <typename A, typename B>
-inline void qStringBuilderAppend(const QStringBuilderPair<A, B> &p, QChar *&out)
-{
-    qStringBuilderAppend(p.a, out);
-    qStringBuilderAppend(p.b, out);
-}
-
-} // Qt
-
+inline void qStringBuilderAppend(const QStringBuilder<A, B> &p, QChar
+*&out);
 
-template <typename A>
-class QStringBuilder : public A
+template <typename A, typename B>
+class QStringBuilder
 {
 public:
-    QStringBuilder(const A &a_) : A(a_) {}
+    QStringBuilder(const A &a_, const B &b_) : a(a_), b(b_) {}
 
     operator QString() const
     {
-#ifdef USE_CHANGED_QSTRING
+    #ifdef USE_CHANGED_QSTRING
         QString s(this->size(), QChar(-1));
-#else
+    #else
         QString s;
         s.resize(Qt::qStringBuilderSize(*this));
-#endif
+    #endif
         QChar *d = s.data();
         Qt::qStringBuilderAppend(*this, d);
         return s;
     }
 
+public:
+    const A &a;
+    const B &b;
 };
 
 
 template <typename A, typename B>
-QStringBuilder< QStringBuilderPair<A, B> >
+inline int qStringBuilderSize(const QStringBuilder<A, B> &p)
+{
+    return qStringBuilderSize(p.a) + qStringBuilderSize(p.b);
+}
+
+template <typename A, typename B>
+inline void qStringBuilderAppend(const QStringBuilder<A, B> &p, QChar *&out)
+{
+    qStringBuilderAppend(p.a, out);
+    qStringBuilderAppend(p.b, out);
+}
+
+} // Qt
+
+
+template <typename A, typename B>
+Qt::QStringBuilder<A, B>
 operator%(const A &a, const B &b)
 {
-    return QStringBuilderPair<A, B> (a, b);
+    return Qt::QStringBuilder<A, B>(a, b);
 }
 
 
-- 
GitLab