diff options
Diffstat (limited to 'dev/zka/NewKit')
| -rw-r--r-- | dev/zka/NewKit/Json.hxx | 24 | ||||
| -rw-r--r-- | dev/zka/NewKit/Macros.hxx | 2 | ||||
| -rw-r--r-- | dev/zka/NewKit/Variant.hxx | 16 |
3 files changed, 31 insertions, 11 deletions
diff --git a/dev/zka/NewKit/Json.hxx b/dev/zka/NewKit/Json.hxx index e37dc93d..a5893147 100644 --- a/dev/zka/NewKit/Json.hxx +++ b/dev/zka/NewKit/Json.hxx @@ -21,7 +21,7 @@ namespace Kernel { - /// @brief Json value class + /// @brief Json class class JsonType final { public: @@ -77,11 +77,22 @@ namespace Kernel { STATIC JsonType In(const Char* full_array) { - if (full_array[0] != '{') - return JsonType::kNull; + auto start_val = '{'; + auto end_val = '}'; + Boolean probe_value = false; + + if (full_array[0] != start_val) + { + if (full_array[0] != '[') + return JsonType::kNull; + + start_val = '['; + end_val = ']'; + + probe_value = true; + } SizeT len = rt_string_len(full_array); - Boolean probe_value = false; SizeT key_len = 0; SizeT value_len = 0; @@ -96,7 +107,7 @@ namespace Kernel if (probe_value) { - if (full_array[i] == '}' || + if (full_array[i] == end_val || full_array[i] == ',') { probe_value = false; @@ -112,6 +123,9 @@ namespace Kernel } else { + if (start_val == '[') + continue; + if (full_array[i] == ':') { probe_value = true; diff --git a/dev/zka/NewKit/Macros.hxx b/dev/zka/NewKit/Macros.hxx index 51b9575b..e765d87b 100644 --- a/dev/zka/NewKit/Macros.hxx +++ b/dev/zka/NewKit/Macros.hxx @@ -130,4 +130,4 @@ #define kSysChime "\\System\\startup.wav" /// @brief The main system loader. -#define kSysProcess "ZKA AUTHORITY\\KERNEL" +#define kKernelProcessName "ZKA AUTHORITY\\KERNEL" diff --git a/dev/zka/NewKit/Variant.hxx b/dev/zka/NewKit/Variant.hxx index 015cec92..6b0f30bd 100644 --- a/dev/zka/NewKit/Variant.hxx +++ b/dev/zka/NewKit/Variant.hxx @@ -21,25 +21,25 @@ namespace Kernel kBlob, kNull, kJson, + kXML, }; public: explicit Variant() = delete; public: - Variant& operator=(const Variant&) = default; - Variant(const Variant&) = default; + ZKA_COPY_DEFAULT(Variant); ~Variant() = default; public: explicit Variant(StringView* stringView) - : fPtr((voidPtr)stringView), fKind(VariantKind::kString) + : fPtr((VoidPtr)stringView), fKind(VariantKind::kString) { } explicit Variant(JsonType* json) - : fPtr((voidPtr)json), fKind(VariantKind::kJson) + : fPtr((VoidPtr)json), fKind(VariantKind::kJson) { } @@ -48,7 +48,7 @@ namespace Kernel { } - explicit Variant(voidPtr ptr) + explicit Variant(VoidPtr ptr) : fPtr(ptr), fKind(VariantKind::kBlob) { } @@ -57,6 +57,12 @@ namespace Kernel const Char* ToString(); VoidPtr Leak(); + template <typename T> + T* As() + { + return reinterpret_cast<T*>(fPtr); + } + private: voidPtr fPtr{nullptr}; VariantKind fKind{VariantKind::kNull}; |
