diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-05-05 21:10:18 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-05-05 21:10:18 +0200 |
| commit | f95d8bf159d10b5a9521dcaa0bc37aa0e9dfc02b (patch) | |
| tree | bf8186f1a0521a64983bb0bca4f7b54883542195 /Private/NewKit/String.hpp | |
| parent | 5a903c1d8f80ca8d7bc5fbea0aea710ce0133f9d (diff) | |
MHR-23: Add run_format.sh, kernel patches.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Private/NewKit/String.hpp')
| -rw-r--r-- | Private/NewKit/String.hpp | 115 |
1 files changed, 64 insertions, 51 deletions
diff --git a/Private/NewKit/String.hpp b/Private/NewKit/String.hpp index 93dfc584..7346c5e9 100644 --- a/Private/NewKit/String.hpp +++ b/Private/NewKit/String.hpp @@ -10,54 +10,67 @@ #include <NewKit/ErrorOr.hpp> #include <NewKit/KernelCheck.hpp> -namespace NewOS { -class StringView final { - public: - explicit StringView() = default; - - explicit StringView(Size Sz) : fSz(Sz) { - MUST_PASS(Sz > 1); - fData = new Char[Sz]; - MUST_PASS(fData); - } - - ~StringView() { - if (fData) delete[] fData; - } - - StringView &operator=(const StringView &) = default; - StringView(const StringView &) = default; - - Char *Data(); - const Char *CData(); - Size Length() const; - - bool operator==(const Char *rhs) const; - bool operator!=(const Char *rhs) const; - - bool operator==(const StringView &rhs) const; - bool operator!=(const StringView &rhs) const; - - StringView &operator+=(const Char *rhs); - StringView &operator+=(const StringView &rhs); - - operator bool() { return fData; } - - bool operator!() { return fData; } - - private: - Char *fData{nullptr}; - Size fSz{0}; - Size fCur{0}; - - friend class StringBuilder; -}; - -struct StringBuilder final { - static ErrorOr<StringView> Construct(const Char *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 NewOS +namespace NewOS +{ + class StringView final + { + public: + explicit StringView() = default; + + explicit StringView(Size Sz) + : fSz(Sz) + { + MUST_PASS(Sz > 1); + fData = new Char[Sz]; + MUST_PASS(fData); + } + + ~StringView() + { + if (fData) + delete[] fData; + } + + StringView& operator=(const StringView&) = default; + StringView(const StringView&) = default; + + Char* Data(); + const Char* CData(); + Size Length() const; + + bool operator==(const Char* rhs) const; + bool operator!=(const Char* rhs) const; + + bool operator==(const StringView& rhs) const; + bool operator!=(const StringView& rhs) const; + + StringView& operator+=(const Char* rhs); + StringView& operator+=(const StringView& rhs); + + operator bool() + { + return fData; + } + + bool operator!() + { + return fData; + } + + private: + Char* fData{nullptr}; + Size fSz{0}; + Size fCur{0}; + + friend class StringBuilder; + }; + + struct StringBuilder final + { + static ErrorOr<StringView> Construct(const Char* 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 NewOS |
