summaryrefslogtreecommitdiffstats
path: root/tests/auto/concurrent/testhelper_functions.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/concurrent/testhelper_functions.h')
-rw-r--r--tests/auto/concurrent/testhelper_functions.h89
1 files changed, 52 insertions, 37 deletions
diff --git a/tests/auto/concurrent/testhelper_functions.h b/tests/auto/concurrent/testhelper_functions.h
index aeba794977..88c2e28910 100644
--- a/tests/auto/concurrent/testhelper_functions.h
+++ b/tests/auto/concurrent/testhelper_functions.h
@@ -1,33 +1,10 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
+#include <QList>
+
#include <vector>
bool keepEvenIntegers(const int &x)
@@ -44,6 +21,19 @@ public:
}
};
+class KeepEvenIntegersMoveOnly
+{
+public:
+ KeepEvenIntegersMoveOnly() = default;
+ KeepEvenIntegersMoveOnly(KeepEvenIntegersMoveOnly &&) = default;
+ KeepEvenIntegersMoveOnly &operator=(KeepEvenIntegersMoveOnly &&other) = default;
+
+ KeepEvenIntegersMoveOnly(const KeepEvenIntegersMoveOnly &) = delete;
+ KeepEvenIntegersMoveOnly &operator=(const KeepEvenIntegersMoveOnly &) = delete;
+
+ bool operator()(int x) { return (x & 1) == 0; }
+};
+
class Number
{
int n;
@@ -121,6 +111,19 @@ public:
}
};
+class IntSumReduceMoveOnly
+{
+public:
+ IntSumReduceMoveOnly() = default;
+ IntSumReduceMoveOnly(IntSumReduceMoveOnly &&) = default;
+ IntSumReduceMoveOnly &operator=(IntSumReduceMoveOnly &&other) = default;
+
+ IntSumReduceMoveOnly(const IntSumReduceMoveOnly &) = delete;
+ IntSumReduceMoveOnly &operator=(const IntSumReduceMoveOnly &) = delete;
+
+ void operator()(int &sum, int x) { sum += x; }
+};
+
void numberSumReduce(int &sum, const Number &x)
{
sum += x.toInt();
@@ -135,34 +138,46 @@ public:
}
};
+template<typename T>
class MoveOnlyVector
{
public:
- using value_type = int;
+ using value_type = T;
// rule of six
MoveOnlyVector() = default;
~MoveOnlyVector() = default;
- MoveOnlyVector(MoveOnlyVector &&other) = default;
- MoveOnlyVector &operator=(MoveOnlyVector &&other) = default;
+ MoveOnlyVector(MoveOnlyVector<T> &&other) = default;
+ MoveOnlyVector &operator=(MoveOnlyVector<T> &&other) = default;
- MoveOnlyVector(const MoveOnlyVector &) = delete;
- MoveOnlyVector &operator=(const MoveOnlyVector &) = delete;
+ MoveOnlyVector(const MoveOnlyVector<T> &) = delete;
+ MoveOnlyVector &operator=(const MoveOnlyVector<T> &) = delete;
// convenience for creation
- explicit MoveOnlyVector(const std::vector<int> &v) : data(v) { }
+ explicit MoveOnlyVector(const std::vector<T> &v) : data(v) { }
+ void push_back(T &&el) { data.push_back(el); }
+ void push_back(const T &el) { data.push_back(el); }
// minimal interface to be usable as a Sequence in QtConcurrent
- typedef std::vector<int>::const_iterator const_iterator;
- typedef std::vector<int>::iterator iterator;
+ typedef typename std::vector<T>::const_iterator const_iterator;
+ typedef typename std::vector<T>::iterator iterator;
const_iterator cbegin() const { return data.cbegin(); }
const_iterator cend() const { return data.cend(); }
iterator begin() { return data.begin(); }
iterator end() { return data.end(); }
- bool operator==(const MoveOnlyVector &other) const { return data == other.data; }
+ const_iterator begin() const { return data.cbegin(); }
+ const_iterator end() const { return data.cend(); }
+ bool operator==(const MoveOnlyVector<T> &other) const { return data == other.data; }
private:
- std::vector<int> data;
+ std::vector<T> data;
+};
+
+struct NonTemplateSequence : public QList<int>
+{
+ NonTemplateSequence() = default;
+
+ NonTemplateSequence(std::initializer_list<int> args) : QList(args) { }
};
#endif