#pragma once #include "storage/index.hpp" #include "storage/storage_defines.hpp" #include "indexer/feature.hpp" #include "geometry/rect2d.hpp" #include "std/function.hpp" namespace df { class MapDataProvider { public: template using TReadCallback = function; using TReadFeaturesFn = function const & , vector const &)>; using TReadIDsFn = function const & , m2::RectD const &, int)>; using TIsCountryLoadedFn = function; using TIsCountryLoadedByNameFn = function; using TUpdateCurrentCountryFn = function; MapDataProvider(TReadIDsFn const & idsReader, TReadFeaturesFn const & featureReader, TIsCountryLoadedByNameFn const & isCountryLoadedByNameFn, TUpdateCurrentCountryFn const & updateCurrentCountryFn); void ReadFeaturesID(TReadCallback const & fn, m2::RectD const & r, int scale) const; void ReadFeatures(TReadCallback const & fn, vector const & ids) const; TUpdateCurrentCountryFn const & UpdateCurrentCountryFn() const; private: TReadFeaturesFn m_featureReader; TReadIDsFn m_idsReader; TUpdateCurrentCountryFn m_updateCurrentCountry; public: TIsCountryLoadedByNameFn m_isCountryLoadedByName; }; } // namespace df