From 399ab058c94978b40876e42b5b677d392f2e33f5 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 6 Apr 2017 19:36:47 +0200 Subject: Add front()/back() to QString, QStringRef, QByteArray and QLatin1String These STL-compatibility functions are present on our generic containers, but not on the string classes. [ChangeLog][QtCore][QString/QStringRef/QByteArray/QLatin1String] Added front() and back() for STL compatibility. Change-Id: I536019396b319abd1e2daf9c64ebab4e7a35b334 Reviewed-by: Lars Knoll --- .../containerapisymmetry/tst_containerapisymmetry.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'tests/auto/corelib/tools/containerapisymmetry') diff --git a/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp b/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp index d7ec624804..3b8111f1a3 100644 --- a/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp +++ b/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp @@ -28,8 +28,10 @@ #include +#include "qbytearray.h" #include "qlinkedlist.h" #include "qlist.h" +#include "qstring.h" #include "qvarlengtharray.h" #include "qvector.h" @@ -49,6 +51,11 @@ private Q_SLOTS: void front_back_QList() { front_back_impl>(); } void front_back_QLinkedList() { front_back_impl>(); } void front_back_QVarLengthArray() { front_back_impl>(); } + void front_back_QString() { front_back_impl(); } + void front_back_QStringRef() { front_back_impl(); } + void front_back_QStringView() { front_back_impl(); } + void front_back_QLatin1String() { front_back_impl(); } + void front_back_QByteArray() { front_back_impl(); } }; template @@ -61,7 +68,16 @@ Container make(int size) return c; } +static QString s_string = QStringLiteral("\1\2\3\4\5\6\7"); + +template <> QStringRef make(int size) { return s_string.leftRef(size); } +template <> QStringView make(int size) { return QStringView(s_string).left(size); } +template <> QLatin1String make(int size) { return QLatin1String("\1\2\3\4\5\6\7", size); } + template T clean(T &&t) { return std::forward(t); } +inline QChar clean(QCharRef ch) { return ch; } +inline char clean(QByteRef ch) { return ch; } +inline char clean(QLatin1Char ch) { return ch.toLatin1(); } template void tst_ContainerApiSymmetry::front_back_impl() const -- cgit v1.2.3