diff options
Diffstat (limited to 'include/StringView.hpp')
-rw-r--r-- | include/StringView.hpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/StringView.hpp b/include/StringView.hpp index 45d0f5b..c4e7ce3 100644 --- a/include/StringView.hpp +++ b/include/StringView.hpp @@ -68,6 +68,24 @@ namespace dchat return data[index]; } + // Returns -1 if substr not found. + // TODO: Make this more efficient + usize find(const BasicStringView<CharType> &substr, usize offset = 0) const + { + if(substr.size == 0) + return -1; + + if(offset + substr.size > size) + return -1; + + for(usize i = offset; i < size - (substr.size - 1); ++i) + { + if(memcmp(data + i, substr.data, substr.size) == 0) + return i; + } + return -1; + } + const CharType *data; usize size; }; |