summaryrefslogtreecommitdiffhomepage
path: root/src/kernel/NeKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-12-22 07:38:52 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-12-22 07:42:26 +0100
commit36dee4f0d8ea806b2f061ed66a89e812ab007ed2 (patch)
tree8fe0f6895abb96eb40ee390d6411099b4decf489 /src/kernel/NeKit
parentf7023f6a08e117d483b5928fd4301062a3384abf (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.h9
-rw-r--r--src/kernel/NeKit/Ref.h9
-rw-r--r--src/kernel/NeKit/Variant.h4
-rw-r--r--src/kernel/NeKit/Vettable.h21
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>