[Bf-blender-cvs] [58ab616d4c6] cycles-x: Cycles X: Switch startswith/endswith to string_view
Sergey Sharybin
noreply at git.blender.org
Tue Sep 14 17:04:54 CEST 2021
Commit: 58ab616d4c6e5d65d9415bb54845eddb0acf54e7
Author: Sergey Sharybin
Date: Tue Sep 14 14:56:48 2021 +0200
Branches: cycles-x
https://developer.blender.org/rB58ab616d4c6e5d65d9415bb54845eddb0acf54e7
Cycles X: Switch startswith/endswith to string_view
Currently no functional changes. Making this internal API flexible to
be used for any string-like objects.
The implementation is a bit lower-level than one would expect from the
C++'s string_view. This is because the string_view implementation is
coming from OIIO./
Differential Revision: https://developer.blender.org/D12483
===================================================================
M intern/cycles/util/util_string.cpp
M intern/cycles/util/util_string.h
===================================================================
diff --git a/intern/cycles/util/util_string.cpp b/intern/cycles/util/util_string.cpp
index de0833d4d2a..9c0b2ca50bb 100644
--- a/intern/cycles/util/util_string.cpp
+++ b/intern/cycles/util/util_string.cpp
@@ -110,24 +110,26 @@ void string_split(vector<string> &tokens,
}
}
-bool string_startswith(const string &s, const char *start)
+bool string_startswith(const string_view s, const string_view start)
{
- size_t len = strlen(start);
+ const size_t len = start.size();
- if (len > s.size())
- return 0;
- else
- return strncmp(s.c_str(), start, len) == 0;
+ if (len > s.size()) {
+ return false;
+ }
+
+ return strncmp(s.c_str(), start.data(), len) == 0;
}
-bool string_endswith(const string &s, const string &end)
+bool string_endswith(const string_view s, const string_view end)
{
- size_t len = end.length();
+ const size_t len = end.size();
- if (len > s.size())
- return 0;
- else
- return s.compare(s.length() - len, len, end) == 0;
+ if (len > s.size()) {
+ return false;
+ }
+
+ return strncmp(s.c_str() + s.size() - len, end.data(), len) == 0;
}
string string_strip(const string &s)
diff --git a/intern/cycles/util/util_string.h b/intern/cycles/util/util_string.h
index 79a0b4f38e6..55462cfd8b8 100644
--- a/intern/cycles/util/util_string.h
+++ b/intern/cycles/util/util_string.h
@@ -52,8 +52,8 @@ void string_split(vector<string> &tokens,
const string &separators = "\t ",
bool skip_empty_tokens = true);
void string_replace(string &haystack, const string &needle, const string &other);
-bool string_startswith(const string &s, const char *start);
-bool string_endswith(const string &s, const string &end);
+bool string_startswith(string_view s, string_view start);
+bool string_endswith(string_view s, string_view end);
string string_strip(const string &s);
string string_remove_trademark(const string &s);
string string_from_bool(const bool var);
More information about the Bf-blender-cvs
mailing list