diff options
author | Arne Juul <arnej@verizonmedia.com> | 2020-06-02 11:46:16 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2020-06-04 10:19:59 +0000 |
commit | 67134e619715227e6cbe91f365213487ff1b1f34 (patch) | |
tree | c912b02050ed980ea6715a0b171ad61e47e34a89 /searchlib/src/vespa/searchlib/queryeval/children_iterators.h | |
parent | c42ccbb874b581c7394a31dcb6a5e0e715d46e18 (diff) |
use vector of UP as MultiSearch::Children
* add helper class for constructing MultiSearch::Children
(mostly for unit tests)
* rewrite as needed to adapt
Diffstat (limited to 'searchlib/src/vespa/searchlib/queryeval/children_iterators.h')
-rw-r--r-- | searchlib/src/vespa/searchlib/queryeval/children_iterators.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/children_iterators.h b/searchlib/src/vespa/searchlib/queryeval/children_iterators.h new file mode 100644 index 00000000000..aa147e0299b --- /dev/null +++ b/searchlib/src/vespa/searchlib/queryeval/children_iterators.h @@ -0,0 +1,39 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#pragma once + +#include "searchiterator.h" + +namespace search::queryeval { + +/** + * Convenience for constructing MultiSearch::Children + * holding them or passing ownership around. + **/ +class ChildrenIterators { + private: + std::vector<SearchIterator::UP> _data; + public: + ChildrenIterators(std::vector<SearchIterator::UP> data) + : _data(std::move(data)) {} + ChildrenIterators(ChildrenIterators && other) = default; + + // convenience constructors for unit tests: + template <typename... Args> + ChildrenIterators(SearchIterator::UP a, Args&&... args) { + _data.reserve(1 + sizeof...(Args)); + _data.push_back(std::move(a)); + (_data.emplace_back(std::forward<Args>(args)), ...); + } + template <typename... Args> + ChildrenIterators(SearchIterator *a, Args&&... args) { + _data.reserve(1 + sizeof...(Args)); + _data.emplace_back(a); + (_data.emplace_back(std::forward<Args>(args)), ...); + } + operator std::vector<SearchIterator::UP> () && { + return std::move(_data); + } +}; + +} // namespace |