diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2015-02-10 23:09:30 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2015-02-10 23:09:30 +0000 |
| commit | 790e671f6cd34fc955dfc458b0a26a20a3fd8089 (patch) | |
| tree | 2674a97bfc583fc39a4b19e8ed8da928bd8d27ce /src/string.hh | |
| parent | 8714c414033cee64c6993305b0862ae9f3e88d31 (diff) | |
Replace some <cstring> function usage with c++ algorithms
Diffstat (limited to 'src/string.hh')
| -rw-r--r-- | src/string.hh | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/string.hh b/src/string.hh index 62cbe5cc..7166c8b3 100644 --- a/src/string.hh +++ b/src/string.hh @@ -8,7 +8,6 @@ #include <string> #include <climits> -#include <cstring> namespace Kakoune { @@ -18,6 +17,11 @@ class StringView; using StringBase = std::basic_string<char, std::char_traits<char>, Allocator<char, MemoryDomain::String>>; +constexpr ByteCount strlen(const char* s) +{ + return *s == 0 ? 0 : strlen(s+1) + 1; +} + class String : public StringBase { public: @@ -65,7 +69,7 @@ public: constexpr StringView() : m_data{nullptr}, m_length{0} {} constexpr StringView(const char* data, ByteCount length) : m_data{data}, m_length{length} {} - StringView(const char* data) : m_data{data}, m_length{(int)strlen(data)} {} + constexpr StringView(const char* data) : m_data{data}, m_length{strlen(data)} {} constexpr StringView(const char* begin, const char* end) : m_data{begin}, m_length{(int)(end - begin)} {} template<typename Char, typename Traits, typename Alloc> StringView(const std::basic_string<Char, Traits, Alloc>& str) : m_data{str.data()}, m_length{(int)str.length()} {} @@ -136,7 +140,8 @@ private: inline bool operator==(StringView lhs, StringView rhs) { - return lhs.m_length == rhs.m_length and memcmp(lhs.m_data, rhs.m_data, (int)lhs.m_length) == 0; + return lhs.m_length == rhs.m_length and + std::equal(lhs.begin(), lhs.end(), rhs.begin()); } inline bool operator!=(StringView lhs, StringView rhs) |
