From c965bc54982d6b90ae91edd3bb1103a8d356e59a Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 22 Dec 2025 12:21:08 +0100 Subject: feat: kernel: New Vettable API, remove IsAcceptable concept. Signed-off-by: Amlal El Mahrouss --- src/kernel/NeKit/Domain.h | 8 +++----- src/kernel/NeKit/Ref.h | 9 +++++++-- src/kernel/NeKit/Vettable.h | 21 +++++---------------- 3 files changed, 15 insertions(+), 23 deletions(-) (limited to 'src/kernel/NeKit') diff --git a/src/kernel/NeKit/Domain.h b/src/kernel/NeKit/Domain.h index cda63ee9..376fd9d5 100644 --- a/src/kernel/NeKit/Domain.h +++ b/src/kernel/NeKit/Domain.h @@ -14,6 +14,9 @@ template struct IsDefined final { using ResultType = Type; using ResultTypeRef = Type&; + using TypeRef = ResultTypeRef; + using ConstType = const Type&; + using TypePtr = Type*; static constexpr bool kValue = true; }; @@ -27,11 +30,6 @@ using NullDomain = IsDefined; template using Domain = IsDefined; - -template -concept IsAcceptable = requires() { - { IsDefined::kValue }; -}; } // namespace Kernel #endif // !__NE_KIT_DOMAIN_H__ \ No newline at end of file diff --git a/src/kernel/NeKit/Ref.h b/src/kernel/NeKit/Ref.h index 2010f3e9..58a77238 100644 --- a/src/kernel/NeKit/Ref.h +++ b/src/kernel/NeKit/Ref.h @@ -59,8 +59,13 @@ class Ref final { Type operator*() { return fClass; } - explicit operator bool() { return Vettable::kValue; } - bool operator!() { return !Vettable::kValue; } + explicit operator bool() { + if constexpr (IsVettable) { + return Type::kVettable; + } else { + return false; + } + } private: Type fClass; diff --git a/src/kernel/NeKit/Vettable.h b/src/kernel/NeKit/Vettable.h index e4c09624..a09a6aae 100644 --- a/src/kernel/NeKit/Vettable.h +++ b/src/kernel/NeKit/Vettable.h @@ -11,24 +11,13 @@ #include #include -namespace Kernel { -template -struct Vettable final { - using ResultType = Type; - using TypeRef = Type&; - using ConstType = const Type&; - using TypePtr = Type*; - - - static constexpr BOOL kValue = NO; -}; +#define NE_VETTABLE static constexpr BOOL kVettable = YES +#define NE_NON_VETTABLE static constexpr BOOL kVettable = NO +namespace Kernel { template -using FallbackType = Void (*)(const PropertyResult& type_value); - -template OnFallback> -concept IsVettable = requires() { - { Vettable::kValue ? TrueResult{} : OnFallback(PropertyResult{}) }; +concept IsVettable = requires(Type) { + (Type::kVettable); }; } // namespace Kernel -- cgit v1.2.3