summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/kernel/qjniarray.h12
-rw-r--r--tests/auto/corelib/kernel/qjniarray/tst_qjniarray.cpp17
2 files changed, 24 insertions, 5 deletions
diff --git a/src/corelib/kernel/qjniarray.h b/src/corelib/kernel/qjniarray.h
index a448b68d4bc..66688c393d1 100644
--- a/src/corelib/kernel/qjniarray.h
+++ b/src/corelib/kernel/qjniarray.h
@@ -19,6 +19,8 @@ template <typename T> class QJniArray;
template <typename T>
struct QJniArrayIterator
{
+ QJniArrayIterator() = default;
+
constexpr QJniArrayIterator(const QJniArrayIterator &other) noexcept = default;
constexpr QJniArrayIterator(QJniArrayIterator &&other) noexcept = default;
constexpr QJniArrayIterator &operator=(const QJniArrayIterator &other) noexcept = default;
@@ -49,13 +51,13 @@ struct QJniArrayIterator
}
private:
- friend class QJniArray<T>;
+ using VT = std::remove_const_t<T>;
+ friend class QJniArray<VT>;
qsizetype m_index = 0;
- const QJniArray<T> *m_array = nullptr;
+ const QJniArray<VT> *m_array = nullptr;
- QJniArrayIterator() = delete;
- QJniArrayIterator(qsizetype index, const QJniArray<T> *array)
+ QJniArrayIterator(qsizetype index, const QJniArray<VT> *array)
: m_index(index), m_array(array)
{}
};
@@ -154,7 +156,7 @@ class QJniArray : public QJniArrayBase
friend struct QJniArrayIterator<T>;
public:
using Type = T;
- using const_iterator = const QJniArrayIterator<T>;
+ using const_iterator = QJniArrayIterator<const T>;
QJniArray() = default;
explicit QJniArray(jarray array) : QJniArrayBase(array) {}
diff --git a/tests/auto/corelib/kernel/qjniarray/tst_qjniarray.cpp b/tests/auto/corelib/kernel/qjniarray/tst_qjniarray.cpp
index 3d2fb662418..fe41fae3ff6 100644
--- a/tests/auto/corelib/kernel/qjniarray/tst_qjniarray.cpp
+++ b/tests/auto/corelib/kernel/qjniarray/tst_qjniarray.cpp
@@ -17,6 +17,7 @@ public:
private slots:
void size();
+ void operators();
};
using namespace QtJniTypes;
@@ -85,6 +86,22 @@ void tst_QJniArray::size()
QCOMPARE(intArray.size(), 10);
}
+void tst_QJniArray::operators()
+{
+ QByteArray bytes("abcde");
+ QJniArray<jbyte> array(bytes);
+ QVERIFY(array.isValid());
+
+ {
+ QJniArray<jbyte>::const_iterator it = {};
+ QCOMPARE(it, QJniArray<jbyte>::const_iterator{});
+ QCOMPARE_NE(array.begin(), array.end());
+
+ it = array.begin();
+ QCOMPARE(it, array.begin());
+ }
+}
+
QTEST_MAIN(tst_QJniArray)
#include "tst_qjniarray.moc"