Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'search/emitter.hpp')
-rw-r--r--search/emitter.hpp38
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