From 73fa1d46dc88bb74626715b491fafd57591aeab8 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 29 Nov 2025 22:22:11 -0500 Subject: chore: API and System Design update. Signed-off-by: Amlal El Mahrouss --- public/frameworks/CoreFoundation.fwrk/headers/Dictionary.h | 9 +++++---- public/frameworks/KernelTest.fwrk/headers/Foundation.h | 2 +- public/frameworks/KernelTest.fwrk/headers/SourceLocation.h | 2 +- src/kernel/FSKit/OpenHeFS.h | 2 +- src/kernel/KernelKit/UserProcessScheduler.h | 2 ++ src/kernel/NeKit/OwnPtr.h | 2 +- src/kernel/NeKit/Pmm.h | 1 + src/kernel/NeKit/Ref.h | 1 + src/kernel/NeKit/Vet.h | 10 +++++++++- src/libDDK/DriverKit/c++/driver_base.h | 4 ++-- 10 files changed, 24 insertions(+), 11 deletions(-) diff --git a/public/frameworks/CoreFoundation.fwrk/headers/Dictionary.h b/public/frameworks/CoreFoundation.fwrk/headers/Dictionary.h index 75b6bb27..fef51f21 100644 --- a/public/frameworks/CoreFoundation.fwrk/headers/Dictionary.h +++ b/public/frameworks/CoreFoundation.fwrk/headers/Dictionary.h @@ -18,13 +18,14 @@ class CFDictionary final { CFDictionary& operator=(const CFDictionary&) = default; CFDictionary(const CFDictionary&) = default; - Value& operator[](Key& at) { - return this->Find(at); - } + Value& operator[](Key& at) { return this->Find(at); } Bool Empty() { return this->fCount > 0; } - Bool Find(Key& key) { NE_UNUSED(key); return false; } + Bool Find(Key& key) { + NE_UNUSED(key); + return false; + } operator bool() { return !this->Empty(); } diff --git a/public/frameworks/KernelTest.fwrk/headers/Foundation.h b/public/frameworks/KernelTest.fwrk/headers/Foundation.h index 8ff956a7..3bc7225d 100644 --- a/public/frameworks/KernelTest.fwrk/headers/Foundation.h +++ b/public/frameworks/KernelTest.fwrk/headers/Foundation.h @@ -6,8 +6,8 @@ #pragma once -#include #include +#include #include #include diff --git a/public/frameworks/KernelTest.fwrk/headers/SourceLocation.h b/public/frameworks/KernelTest.fwrk/headers/SourceLocation.h index 6cfddae2..39fdafbb 100644 --- a/public/frameworks/KernelTest.fwrk/headers/SourceLocation.h +++ b/public/frameworks/KernelTest.fwrk/headers/SourceLocation.h @@ -15,7 +15,7 @@ class KTSourceLocation; /// ================================================================================ class KTSourceLocation final CF_OBJECT { public: - KTSourceLocation() = delete; + KTSourceLocation() = delete; ~KTSourceLocation() override = default; LIBSYS_COPY_DELETE(KTSourceLocation); diff --git a/src/kernel/FSKit/OpenHeFS.h b/src/kernel/FSKit/OpenHeFS.h index bd5f3753..16647095 100644 --- a/src/kernel/FSKit/OpenHeFS.h +++ b/src/kernel/FSKit/OpenHeFS.h @@ -9,8 +9,8 @@ #include #include #include -#include #include +#include #include #include diff --git a/src/kernel/KernelKit/UserProcessScheduler.h b/src/kernel/KernelKit/UserProcessScheduler.h index d67d54c2..6a6cfd61 100644 --- a/src/kernel/KernelKit/UserProcessScheduler.h +++ b/src/kernel/KernelKit/UserProcessScheduler.h @@ -37,6 +37,8 @@ class USER_PROCESS final NE_VETTABLE { explicit USER_PROCESS(); ~USER_PROCESS(); + auto DoVet() const { return *this; } + public: NE_COPY_DEFAULT(USER_PROCESS) diff --git a/src/kernel/NeKit/OwnPtr.h b/src/kernel/NeKit/OwnPtr.h index 30c8f9eb..2c493b1b 100644 --- a/src/kernel/NeKit/OwnPtr.h +++ b/src/kernel/NeKit/OwnPtr.h @@ -50,7 +50,7 @@ class OwnPtr final { Ref AsRef() { return Ref(fCls); } explicit operator bool() { return fCls; } - bool operator!() { return !fCls; } + bool operator!() { return !fCls; } private: T* fCls{nullptr}; diff --git a/src/kernel/NeKit/Pmm.h b/src/kernel/NeKit/Pmm.h index 8c117a67..7026c583 100644 --- a/src/kernel/NeKit/Pmm.h +++ b/src/kernel/NeKit/Pmm.h @@ -7,6 +7,7 @@ #pragma once +#include #include #include diff --git a/src/kernel/NeKit/Ref.h b/src/kernel/NeKit/Ref.h index ff8731e3..da7fe93e 100644 --- a/src/kernel/NeKit/Ref.h +++ b/src/kernel/NeKit/Ref.h @@ -45,6 +45,7 @@ class Ref final { T operator*() { return fClass; } operator bool() { return Vettable::kValue; } + bool operator!() { return !Vettable::kValue; } private: T fClass; 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 @@ -31,4 +33,10 @@ template <> struct Vettable final { static constexpr bool kValue = true; }; + +/// @brief Concept version of Vettable. +template +concept IVettable = requires(IVet vettable, Fallback fallback) { + { Vettable::kValue ? vettable.DoVet() : fallback(vettable) }; +}; } // namespace Kernel \ No newline at end of file diff --git a/src/libDDK/DriverKit/c++/driver_base.h b/src/libDDK/DriverKit/c++/driver_base.h index a0c22216..c130ba8b 100644 --- a/src/libDDK/DriverKit/c++/driver_base.h +++ b/src/libDDK/DriverKit/c++/driver_base.h @@ -37,8 +37,8 @@ class IDriverBase { /// @brief This concept requires the Driver to be IDriverBase compliant. template -concept IsValidDriver = requires(T a) { - { a.IsActive() && a.Type() > 0 }; +concept IsValidDriver = requires(T driver_base) { + { driver_base.IsActive() && driver_base.Type() > 0 }; }; /// @brief Consteval helper to detect whether a template is truly based on IDriverBase. -- cgit v1.2.3