Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Gorshenin <y@maps.me>2017-06-01 14:19:32 +0300
committerYuri Gorshenin <y@maps.me>2017-06-01 15:29:06 +0300
commit08b0166a665ab98bfaf1273df9aa6911387abc09 (patch)
tree1040e186105cee29162c717c555ffe8d2da059ad /indexer/search_string_utils.hpp
parent7f836a82eb28a21430171a658e819598de143475 (diff)
[search] Fixed numero signs in search queries and names.
Diffstat (limited to 'indexer/search_string_utils.hpp')
-rw-r--r--indexer/search_string_utils.hpp66
1 files changed, 36 insertions, 30 deletions
diff --git a/indexer/search_string_utils.hpp b/indexer/search_string_utils.hpp
index 6db2a2faca..8d1ddcd35e 100644
--- a/indexer/search_string_utils.hpp
+++ b/indexer/search_string_utils.hpp
@@ -1,55 +1,61 @@
#pragma once
+
+#include "indexer/search_delimiters.hpp"
+
#include "base/stl_add.hpp"
#include "base/string_utils.hpp"
-#include "std/algorithm.hpp"
-#include "std/functional.hpp"
-#include "std/string.hpp"
-#include "std/utility.hpp"
+#include <cstdint>
+#include <functional>
+#include <string>
+#include <utility>
namespace search
{
// This function should be used for all search strings normalization.
// It does some magic text transformation which greatly helps us to improve our search.
-strings::UniString NormalizeAndSimplifyString(string const & s);
+strings::UniString NormalizeAndSimplifyString(std::string const & s);
-template <class DelimsT, typename F>
-void SplitUniString(strings::UniString const & uniS, F f, DelimsT const & delims)
+template <class Delims, typename Fn>
+void SplitUniString(strings::UniString const & uniS, Fn f, Delims const & delims)
{
- for (strings::TokenizeIterator<DelimsT> iter(uniS, delims); iter; ++iter)
+ for (strings::TokenizeIterator<Delims> iter(uniS, delims); iter; ++iter)
f(iter.GetUniString());
}
-template <typename TCont, typename TDelims>
-void NormalizeAndTokenizeString(string const & s, TCont & tokens, TDelims const & delims)
+template <typename Tokens, typename Delims>
+void NormalizeAndTokenizeString(std::string const & s, Tokens & tokens, Delims const & delims)
{
SplitUniString(NormalizeAndSimplifyString(s), MakeBackInsertFunctor(tokens), delims);
}
+template <typename Tokens>
+void NormalizeAndTokenizeString(std::string const & s, Tokens & tokens)
+{
+ SplitUniString(NormalizeAndSimplifyString(s), MakeBackInsertFunctor(tokens),
+ search::Delimiters());
+}
+
strings::UniString FeatureTypeToString(uint32_t type);
-template <class ContainerT, class DelimsT>
+template <class Tokens, class Delims>
bool TokenizeStringAndCheckIfLastTokenIsPrefix(strings::UniString const & s,
- ContainerT & tokens,
- DelimsT const & delimiter)
+ Tokens & tokens,
+ Delims const & delims)
{
- SplitUniString(s, MakeBackInsertFunctor(tokens), delimiter);
- return !s.empty() && !delimiter(s.back());
+ SplitUniString(s, MakeBackInsertFunctor(tokens), delims);
+ return !s.empty() && !delims(s.back());
}
-
-template <class ContainerT, class DelimsT>
-bool TokenizeStringAndCheckIfLastTokenIsPrefix(string const & s,
- ContainerT & tokens,
- DelimsT const & delimiter)
+template <class Tokens, class Delims>
+bool TokenizeStringAndCheckIfLastTokenIsPrefix(std::string const & s, Tokens & tokens,
+ Delims const & delims)
{
- return TokenizeStringAndCheckIfLastTokenIsPrefix(NormalizeAndSimplifyString(s),
- tokens,
- delimiter);
+ return TokenizeStringAndCheckIfLastTokenIsPrefix(NormalizeAndSimplifyString(s), tokens, delims);
}
-strings::UniString GetStreetNameAsKey(string const & name);
+strings::UniString GetStreetNameAsKey(std::string const & name);
// *NOTE* The argument string must be normalized and simplified.
bool IsStreetSynonym(strings::UniString const & s);
@@ -57,7 +63,7 @@ bool IsStreetSynonymPrefix(strings::UniString const & s);
/// Normalizes both str and substr, and then returns true if substr is found in str.
/// Used in native platform code for search in localized strings (cuisines, categories, strings etc.).
-bool ContainsNormalized(string const & str, string const & substr);
+bool ContainsNormalized(std::string const & str, std::string const & substr);
// This class can be used as a filter for street tokens. As there can
// be street synonyms in the street name, single street synonym is
@@ -68,11 +74,10 @@ bool ContainsNormalized(string const & str, string const & substr);
class StreetTokensFilter
{
public:
- using TCallback = function<void(strings::UniString const & token, size_t tag)>;
+ using Callback = std::function<void(strings::UniString const & token, size_t tag)>;
template <typename TC>
- StreetTokensFilter(TC && callback)
- : m_callback(forward<TC>(callback))
+ StreetTokensFilter(TC && callback) : m_callback(std::forward<TC>(callback))
{
}
@@ -84,7 +89,7 @@ public:
void Put(strings::UniString const & token, bool isPrefix, size_t tag);
private:
- using TCell = pair<strings::UniString, size_t>;
+ using Cell = std::pair<strings::UniString, size_t>;
inline void EmitToken(strings::UniString const & token, size_t tag) { m_callback(token, tag); }
@@ -92,6 +97,7 @@ private:
size_t m_delayedTag = 0;
size_t m_numSynonyms = 0;
- TCallback m_callback;
+ Callback m_callback;
};
+
} // namespace search