#pragma once #include "partners_api/ads_base.hpp" #include "partners_api/banner.hpp" #include #include #include namespace feature { class TypesHolder; } namespace ads { class Engine { public: Engine(); bool HasBanner(feature::TypesHolder const & types, storage::TCountriesVec const & countryIds, std::string const & userLanguage) const; std::vector GetBanners(feature::TypesHolder const & types, storage::TCountriesVec const & countryIds, std::string const & userLanguage) const; bool HasSearchBanner() const; std::vector GetSearchBanners() const; private: using ContainerPtr = std::unique_ptr; struct ContainerItem { ContainerItem(Banner::Type type, ContainerPtr && container) : m_type(type), m_container(std::move(container)) { } Banner::Type m_type; ContainerPtr m_container; }; std::vector m_banners; std::vector m_searchBanners; }; } // namespace ads