pub unsafe trait ObjectInterface: ObjectInterfaceType + Sized + 'static {
    type Prerequisites: PrerequisiteList;

    const NAME: &'static str;

    // Provided methods
    fn type_init(_type_: &mut InitializingType<Self>) { ... }
    fn interface_init(&mut self) { ... }
    fn properties() -> &'static [ParamSpec] { ... }
    fn signals() -> &'static [Signal] { ... }
Expand description

The central trait for defining a GObject interface.

Links together the type name, and the interface struct for type registration and allows hooking into various steps of the type registration and initialization.

This must only be implemented on #[repr(C)] structs and have gobject_ffi::GTypeInterface as the first field.

See register_interface for registering an implementation of this trait with the type system.

Required Associated Types§


type Prerequisites: PrerequisiteList

Prerequisites for this interface.

Any implementer of the interface must be a subclass of the prerequisites or implement them in case of interfaces.

Required Associated Constants§


const NAME: &'static str

GObject type name.

This must be unique in the whole process.

Provided Methods§


fn type_init(_type_: &mut InitializingType<Self>)

Additional type initialization.

This is called right after the type was registered and allows interfaces to do additional type-specific initialization.



fn interface_init(&mut self)

Interface initialization.

This is called after type_init and before the first implementor of the interface is created. Interfaces can use this to do interface- specific initialization, e.g. for installing signals on the interface, and for setting default implementations of interface functions.



fn properties() -> &'static [ParamSpec]

Properties installed for this interface.

All implementors of the interface must provide these properties.


fn signals() -> &'static [Signal]

Signals installed for this interface.