mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-19 13:03: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)
|
static bool HouseNumbersMatch(FeatureType & feature, std::vector<house_numbers::Token> const & queryParse)
|
||||||
{
|
{
|
||||||
|
ASSERT(!queryParse.empty(), ());
|
||||||
|
|
||||||
auto const interpol = ftypes::IsAddressInterpolChecker::Instance().GetInterpolType(feature);
|
auto const interpol = ftypes::IsAddressInterpolChecker::Instance().GetInterpolType(feature);
|
||||||
if (interpol != feature::InterpolType::None)
|
if (interpol != feature::InterpolType::None)
|
||||||
return house_numbers::HouseNumbersMatchRange(feature.GetRef(), queryParse, interpol);
|
return house_numbers::HouseNumbersMatchRange(feature.GetRef(), queryParse, interpol);
|
||||||
|
|
||||||
auto const uniHouse = strings::MakeUniString(feature.GetHouseNumber());
|
auto const uniHouse = strings::MakeUniString(feature.GetHouseNumber());
|
||||||
|
if (uniHouse.empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
if (feature.GetID().IsEqualCountry({"Czech", "Slovakia"}))
|
if (feature.GetID().IsEqualCountry({"Czech", "Slovakia"}))
|
||||||
return house_numbers::HouseNumbersMatchConscription(uniHouse, queryParse);
|
return house_numbers::HouseNumbersMatchConscription(uniHouse, queryParse);
|
||||||
|
|
||||||
@@ -327,6 +332,9 @@ private:
|
|||||||
if (std::binary_search(buildings.begin(), buildings.end(), houseId))
|
if (std::binary_search(buildings.begin(), buildings.end(), houseId))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if (!child.m_hasDelayedFeatures || queryParse.empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
if (m_postcodes && !m_postcodes->HasBit(houseId) && !m_postcodes->HasBit(streetId))
|
if (m_postcodes && !m_postcodes->HasBit(houseId) && !m_postcodes->HasBit(streetId))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -334,9 +342,6 @@ private:
|
|||||||
if (!feature)
|
if (!feature)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!child.m_hasDelayedFeatures)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return HouseNumbersMatch(*feature, queryParse);
|
return HouseNumbersMatch(*feature, queryParse);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -384,6 +389,8 @@ private:
|
|||||||
|
|
||||||
std::vector<house_numbers::Token> queryParse;
|
std::vector<house_numbers::Token> queryParse;
|
||||||
ParseQuery(child.m_subQuery, child.m_lastTokenIsPrefix, queryParse);
|
ParseQuery(child.m_subQuery, child.m_lastTokenIsPrefix, queryParse);
|
||||||
|
if (queryParse.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
uint32_t numFilterInvocations = 0;
|
uint32_t numFilterInvocations = 0;
|
||||||
auto const houseNumberFilter = [&](uint32_t houseId)
|
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)
|
bool HouseNumbersMatch(UniString const & houseNumber, TokensT const & queryParse)
|
||||||
{
|
{
|
||||||
if (houseNumber.empty() || queryParse.empty())
|
ASSERT(!houseNumber.empty() && !queryParse.empty(), ());
|
||||||
return false;
|
|
||||||
|
|
||||||
// Fast pre-check, helps to early exit without complex house number parsing.
|
// Fast pre-check, helps to early exit without complex house number parsing.
|
||||||
if (IsASCIIDigit(houseNumber[0]) && IsASCIIDigit(queryParse[0].m_value[0]) &&
|
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,
|
bool HouseNumbersMatchRange(std::string_view const & hnRange, TokensT const & queryParse,
|
||||||
feature::InterpolType interpol)
|
feature::InterpolType interpol)
|
||||||
{
|
{
|
||||||
ASSERT(interpol != feature::InterpolType::None, ());
|
ASSERT(!queryParse.empty() && interpol != feature::InterpolType::None, ());
|
||||||
|
|
||||||
if (queryParse[0].m_type != Token::TYPE_NUMBER)
|
if (queryParse[0].m_type != Token::TYPE_NUMBER)
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user