14 #ifndef THRILL_API_GROUP_BY_ITERATOR_HEADER 15 #define THRILL_API_GROUP_BY_ITERATOR_HEADER 36 template <
typename ValueType,
37 typename KeyExtractor,
typename GroupFunction,
typename HashFunction,
38 bool UseLocationDetection>
41 template <
typename ValueType,
42 typename KeyExtractor,
typename GroupFunction>
47 template <
typename ValueType,
typename KeyExtractor,
typename Comparator>
50 template <
typename T1,
57 template <
typename T1,
63 static constexpr
bool debug =
false;
65 using Key =
typename common::FunctionTraits<KeyExtractor>::result_type;
115 if (reader_.HasNext()) {
116 elem_ = reader_.template Next<ValueIn>();
119 key_ = std::move(key);
124 is_reader_empty_ =
true;
131 template <
typename ValueType,
typename KeyExtractor,
typename Comparator>
134 template <
typename T1,
141 template <
typename T1,
147 static constexpr
bool debug =
false;
149 using Key =
typename common::FunctionTraits<KeyExtractor>::result_type;
151 ValueIn, std::vector<data::File::Reader>::iterator, Comparator>;
201 elem_ = reader_.
Next();
203 if (next_key != key_) {
204 key_ = std::move(next_key);
209 is_reader_empty_ =
true;
219 #endif // !THRILL_API_GROUP_BY_ITERATOR_HEADER
GroupByMultiwayMergeIterator(Puller &reader, const KeyExtractor &key_extractor)
typename common::FunctionTraits< KeyExtractor >::result_type Key
typename data::File::Reader Reader
const KeyExtractor & key_extractor_
const KeyExtractor & key_extractor_
GroupByIterator(Reader &reader, const KeyExtractor &key_extractor)
typename common::FunctionTraits< KeyExtractor >::result_type Key
GroupByIterator & operator=(const GroupByIterator &)=delete
non-copyable: delete assignment operator
static constexpr bool debug