aboutsummaryrefslogtreecommitdiff
path: root/include/StringView.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/StringView.hpp')
-rw-r--r--include/StringView.hpp95
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>;
-}