#pragma once #include "search/feature_offset_match.hpp" #include "search/query_params.hpp" #include "platform/mwm_traits.hpp" #include "coding/reader.hpp" #include "geometry/rect2d.hpp" #include "base/cancellable.hpp" #include "base/dfa_helpers.hpp" #include "base/levenshtein_dfa.hpp" #include "std/unique_ptr.hpp" class MwmValue; namespace coding { class CompressedBitVector; } namespace search { class MwmContext; class TokenSlice; class Retrieval { public: template using TrieRoot = trie::Iterator>; Retrieval(MwmContext const & context, my::Cancellable const & cancellable); // Following functions retrieve from the search index corresponding to // |value| all features matching to |request|. unique_ptr RetrieveAddressFeatures( SearchTrieRequest const & request); unique_ptr RetrieveAddressFeatures( SearchTrieRequest> const & request); // Retrieves from the search index corresponding to |value| all // postcodes matching to |slice|. unique_ptr RetrievePostcodeFeatures(TokenSlice const & slice); // Retrieves from the geometry index corresponding to |value| all features belonging to |rect|. unique_ptr RetrieveGeometryFeatures(m2::RectD const & rect, int scale); private: template