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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorAras Pranckevicius <aras_p>2022-02-04 12:38:05 +0300
committerJacques Lucke <jacques@blender.org>2022-02-04 12:38:05 +0300
commita20cfb9eff0ec88fcb25007d08b2c0a380de9f0e (patch)
tree12578522b9aa8ba59450b2647a0a22487cdf0273 /source
parent2d429bfdf8a4fd25891ba682618d6ba25435410b (diff)
BLI: use methods specialized for finding a single char in StringRef
Previously, these methods used the more generic substring-finding algorithm, which is more complex and slower. Using the more specialized methods results in a noticable speedup in the obj importer (D13958). Differential Revision: https://developer.blender.org/D14012
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenlib/BLI_string_ref.hh16
1 files changed, 12 insertions, 4 deletions
diff --git a/source/blender/blenlib/BLI_string_ref.hh b/source/blender/blenlib/BLI_string_ref.hh
index e3dd8afd588..f72106aa961 100644
--- a/source/blender/blenlib/BLI_string_ref.hh
+++ b/source/blender/blenlib/BLI_string_ref.hh
@@ -358,7 +358,9 @@ constexpr int64_t StringRefBase::find_first_of(StringRef chars, int64_t pos) con
constexpr int64_t StringRefBase::find_first_of(char c, int64_t pos) const
{
- return this->find_first_of(StringRef(&c, 1), pos);
+ BLI_assert(pos >= 0);
+ return index_or_npos_to_int64(
+ std::string_view(*this).find_first_of(c, static_cast<size_t>(pos)));
}
constexpr int64_t StringRefBase::find_last_of(StringRef chars, int64_t pos) const
@@ -370,7 +372,9 @@ constexpr int64_t StringRefBase::find_last_of(StringRef chars, int64_t pos) cons
constexpr int64_t StringRefBase::find_last_of(char c, int64_t pos) const
{
- return this->find_last_of(StringRef(&c, 1), pos);
+ BLI_assert(pos >= 0);
+ return index_or_npos_to_int64(
+ std::string_view(*this).find_last_of(c, static_cast<size_t>(pos)));
}
constexpr int64_t StringRefBase::find_first_not_of(StringRef chars, int64_t pos) const
@@ -382,7 +386,9 @@ constexpr int64_t StringRefBase::find_first_not_of(StringRef chars, int64_t pos)
constexpr int64_t StringRefBase::find_first_not_of(char c, int64_t pos) const
{
- return this->find_first_not_of(StringRef(&c, 1), pos);
+ BLI_assert(pos >= 0);
+ return index_or_npos_to_int64(
+ std::string_view(*this).find_first_not_of(c, static_cast<size_t>(pos)));
}
constexpr int64_t StringRefBase::find_last_not_of(StringRef chars, int64_t pos) const
@@ -394,7 +400,9 @@ constexpr int64_t StringRefBase::find_last_not_of(StringRef chars, int64_t pos)
constexpr int64_t StringRefBase::find_last_not_of(char c, int64_t pos) const
{
- return this->find_last_not_of(StringRef(&c, 1), pos);
+ BLI_assert(pos >= 0);
+ return index_or_npos_to_int64(
+ std::string_view(*this).find_last_not_of(c, static_cast<size_t>(pos)));
}
constexpr StringRef StringRefBase::trim() const