mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-19 04:53:36 +00:00
[search] Minor checks and asserts.
Signed-off-by: Viktor Govako <viktor.govako@gmail.com>
This commit is contained in:
committed by
Konstantin Pastbin
parent
d3397d1fba
commit
bf79f7a95c
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user