#pragma once #include "search/categories_cache.hpp" #include "search/mwm_context.hpp" #include "indexer/mwm_set.hpp" #include #include #include #include class FeatureType; namespace search { namespace cuisine_filter { struct Description { Description() = default; Description(FeatureType & ft); std::vector m_types; }; class CuisineFilter { public: using Descriptions = std::vector>; class ScopedFilter { public: ScopedFilter(MwmSet::MwmId const & mwmId, Descriptions const & descriptions, std::vector const & types); bool Matches(FeatureID const & fid) const; private: MwmSet::MwmId const m_mwmId; Descriptions const & m_descriptions; std::vector m_types; }; CuisineFilter(FoodCache & food); std::unique_ptr MakeScopedFilter(MwmContext const & context, std::vector const & types); void ClearCaches(); private: Descriptions const & GetDescriptions(MwmContext const & context); FoodCache & m_food; std::map m_descriptions; }; } // namespace cuisine_filter } // namespace search