|
@@ -9,8 +9,8 @@
|
|
use crate::bindings::{Object, ObjectClass, TypeInfo};
|
|
use crate::bindings::{Object, ObjectClass, TypeInfo};
|
|
|
|
|
|
/// Trait a type must implement to be registered with QEMU.
|
|
/// Trait a type must implement to be registered with QEMU.
|
|
-pub trait ObjectImpl: Sized {
|
|
|
|
- type Class: ClassInitImpl;
|
|
|
|
|
|
+pub trait ObjectImpl: ClassInitImpl + Sized {
|
|
|
|
+ type Class;
|
|
const TYPE_NAME: &'static CStr;
|
|
const TYPE_NAME: &'static CStr;
|
|
const PARENT_TYPE_NAME: Option<&'static CStr>;
|
|
const PARENT_TYPE_NAME: Option<&'static CStr>;
|
|
const ABSTRACT: bool = false;
|
|
const ABSTRACT: bool = false;
|
|
@@ -32,8 +32,8 @@ pub trait ObjectImpl: Sized {
|
|
instance_finalize: Self::INSTANCE_FINALIZE,
|
|
instance_finalize: Self::INSTANCE_FINALIZE,
|
|
abstract_: Self::ABSTRACT,
|
|
abstract_: Self::ABSTRACT,
|
|
class_size: core::mem::size_of::<Self::Class>(),
|
|
class_size: core::mem::size_of::<Self::Class>(),
|
|
- class_init: <Self::Class as ClassInitImpl>::CLASS_INIT,
|
|
|
|
- class_base_init: <Self::Class as ClassInitImpl>::CLASS_BASE_INIT,
|
|
|
|
|
|
+ class_init: <Self as ClassInitImpl>::CLASS_INIT,
|
|
|
|
+ class_base_init: <Self as ClassInitImpl>::CLASS_BASE_INIT,
|
|
class_data: core::ptr::null_mut(),
|
|
class_data: core::ptr::null_mut(),
|
|
interfaces: core::ptr::null_mut(),
|
|
interfaces: core::ptr::null_mut(),
|
|
};
|
|
};
|