mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-19 04:53:36 +00:00
[base] Updated IsSortedAndUnique function.
Signed-off-by: Viktor Govako <viktor.govako@gmail.com>
This commit is contained in:
committed by
Konstantin Pastbin
parent
b7b87f5530
commit
7b4862b442
@@ -172,7 +172,7 @@ void BuildRoadAltitudes(std::string const & mwmPath, AltitudeGetter & altitudeGe
|
||||
}
|
||||
{
|
||||
// Altitude offsets serialization.
|
||||
CHECK(base::IsSortedAndUnique(offsets.begin(), offsets.end()), ());
|
||||
CHECK(base::IsSortedAndUnique(offsets), ());
|
||||
|
||||
succinct::elias_fano::elias_fano_builder builder(offsets.back(), offsets.size());
|
||||
for (uint32_t offset : offsets)
|
||||
|
||||
@@ -89,7 +89,7 @@ public:
|
||||
|
||||
m_version = Version::V0;
|
||||
}
|
||||
ASSERT(std::is_sorted(std::cbegin(m_data), std::cend(m_data)), ());
|
||||
CHECK(base::IsSortedAndUnique(m_data), ());
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
@@ -304,6 +304,12 @@ bool IsSortedAndUnique(Iter beg, Iter end, Compare comp)
|
||||
return true;
|
||||
}
|
||||
|
||||
template <typename ContT>
|
||||
bool IsSortedAndUnique(ContT const & cont)
|
||||
{
|
||||
return IsSortedAndUnique(cont.begin(), cont.end(), std::less<>());
|
||||
}
|
||||
|
||||
template <typename Iter, typename Compare>
|
||||
Iter RemoveIfKeepValid(Iter beg, Iter end, Compare comp)
|
||||
{
|
||||
@@ -328,12 +334,6 @@ Iter RemoveIfKeepValid(Iter beg, Iter end, Compare comp)
|
||||
return end;
|
||||
}
|
||||
|
||||
template <typename Iter>
|
||||
bool IsSortedAndUnique(Iter beg, Iter end)
|
||||
{
|
||||
return IsSortedAndUnique(beg, end, std::less<typename std::iterator_traits<Iter>::value_type>());
|
||||
}
|
||||
|
||||
struct DeleteFunctor
|
||||
{
|
||||
template <typename T>
|
||||
|
||||
@@ -50,7 +50,7 @@ std::string_view GetUnitsGroupingSeparator(Locale const & locale)
|
||||
|
||||
bool IsUnitsOrderValid(std::initializer_list<Duration::Units> units)
|
||||
{
|
||||
return base::IsSortedAndUnique(units.begin(), units.end());
|
||||
return base::IsSortedAndUnique(units);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ std::vector<uint32_t> const & FeaturesLayerMatcher::GetPlaceAddrFeatures(uint32_
|
||||
res.first.push_back(fid);
|
||||
});
|
||||
|
||||
ASSERT(base::IsSortedAndUnique(res.first.begin(), res.first.end()), ());
|
||||
ASSERT(base::IsSortedAndUnique(res.first), ());
|
||||
}
|
||||
return res.first;
|
||||
}
|
||||
|
||||
@@ -833,7 +833,7 @@ int HouseDetector::LoadStreets(vector<FeatureID> const & ids)
|
||||
{
|
||||
// LOG(LDEBUG, ("IDs = ", ids));
|
||||
|
||||
ASSERT(base::IsSortedAndUnique(ids.begin(), ids.end()), ());
|
||||
ASSERT(base::IsSortedAndUnique(ids), ());
|
||||
|
||||
// Check if the cache is obsolete and need to be cleared.
|
||||
if (!m_id2st.empty())
|
||||
|
||||
@@ -58,7 +58,7 @@ public:
|
||||
vector<Id> StrictQuery(string const & query, string const & lang) const
|
||||
{
|
||||
auto prev = m_index.GetAllIds();
|
||||
TEST(base::IsSortedAndUnique(prev.cbegin(), prev.cend()), ());
|
||||
TEST(base::IsSortedAndUnique(prev), ());
|
||||
|
||||
ForEachNormalizedToken(query, [&](strings::UniString const & token)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user