summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-12-12 04:57:22 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-12-12 09:03:53 +0100
commit2035b324141cbebb1f51a13a28046fbde2735c96 (patch)
tree9a3a4e2a6f8fdc4a050d4e6cb3bfe5fbea826f5d
parentf59ea1392321e1543c281794ec887d1186077163 (diff)
feat: modify IDriverBase contract and concept.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
-rw-r--r--src/libDDK/DriverKit/c++/driver_base.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/libDDK/DriverKit/c++/driver_base.h b/src/libDDK/DriverKit/c++/driver_base.h
index eca3ba8b..925628b3 100644
--- a/src/libDDK/DriverKit/c++/driver_base.h
+++ b/src/libDDK/DriverKit/c++/driver_base.h
@@ -20,26 +20,27 @@
/// @author Amlal El Mahrouss
namespace Kernel::DDK {
-constexpr auto kInvalidType = 0;
+inline constexpr auto kInvalidType = 0;
class IDriverBase {
public:
explicit IDriverBase() = default;
virtual ~IDriverBase() = default;
- NE_COPY_DEFAULT(IDriverBase);
+ NE_COPY_DELETE(IDriverBase);
+ NE_MOVE_DEFAULT(IDriverBase);
using PtrType = VoidPtr;
- virtual BOOL IsCastable() { return NO; }
+ virtual constexpr BOOL IsCastable() { return NO; }
virtual constexpr BOOL IsActive() { return NO; }
virtual PtrType Leak() { return nullptr; }
virtual constexpr Int32 Type() { return kInvalidType; }
};
/// @brief This concept requires the Driver to be IDriverBase compliant.
-template <typename T>
-concept IsValidDriver = requires(T driver_base) {
+template <typename Driver>
+concept IsValidDriver = requires(Driver driver_base) {
{ driver_base.IsActive() && driver_base.Type() > kInvalidType };
};