#include #include #include #include #include namespace kapi::devices { device::device(kstd::string const & name) : m_name(name) {} auto device::facet(kapi::capabilities::facet_id facet) noexcept -> void * { return query_facet(facet); } auto device::facet(kapi::capabilities::facet_id facet) const noexcept -> void const * { return const_cast(this)->query_facet(facet); } auto device::has_facet(kapi::capabilities::facet_id facet) const noexcept -> bool { return const_cast(this)->query_facet(facet) != nullptr; } auto device::name() const -> kstd::string const & { return m_name; } auto device::parent() const -> kstd::shared_ptr { return m_parent.lock(); } auto device::state() const noexcept -> enum state { return m_state; } auto device::set_state(enum state state) -> void { m_state = state; } auto device::bound_driver() const noexcept -> driver * { return m_driver.lock().get(); } auto device::bind_driver(kstd::weak_ptr driver) -> void { m_driver = driver; } auto device::driver_data() const -> kstd::shared_ptr const & { return m_driver_data; } auto device::set_driver_data(kstd::shared_ptr data) -> void { m_driver_data = data; } auto device::query_facet(kapi::capabilities::facet_id) -> void * { return nullptr; } auto device::set_parent(kstd::weak_ptr parent) -> void { m_parent = parent; } } // namespace kapi::devices