summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/NeKit/Variant.h
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-21 09:09:33 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-11-21 09:25:16 +0100
commit463e7472e737fb8259a30304e729772041ea5498 (patch)
tree0cd4aee9d7d0eea2d5279f76bf37fd6887fbc65d /dev/kernel/NeKit/Variant.h
parentc464e5800961c809c73d4180f8a66885b53c63d7 (diff)
feat: kernel: NeKit improvements and new TOML file.
feat: frameworks: CoreFoundation improvements and new KTest framework. Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/NeKit/Variant.h')
-rw-r--r--dev/kernel/NeKit/Variant.h18
1 files changed, 13 insertions, 5 deletions
diff --git a/dev/kernel/NeKit/Variant.h b/dev/kernel/NeKit/Variant.h
index 42a47bc0..7bcd0dff 100644
--- a/dev/kernel/NeKit/Variant.h
+++ b/dev/kernel/NeKit/Variant.h
@@ -8,6 +8,7 @@
#include <NeKit/Defines.h>
#include <NeKit/Json.h>
+#include <NeKit/TOML.h>
#include <NeKit/KString.h>
#include <SwapKit/DiskSwap.h>
@@ -15,13 +16,13 @@ namespace Kernel {
class Variant final {
public:
enum class VariantKind {
- kString,
+ kInvalid = 0,
+ kString = 200,
kBlob,
kNull,
kJson,
- kXML,
+ kTOML,
kSwap,
- kInvalid,
};
public:
@@ -37,7 +38,9 @@ class Variant final {
explicit Variant(KBasicString<CharKind>* stringView)
: fPtr((VoidPtr) stringView), fKind(VariantKind::kString) {}
- explicit Variant(JsonObject* json) : fPtr((VoidPtr) json), fKind(VariantKind::kJson) {}
+ explicit Variant(JsonObject<>* json) : fPtr((VoidPtr) json), fKind(VariantKind::kJson) {}
+
+ explicit Variant(TOMLObject* toml) : fPtr((VoidPtr) toml), fKind(VariantKind::kTOML) {}
explicit Variant(nullPtr ptr) : fPtr(ptr), fKind(VariantKind::kNull) {}
@@ -47,10 +50,15 @@ class Variant final {
public:
const Char* ToString();
+
+ /// ========================================================================
+ /// @brief Returns the underlying pointer.
+ /// @return the underlying pointer.
+ /// ========================================================================
VoidPtr Leak();
template <typename T>
- T* As() {
+ T* As() noexcept {
return reinterpret_cast<T*>(fPtr);
}