From 906510c90750b09d5b05914f03f190c14460e03e Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Sat, 25 Jul 2026 00:29:35 +0200 Subject: chore: hide protocol implementations --- arch/x86_64/arch/bus/isa.cpp | 58 ++++++++++++++++++++++++-------------------- arch/x86_64/arch/bus/isa.hpp | 10 ++------ 2 files changed, 34 insertions(+), 34 deletions(-) (limited to 'arch/x86_64') diff --git a/arch/x86_64/arch/bus/isa.cpp b/arch/x86_64/arch/bus/isa.cpp index f0ed02f4..ee195519 100644 --- a/arch/x86_64/arch/bus/isa.cpp +++ b/arch/x86_64/arch/bus/isa.cpp @@ -10,37 +10,43 @@ namespace arch::bus { - isa::isa() - : kapi::devices::bus{"isa"} - {} - - auto isa::enumerate(kapi::devices::bus &) -> void - { - // NOTE: ISA does not support enumeration, but we need to fulfill the interface. - } - - auto isa::match(kapi::devices::device const & device, kapi::devices::driver const & driver) const - -> kstd::result + namespace { - auto device_signature = device.as(); - auto driver_claim = driver.as(); - - if (!device_signature || !driver_claim) - { - return kstd::failure(kapi::devices::driver_match_errc::no_match); - } - - if (!std::ranges::contains(driver_claim->supported_names(), device_signature->isa_name())) + struct isa_protocol final : kapi::devices::bus_protocol { - return kstd::failure(kapi::devices::driver_match_errc::no_match); - } + auto enumerate(kapi::devices::bus &) -> void override + { + // NOTE: ISA does not support enumeration, but we need to fulfill the interface. + } + + [[nodiscard]] auto match(kapi::devices::device const & device, kapi::devices::driver const & driver) const + -> kstd::result override + { + auto device_signature = device.as(); + auto driver_claim = driver.as(); + + if (!device_signature || !driver_claim) + { + return kstd::failure(kapi::devices::driver_match_errc::no_match); + } + + if (!std::ranges::contains(driver_claim->supported_names(), device_signature->isa_name())) + { + return kstd::failure(kapi::devices::driver_match_errc::no_match); + } + + return 0u; + } + } constinit protocol_instance; + } // namespace - return 0u; - } + isa::isa() + : kapi::devices::bus{"isa"} + {} - auto isa::protocol() -> isa * + auto isa::protocol() -> kapi::devices::bus_protocol * { - return this; + return &protocol_instance; } } // namespace arch::bus \ No newline at end of file diff --git a/arch/x86_64/arch/bus/isa.hpp b/arch/x86_64/arch/bus/isa.hpp index 58bc042f..87832c3c 100644 --- a/arch/x86_64/arch/bus/isa.hpp +++ b/arch/x86_64/arch/bus/isa.hpp @@ -5,7 +5,6 @@ #include -#include #include #include @@ -39,17 +38,12 @@ namespace arch::bus }; //! The ISA bus. - struct isa final : public kapi::devices::bus, kapi::devices::bus_protocol + struct isa final : public kapi::devices::bus { //! Construct a default ISA bus. isa(); - auto enumerate(kapi::devices::bus & self) -> void override; - - [[nodiscard]] auto match(kapi::devices::device const & device, kapi::devices::driver const & driver) const - -> kstd::result override; - - [[nodiscard]] auto protocol() -> isa * override; + [[nodiscard]] auto protocol() -> kapi::devices::bus_protocol * override; }; } // namespace arch::bus -- cgit v1.2.3