string PreResult2::DebugPrint() const { stringstream ss; ss << "{ IntermediateResult: " << "Name: " << m_str << "; Type: " << GetBestType() << "; Rank: " << static_cast<int>(m_info.m_rank) << "; Distance: " << m_distance << " }"; return ss.str(); }
Result PreResult2::GenerateFinalResult(storage::CountryInfoGetter const & infoGetter, CategoriesHolder const * pCat, set<uint32_t> const * pTypes, int8_t locale, ReverseGeocoder const * coder) const { ReverseGeocoder::Address addr; bool addrComputed = false; string name = m_str; if (coder && name.empty()) { // Insert exact address (street and house number) instead of empty result name. if (!addrComputed) { coder->GetNearbyAddress(GetCenter(), addr); addrComputed = true; } if (addr.GetDistance() == 0) name = FormatStreetAndHouse(addr); } uint32_t const type = GetBestType(pTypes); // Format full address only for suitable results. string address; if (coder) { address = GetRegionName(infoGetter, type); if (ftypes::IsAddressObjectChecker::Instance()(m_types)) { if (!addrComputed) { coder->GetNearbyAddress(GetCenter(), addr); addrComputed = true; } address = FormatFullAddress(addr, address); } } switch (m_resultType) { case RESULT_FEATURE: case RESULT_BUILDING: return Result(m_id, GetCenter(), name, address, pCat->GetReadableFeatureType(type, locale), type, m_metadata); default: ASSERT_EQUAL(m_resultType, RESULT_LATLON, ()); return Result(GetCenter(), name, address); } }
bool PreResult2::IsEqualCommon(PreResult2 const & r) const { return (m_geomType == r.m_geomType && GetBestType() == r.GetBestType() && m_str == r.m_str); }