EExtensible

EExtensible — An interface for extending objects

Object Hierarchy

    GInterface
    ╰── EExtensible

Includes

#include <libedataserver/libedataserver.h>

Description

EExtension objects can be tacked on to any GObject instance that implements the EExtensible interface. A GObject type can be made extensible in two steps:

  1. Add the EExtensible interface when registering the GType. There are no methods to implement.

1
2
3
4
5
#include <libedataserver/libedataserver.h>

G_DEFINE_TYPE_WITH_CODE (
        ECustomWidget, e_custom_widget, GTK_TYPE_WIDGET,
        G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL))
  1. Load extensions for the class at some point during GObject initialization. Generally this should be done toward the end of the initialization code, so extensions get a fully initialized object to work with.

1
2
3
4
5
6
7
static void
e_custom_widget_constructed (ECustomWidget *widget)
{
        Construction code goes here, same as call to parent's 'constructed'...

        e_extensible_load_extensions (E_EXTENSIBLE (widget));
}

Functions

e_extensible_load_extensions ()

void
e_extensible_load_extensions (EExtensible *extensible);

Creates an instance of all instantiable subtypes of EExtension which target the class of extensible . The lifetimes of these newly created EExtension objects are bound to extensible such that they are finalized when extensible is finalized.

Parameters

extensible

an EExtensible

 

Since: 3.4


e_extensible_list_extensions ()

GList *
e_extensible_list_extensions (EExtensible *extensible,
                              GType extension_type);

Returns a list of EExtension objects bound to extensible whose types are ancestors of extension_type . For a complete list of extension objects bound to extensible , pass E_TYPE_EXTENSION.

The list itself should be freed with g_list_free(). The extension objects are owned by extensible and should not be unreferenced.

Parameters

extensible

an EExtensible

 

extension_type

the type of extensions to list

 

Returns

a list of extension objects derived from extension_type .

[element-type EExtension][transfer container]

Since: 3.4

Types and Values