From fc67c4af554189c941c811486a0b2b21aa3f54ea Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Fri, 23 May 2025 04:07:12 +0200 Subject: feat!(kernel): Rename NewKit to NeKit. Signed-off-by: Amlal El Mahrouss --- dev/kernel/NeKit/Variant.h | 61 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 dev/kernel/NeKit/Variant.h (limited to 'dev/kernel/NeKit/Variant.h') diff --git a/dev/kernel/NeKit/Variant.h b/dev/kernel/NeKit/Variant.h new file mode 100644 index 00000000..51548272 --- /dev/null +++ b/dev/kernel/NeKit/Variant.h @@ -0,0 +1,61 @@ +/* ------------------------------------------- + + Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. + +------------------------------------------- */ + +#pragma once + +#include +#include +#include +#include + +namespace Kernel { +class Variant final { + public: + enum class VariantKind { + kString, + kBlob, + kNull, + kJson, + kXML, + kSwap, + kInvalid, + }; + + public: + explicit Variant() = delete; + + public: + NE_COPY_DEFAULT(Variant) + + ~Variant() = default; + + public: + explicit Variant(KString* stringView) : fPtr((VoidPtr) stringView), fKind(VariantKind::kString) {} + + explicit Variant(Json* json) : fPtr((VoidPtr) json), fKind(VariantKind::kJson) {} + + explicit Variant(nullPtr ptr) : fPtr(ptr), fKind(VariantKind::kNull) {} + + explicit Variant(SWAP_DISK_HEADER* ptr) : fPtr(ptr), fKind(VariantKind::kSwap) {} + + explicit Variant(VoidPtr ptr) : fPtr(ptr), fKind(VariantKind::kBlob) {} + + public: + const Char* ToString(); + VoidPtr Leak(); + + template + T* As() { + return reinterpret_cast(fPtr); + } + + VariantKind& Kind(); + + private: + voidPtr fPtr{nullptr}; + VariantKind fKind{VariantKind::kNull}; +}; +} // namespace Kernel -- cgit v1.2.3