## PeasObjectModule PeasObjectModule — Type module which allows extension registration. |

## Synopsis

    struct              PeasObjectModule;
    struct              PeasObjectModuleClass;
    GObject *           (*PeasFactoryFunc)                  (guint n_parameters,
                                                             GParameter *parameters,
                                                             gpointer user_data);
    void                peas_object_module_register_extension_factory
                                                            (PeasObjectModule *module,
                                                             GType iface_type,
                                                             PeasFactoryFunc factory_func,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy_func);
    void                peas_object_module_register_extension_type
                                                            (PeasObjectModule *module,
                                                             GType iface_type,
                                                             GType extension_type);

## Object Hierarchy

      GObject
       +----GTypeModule
             +----PeasObjectModule

## Implemented Interfaces

PeasObjectModule implements GTypePlugin.

## Properties

      "module-name"              gchar*                : Read / Write / Construct Only
      "path"                     gchar*                : Read / Write / Construct Only
      "resident"                 gboolean              : Read / Write / Construct Only

## Description

PeasObjectModule is a subclass of GTypeModule which allows registration of extensions. It will be used by C extensions implementors to register extension implementations from within the peas_register_types module function.

## Details

### struct PeasObjectModule

    struct PeasObjectModule;

The PeasObjectModule structure contains only private data and should only be accessed using the provided API.

### struct PeasObjectModuleClass

    struct PeasObjectModuleClass {
      GTypeModuleClass parent_class;
    };

The class structure for PeasObjectModule.

GTypeModuleClass `parent_class`; | The parent class.

### PeasFactoryFunc ()

    GObject *           (*PeasFactoryFunc)                  (guint n_parameters,
                                                             GParameter *parameters,
                                                             gpointer user_data);

A PeasFactoryFunc is a factory function which will instanciate a new extension of a given type. `g_object_newv()` is such a function.

It is used with `peas_object_module_register_extension_factory()`.

`n_parameters` : | The number of paramteters.
`parameters` : | The parameters. [array length=n_parameters]
`user_data` : | Optional data to be passed to the function, or `NULL`.
Returns : | The created object. [transfer full]

### peas_object_module_register_extension_factory ()

    void                peas_object_module_register_extension_factory
                                                            (PeasObjectModule *module,
                                                             GType iface_type,
                                                             PeasFactoryFunc factory_func,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy_func);

Register an implementation for an extension type through a factory function `factory_func` which will instantiate the extension when requested.

This method is primarily meant to be used by native bindings (like gtkmm), creating native types which cannot be instantiated correctly using `g_object_new()`. For other uses, you will usually prefer relying on `peas_object_module_register_extension_type()`.

`module` : | Your plugin's PeasObjectModule.
`iface_type` : | The GType of the extension interface you implement.
`factory_func` : | The PeasFactoryFunc that will create the `iface_type` instance when requested.
`user_data` : | Data to pass to `func` calls.
`destroy_func` : | A GDestroyNotify for `user_data`.

### peas_object_module_register_extension_type ()

    void                peas_object_module_register_extension_type
                                                            (PeasObjectModule *module,
                                                             GType iface_type,
                                                             GType extension_type);

Register an extension type which implements the extension interface `iface_type`.

`module` : | Your plugin's PeasObjectModule.
`iface_type` : | The GType of the extension interface you implement.
`extension_type` : | The GType of your implementation of `iface_type`.

## Property Details

### The `"module-name"` property

      "module-name"              gchar*                : Read / Write / Construct Only

The module to load for this object.

Default value: NULL

### The `"path"` property

      "path"                     gchar*                : Read / Write / Construct Only

The path to use when loading this module.

Default value: NULL

### The `"resident"` property

      "resident"                 gboolean              : Read / Write / Construct Only

Whether the module is resident.

Default value: FALSE