## FsPlugin

FsPlugin — A class for defining Farsight plugins

## Synopsis

    #include <gst/farsight/fs-plugin.h>

                        FsPlugin;
    GObject*            fs_plugin_create_valist             (const gchar *name,
                                                             const gchar *type_suffix,
                                                             GError **error,
                                                             const gchar *first_property_name,
                                                             va_list var_args);
    GObject*            fs_plugin_create                    (const gchar *name,
                                                             const gchar *type_suffix,
                                                             GError **error,
                                                             const gchar *first_property_name,
                                                             ...);
    #define             FS_INIT_PLUGIN                      (type_register_func)
    gchar**             fs_plugin_list_available            (const gchar *type_suffix);

## Description

This class is a generic class to load GType plugins based on their name. With this simple class, you can only have one type per plugin.

## Details

### FsPlugin

    typedef struct {
      GTypeModule parent;
    } FsPlugin;

This structure represents a plugin, it is opaque.

GTypeModule `parent`; | the parent object

### fs_plugin_create_valist ()

    GObject*            fs_plugin_create_valist             (const gchar *name,
                                                             const gchar *type_suffix,
                                                             GError **error,
                                                             const gchar *first_property_name,
                                                             va_list var_args);

Loads the appropriate plugin if necessary and creates a GObject of the requested type

`name` : | The name of the plugin to load
`type_suffix` : | The type of plugin to load (normally "transmitter")
`error` : | location of a GError, or NULL if no error occured
`first_property_name` : | The name of the first property to be set on the object
`var_args` : | The rest of the arguments
Returns : | The object created (or NULL if there is an error)

### fs_plugin_create ()

    GObject*            fs_plugin_create                    (const gchar *name,
                                                             const gchar *type_suffix,
                                                             GError **error,
                                                             const gchar *first_property_name,
                                                             ...);

Loads the appropriate plugin if necessary and creates a GObject of the requested type

`name` : | The name of the plugin to load
`type_suffix` : | The type of plugin to load (normally "transmitter")
`error` : | location of a GError, or NULL if no error occured
`first_property_name` : | The name of the first property to be set on the object
`...` : | The NULL-terminated list of properties to set on the transmitter
Returns : | The object created (or NULL if there is an error)

### FS_INIT_PLUGIN()

    #define             FS_INIT_PLUGIN(type_register_func)

This macro is used to declare Farsight plugins and must be used once in any farsight plugin.

`type_register_func` : | A function that register a GType and returns it

### fs_plugin_list_available ()

    gchar**             fs_plugin_list_available            (const gchar *type_suffix);

Gets the list of all available plugins of a certain type

`type_suffix` : | Get list of plugins with this type suffix
Returns : | a newly allocated NULL terminated array of strings or `NULL` if no strings were found. It should be freed with `g_strfreev()`.