summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/NeKit/Variant.h
diff options
context:
space:
mode:
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);
}