summaryrefslogtreecommitdiffhomepage
path: root/Kernel/NewKit/Variant.hpp
diff options
context:
space:
mode:
authorAmlal <amlal@zka.com>2024-07-14 00:37:06 +0200
committerAmlal <amlal@zka.com>2024-07-14 00:37:06 +0200
commitb038c3eff8c80be2e6e10bea16634523fff4a6b5 (patch)
treed4c9b5c1931d6e5029243446b66e8edb608072b8 /Kernel/NewKit/Variant.hpp
parent062ba0a060929c18a2734835cd426e3d808093b7 (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/Variant.hpp')
-rw-r--r--Kernel/NewKit/Variant.hpp20
1 files changed, 15 insertions, 5 deletions
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