summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qbytearraylist.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/tools/qbytearraylist.h')
-rw-r--r--src/corelib/tools/qbytearraylist.h141
1 files changed, 18 insertions, 123 deletions
diff --git a/src/corelib/tools/qbytearraylist.h b/src/corelib/tools/qbytearraylist.h
index efcba8e7ea..9d7e776028 100644
--- a/src/corelib/tools/qbytearraylist.h
+++ b/src/corelib/tools/qbytearraylist.h
@@ -40,146 +40,41 @@
**
****************************************************************************/
+#include <QtCore/qlist.h>
#ifndef QBYTEARRAYLIST_H
#define QBYTEARRAYLIST_H
-#include <QtCore/qdatastream.h>
-#include <QtCore/qlist.h>
#include <QtCore/qbytearray.h>
QT_BEGIN_NAMESPACE
-
typedef QListIterator<QByteArray> QByteArrayListIterator;
typedef QMutableListIterator<QByteArray> QMutableByteArrayListIterator;
-
-class QByteArrayList : public QList<QByteArray>
-{
-public:
- QByteArrayList() { }
- explicit QByteArrayList(const QByteArray &i) { append(i); }
- QByteArrayList(const QList<QByteArray> &l) : QList<QByteArray>(l) { }
-#ifdef Q_COMPILER_RVALUE_REFS
- QByteArrayList(QList<QByteArray> &&l) : QList<QByteArray>(qMove(l)) { }
-#endif
-#ifdef Q_COMPILER_INITIALIZER_LISTS
- QByteArrayList(std::initializer_list<QByteArray> args) : QList<QByteArray>(args) { }
-#endif
- // compiler-generated copy/move ctor/assignment operators are ok
- // compiler-generated dtor is ok
- // inherited swap() is ok (sic!)
-
- // For the operators, we could just say using QList<QByteArray>::operator{=,<<},
- // but they would not return QByteArrayList&, so we need to write inline forwarders:
- QByteArrayList &operator=(const QList<QByteArray> &other)
- { QList<QByteArray>::operator=(other); return *this; }
-#ifdef Q_COMPILER_RVALUE_REFS
- QByteArrayList &operator=(QList<QByteArray> &&other)
- { QList<QByteArray>::operator=(qMove(other)); return *this; }
-#endif
- // if this is missing, assignment from an initializer_list is ambiguous:
-#ifdef Q_COMPILER_INITIALIZER_LISTS
- QByteArrayList &operator=(std::initializer_list<QByteArray> args)
- { QByteArrayList copy(args); swap(copy); return *this; }
-#endif
- QByteArrayList &operator<<(const QByteArray &str)
- { QList<QByteArray>::operator<<(str); return *this; }
- QByteArrayList &operator<<(const QList<QByteArray> &l)
- { QList<QByteArray>::operator<<(l); return *this; }
-
- //
- // actual functionality provided on top of what QList<QByteArray> provides starts here:
- //
- inline QByteArray join() const;
- inline QByteArray join(const QByteArray &sep) const;
- inline QByteArray join(char sep) const;
-};
-
-Q_DECLARE_TYPEINFO(QByteArrayList, Q_MOVABLE_TYPE);
+typedef QList<QByteArray> QByteArrayList;
namespace QtPrivate {
QByteArray Q_CORE_EXPORT QByteArrayList_join(const QByteArrayList *that, const char *separator, int separatorLength);
}
-inline QByteArray QByteArrayList::join() const
-{
- return QtPrivate::QByteArrayList_join(this, 0, 0);
-}
-
-inline QByteArray QByteArrayList::join(const QByteArray &sep) const
-{
- return QtPrivate::QByteArrayList_join(this, sep.constData(), sep.size());
-}
-
-inline QByteArray QByteArrayList::join(char sep) const
-{
- return QtPrivate::QByteArrayList_join(this, &sep, 1);
-}
-
-inline QByteArrayList operator+(const QByteArrayList &lhs, const QByteArrayList &rhs)
-{
- QByteArrayList res = lhs;
- res += rhs;
- return res;
-}
-
-#ifdef Q_COMPILER_RVALUE_REFS
-inline QByteArrayList operator+(QByteArrayList &&lhs, const QByteArrayList &rhs)
-{
- lhs += rhs;
- return qMove(lhs);
-}
-#endif
-
-inline QByteArrayList operator+(const QByteArrayList &lhs, const QList<QByteArray> &rhs)
-{
- QByteArrayList res = lhs;
- res += rhs;
- return res;
-}
-
-#ifdef Q_COMPILER_RVALUE_REFS
-inline QByteArrayList operator+(QByteArrayList &&lhs, const QList<QByteArray> &rhs)
-{
- lhs += rhs;
- return qMove(lhs);
-}
-#endif
-
-inline QByteArrayList operator+(const QList<QByteArray> &lhs, const QByteArrayList &rhs)
-{
- QByteArrayList res = lhs;
- res += rhs;
- return res;
-}
-
-#if 0 // ambiguous with QList<QByteArray>::operator+(const QList<QByteArray> &) const
-#ifdef Q_COMPILER_RVALUE_REFS
-inline QByteArrayList operator+(QList<QByteArray> &&lhs, const QByteArrayList &rhs)
-{
- lhs += rhs;
- return qMove(lhs);
-}
-#endif
+#ifdef Q_QDOC
+class QByteArrayList : public QList<QByteArray>
+#else
+template <> struct QListSpecialMethods<QByteArray>
#endif
-
-inline QByteArrayList& operator+=(QByteArrayList &lhs, const QList<QByteArray> &rhs)
{
- lhs.append(rhs);
- return lhs;
-}
-
-#ifndef QT_NO_DATASTREAM
-inline QDataStream &operator>>(QDataStream &in, QByteArrayList &list)
-{
- return operator>>(in, static_cast<QList<QByteArray> &>(list));
-}
-inline QDataStream &operator<<(QDataStream &out, const QByteArrayList &list)
-{
- return operator<<(out, static_cast<const QList<QByteArray> &>(list));
-}
-#endif // QT_NO_DATASTREAM
+ inline QByteArray join() const
+ { return QtPrivate::QByteArrayList_join(self(), 0, 0); }
+ inline QByteArray join(const QByteArray &sep) const
+ { return QtPrivate::QByteArrayList_join(self(), sep.constData(), sep.size()); }
+ inline QByteArray join(char sep) const
+ { return QtPrivate::QByteArrayList_join(self(), &sep, 1); }
+
+private:
+ typedef QList<QByteArray> Self;
+ Self *self() { return static_cast<Self *>(this); }
+ const Self *self() const { return static_cast<const Self *>(this); }
+};
QT_END_NAMESPACE