summaryrefslogtreecommitdiffhomepage
path: root/src/kernel/NeKit/Vet.h
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-29 22:29:19 -0500
committerGitHub <noreply@github.com>2025-11-29 22:29:19 -0500
commit0ea04985716deb9bff4a83e08e984513f6664b91 (patch)
treeebbb2f7b883dc57adeedba209860ffa8ab1ddc7a /src/kernel/NeKit/Vet.h
parente0e8acd3db4ba1d50384f26305c6cc9021652840 (diff)
parent73fa1d46dc88bb74626715b491fafd57591aeab8 (diff)
Merge pull request #95 from nekernel-org/developv0.0.8
chore: API and System Design update.
Diffstat (limited to 'src/kernel/NeKit/Vet.h')
-rw-r--r--src/kernel/NeKit/Vet.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/kernel/NeKit/Vet.h b/src/kernel/NeKit/Vet.h
index d4c1060f..86874085 100644
--- a/src/kernel/NeKit/Vet.h
+++ b/src/kernel/NeKit/Vet.h
@@ -13,13 +13,15 @@
#define NE_VETTABLE : public IVet
namespace Kernel {
+/// @brief Vet interface for objects.
struct IVet {
IVet() = default;
virtual ~IVet() = default;
NE_COPY_DEFAULT(IVet)
- operator bool() = delete;
+ /// @brief Start vetting object for validity.
+ auto DoVet() const { return false; }
};
template <typename T>
@@ -31,4 +33,10 @@ template <>
struct Vettable<IVet> final {
static constexpr bool kValue = true;
};
+
+/// @brief Concept version of Vettable.
+template <typename T, typename Fallback>
+concept IVettable = requires(IVet vettable, Fallback fallback) {
+ { Vettable<T>::kValue ? vettable.DoVet() : fallback(vettable) };
+};
} // namespace Kernel \ No newline at end of file