diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-22 07:38:52 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-22 07:42:26 +0100 |
| commit | 36dee4f0d8ea806b2f061ed66a89e812ab007ed2 (patch) | |
| tree | 8fe0f6895abb96eb40ee390d6411099b4decf489 /src/kernel/NeKit | |
| parent | f7023f6a08e117d483b5928fd4301062a3384abf (diff) | |
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 <amlal@nekernel.org>
Diffstat (limited to 'src/kernel/NeKit')
| -rw-r--r-- | src/kernel/NeKit/Config.h | 9 | ||||
| -rw-r--r-- | src/kernel/NeKit/Ref.h | 9 | ||||
| -rw-r--r-- | src/kernel/NeKit/Variant.h | 4 | ||||
| -rw-r--r-- | src/kernel/NeKit/Vettable.h | 21 |
4 files changed, 22 insertions, 21 deletions
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 <class Type> 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 <class Type> 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 <class Type> 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 <typename T> 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 <CompilerKit/CompilerKit.h> #include <NeKit/Config.h> -#define NE_VETTABLE \ - final: \ - public \ - ::Kernel::IVettable - namespace Kernel { -struct IVettable { - explicit IVettable() = default; - virtual ~IVettable() = default; - - NE_COPY_DEFAULT(IVettable) -}; - template <class Type> struct Vettable final { using ResultType = Type; + using TypeRef = Type&; + using ConstType = const Type&; + using TypePtr = Type*; - static constexpr BOOL kValue = NO; -}; -template <> -struct Vettable<IVettable> final { - static constexpr BOOL kValue = YES; + static constexpr BOOL kValue = NO; }; template <class Type> |
