From 6b4d761818b79a6fc17607e15d939154b4d8314f Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 15 Dec 2025 11:22:55 +0100 Subject: feat: New Nullable system, and improved Vettable system. Signed-off-by: Amlal El Mahrouss --- src/kernel/NeKit/Ref.h | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/kernel/NeKit/Ref.h') diff --git a/src/kernel/NeKit/Ref.h b/src/kernel/NeKit/Ref.h index 25706437..62460568 100644 --- a/src/kernel/NeKit/Ref.h +++ b/src/kernel/NeKit/Ref.h @@ -12,6 +12,7 @@ #include #include #include +#include #include namespace Kernel { @@ -30,6 +31,13 @@ class Ref final { Ref(Type* cls) : fClass(*cls) {} Ref(Type cls) : fClass(cls) {} + Ref& operator=(nullPtr) { return *this; } + + Ref& operator=(Type* ref) { + fClass = *ref; + return *this; + } + Ref& operator=(Type ref) { fClass = ref; return *this; @@ -59,11 +67,13 @@ class NonNullRef final { using RefType = Ref; using Type = T; - NonNullRef() = delete; - NonNullRef(nullPtr) = delete; + NonNullRef() = delete; + + NonNullRef(Type* ref) : fRef(ref) {} + + NonNullRef(nullPtr ref) = delete; - NonNullRef(Type* ref) : fRef(ref) { MUST_PASS(ref); } - NonNullRef(RefType ref) : fRef(ref) { MUST_PASS(ref); } + NonNullRef(RefType ref) : fRef(ref) {} Ref& operator->() { MUST_PASS(fRef); -- cgit v1.2.3