summaryrefslogtreecommitdiffhomepage
path: root/src
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
parente0e8acd3db4ba1d50384f26305c6cc9021652840 (diff)
parent73fa1d46dc88bb74626715b491fafd57591aeab8 (diff)
Merge pull request #95 from nekernel-org/developv0.0.8
chore: API and System Design update.
Diffstat (limited to 'src')
-rw-r--r--src/kernel/FSKit/OpenHeFS.h2
-rw-r--r--src/kernel/KernelKit/UserProcessScheduler.h2
-rw-r--r--src/kernel/NeKit/OwnPtr.h2
-rw-r--r--src/kernel/NeKit/Pmm.h1
-rw-r--r--src/kernel/NeKit/Ref.h1
-rw-r--r--src/kernel/NeKit/Vet.h10
-rw-r--r--src/libDDK/DriverKit/c++/driver_base.h4
7 files changed, 17 insertions, 5 deletions
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 <CompilerKit/CompilerKit.h>
#include <KernelKit/DriveMgr.h>
#include <KernelKit/UserMgr.h>
-#include <NeKit/Crc32.h>
#include <NeKit/Config.h>
+#include <NeKit/Crc32.h>
#include <NeKit/KString.h>
#include <hint/CompilerHint.h>
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<T> AsRef() { return Ref<T>(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 <NeKit/Config.h>
#include <NeKit/PageMgr.h>
#include <NeKit/Ref.h>
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<T>::kValue; }
+ bool operator!() { return !Vettable<T>::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 <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
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 <typename T>
-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.