GnomeScanModule

## GnomeScanModule GnomeScanModule — Module loading and initialization |

## Synopsis

    #define             GS_DEFINE_MODULE_TYPE               (TN, t_n, T_P)
                        GnomeScanModule;
    GnomeScanModule*    gnome_scan_module_new               (gchar *filename);

## Object Hierarchy

      GObject
       +----GTypeModule
             +----GnomeScanModule

## Implemented Interfaces

GnomeScanModule implements GTypePlugin.

## Properties

      "filename"                 gchararray            : Read / Write / Construct Only

## Description

A module represent the library opened with GModule where are stored a list of GObjects.

## Details

### GS_DEFINE_MODULE_TYPE()

    #define             GS_DEFINE_MODULE_TYPE(TN, t_n, T_P)

Convenient macro used to declare a dynamicly registered type.

For example:

    GS_DEFINE_MODULE_TYPE (FooBar, foo_bar, G_TYPE_OBJECT)

expands to:

    static void     foo_bar_init       (FooBar      *self);
    static void     foo_bar_class_init (FooBarClass *klass);

    static GType foo_bar_type = 0;
    GType
    foo_bar_get_type ()
    { return foo_bar_type; }

    void
    foo_bar_register_type (GTypeModule *module)
    {
      if (!foo_bar_type)
        {
          static const GTypeInfo type_info =
          {
            sizeof (FooBarClass),
            (GBaseInitFunc) NULL,
            (GBaseFinalizeFunc) NULL,
            (GClassInitFunc) foo_bar_class_init,
            NULL,
            NULL,
            sizeof (FooBar),
            0,
            (GInstanceInitFunc) foo_bar_init
          };

          foo_bar_type =
            g_type_module_register_type (module, G_TYPE_OBJECT,
                                         g_intern_static_string ("FooBar"), &type_info, 0);
        }
    }

See: G_DEFINE_TYPE

`TN` : | Capitalized type name
`t_n` : | Type function prefix
`T_P` : | Parent GType macro

### GnomeScanModule

    typedef struct {
    	void (* init)		(GnomeScanModule *module);
    	void (* finalize)	(GnomeScanModule *module);
    } GnomeScanModule;

A GnomeScanModule handle the loading, initialization, finalization and unloading of a module. If you want to extends Gnome Scan, you must implement two function, one for `init` and one for `finalize`, called `gnome_scan_module_init()` and `gnome_scan_module_finalize()`. You should prefix function prototypes with G_MODULE_EXPORT.

### gnome_scan_module_new ()

    GnomeScanModule*    gnome_scan_module_new               (gchar *filename);

Open and initialize a new module. This function should be used only by GnomeScanModuleManager.

`filename` : | The path to shared object
Returns : | a new GnomeScanModule

## Property Details

### The "`filename`" property

      "filename"                 gchararray            : Read / Write / Construct Only

The path to the shared object.

Default value: NULL