summaryrefslogtreecommitdiffhomepage
path: root/Private/NewKit/String.hpp
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-05-05 21:10:18 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-05-05 21:10:18 +0200
commitf95d8bf159d10b5a9521dcaa0bc37aa0e9dfc02b (patch)
treebf8186f1a0521a64983bb0bca4f7b54883542195 /Private/NewKit/String.hpp
parent5a903c1d8f80ca8d7bc5fbea0aea710ce0133f9d (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.hpp115
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