diff options
Diffstat (limited to 'search/emitter.hpp')
-rw-r--r-- | search/emitter.hpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/search/emitter.hpp b/search/emitter.hpp new file mode 100644 index 0000000000..8989a5ef09 --- /dev/null +++ b/search/emitter.hpp @@ -0,0 +1,38 @@ +#pragma once + +#include "search/result.hpp" +#include "search/search_params.hpp" + +namespace search +{ +class Emitter +{ +public: + inline void Init(SearchParams::TOnResults onResults) + { + m_onResults = onResults; + m_results.Clear(); + } + + inline bool AddResult(Result && res) { return m_results.AddResult(move(res)); } + inline void AddResultNoChecks(Result && res) { m_results.AddResultNoChecks(move(res)); } + + inline void Emit() + { + if (m_onResults) + m_onResults(m_results); + } + + inline Results const & GetResults() const { return m_results; } + + inline void Finish(bool cancelled) + { + if (m_onResults) + m_onResults(Results::GetEndMarker(cancelled)); + } + +private: + SearchParams::TOnResults m_onResults; + Results m_results; +}; +} // namespace search |