From 36dee4f0d8ea806b2f061ed66a89e812ab007ed2 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 22 Dec 2025 07:38:52 +0100 Subject: feat: test: Add `kout` test and rename DeviceInterface to IDevice in KernelKit. introduce UserPtr and unburden vettable by removing the IVettable helper. Signed-off-by: Amlal El Mahrouss --- src/kernel/NeKit/Config.h | 9 +++++++++ src/kernel/NeKit/Ref.h | 9 +++++++-- src/kernel/NeKit/Variant.h | 4 ++-- src/kernel/NeKit/Vettable.h | 21 ++++----------------- 4 files changed, 22 insertions(+), 21 deletions(-) (limited to 'src/kernel/NeKit') diff --git a/src/kernel/NeKit/Config.h b/src/kernel/NeKit/Config.h index 79dbf411..e4e34e2c 100644 --- a/src/kernel/NeKit/Config.h +++ b/src/kernel/NeKit/Config.h @@ -191,6 +191,9 @@ template struct FalseResult final { using ResultType = Type; using ResultTypeRef = ResultType&; + using TypeRef = ResultTypeRef; + using ConstType = const Type&; + using TypePtr = Type*; static constexpr bool kValue = false; }; @@ -199,6 +202,9 @@ template struct TrueResult final { using ResultType = Type; using ResultTypeRef = ResultType&; + using TypeRef = ResultTypeRef; + using ConstType = const Type&; + using TypePtr = Type*; static constexpr bool kValue = true; }; @@ -207,6 +213,9 @@ template struct PropertyResult final { using ResultType = Type; using ResultTypeRef = ResultType&; + using TypeRef = ResultTypeRef; + using ConstType = const Type&; + using TypePtr = Type*; static constexpr bool kValue = Type::kValue; }; diff --git a/src/kernel/NeKit/Ref.h b/src/kernel/NeKit/Ref.h index b4d6cb5e..2010f3e9 100644 --- a/src/kernel/NeKit/Ref.h +++ b/src/kernel/NeKit/Ref.h @@ -26,7 +26,9 @@ class Ref final { ~Ref() = default; public: - using Type = T; + using Type = T; + using ConstType = const T&; + using RefType = T&; Ref(Type* cls) : fClass(*cls) {} Ref(Type cls) : fClass(cls) {} @@ -50,7 +52,10 @@ class Ref final { Type& Leak() { return fClass; } - Type& TryLeak() { return fClass; } + Type& TryLeak() { + MUST_PASS(fClass); + return fClass; + } Type operator*() { return fClass; } diff --git a/src/kernel/NeKit/Variant.h b/src/kernel/NeKit/Variant.h index 5747e9ca..c7aa509c 100644 --- a/src/kernel/NeKit/Variant.h +++ b/src/kernel/NeKit/Variant.h @@ -50,9 +50,9 @@ class Variant final { /// ======================================================================== /// @brief Returns the underlying pointer. - /// @return the underlying pointer. + /// @return the underlying pointer as a reference. /// ======================================================================== - VoidPtr Leak(); + RefAny Leak(); template T* As() { diff --git a/src/kernel/NeKit/Vettable.h b/src/kernel/NeKit/Vettable.h index 8290b318..e4c09624 100644 --- a/src/kernel/NeKit/Vettable.h +++ b/src/kernel/NeKit/Vettable.h @@ -11,29 +11,16 @@ #include #include -#define NE_VETTABLE \ - final: \ - public \ - ::Kernel::IVettable - namespace Kernel { -struct IVettable { - explicit IVettable() = default; - virtual ~IVettable() = default; - - NE_COPY_DEFAULT(IVettable) -}; - template struct Vettable final { using ResultType = Type; + using TypeRef = Type&; + using ConstType = const Type&; + using TypePtr = Type*; - static constexpr BOOL kValue = NO; -}; -template <> -struct Vettable final { - static constexpr BOOL kValue = YES; + static constexpr BOOL kValue = NO; }; template -- cgit v1.2.3