[search] Minor checks and asserts.

Signed-off-by: Viktor Govako <viktor.govako@gmail.com>
This commit is contained in:
Viktor Govako
2025-08-30 10:53:26 -03:00
committed by Konstantin Pastbin
parent d3397d1fba
commit bf79f7a95c
2 changed files with 12 additions and 6 deletions

View File

@@ -115,11 +115,16 @@ private:
static bool HouseNumbersMatch(FeatureType & feature, std::vector<house_numbers::Token> const & queryParse)
{
ASSERT(!queryParse.empty(), ());
auto const interpol = ftypes::IsAddressInterpolChecker::Instance().GetInterpolType(feature);
if (interpol != feature::InterpolType::None)
return house_numbers::HouseNumbersMatchRange(feature.GetRef(), queryParse, interpol);
auto const uniHouse = strings::MakeUniString(feature.GetHouseNumber());
if (uniHouse.empty())
return false;
if (feature.GetID().IsEqualCountry({"Czech", "Slovakia"}))
return house_numbers::HouseNumbersMatchConscription(uniHouse, queryParse);
@@ -327,6 +332,9 @@ private:
if (std::binary_search(buildings.begin(), buildings.end(), houseId))
return true;
if (!child.m_hasDelayedFeatures || queryParse.empty())
return false;
if (m_postcodes && !m_postcodes->HasBit(houseId) && !m_postcodes->HasBit(streetId))
return false;
@@ -334,9 +342,6 @@ private:
if (!feature)
return false;
if (!child.m_hasDelayedFeatures)
return false;
return HouseNumbersMatch(*feature, queryParse);
};
@@ -384,6 +389,8 @@ private:
std::vector<house_numbers::Token> queryParse;
ParseQuery(child.m_subQuery, child.m_lastTokenIsPrefix, queryParse);
if (queryParse.empty())
return;
uint32_t numFilterInvocations = 0;
auto const houseNumberFilter = [&](uint32_t houseId)

View File

@@ -516,8 +516,7 @@ void ParseQuery(UniString const & query, bool queryIsPrefix, TokensT & parse)
bool HouseNumbersMatch(UniString const & houseNumber, TokensT const & queryParse)
{
if (houseNumber.empty() || queryParse.empty())
return false;
ASSERT(!houseNumber.empty() && !queryParse.empty(), ());
// Fast pre-check, helps to early exit without complex house number parsing.
if (IsASCIIDigit(houseNumber[0]) && IsASCIIDigit(queryParse[0].m_value[0]) &&
@@ -559,7 +558,7 @@ bool HouseNumbersMatchConscription(UniString const & houseNumber, TokensT const
bool HouseNumbersMatchRange(std::string_view const & hnRange, TokensT const & queryParse,
feature::InterpolType interpol)
{
ASSERT(interpol != feature::InterpolType::None, ());
ASSERT(!queryParse.empty() && interpol != feature::InterpolType::None, ());
if (queryParse[0].m_type != Token::TYPE_NUMBER)
return false;