aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2009-05-29 11:31:09 +0200
committerhjk <qtc-committer@nokia.com>2009-05-29 11:31:53 +0200
commitd472ec9a4cee4da67696ad46f7b386fa84532eb8 (patch)
tree374526acd3e74c1a1b97fc36732519f36b0c4f5b
parent27f9d9727db1750f4f38c7425726224c57d00b9b (diff)
remove qstringbuilder code
Now in Qt proper.
-rw-r--r--src/libs/utils/qstringbuilder.cpp133
-rw-r--r--src/libs/utils/qstringbuilder.h200
-rw-r--r--tests/benchmarks/qstringbuilder/main.cpp304
-rw-r--r--tests/benchmarks/qstringbuilder/qstringbuilder.pro15
4 files changed, 0 insertions, 652 deletions
diff --git a/src/libs/utils/qstringbuilder.cpp b/src/libs/utils/qstringbuilder.cpp
deleted file mode 100644
index 730966bfdb..0000000000
--- a/src/libs/utils/qstringbuilder.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the $MODULE$ of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial Usage
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Nokia.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qstringbuilder.h"
-
-/*!
- \class QLatin1Literal
- \reentrant
-
- \brief The QLatin1Literal class provides a thin wrapper of string literal
- used in source codes.
-
- The main use of \c QLatin1Literal is in conjunction with \c QStringBuilder
- to reduce the number of reallocations needed to build up a string from
- smaller chunks.
-
- Contrary to \c QLatin1String, a \c QLatin1Literal can retrieve its size
- without iterating over the literal.
-
- \ingroup tools
- \ingroup shared
- \ingroup text
- \mainclass
-
- \sa QStringBuilder, QLatin1String, QString
-
-*/
-
-/*! \fn QLatin1Literal::QLatin1Literal(const char(&literal)[])
-
- The only constructor of the class.
-*/
-
-/*! \fn int QLatin1Literal::size() const
-
- Returns the number of characters in the literal \i{not} including
- the trailing NUL char.
-*/
-
-/*! \fn char *QLatin1Literal::size() const
-
- Returns a pointer to the first character of the string literal.
- The string literal is terminated by a NUL character.
-*/
-
-/*! \fn QLatin1Literal::operator QString() const
-
- Converts the \c QLatin1Literal into a \c QString object.
-*/
-
-
-/*!
- \class QStringBuilderPair
- \reentrant
-
- \brief QStringBuilderPair is a helper class template for building
- QStringBuilder objects wrapping two smaller QStringBuilder object.
-*/
-
-
-/*!
- \class QStringBuilder
- \reentrant
-
- \brief QStringBuilder is a template class providing a facility to build
- up QStrings from smaller chunks.
-
- \ingroup tools
- \ingroup shared
- \ingroup text
- \mainclass
-
- When creating strings from smaller chunks, typically \c QString::operator+()
- is used, resulting \i{n - 1} reallocations when operating on \i{n} chunks.
-
- QStringBuilder uses expression
- templates to collect the individual parts, compute the total size,
- allocate memory for the resulting QString object, and copy the contents
- of the chunks into the result.
-
- Using \c QStringBuilder::operator%() yield generally better performance then
- using \c QString::operator+() on the same chunks if there are three or
- more of them, and equal performance otherwise.
-
- \sa QLatin1Literal, QString
-*/
-
-/* !fn template <class A, class B> QStringBuilder< QStringBuilderPair<A, B> > operator%(const A &a, const B &b)
-
- Creates a helper object containing both parameters.
-
- This is the main function to build up complex QStringBuilder objects from
- smaller QStringBuilder objects.
-*/
-
diff --git a/src/libs/utils/qstringbuilder.h b/src/libs/utils/qstringbuilder.h
deleted file mode 100644
index 3368742e1c..0000000000
--- a/src/libs/utils/qstringbuilder.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the $MODULE$ of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial Usage
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Nokia.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSTRINGBUILDER_H
-#define QSTRINGBUILDER_H
-
-#include <QtCore/qstring.h>
-
-#include <string.h>
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-
-class QLatin1Literal
-{
-public:
- template <int N>
- QLatin1Literal(const char (&str)[N]) : m_size(N - 1), m_data(str) {}
-
- inline int size() const { return m_size; }
- inline const char *data() const { return m_data; }
-
-private:
- const int m_size;
- const char *m_data;
-};
-
-
-namespace {
-
-template <typename T> class QConcatenable {};
-
-template <typename A, typename B>
-class QStringBuilder
-{
-public:
- QStringBuilder(const A &a_, const B &b_) : a(a_), b(b_) {}
-
- operator QString() const
- {
- #if 0
- QString s(QConcatenable< QStringBuilder<A, B> >::size(*this),
- QString::Uninitialized());
- #else
- QString s;
- s.resize(QConcatenable< QStringBuilder<A, B> >::size(*this));
- #endif
-
- QChar *d = s.data();
- QConcatenable< QStringBuilder<A, B> >::appendTo(*this, d);
- return s;
- }
-
- const A &a;
- const B &b;
-};
-
-
-template <> struct QConcatenable<char>
-{
- typedef char type;
- static int size(const char) { return 1; }
- static inline void appendTo(const char c, QChar *&out)
- {
- *out++ = QLatin1Char(c);
- }
-};
-
-template <> struct QConcatenable<QLatin1Char>
-{
- typedef QLatin1Char type;
- static int size(const QLatin1Char) { return 1; }
- static inline void appendTo(const QLatin1Char c, QChar *&out)
- {
- *out++ = c;
- }
-};
-
-template <> struct QConcatenable<QLatin1String>
-{
- typedef QLatin1String type;
- static int size(const QLatin1String &a) { return qstrlen(a.latin1()); }
- static inline void appendTo(const QLatin1String &a, QChar *&out)
- {
- for (const char *s = a.latin1(); *s; )
- *out++ = QLatin1Char(*s++);
- }
-
-};
-
-template <> struct QConcatenable<QLatin1Literal>
-{
- typedef QLatin1Literal type;
- static int size(const QLatin1Literal &a) { return a.size(); }
- static inline void appendTo(const QLatin1Literal &a, QChar *&out)
- {
- for (const char *s = a.data(); *s; )
- *out++ = QLatin1Char(*s++);
- }
-};
-
-template <> struct QConcatenable<QString>
-{
- typedef QString type;
- static int size(const QString &a) { return a.size(); }
- static inline void appendTo(const QString &a, QChar *&out)
- {
- const int n = a.size();
- memcpy(out, (char*)a.constData(), sizeof(QChar) * n);
- out += n;
- }
-};
-
-template <> struct QConcatenable<QStringRef>
-{
- typedef QStringRef type;
- static int size(const QStringRef &a) { return a.size(); }
- static inline void appendTo(QStringRef a, QChar *&out)
- {
- const int n = a.size();
- memcpy(out, (char*)a.constData(), sizeof(QChar) * n);
- out += n;
- }
-};
-
-
-template <typename A, typename B>
-struct QConcatenable< QStringBuilder<A, B> >
-{
- typedef QStringBuilder<A, B> type;
- static int size(const type &p)
- {
- return QConcatenable<A>::size(p.a) + QConcatenable<B>::size(p.b);
- }
- static inline void appendTo(const QStringBuilder<A, B> &p, QChar *&out)
- {
- QConcatenable<A>::appendTo(p.a, out);
- QConcatenable<B>::appendTo(p.b, out);
- }
-};
-
-} // namespace
-
-
-template <typename A, typename B>
-QStringBuilder<A, B> operator%(const A &a, const B &b)
-{
- typedef typename QConcatenable<A>::type A1;
- typedef typename QConcatenable<B>::type B1;
- return QStringBuilder<A1, B1>(a, b);
-}
-
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QSTRINGBUILDER_H
diff --git a/tests/benchmarks/qstringbuilder/main.cpp b/tests/benchmarks/qstringbuilder/main.cpp
deleted file mode 100644
index cb769257cc..0000000000
--- a/tests/benchmarks/qstringbuilder/main.cpp
+++ /dev/null
@@ -1,304 +0,0 @@
-
-#include "qstringbuilder.h"
-
-#include <QDebug>
-#include <QString>
-
-#include <qtest.h>
-
-
-#define COMPARE(a, b) QCOMPARE(a, b)
-//#define COMPARE(a, b)
-
-#define SEP(s) qDebug() << "\n\n-------- " s " ---------";
-#define L(s) QLatin1String(s)
-
-class tst_qstringbuilder : public QObject
-{
- Q_OBJECT
-
-public:
- tst_qstringbuilder()
- : l1literal("some string literal"),
- l1string("some string literal"),
- ba("some string literal"),
- string(l1string),
- stringref(&string, 2, 10),
- achar('c')
- {}
-
-
-public:
- enum { N = 10000 };
-
- int run_traditional()
- {
- int s = 0;
- for (int i = 0; i < N; ++i) {
-#if 0
- s += QString(l1string + l1string).size();
- s += QString(l1string + l1string + l1string).size();
- s += QString(l1string + l1string + l1string + l1string).size();
- s += QString(l1string + l1string + l1string + l1string + l1string).size();
-#endif
- s += QString(achar + l1string + achar).size();
- }
- return s;
- }
-
- int run_builder()
- {
- int s = 0;
- for (int i = 0; i < N; ++i) {
-#if 0
- s += QString(l1literal % l1literal).size();
- s += QString(l1literal % l1literal % l1literal).size();
- s += QString(l1literal % l1literal % l1literal % l1literal).size();
- s += QString(l1literal % l1literal % l1literal % l1literal % l1literal).size();
-#endif
- s += QString(achar % l1literal % achar).size();
- }
- return s;
- }
-
-private slots:
-
- void separator_0() {
- qDebug() << "\nIn each block the QStringBuilder based result appear first, "
- "QStringBased second.\n";
- }
-
- void separator_1() { SEP("literal + literal (builder first)"); }
-
- void b_2_l1literal() {
- QBENCHMARK { r = l1literal % l1literal; }
- COMPARE(r, l1string + l1string);
- }
- void s_2_l1string() {
- QBENCHMARK { r = l1string + l1string; }
- COMPARE(r, QString(l1literal % l1literal));
- }
-
-
- void separator_2() { SEP("2 strings"); }
-
- void b_2_string() {
- QBENCHMARK { r = string % string; }
- COMPARE(r, string + string);
- }
- void s_2_string() {
- QBENCHMARK { r = string + string; }
- COMPARE(r, QString(string % string));
- }
-
-
- 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() {
- QBENCHMARK { r = string % string % string; }
- COMPARE(r, string + string + string);
- }
- void s_3_string() {
- QBENCHMARK { r = string + string + string; }
- COMPARE(r, QString(string % string % string));
- }
-
-
- void separator_2a() { SEP("string + literal (builder first)"); }
-
- void b_string_l1literal() {
- QBENCHMARK { r = string % l1literal; }
- COMPARE(r, string + l1string);
- }
- void b_string_l1string() {
- QBENCHMARK { r = string % l1string; }
- COMPARE(r, string + l1string);
- }
- void s_string_l1literal() {
- QBENCHMARK { r = string + l1string; }
- COMPARE(r, QString(string % l1literal));
- }
- void s_string_l1string() {
- QBENCHMARK { r = string + l1string; }
- COMPARE(r, QString(string % l1literal));
- }
-
-
- void separator_3() { SEP("3 literals"); }
-
- void b_3_l1literal() {
- QBENCHMARK { r = l1literal % l1literal % l1literal; }
- COMPARE(r, l1string + l1string + l1string);
- }
- void s_3_l1string() {
- QBENCHMARK { r = l1string + l1string + l1string; }
- COMPARE(r, QString(l1literal % l1literal % l1literal));
- }
-
-
- void separator_4() { SEP("4 literals"); }
-
- void b_4_l1literal() {
- QBENCHMARK { r = l1literal % l1literal % l1literal % l1literal; }
- COMPARE(r, l1string + l1string + l1string + l1string);
- }
- void s_4_l1string() {
- QBENCHMARK { r = l1string + l1string + l1string + l1string; }
- COMPARE(r, QString(l1literal % l1literal % l1literal % l1literal));
- }
-
-
- void separator_5() { SEP("5 literals"); }
-
- void b_5_l1literal() {
- QBENCHMARK { r = l1literal % l1literal % l1literal % l1literal %l1literal; }
- COMPARE(r, l1string + l1string + l1string + l1string + l1string);
- }
-
- void s_5_l1string() {
- QBENCHMARK { r = l1string + l1string + l1string + l1string + l1string; }
- COMPARE(r, QString(l1literal % l1literal % l1literal % l1literal % l1literal));
- }
-
-
- void separator_6() { SEP("4 chars"); }
-
- void b_string_4_char() {
- QBENCHMARK { r = string + achar + achar + achar + achar; }
- COMPARE(r, QString(string % achar % achar % achar % achar));
- }
-
- void s_string_4_char() {
- QBENCHMARK { r = string + achar + achar + achar + achar; }
- COMPARE(r, QString(string % achar % achar % achar % achar));
- }
-
-
- void separator_7() { SEP("char + string + char"); }
-
- void b_char_string_char() {
- QBENCHMARK { r = achar + string + achar; }
- COMPARE(r, QString(achar % string % achar));
- }
-
- void s_char_string_char() {
- QBENCHMARK { r = achar + string + achar; }
- COMPARE(r, QString(achar % string % achar));
- }
-
- void separator_8() { SEP("string.arg"); }
-
- void b_string_arg() {
- const QString pattern = l1string + "%1" + l1string;
- QBENCHMARK { r = l1literal % string % l1literal; }
- COMPARE(r, l1string + string + l1string);
- }
-
- void s_string_arg() {
- const QString pattern = l1string + "%1" + l1string;
- QBENCHMARK { r = pattern.arg(string); }
- COMPARE(r, l1string + string + l1string);
- }
-
- void s_bytearray_arg() {
- QByteArray result;
- QBENCHMARK { result = ba + ba + ba; }
- }
-
-
- void separator_9() { SEP("QString::reserve()"); }
-
- void b_reserve() {
- QBENCHMARK {
- r.clear();
- r = string % string % string % string;
- }
- COMPARE(r, string + string + string + string);
- }
- void b_reserve_lit() {
- QBENCHMARK {
- r.clear();
- r = string % l1literal % string % string;
- }
- COMPARE(r, string + string + string + string);
- }
- void s_reserve() {
- QBENCHMARK {
- r.clear();
- r.reserve(string.size() + string.size() + string.size() + string.size());
- r += string;
- r += string;
- r += string;
- r += string;
- }
- COMPARE(r, string + string + string + string);
- }
- void s_reserve_lit() {
- QBENCHMARK {
- r.clear();
- //r.reserve(string.size() + qstrlen(l1string.latin1())
- // + string.size() + string.size());
- r.reserve(1024);
- r += string;
- r += l1string;
- r += string;
- r += string;
- }
- COMPARE(r, string + string + string + string);
- }
-
-private:
- const QLatin1Literal l1literal;
- const QLatin1String l1string;
- const QByteArray ba;
- const QString string;
- const QStringRef stringref;
- const QLatin1Char achar;
-
- QString r;
-};
-
-
-//void operator%(QString, int) {}
-
-int main(int argc, char *argv[])
-{
- //qDebug() << (QString("xx") * QLatin1String("y")).toString();
- //42 % 3; // Sanity test, should always work.
- //QString("x") % 2; // Sanity test, should only compile when the
- // operator%(QString, int) is visible.
-
- if (argc == 2 && (argv[1] == L("--run-builder") || argv[1] == L("-b"))) {
- tst_qstringbuilder test;
- return test.run_builder();
- }
-
- if (argc == 2 && (argv[1] == L("--run-traditional") || argv[1] == L("-t"))) {
- tst_qstringbuilder test;
- return test.run_traditional();
- }
-
- if (argc == 1) {
- QCoreApplication app(argc, argv);
- QStringList args = app.arguments();
- tst_qstringbuilder test;
- return QTest::qExec(&test, argc, argv);
- }
-
- qDebug() << "Usage: " << argv[0] << " [--run-builder|-r|--run-traditional|-t]";
-}
-
-
-#include "main.moc"
diff --git a/tests/benchmarks/qstringbuilder/qstringbuilder.pro b/tests/benchmarks/qstringbuilder/qstringbuilder.pro
deleted file mode 100644
index 870f2e26bb..0000000000
--- a/tests/benchmarks/qstringbuilder/qstringbuilder.pro
+++ /dev/null
@@ -1,15 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qstringbuilder
-STRINGBUILDERDIR = ../../../src/libs/utils
-INCLUDEPATH += $$STRINGBUILDERDIR
-
-QMAKE_CXXFLAGS += -g
-QMAKE_CFLAGS += -g
-
-QT -= gui
-
-CONFIG += release
-
-# Input
-SOURCES += main.cpp $$STRINGBUILDERDIR/qstringbuilder.cpp