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:
authorMaksim Andrianov <maksimandrianov1@gmail.com>2020-12-07 22:22:00 +0300
committermpimenov <mpimenov@users.noreply.github.com>2021-01-26 16:48:44 +0300
commitf4d915c0f288c0663b2ba2d34443b8947e992558 (patch)
treecad3e7459a87aff5e18460541c861cece7feb2b1
parent5ed308ed0ed0002e18163ff5b351daad15dbd73a (diff)
[base] Trim impl was replaced to faster.
-rw-r--r--base/string_utils.cpp23
-rw-r--r--base/string_utils.hpp6
-rw-r--r--generator/osm_element.cpp25
3 files changed, 26 insertions, 28 deletions
diff --git a/base/string_utils.cpp b/base/string_utils.cpp
index 9b9c96a709..3425d4e6a8 100644
--- a/base/string_utils.cpp
+++ b/base/string_utils.cpp
@@ -203,8 +203,27 @@ char ascii_to_lower(char in)
} // namespace
void AsciiToLower(std::string & s) { transform(s.begin(), s.end(), s.begin(), &ascii_to_lower); }
-void Trim(std::string & s) { boost::trim(s); }
-void Trim(std::string & s, char const * anyOf) { boost::trim_if(s, boost::is_any_of(anyOf)); }
+
+std::string & Ltrim(std::string & s)
+{
+ s.erase(s.begin(), std::find_if(s.cbegin(), s.cend(), [](auto c) { return !std::isspace(c); }));
+ return s;
+}
+
+std::string & Rtrim(std::string & s)
+{
+ s.erase(std::find_if(s.crbegin(), s.crend(), [](auto c) { return !std::isspace(c); }).base(),
+ s.end());
+ return s;
+}
+
+std::string & Trim(std::string & s) { return Ltrim(Rtrim(s)); }
+
+std::string & Trim(std::string & s, char const * anyOf)
+{
+ boost::trim_if(s, boost::is_any_of(anyOf));
+ return s;
+}
bool ReplaceFirst(std::string & str, std::string const & from, std::string const & to)
{
diff --git a/base/string_utils.hpp b/base/string_utils.hpp
index c26d6e4105..561ff90cdd 100644
--- a/base/string_utils.hpp
+++ b/base/string_utils.hpp
@@ -101,11 +101,11 @@ void NormalizeDigits(UniString & us);
size_t CountNormLowerSymbols(UniString const & s, UniString const & lowStr);
void AsciiToLower(std::string & s);
-// TODO(AlexZ): current boost impl uses default std::locale() to trim.
+// TODO(AlexZ): current impl works as boost trim, that uses default std::locale() to trim.
// In general, it does not work for any unicode whitespace except ASCII U+0020 one.
-void Trim(std::string & s);
+std::string & Trim(std::string & s);
/// Remove any characters that contain in "anyOf" on left and right side of string s
-void Trim(std::string & s, char const * anyOf);
+std::string & Trim(std::string & s, char const * anyOf);
// Replace the first match of the search substring in the input with the format string.
// str - An input string
diff --git a/generator/osm_element.cpp b/generator/osm_element.cpp
index 6ccc9e24eb..e5993f9212 100644
--- a/generator/osm_element.cpp
+++ b/generator/osm_element.cpp
@@ -9,27 +9,6 @@
#include <cstring>
#include <sstream>
-namespace
-{
-std::string & Ltrim(std::string & s)
-{
- s.erase(s.begin(), std::find_if(s.cbegin(), s.cend(), [](auto c) {return !std::isspace(c); }));
- return s;
-}
-
-std::string & Rtrim(std::string & s)
-{
- s.erase(std::find_if(s.crbegin(), s.crend(), [](auto c) {return !std::isspace(c); }).base(),
- s.end());
- return s;
-}
-
-std::string & Trim(std::string & s)
-{
- return Ltrim(Rtrim(s));
-}
-} // namespace
-
std::string DebugPrint(OsmElement::EntityType type)
{
switch (type)
@@ -89,8 +68,8 @@ void OsmElement::AddTag(char const * key, char const * value)
SKIP_KEY_BY_PREFIX("official_name");
#undef SKIP_KEY_BY_PREFIX
- std::string val{value};
- m_tags.emplace_back(key, std::move(Trim(val)));
+ std::string val(value);
+ m_tags.emplace_back(key, std::move(strings::Trim(val)));
}
void OsmElement::AddTag(std::string const & key, std::string const & value)