diff options
Diffstat (limited to 'include/StringView.hpp')
-rw-r--r-- | include/StringView.hpp | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/include/StringView.hpp b/include/StringView.hpp deleted file mode 100644 index d320a85..0000000 --- a/include/StringView.hpp +++ /dev/null @@ -1,95 +0,0 @@ -#pragma once - -#include "types.hpp" -#include <cstring> -#include <cassert> - -namespace dchat -{ - template <typename CharType> - class BasicStringView - { - public: - BasicStringView() : data(nullptr), size(0) - { - - } - - BasicStringView(const BasicStringView<CharType> &other) : data(other.data), size(other.size) - { - - } - - BasicStringView(const CharType *_data) : data(_data), size(strlen(_data)) - { - - } - - BasicStringView(const CharType *_data, usize _size) : data(_data), size(_size) - { - - } - - BasicStringView<CharType>& operator = (const BasicStringView<CharType> &other) - { - data = other.data; - size = other.size; - return *this; - } - - BasicStringView(BasicStringView<CharType> &&other) - { - data = other.data; - size = other.size; - - other.data = nullptr; - other.size = 0; - } - - bool equals(const BasicStringView<CharType> &other) const - { - if(size != other.size) return false; - return memcmp(data, other.data, size * sizeof(CharType)) == 0; - } - - bool operator == (const BasicStringView<CharType> &other) const - { - return equals(other); - } - - bool operator != (const BasicStringView<CharType> &other) const - { - return !equals(other); - } - - CharType operator [] (usize index) const - { - assert(index < size); - 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 * sizeof(CharType)) == 0) - return i; - } - return -1; - } - - const CharType *data; - usize size; - }; - - using StringView = BasicStringView<char>; - using StringViewUtf32 = BasicStringView<u32>; -} |