8#include "../DataTypes.h"
25 String() : m_Data(nullptr), m_Length(0) {};
31 String(
const std::string &data) : m_Data(nullptr), m_Length(0)
33 Set(
const_cast<char *
>(data.data()),
static_cast<int32
>(data.size()));
40 String(
const char *data) : m_Data(nullptr), m_Length(0)
42 Set(
const_cast<char *
>(data),
static_cast<int32
>(strlen(data)));
48 String(
const char *data,
const int32 length) : m_Data(nullptr), m_Length(0)
50 Set(
const_cast<char *
>(data), m_Length);
56 String(
const char *start,
const char *end) : m_Data(nullptr), m_Length(0)
58 Set(
const_cast<char *
>(start),
static_cast<int32
>(end - start));
64 explicit String(
char c) : m_Data(nullptr), m_Length(0) {
Set(&c, 1); }
82 Set(str.Get(), str.m_Length);
86 String(
String &&str) noexcept : m_Data(str.m_Data), m_Length(str.m_Length)
96 Set(str.
Get(), str.m_Length);
105 Set(str.
Get(), str.m_Length);
109 str.m_Data =
nullptr;
114 bool operator==(
const String &str)
const {
return strcmp(this->
Get(), str.
Get()) == 0; };
116 String operator+(
const char *str)
const
118 int32 newLength = this->GetLength() +
static_cast<int32
>(strlen(str)) + 1;
119 char *data =
new char[newLength];
121 memcpy(data, this->
Get(), this->GetLength() *
sizeof(
wchar_t));
124 String concated(data, newLength);
132 int32 newLength = this->GetLength() +
static_cast<int32
>(strlen(str.
Get())) + 1;
133 char *data =
new char[newLength];
135 memcpy(data, this->
Get(), this->GetLength() *
sizeof(
wchar_t));
136 strcat(data, str.
Get());
138 String concated(data, newLength);
150 void Set(
char *data, int32 length);
163 [[nodiscard]] FORCE_INLINE
char *
Get()
const {
return m_Data; }
165 [[nodiscard]] FORCE_INLINE int32 GetLength()
const {
return m_Length; }
167 [[nodiscard]]
bool StartsWith(
const String &other)
const;
169 [[nodiscard]]
bool EndsWith(
const String &other)
const;
171 [[nodiscard]] int32 HashCode()
const;
Represents a mutable sequence of characters, providing various member functions for string manipulati...
Definition String.h:16
String(char c)
Initializes a new instance of the String class.
Definition String.h:64
String(const char *data, const int32 length)
Initializes a new instance of the String class.
Definition String.h:48
FORCE_INLINE char * Get() const
Gets a raw char sequence.
Definition String.h:163
String(const String &str)
Initializes a new instance of the String class.
Definition String.h:78
void Allocate(int32 length)
Use only when string is empty.
Definition Strings.cpp:20
String(const char *data)
Initializes a new instance of the String class.
Definition String.h:40
String()
Initializes a new instance of the String class.
Definition String.h:25
String(const char *start, const char *end)
Initializes a new instance of the String class.
Definition String.h:56
String(const std::string &data)
Initializes a new instance of the String class.
Definition String.h:31
void Set(char *data, int32 length)
Sets an array of characters to the string.
Definition Strings.cpp:7