diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-15 11:22:55 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-15 11:25:36 +0100 |
| commit | 6b4d761818b79a6fc17607e15d939154b4d8314f (patch) | |
| tree | 0a6188f201afebc4b5a22bae9f0744d7be7495f1 /src/kernel/NeKit/Ref.h | |
| parent | cceb0a70efef009b87198796eb9016ffb82c7130 (diff) | |
feat: New Nullable system, and improved Vettable system.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/kernel/NeKit/Ref.h')
| -rw-r--r-- | src/kernel/NeKit/Ref.h | 18 |
1 files changed, 14 insertions, 4 deletions
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 <KernelKit/HeapMgr.h> #include <NeKit/Config.h> #include <NeKit/KernelPanic.h> +#include <NeKit/Nullable.h> #include <NeKit/Vettable.h> 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<T>; 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<T>& operator->() { MUST_PASS(fRef); |
