From 1a2e656a6a8b8f5104e6e379688b3a5ab30697c2 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Wed, 18 May 2022 02:26:22 +0300 Subject: [PATCH] remove unused QtConcurrent filter methods Signed-off-by: Ivailo Monev --- package/freebsd/pkg-plist | 5 +- package/netbsd/PLIST | 3 - package/openbsd/pkg/PLIST | 3 - scripts/namefsck.py | 1 - src/core/CMakeLists.txt | 4 - src/core/concurrent/qtconcurrentfilter.cpp | 310 ----------------------- src/core/concurrent/qtconcurrentfilter.h | 200 --------------- src/core/concurrent/qtconcurrentfilterkernel.h | 325 ------------------------- 8 files changed, 1 insertion(+), 850 deletions(-) delete mode 100644 src/core/concurrent/qtconcurrentfilter.cpp delete mode 100644 src/core/concurrent/qtconcurrentfilter.h delete mode 100644 src/core/concurrent/qtconcurrentfilterkernel.h diff --git a/package/freebsd/pkg-plist b/package/freebsd/pkg-plist index 6b0146d7f..49dcbd800 100644 --- a/package/freebsd/pkg-plist +++ b/package/freebsd/pkg-plist @@ -183,7 +183,6 @@ include/katie/QtCore/Q_PID include/katie/QtCore/Qt include/katie/QtCore/QtAlgorithms include/katie/QtCore/QtCleanUpFunction -include/katie/QtCore/QtConcurrentFilter include/katie/QtCore/QtConcurrentMap include/katie/QtCore/QtConcurrentRun include/katie/QtCore/QtConfig @@ -280,9 +279,7 @@ include/katie/QtCore/qstring.h include/katie/QtCore/qstringlist.h include/katie/QtCore/qstringmatcher.h include/katie/QtCore/qtconcurrentcompilertest.h -include/katie/QtCore/qtconcurrentexception.h -include/katie/QtCore/qtconcurrentfilter.h -include/katie/QtCore/qtconcurrentfilterkernel.h +include/katie/QtCore/qtconcurrentexception. include/katie/QtCore/qtconcurrentfunctionwrappers.h include/katie/QtCore/qtconcurrentiteratekernel.h include/katie/QtCore/qtconcurrentmap.h diff --git a/package/netbsd/PLIST b/package/netbsd/PLIST index e1d606697..cfb8e0d6a 100644 --- a/package/netbsd/PLIST +++ b/package/netbsd/PLIST @@ -186,7 +186,6 @@ include/katie/QtCore/Q_PID include/katie/QtCore/Qt include/katie/QtCore/QtAlgorithms include/katie/QtCore/QtCleanUpFunction -include/katie/QtCore/QtConcurrentFilter include/katie/QtCore/QtConcurrentMap include/katie/QtCore/QtConcurrentRun include/katie/QtCore/QtConfig @@ -284,8 +283,6 @@ include/katie/QtCore/qstringlist.h include/katie/QtCore/qstringmatcher.h include/katie/QtCore/qtconcurrentcompilertest.h include/katie/QtCore/qtconcurrentexception.h -include/katie/QtCore/qtconcurrentfilter.h -include/katie/QtCore/qtconcurrentfilterkernel.h include/katie/QtCore/qtconcurrentfunctionwrappers.h include/katie/QtCore/qtconcurrentiteratekernel.h include/katie/QtCore/qtconcurrentmap.h diff --git a/package/openbsd/pkg/PLIST b/package/openbsd/pkg/PLIST index 8d3036f60..bb58bfd7e 100644 --- a/package/openbsd/pkg/PLIST +++ b/package/openbsd/pkg/PLIST @@ -186,7 +186,6 @@ include/katie/QtCore/Q_PID include/katie/QtCore/Qt include/katie/QtCore/QtAlgorithms include/katie/QtCore/QtCleanUpFunction -include/katie/QtCore/QtConcurrentFilter include/katie/QtCore/QtConcurrentMap include/katie/QtCore/QtConcurrentRun include/katie/QtCore/QtConfig @@ -284,8 +283,6 @@ include/katie/QtCore/qstringlist.h include/katie/QtCore/qstringmatcher.h include/katie/QtCore/qtconcurrentcompilertest.h include/katie/QtCore/qtconcurrentexception.h -include/katie/QtCore/qtconcurrentfilter.h -include/katie/QtCore/qtconcurrentfilterkernel.h include/katie/QtCore/qtconcurrentfunctionwrappers.h include/katie/QtCore/qtconcurrentiteratekernel.h include/katie/QtCore/qtconcurrentmap.h diff --git a/scripts/namefsck.py b/scripts/namefsck.py index 28407b011..313518417 100755 --- a/scripts/namefsck.py +++ b/scripts/namefsck.py @@ -572,7 +572,6 @@ classlist = [ "QTabWidget", "QtAlgorithms", "QtCleanUpFunction", - "QtConcurrentFilter", "QtConcurrentMap", "QtConcurrentRun", "QtConfig", diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index f51f54b7a..eea14aa32 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -83,7 +83,6 @@ set(CORE_PUBLIC_HEADERS QMetaType QVariant QFile - QtConcurrentFilter QCache QAbstractEventDispatcher QResource @@ -117,8 +116,6 @@ set(CORE_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qrunnable.h ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qtconcurrentcompilertest.h ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qtconcurrentexception.h - ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qtconcurrentfilter.h - ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qtconcurrentfilterkernel.h ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qtconcurrentfunctionwrappers.h ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qtconcurrentiteratekernel.h ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qtconcurrentmap.h @@ -274,7 +271,6 @@ set(CORE_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qfuturesynchronizer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qfuturewatcher.cpp ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qrunnable.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qtconcurrentfilter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qtconcurrentmap.cpp ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qtconcurrentresultstore.cpp ${CMAKE_CURRENT_SOURCE_DIR}/concurrent/qtconcurrentthreadengine.cpp diff --git a/src/core/concurrent/qtconcurrentfilter.cpp b/src/core/concurrent/qtconcurrentfilter.cpp deleted file mode 100644 index 55327742c..000000000 --- a/src/core/concurrent/qtconcurrentfilter.cpp +++ /dev/null @@ -1,310 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016 Ivailo Monev -** -** This file is part of the QtCore module of the Katie Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** -** GNU Lesser General Public License Usage -** 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. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \headerfile - \title Concurrent Filter and Filter-Reduce - \ingroup thread - - \brief The header provides concurrent Filter and - Filter-Reduce. - - These functions are a part of the \l {Concurrent Programming}{Qt Concurrent} framework. - - The QtConcurrent::filter(), QtConcurrent::filtered() and - QtConcurrent::filteredReduced() functions filter items in a sequence such - as a QList or a QVector in parallel. QtConcurrent::filter() modifies a - sequence in-place, QtConcurrent::filtered() returns a new sequence - containing the filtered content, and QtConcurrent::filteredReduced() - returns a single result. - - Each of the above functions have a blocking variant that returns the final - result instead of a QFuture. You use them in the same way as the - asynchronous variants. - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 6 - - Note that the result types above are not QFuture objects, but real result - types (in this case, QStringList and QSet). - - \section1 Concurrent Filter - - QtConcurrent::filtered() takes an input sequence and a filter function. - This filter function is then called for each item in the sequence, and a - new sequence containing the filtered values is returned. - - The filter function must be of the form: - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 0 - - T must match the type stored in the sequence. The function returns true if - the item should be kept, false if it should be discarded. - - This example shows how to keep strings that are all lower-case from a - QStringList: - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 1 - - The results of the filter are made available through QFuture. See the - QFuture and QFutureWatcher documentation for more information on how to - use QFuture in your applications. - - If you want to modify a sequence in-place, use QtConcurrent::filter(): - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 2 - - Since the sequence is modified in place, QtConcurrent::filter() does not - return any results via QFuture. However, you can still use QFuture and - QFutureWatcher to monitor the status of the filter. - - \section1 Concurrent Filter-Reduce - - QtConcurrent::filteredReduced() is similar to QtConcurrent::filtered(), - but instead of returing a sequence with the filtered results, the results - are combined into a single value using a reduce function. - - The reduce function must be of the form: - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 3 - - T is the type of the final result, U is the type of items being filtered. - Note that the return value and return type of the reduce function are not - used. - - Call QtConcurrent::filteredReduced() like this: - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 4 - - The reduce function will be called once for each result kept by the filter - function, and should merge the \e{intermediate} into the \e{result} - variable. QtConcurrent::filteredReduced() guarantees that only one thread - will call reduce at a time, so using a mutex to lock the result variable - is not necessary. The QtConcurrent::ReduceOptions enum provides a way to - control the order in which the reduction is done. - - \section1 Additional API Features - - \section2 Using Iterators instead of Sequence - - Each of the above functions has a variant that takes an iterator range - instead of a sequence. You use them in the same way as the sequence - variants: - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 5 - - - \section2 Using Member Functions - - QtConcurrent::filter(), QtConcurrent::filtered(), and - QtConcurrent::filteredReduced() accept pointers to member functions. - The member function class type must match the type stored in the sequence: - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 7 - - Note that when using QtConcurrent::filteredReduced(), you can mix the use of - normal and member functions freely: - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 8 - - \section2 Using Function Objects - - QtConcurrent::filter(), QtConcurrent::filtered(), and - QtConcurrent::filteredReduced() accept function objects, which can be used to - add state to a function call. The result_type typedef must define the - result type of the function call operator: - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 13 - - \section2 Using Bound Function Arguments - - Note that Qt does not provide support for bound functions. This is - provided by 3rd party libraries like - \l{http://www.boost.org/libs/bind/bind.html}{Boost} or - \l{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf} - {C++ TR1 Library Extensions}. - - If you want to use a filter function takes more than one argument, you can - use boost::bind() or std::tr1::bind() to transform it onto a function that - takes one argument. - - As an example, we use QString::contains(): - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 9 - - QString::contains() takes 2 arguments (including the "this" pointer) and - can't be used with QtConcurrent::filtered() directly, because - QtConcurrent::filtered() expects a function that takes one argument. To - use QString::contains() with QtConcurrent::filtered() we have to provide a - value for the \e regexp argument: - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 10 - - The return value from boost::bind() is a function object (functor) with - the following signature: - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 11 - - This matches what QtConcurrent::filtered() expects, and the complete - example becomes: - - \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 12 -*/ - -/*! - \fn QFuture QtConcurrent::filter(Sequence &sequence, FilterFunction filterFunction) - \relates - - Calls \a filterFunction once for each item in \a sequence. If - \a filterFunction returns true, the item is kept in \a sequence; - otherwise, the item is removed from \a sequence. -*/ - -/*! - \fn QFuture QtConcurrent::filtered(const Sequence &sequence, FilterFunction filterFunction) - \relates - - Calls \a filterFunction once for each item in \a sequence and returns a - new Sequence of kept items. If \a filterFunction returns true, a copy of - the item is put in the new Sequence. Otherwise, the item will \e not - appear in the new Sequence. -*/ - -/*! - \fn QFuture QtConcurrent::filtered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction) - \relates - - Calls \a filterFunction once for each item from \a begin to \a end and - returns a new Sequence of kept items. If \a filterFunction returns true, a - copy of the item is put in the new Sequence. Otherwise, the item will - \e not appear in the new Sequence. -*/ - -/*! - \fn QFuture QtConcurrent::filteredReduced(const Sequence &sequence, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions) - \relates - - Calls \a filterFunction once for each item in \a sequence. If - \a filterFunction returns true for an item, that item is then passed to - \a reduceFunction. In other words, the return value is the result of - \a reduceFunction for each item where \a filterFunction returns true. - - Note that while \a filterFunction is called concurrently, only one thread - at a time will call \a reduceFunction. The order in which \a reduceFunction - is called is undefined if \a reduceOptions is - QtConcurrent::UnorderedReduce. If \a reduceOptions is - QtConcurrent::OrderedReduce, \a reduceFunction is called in the order of - the original sequence. -*/ - -/*! - \fn QFuture QtConcurrent::filteredReduced(ConstIterator begin, ConstIterator end, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions) - \relates - - Calls \a filterFunction once for each item from \a begin to \a end. If - \a filterFunction returns true for an item, that item is then passed to - \a reduceFunction. In other words, the return value is the result of - \a reduceFunction for each item where \a filterFunction returns true. - - Note that while \a filterFunction is called concurrently, only one thread - at a time will call \a reduceFunction. The order in which - \a reduceFunction is called is undefined if \a reduceOptions is - QtConcurrent::UnorderedReduce. If \a reduceOptions is - QtConcurrent::OrderedReduce, the \a reduceFunction is called in the order - of the original sequence. -*/ - -/*! - \fn void QtConcurrent::blockingFilter(Sequence &sequence, FilterFunction filterFunction) - - Calls \a filterFunction once for each item in \a sequence. If - \a filterFunction returns true, the item is kept in \a sequence; - otherwise, the item is removed from \a sequence. - - \note This function will block until all items in the sequence have been processed. -*/ - -/*! - \fn Sequence QtConcurrent::blockingFiltered(const Sequence &sequence, FilterFunction filterFunction) - - Calls \a filterFunction once for each item in \a sequence and returns a - new Sequence of kept items. If \a filterFunction returns true, a copy of - the item is put in the new Sequence. Otherwise, the item will \e not - appear in the new Sequence. - - \note This function will block until all items in the sequence have been processed. - - \sa filtered() -*/ - -/*! - \fn Sequence QtConcurrent::blockingFiltered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction) - - Calls \a filterFunction once for each item from \a begin to \a end and - returns a new Sequence of kept items. If \a filterFunction returns true, a - copy of the item is put in the new Sequence. Otherwise, the item will - \e not appear in the new Sequence. - - \note This function will block until the iterator reaches the end of the - sequence being processed. - - \sa filtered() -*/ - -/*! - \fn T QtConcurrent::blockingFilteredReduced(const Sequence &sequence, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions) - - Calls \a filterFunction once for each item in \a sequence. If - \a filterFunction returns true for an item, that item is then passed to - \a reduceFunction. In other words, the return value is the result of - \a reduceFunction for each item where \a filterFunction returns true. - - Note that while \a filterFunction is called concurrently, only one thread - at a time will call \a reduceFunction. The order in which \a reduceFunction - is called is undefined if \a reduceOptions is - QtConcurrent::UnorderedReduce. If \a reduceOptions is - QtConcurrent::OrderedReduce, \a reduceFunction is called in the order of - the original sequence. - - \note This function will block until all items in the sequence have been processed. - - \sa filteredReduced() -*/ - -/*! - \fn T QtConcurrent::blockingFilteredReduced(ConstIterator begin, ConstIterator end, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions) - - Calls \a filterFunction once for each item from \a begin to \a end. If - \a filterFunction returns true for an item, that item is then passed to - \a reduceFunction. In other words, the return value is the result of - \a reduceFunction for each item where \a filterFunction returns true. - - Note that while \a filterFunction is called concurrently, only one thread - at a time will call \a reduceFunction. The order in which - \a reduceFunction is called is undefined if \a reduceOptions is - QtConcurrent::UnorderedReduce. If \a reduceOptions is - QtConcurrent::OrderedReduce, the \a reduceFunction is called in the order - of the original sequence. - - \note This function will block until the iterator reaches the end of the - sequence being processed. - - \sa filteredReduced() -*/ diff --git a/src/core/concurrent/qtconcurrentfilter.h b/src/core/concurrent/qtconcurrentfilter.h deleted file mode 100644 index 89fcb8bba..000000000 --- a/src/core/concurrent/qtconcurrentfilter.h +++ /dev/null @@ -1,200 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016 Ivailo Monev -** -** This file is part of the QtCore module of the Katie Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** -** GNU Lesser General Public License Usage -** 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. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTCONCURRENT_FILTER_H -#define QTCONCURRENT_FILTER_H - -#include - -#ifndef QT_NO_CONCURRENT - -#include -#include - -QT_BEGIN_NAMESPACE - - - -namespace QtConcurrent { - -template -ThreadEngineStarter filterInternal(Sequence &sequence, KeepFunctor keep, ReduceFunctor reduce) -{ - typedef FilterKernel KernelType; - return startThreadEngine(new KernelType(sequence, keep, reduce)); -} - -// filter() on sequences -template -QFuture filter(Sequence &sequence, KeepFunctor keep) -{ - return filterInternal(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper()); -} - -// filteredReduced() on sequences -template -QFuture filteredReduced(const Sequence &sequence, - KeepFunctor keep, - ReduceFunctor reduce, - ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce)) -{ - return startFilteredReduced(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::createFunctionWrapper(reduce), options); -} - -template -QFuture::ResultType> filteredReduced(const Sequence &sequence, - KeepFunctor keep, - ReduceFunctor reduce, - ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce)) -{ - return startFilteredReduced::ResultType> - (sequence, - QtPrivate::createFunctionWrapper(keep), - QtPrivate::createFunctionWrapper(reduce), - options); -} - -// filteredReduced() on iterators -template -QFuture filteredReduced(Iterator begin, - Iterator end, - KeepFunctor keep, - ReduceFunctor reduce, - ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce)) -{ - return startFilteredReduced(begin, end, QtPrivate::createFunctionWrapper(keep), QtPrivate::createFunctionWrapper(reduce), options); -} - -template -QFuture::ResultType> filteredReduced(Iterator begin, - Iterator end, - KeepFunctor keep, - ReduceFunctor reduce, - ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce)) -{ - return startFilteredReduced::ResultType> - (begin, end, - QtPrivate::createFunctionWrapper(keep), - QtPrivate::createFunctionWrapper(reduce), - options); -} - -// filtered() on sequences -template -QFuture filtered(const Sequence &sequence, KeepFunctor keep) -{ - return startFiltered(sequence, QtPrivate::createFunctionWrapper(keep)); -} - -// filtered() on iterators -template -QFuture::value_type> filtered(Iterator begin, Iterator end, KeepFunctor keep) -{ - return startFiltered(begin, end, QtPrivate::createFunctionWrapper(keep)); -} - -// blocking filter() on sequences -template -void blockingFilter(Sequence &sequence, KeepFunctor keep) -{ - filterInternal(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper()).startBlocking(); -} - -// blocking filteredReduced() on sequences -template -ResultType blockingFilteredReduced(const Sequence &sequence, - KeepFunctor keep, - ReduceFunctor reduce, - ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce)) -{ - return startFilteredReduced(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::createFunctionWrapper(reduce), options) - .startBlocking(); -} - -template -typename QtPrivate::ReduceResultType::ResultType blockingFilteredReduced(const Sequence &sequence, - KeepFunctor keep, - ReduceFunctor reduce, - ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce)) -{ - return blockingFilteredReduced::ResultType> - (sequence, - QtPrivate::createFunctionWrapper(keep), - QtPrivate::createFunctionWrapper(reduce), - options); -} - -// blocking filteredReduced() on iterators -template -ResultType blockingFilteredReduced(Iterator begin, - Iterator end, - KeepFunctor keep, - ReduceFunctor reduce, - ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce)) -{ - return startFilteredReduced - (begin, end, - QtPrivate::createFunctionWrapper(keep), - QtPrivate::createFunctionWrapper(reduce), - options) - .startBlocking(); -} - -template -typename QtPrivate::ReduceResultType::ResultType blockingFilteredReduced(Iterator begin, - Iterator end, - KeepFunctor keep, - ReduceFunctor reduce, - ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce)) -{ - return startFilteredReduced::ResultType> - (begin, end, - QtPrivate::createFunctionWrapper(keep), - QtPrivate::createFunctionWrapper(reduce), - options) - .startBlocking(); -} - -// blocking filtered() on sequences -template -Sequence blockingFiltered(const Sequence &sequence, KeepFunctor keep) -{ - return startFilteredReduced(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper(), OrderedReduce).startBlocking(); -} - -// blocking filtered() on iterators -template -OutputSequence blockingFiltered(Iterator begin, Iterator end, KeepFunctor keep) -{ - return startFilteredReduced(begin, end, - QtPrivate::createFunctionWrapper(keep), - QtPrivate::PushBackWrapper(), - OrderedReduce).startBlocking(); -} - -} // namespace QtConcurrent - - -QT_END_NAMESPACE - -#endif // QT_NO_CONCURRENT - -#endif diff --git a/src/core/concurrent/qtconcurrentfilterkernel.h b/src/core/concurrent/qtconcurrentfilterkernel.h deleted file mode 100644 index 3641d1a0d..000000000 --- a/src/core/concurrent/qtconcurrentfilterkernel.h +++ /dev/null @@ -1,325 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016 Ivailo Monev -** -** This file is part of the QtCore module of the Katie Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** -** GNU Lesser General Public License Usage -** 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. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTCONCURRENT_FILTERKERNEL_H -#define QTCONCURRENT_FILTERKERNEL_H - -#include - -#ifndef QT_NO_CONCURRENT - -#include -#include -#include - -QT_BEGIN_NAMESPACE - - -namespace QtConcurrent { - -template -struct qValueType -{ - typedef typename T::value_type value_type; -}; - -template -struct qValueType -{ - typedef T value_type; -}; - -template -struct qValueType -{ - typedef T value_type; -}; - -// Implementation of filter -template -class FilterKernel : public IterateKernel -{ - typedef ReduceKernel Reducer; - typedef IterateKernel IterateKernelType; - typedef typename ReduceFunctor::result_type T; - - Sequence reducedResult; - Sequence &sequence; - KeepFunctor keep; - ReduceFunctor reduce; - Reducer reducer; - -public: - FilterKernel(Sequence &_sequence, KeepFunctor _keep, ReduceFunctor _reduce) - : IterateKernelType(_sequence.constBegin(), _sequence.constEnd()), reducedResult(), - sequence(_sequence), - keep(_keep), - reduce(_reduce), - reducer(OrderedReduce) - { } - - bool runIteration(typename Sequence::const_iterator it, int index, T *) - { - IntermediateResults results; - results.begin = index; - results.end = index + 1; - - if (keep(*it)) - results.vector.append(*it); - - reducer.runReduce(reduce, reducedResult, results); - return false; - } - - bool runIterations(typename Sequence::const_iterator sequenceBeginIterator, int begin, int end, T *) - { - IntermediateResults results; - results.begin = begin; - results.end = end; - results.vector.reserve(end - begin); - - - typename Sequence::const_iterator it = sequenceBeginIterator; - std::advance(it, begin); - for (int i = begin; i < end; ++i) { - if (keep(*it)) - results.vector.append(*it); - std::advance(it, 1); - } - - reducer.runReduce(reduce, reducedResult, results); - return false; - } - - void finish() - { - reducer.finish(reduce, reducedResult); - sequence = reducedResult; - } - - inline bool shouldThrottleThread() - { - return IterateKernelType::shouldThrottleThread() || reducer.shouldThrottle(); - } - - inline bool shouldStartThread() - { - return IterateKernelType::shouldStartThread() && reducer.shouldStartThread(); - } - - typedef void ReturnType; - typedef void ResultType; -}; - -// Implementation of filter-reduce -template ::value_type> > -class FilteredReducedKernel : public IterateKernel -{ - ReducedResultType reducedResult; - KeepFunctor keep; - ReduceFunctor reduce; - Reducer reducer; - typedef IterateKernel IterateKernelType; - -public: - FilteredReducedKernel(Iterator begin, - Iterator end, - KeepFunctor _keep, - ReduceFunctor _reduce, - ReduceOptions reduceOption) - : IterateKernelType(begin, end), reducedResult(), keep(_keep), reduce(_reduce), reducer(reduceOption) - { } - -#if 0 - FilteredReducedKernel(ReducedResultType initialValue, - KeepFunctor keep, - ReduceFunctor reduce, - ReduceOption reduceOption) - : reducedResult(initialValue), keep(keep), reduce(reduce), reducer(reduceOption) - { } -#endif - - bool runIteration(Iterator it, int index, ReducedResultType *) - { - IntermediateResults::value_type> results; - results.begin = index; - results.end = index + 1; - - if (keep(*it)) - results.vector.append(*it); - - reducer.runReduce(reduce, reducedResult, results); - return false; - } - - bool runIterations(Iterator sequenceBeginIterator, int begin, int end, ReducedResultType *) - { - IntermediateResults::value_type> results; - results.begin = begin; - results.end = end; - results.vector.reserve(end - begin); - - Iterator it = sequenceBeginIterator; - std::advance(it, begin); - for (int i = begin; i < end; ++i) { - if (keep(*it)) - results.vector.append(*it); - std::advance(it, 1); - } - - reducer.runReduce(reduce, reducedResult, results); - return false; - } - - void finish() - { - reducer.finish(reduce, reducedResult); - } - - inline bool shouldThrottleThread() - { - return IterateKernelType::shouldThrottleThread() || reducer.shouldThrottle(); - } - - inline bool shouldStartThread() - { - return IterateKernelType::shouldStartThread() && reducer.shouldStartThread(); - } - - typedef ReducedResultType ReturnType; - typedef ReducedResultType ResultType; - ReducedResultType *result() - { - return &reducedResult; - } -}; - -// Implementation of filter that reports individual results via QFutureInterface -template -class FilteredEachKernel : public IterateKernel::value_type> -{ - typedef typename qValueType::value_type T; - typedef IterateKernel IterateKernelType; - - KeepFunctor keep; - -public: - typedef T ReturnType; - typedef T ResultType; - - FilteredEachKernel(Iterator begin, Iterator end, KeepFunctor _keep) - : IterateKernelType(begin, end), keep(_keep) - { } - - void start() - { - if (this->futureInterface) - this->futureInterface->setFilterMode(true); - IterateKernelType::start(); - } - - bool runIteration(Iterator it, int index, T *) - { - if (keep(*it)) - this->reportResult(&(*it), index); - else - this->reportResult(0, index); - return false; - } - - bool runIterations(Iterator sequenceBeginIterator, int begin, int end, T *) - { - const int count = end - begin; - IntermediateResults::value_type> results; - results.begin = begin; - results.end = end; - results.vector.reserve(count); - - Iterator it = sequenceBeginIterator; - std::advance(it, begin); - for (int i = begin; i < end; ++i) { - if (keep(*it)) - results.vector.append(*it); - std::advance(it, 1); - } - - this->reportResults(results.vector, begin, count); - return false; - } -}; - -template -inline -ThreadEngineStarter::value_type> -startFiltered(Iterator begin, Iterator end, KeepFunctor functor) -{ - return startThreadEngine(new FilteredEachKernel(begin, end, functor)); -} - -template -inline ThreadEngineStarter -startFiltered(const Sequence &sequence, KeepFunctor functor) -{ - typedef SequenceHolder1, - KeepFunctor> - SequenceHolderType; - return startThreadEngine(new SequenceHolderType(sequence, functor)); -} - -template -inline ThreadEngineStarter startFilteredReduced(const Sequence & sequence, - MapFunctor mapFunctor, ReduceFunctor reduceFunctor, - ReduceOptions options) -{ - typedef typename Sequence::const_iterator Iterator; - typedef ReduceKernel::value_type > Reducer; - typedef FilteredReducedKernel FilteredReduceType; - typedef SequenceHolder2 SequenceHolderType; - return startThreadEngine(new SequenceHolderType(sequence, mapFunctor, reduceFunctor, options)); -} - - -template -inline ThreadEngineStarter startFilteredReduced(Iterator begin, Iterator end, - MapFunctor mapFunctor, ReduceFunctor reduceFunctor, - ReduceOptions options) -{ - typedef ReduceKernel::value_type> Reducer; - typedef FilteredReducedKernel FilteredReduceType; - return startThreadEngine(new FilteredReduceType(begin, end, mapFunctor, reduceFunctor, options)); -} - - -} // namespace QtConcurrent - - -QT_END_NAMESPACE - -#endif // QT_NO_CONCURRENT - -#endif -- 2.11.0