mirror of
https://codeberg.org/comaps/comaps
synced 2026-01-02 19:13:44 +00:00
Organic Maps sources as of 02.04.2025 (fad26bbf22ac3da75e01e62aa01e5c8e11861005)
To expand with full Organic Maps and Maps.ME commits history run: git remote add om-historic [om-historic.git repo url] git fetch --tags om-historic git replace squashed-history historic-commits
This commit is contained in:
58
search/token_slice.cpp
Normal file
58
search/token_slice.cpp
Normal file
@@ -0,0 +1,58 @@
|
||||
#include "search/token_slice.hpp"
|
||||
|
||||
#include <sstream>
|
||||
|
||||
namespace search
|
||||
{
|
||||
using namespace std;
|
||||
|
||||
namespace
|
||||
{
|
||||
template <typename Slice>
|
||||
string SliceToString(string const & name, Slice const & slice)
|
||||
{
|
||||
ostringstream os;
|
||||
os << name << " [";
|
||||
for (size_t i = 0; i < slice.Size(); ++i)
|
||||
{
|
||||
os << DebugPrint(slice.Get(i));
|
||||
if (i + 1 != slice.Size())
|
||||
os << ", ";
|
||||
}
|
||||
os << "]";
|
||||
return os.str();
|
||||
}
|
||||
} // namespace
|
||||
|
||||
// TokenSlice --------------------------------------------------------------------------------------
|
||||
TokenSlice::TokenSlice(QueryParams const & params, TokenRange const & range)
|
||||
: m_params(params), m_offset(range.Begin()), m_size(range.Size())
|
||||
{
|
||||
ASSERT(range.IsValid(), (range));
|
||||
}
|
||||
|
||||
bool TokenSlice::IsPrefix(size_t i) const
|
||||
{
|
||||
ASSERT_LESS(i, Size(), ());
|
||||
return m_params.IsPrefixToken(m_offset + i);
|
||||
}
|
||||
|
||||
// TokenSliceNoCategories --------------------------------------------------------------------------
|
||||
TokenSliceNoCategories::TokenSliceNoCategories(QueryParams const & params, TokenRange const & range)
|
||||
: m_params(params)
|
||||
{
|
||||
m_indexes.reserve(range.Size());
|
||||
for (size_t i : range)
|
||||
{
|
||||
if (!m_params.IsCategorySynonym(i))
|
||||
m_indexes.push_back(i);
|
||||
}
|
||||
}
|
||||
|
||||
string DebugPrint(TokenSlice const & slice) { return SliceToString("TokenSlice", slice); }
|
||||
|
||||
string DebugPrint(TokenSliceNoCategories const & slice)
|
||||
{
|
||||
return SliceToString("TokenSliceNoCategories", slice);
|
||||
}
|
||||
} // namespace search
|
||||
Reference in New Issue
Block a user