diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-29 22:29:19 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-29 22:29:19 -0500 |
| commit | 0ea04985716deb9bff4a83e08e984513f6664b91 (patch) | |
| tree | ebbb2f7b883dc57adeedba209860ffa8ab1ddc7a /src/kernel/NeKit/Vet.h | |
| parent | e0e8acd3db4ba1d50384f26305c6cc9021652840 (diff) | |
| parent | 73fa1d46dc88bb74626715b491fafd57591aeab8 (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.h | 10 |
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 |
