summaryrefslogtreecommitdiffhomepage
path: root/Private/CompilerKit/StdKit/String.hpp
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-01-30 13:25:42 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-01-30 13:26:33 +0100
commitbe73d82eff113e6a6723d6fb4bd80f56f0ef88ef (patch)
tree93425f2d183c3ea7e5e1b50374ee6548c383ab78 /Private/CompilerKit/StdKit/String.hpp
parent7c8afc0e15e54ae9e0f1a393bb52eed804d34edc (diff)
Compiler: Breaking changes, will work on C++ compiler from now on.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Private/CompilerKit/StdKit/String.hpp')
-rw-r--r--Private/CompilerKit/StdKit/String.hpp141
1 files changed, 63 insertions, 78 deletions
diff --git a/Private/CompilerKit/StdKit/String.hpp b/Private/CompilerKit/StdKit/String.hpp
index eada24d..1e4b34c 100644
--- a/Private/CompilerKit/StdKit/String.hpp
+++ b/Private/CompilerKit/StdKit/String.hpp
@@ -12,81 +12,66 @@
#include <CompilerKit/Defines.hpp>
#include <CompilerKit/StdKit/ErrorOr.hpp>
-namespace CompilerKit
-{
- /**
- * @brief StringView class, contains a C string and manages it.
- * @note No need to manage it it's getting deleted by default.
- */
-
- class StringView final
- {
- public:
- explicit StringView() = delete;
-
- explicit StringView(SizeType Sz) noexcept
- : m_Sz(Sz)
- {
- m_Data = new char[Sz];
- assert(m_Data);
- }
-
- ~StringView() noexcept
- {
- if (m_Data)
- {
- memset(m_Data, 0, m_Sz);
- delete[] m_Data;
-
- m_Data = nullptr;
- }
- }
-
- CXXKIT_COPY_DEFAULT(StringView);
-
- CharType *Data();
- const CharType *CData() const;
- SizeType Length() const;
-
- bool operator==(const CharType *rhs) const;
- bool operator!=(const CharType *rhs) const;
-
- bool operator==(const StringView &rhs) const;
- bool operator!=(const StringView &rhs) const;
-
- StringView &operator+=(const CharType *rhs);
- StringView &operator+=(const StringView &rhs);
-
- operator bool()
- {
- return m_Data && m_Data[0] != 0;
- }
-
- bool operator!()
- {
- return !m_Data || m_Data[0] == 0;
- }
-
- private:
- char* m_Data{ nullptr };
- SizeType m_Sz{ 0 };
- SizeType m_Cur{ 0 };
-
- friend class StringBuilder;
-
- };
-
- /**
- * @brief StringBuilder class
- * @note These results shall call delete[] after they're used.
- */
- struct StringBuilder final
- {
- static StringView Construct(const CharType *data);
- static const char* FromInt(const char *fmt, int n);
- static const char* FromBool(const char *fmt, bool n);
- static const char* Format(const char *fmt, const char* from);
- static bool Equals(const char *lhs, const char *rhs);
-
- };
-} // namespace CompilerKit
+namespace CompilerKit {
+/**
+ * @brief StringView class, contains a C string and manages it.
+ * @note No need to manage it it's getting deleted by default.
+ */
+
+class StringView final {
+ public:
+ explicit StringView() = delete;
+
+ explicit StringView(SizeType Sz) noexcept : m_Sz(Sz) {
+ m_Data = new char[Sz];
+ assert(m_Data);
+ }
+
+ ~StringView() noexcept {
+ if (m_Data) {
+ memset(m_Data, 0, m_Sz);
+ delete[] m_Data;
+
+ m_Data = nullptr;
+ }
+ }
+
+ CXXKIT_COPY_DEFAULT(StringView);
+
+ CharType *Data();
+ const CharType *CData() const;
+ SizeType Length() const;
+
+ bool operator==(const CharType *rhs) const;
+ bool operator!=(const CharType *rhs) const;
+
+ bool operator==(const StringView &rhs) const;
+ bool operator!=(const StringView &rhs) const;
+
+ StringView &operator+=(const CharType *rhs);
+ StringView &operator+=(const StringView &rhs);
+
+ operator bool() { return m_Data && m_Data[0] != 0; }
+
+ bool operator!() { return !m_Data || m_Data[0] == 0; }
+
+ private:
+ char *m_Data{nullptr};
+ SizeType m_Sz{0};
+ SizeType m_Cur{0};
+
+ friend class StringBuilder;
+};
+
+/**
+ * @brief StringBuilder class
+ * @note These results shall call delete[] after they're used.
+ */
+struct StringBuilder final {
+ static StringView Construct(const CharType *data);
+ static const char *FromInt(const char *fmt, int n);
+ static const char *FromBool(const char *fmt, bool n);
+ static const char *Format(const char *fmt, const char *from);
+ static bool Equals(const char *lhs, const char *rhs);
+};
+} // namespace CompilerKit