From b038c3eff8c80be2e6e10bea16634523fff4a6b5 Mon Sep 17 00:00:00 2001 From: Amlal Date: Sun, 14 Jul 2024 00:37:06 +0200 Subject: [IMP] - IsUndefined returns const bool& now. - Replace kUndefined with kNull now. - Remove ML_ from macros in newstd.hxx. - Rename NSyscall to NSyscallInterface, which is a ref counted class now. - Rename MBCIType to PowerID - Update ToDos. - Update NewFS root catalog name. - Fix JSON 'null' initialization. - Add Json to variant object. - Replace kPointer with kBlob in variant kinds. - Add Leak() method to variant. Signed-off-by: Amlal --- Kernel/NewKit/Json.hxx | 18 +++++++++++------- Kernel/NewKit/Variant.hpp | 20 +++++++++++++++----- 2 files changed, 26 insertions(+), 12 deletions(-) (limited to 'Kernel/NewKit') diff --git a/Kernel/NewKit/Json.hxx b/Kernel/NewKit/Json.hxx index 4b994606..9371bf15 100644 --- a/Kernel/NewKit/Json.hxx +++ b/Kernel/NewKit/Json.hxx @@ -16,7 +16,8 @@ #include #define cMaxJsonPath 4096 -#define cUndefinedLen 32 +#define cJSONLen 32 +#define cJSONNull "null" namespace Kernel { @@ -25,10 +26,13 @@ namespace Kernel { public: explicit JsonType() - : Kernel::JsonType(cUndefinedLen, cUndefinedLen) { - this->AsKey() += "undefined"; - this->AsValue() += "undefined"; + auto len = cJSONLen; + StringView key = StringView(len); + key += cJSONNull; + + this->AsKey() = key; + this->AsValue() = key; } explicit JsonType(SizeT lhsLen, SizeT rhsLen) @@ -40,7 +44,7 @@ namespace Kernel NEWOS_COPY_DEFAULT(JsonType); - Bool IsUndefined() { return fUndefined; } + const Bool& IsUndefined() { return fUndefined; } private: Bool fUndefined; // is this instance undefined? @@ -62,7 +66,7 @@ namespace Kernel return fValue; } - static JsonType kUndefined; + static JsonType kNull; }; /// @brief Json stream reader helper. @@ -71,7 +75,7 @@ namespace Kernel STATIC JsonType In(const Char* full_array) { if (full_array[0] != '{') - return JsonType::kUndefined; + return JsonType::kNull; SizeT len = rt_string_len(full_array); Boolean probe_value = false; diff --git a/Kernel/NewKit/Variant.hpp b/Kernel/NewKit/Variant.hpp index 27cd29cc..c118eda1 100644 --- a/Kernel/NewKit/Variant.hpp +++ b/Kernel/NewKit/Variant.hpp @@ -8,6 +8,7 @@ #include #include +#include namespace Kernel { @@ -17,8 +18,9 @@ namespace Kernel enum class VariantKind { kString, - kPointer, - kUndefined + kBlob, + kNull, + kJson, }; public: @@ -35,20 +37,28 @@ namespace Kernel : fPtr((voidPtr)stringView), fKind(VariantKind::kString) { } + + explicit Variant(JsonType* json) + : fPtr((voidPtr)json), fKind(VariantKind::kJson) + { + } + explicit Variant(nullPtr) - : fPtr(nullptr), fKind(VariantKind::kUndefined) + : fPtr(nullptr), fKind(VariantKind::kNull) { } + explicit Variant(voidPtr ptr) - : fPtr(ptr), fKind(VariantKind::kPointer) + : fPtr(ptr), fKind(VariantKind::kBlob) { } public: const Char* ToString(); + VoidPtr Leak(); private: voidPtr fPtr{nullptr}; - VariantKind fKind{VariantKind::kUndefined}; + VariantKind fKind{VariantKind::kNull}; }; } // namespace Kernel -- cgit v1.2.3