diff options
| author | Amlal <amlal@zka.com> | 2024-07-14 00:37:06 +0200 |
|---|---|---|
| committer | Amlal <amlal@zka.com> | 2024-07-14 00:37:06 +0200 |
| commit | b038c3eff8c80be2e6e10bea16634523fff4a6b5 (patch) | |
| tree | d4c9b5c1931d6e5029243446b66e8edb608072b8 /Kernel/NewKit | |
| parent | 062ba0a060929c18a2734835cd426e3d808093b7 (diff) | |
[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 <amlal@zka.com>
Diffstat (limited to 'Kernel/NewKit')
| -rw-r--r-- | Kernel/NewKit/Json.hxx | 18 | ||||
| -rw-r--r-- | Kernel/NewKit/Variant.hpp | 20 |
2 files changed, 26 insertions, 12 deletions
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 <NewKit/Utils.hpp> #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 <NewKit/Defines.hpp> #include <NewKit/String.hpp> +#include <NewKit/Json.hxx> 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 |
