#pragma once #include "std/limits.hpp" #include "std/unique_ptr.hpp" class MwmValue; namespace search { class HouseToStreetTable { public: enum class StreetIdType { // Table stores the index number of the correct street corresponding // to the house in the list of streets generated by ReverseGeocoder. Index, // Table stores feature id of street corresponding to the house. FeatureId, // Empty table. None }; virtual ~HouseToStreetTable() = default; /// @todo Actually, value may be nullptr in the very common case. /// It's better to construct a table from MwmHandle. static unique_ptr Load(MwmValue & value); // Returns true and stores street identifier to |streetIndex|. // Street identifier type depends on data version. See StreetIdType. // Returns false if there is no such street. virtual bool Get(uint32_t houseId, uint32_t & streetIndex) const = 0; virtual StreetIdType GetStreetIdType() const = 0; }; } // namespace search