summaryrefslogtreecommitdiffhomepage
path: root/dev/LibCompiler/StringView.h
diff options
context:
space:
mode:
Diffstat (limited to 'dev/LibCompiler/StringView.h')
-rw-r--r--dev/LibCompiler/StringView.h139
1 files changed, 63 insertions, 76 deletions
diff --git a/dev/LibCompiler/StringView.h b/dev/LibCompiler/StringView.h
index b65121e..18003a3 100644
--- a/dev/LibCompiler/StringView.h
+++ b/dev/LibCompiler/StringView.h
@@ -12,79 +12,66 @@
#include <LibCompiler/Defines.h>
#include <LibCompiler/ErrorOr.h>
-namespace LibCompiler
-{
- /**
- * @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 CharType[Sz];
- assert(m_Data);
- }
-
- ~StringView() noexcept
- {
- if (m_Data)
- {
- memset(m_Data, 0, m_Sz);
- delete[] m_Data;
-
- m_Data = nullptr;
- }
- }
-
- LIBCOMPILER_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:
- CharType* 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 LibCompiler
+namespace LibCompiler {
+/**
+ * @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 CharType[Sz];
+ assert(m_Data);
+ }
+
+ ~StringView() noexcept {
+ if (m_Data) {
+ memset(m_Data, 0, m_Sz);
+ delete[] m_Data;
+
+ m_Data = nullptr;
+ }
+ }
+
+ LIBCOMPILER_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:
+ CharType* 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 LibCompiler