diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2025-02-13 12:37:43 +0100 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2025-02-25 16:18:12 +0100 |
commit | d556226d6965738e06a1d75faaf271b769bb5880 (patch) | |
tree | e242a3f8d66528eda3ceaa54ba5f91df76ef7d77 /rust/qemu-api/src/sysbus.rs | |
parent | 567c0c41a6700be72eb9e040ba0b8d7bf0cc5919 (diff) | |
download | qemu-d556226d6965738e06a1d75faaf271b769bb5880.zip qemu-d556226d6965738e06a1d75faaf271b769bb5880.tar.gz qemu-d556226d6965738e06a1d75faaf271b769bb5880.tar.bz2 |
rust: qom: get rid of ClassInitImpl
Complete the conversion from the ClassInitImpl trait to class_init() methods.
This will provide more freedom to split the qemu_api crate in separate parts.
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'rust/qemu-api/src/sysbus.rs')
-rw-r--r-- | rust/qemu-api/src/sysbus.rs | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/rust/qemu-api/src/sysbus.rs b/rust/qemu-api/src/sysbus.rs index fee2e3d..04821a2 100644 --- a/rust/qemu-api/src/sysbus.rs +++ b/rust/qemu-api/src/sysbus.rs @@ -14,8 +14,8 @@ use crate::{ irq::{IRQState, InterruptSource}, memory::MemoryRegion, prelude::*, - qdev::{DeviceClass, DeviceImpl, DeviceState}, - qom::{ClassInitImpl, Owned}, + qdev::{DeviceImpl, DeviceState}, + qom::Owned, }; unsafe impl ObjectType for SysBusDevice { @@ -28,12 +28,11 @@ qom_isa!(SysBusDevice: DeviceState, Object); // TODO: add virtual methods pub trait SysBusDeviceImpl: DeviceImpl + IsA<SysBusDevice> {} -impl<T> ClassInitImpl<SysBusDeviceClass> for T -where - T: SysBusDeviceImpl + ClassInitImpl<DeviceClass>, -{ - fn class_init(sdc: &mut SysBusDeviceClass) { - <T as ClassInitImpl<DeviceClass>>::class_init(&mut sdc.parent_class); +impl SysBusDeviceClass { + /// Fill in the virtual methods of `SysBusDeviceClass` based on the + /// definitions in the `SysBusDeviceImpl` trait. + pub fn class_init<T: SysBusDeviceImpl>(self: &mut SysBusDeviceClass) { + self.parent_class.class_init::<T>(); } } |