## go-plugin-service

go-plugin-service

## Synopsis

    #define             GO_PLUGIN_SERVICE_TYPE
    #define             GO_PLUGIN_SERVICE                   (o)
    #define             IS_GO_PLUGIN_SERVICE                (o)
    GType               plugin_service_get_type             (void);
    #define             GO_PLUGIN_SERVICE_GENERAL_TYPE
    #define             GO_PLUGIN_SERVICE_GENERAL           (o)
    #define             IS_GO_PLUGIN_SERVICE_GENERAL        (o)
    GType               plugin_service_general_get_type     (void);
                        PluginServiceGeneral;
                        PluginServiceGeneralCallbacks;
    #define             GO_PLUGIN_SERVICE_FILE_OPENER_TYPE
    #define             GO_PLUGIN_SERVICE_FILE_OPENER       (o)
    #define             IS_GO_PLUGIN_SERVICE_FILE_OPENER    (o)
    GType               plugin_service_file_opener_get_type (void);
                        PluginServiceFileOpener;
                        PluginServiceFileOpenerCallbacks;
    #define             GO_PLUGIN_SERVICE_FILE_SAVER_TYPE
    #define             GO_PLUGIN_SERVICE_FILE_SAVER        (o)
    #define             IS_GO_PLUGIN_SERVICE_FILE_SAVER     (o)
    GType               plugin_service_file_saver_get_type  (void);
                        PluginServiceFileSaver;
                        PluginServiceFileSaverCallbacks;
    #define             GO_PLUGIN_SERVICE_PLUGIN_LOADER_TYPE
    #define             GO_PLUGIN_SERVICE_PLUGIN_LOADER     (o)
    #define             IS_GO_PLUGIN_SERVICE_PLUGIN_LOADER  (o)
    GType               plugin_service_plugin_loader_get_type
                                                            (void);
                        PluginServicePluginLoader;
                        PluginServicePluginLoaderCallbacks;
    GType               plugin_service_plugin_loader_generate_type
                                                            (GOPluginService *service,
                                                             ErrorInfo **ret_error);
    #define             GO_PLUGIN_SERVICE_GOBJECT_LOADER_TYPE
    #define             GO_PLUGIN_SERVICE_GOBJECT_LOADER    (o)
    #define             IS_GO_PLUGIN_SERVICE_GOBJECT_LOADER (o)
    GType               plugin_service_gobject_loader_get_type
                                                            (void);
                        PluginServiceGObjectLoader;
    #define             GO_PLUGIN_SERVICE_SIMPLE_TYPE
    #define             GO_PLUGIN_SERVICE_SIMPLE            (o)
    #define             IS_GO_PLUGIN_SERVICE_SIMPLE         (o)
    GType               plugin_service_simple_get_type      (void);
                        PluginServiceSimple;
    GOPluginService*    plugin_service_new                  (GOPlugin *plugin,
                                                             xmlNode *tree,
                                                             ErrorInfo **ret_error);
    charconst     *     plugin_service_get_id               (const GOPluginService *service);
    charconst     *     plugin_service_get_description      (GOPluginService *service);
    GOPlugin*           plugin_service_get_plugin           (GOPluginService *service);
    gpointer            plugin_service_get_cbs              (GOPluginService *service);
    void                plugin_service_activate             (GOPluginService *service,
                                                             ErrorInfo **ret_error);
    void                plugin_service_deactivate           (GOPluginService *service,
                                                             ErrorInfo **ret_error);
    void                plugin_service_load                 (GOPluginService *service,
                                                             ErrorInfo **ret_error);
    void                plugin_service_unload               (GOPluginService *service,
                                                             ErrorInfo **ret_error);
    GType               (*GOPluginServiceCreate)            (void);
    void                plugin_services_init                (void);
    void                plugin_services_shutdown            (void);
    void                plugin_service_define               (char const *type_str,
                                                             GOPluginServiceCreate ctor);

## Object Hierarchy

      GObject
       +----GOPluginService
             +----PluginServiceGeneral

      GObject
       +----GOPluginService
             +----PluginServiceFileOpener

      GObject
       +----GOPluginService
             +----PluginServiceFileSaver

      GObject
       +----GOPluginService
             +----PluginServicePluginLoader

      GObject
       +----GOPluginService
             +----PluginServiceSimple
                   +----PluginServiceGObjectLoader

      GObject
       +----GOPluginService
             +----PluginServiceSimple
                   +----PluginServiceGObjectLoader

## Description

## Details

### GO_PLUGIN_SERVICE_TYPE

    #define GO_PLUGIN_SERVICE_TYPE         (plugin_service_get_type ())

### GO_PLUGIN_SERVICE()

    #define GO_PLUGIN_SERVICE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_TYPE, GOPluginService))

`o` : |

### IS_GO_PLUGIN_SERVICE()

    #define IS_GO_PLUGIN_SERVICE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_TYPE))

`o` : |

### plugin_service_get_type ()

    GType               plugin_service_get_type             (void);

Returns : |

### GO_PLUGIN_SERVICE_GENERAL_TYPE

    #define GO_PLUGIN_SERVICE_GENERAL_TYPE  (plugin_service_general_get_type ())

### GO_PLUGIN_SERVICE_GENERAL()

    #define GO_PLUGIN_SERVICE_GENERAL(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_GENERAL_TYPE, PluginServiceGeneral))

`o` : |

### IS_GO_PLUGIN_SERVICE_GENERAL()

    #define IS_GO_PLUGIN_SERVICE_GENERAL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_GENERAL_TYPE))

`o` : |

### plugin_service_general_get_type ()

    GType               plugin_service_general_get_type     (void);

Returns : |

### PluginServiceGeneral

    typedef struct _PluginServiceGeneral PluginServiceGeneral;

### PluginServiceGeneralCallbacks

    typedef struct {
    	void (*plugin_func_init) (GOPluginService *service, ErrorInfo **ret_error);
    	void (*plugin_func_cleanup) (GOPluginService *service, ErrorInfo **ret_error);
    } PluginServiceGeneralCallbacks;

### GO_PLUGIN_SERVICE_FILE_OPENER_TYPE

    #define GO_PLUGIN_SERVICE_FILE_OPENER_TYPE  (plugin_service_file_opener_get_type ())

### GO_PLUGIN_SERVICE_FILE_OPENER()

    #define GO_PLUGIN_SERVICE_FILE_OPENER(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_FILE_OPENER_TYPE, PluginServiceFileOpener))

`o` : |

### IS_GO_PLUGIN_SERVICE_FILE_OPENER()

    #define IS_GO_PLUGIN_SERVICE_FILE_OPENER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_FILE_OPENER_TYPE))

`o` : |

### plugin_service_file_opener_get_type ()

    GType               plugin_service_file_opener_get_type (void);

Returns : |

### PluginServiceFileOpener

    typedef struct _PluginServiceFileOpener PluginServiceFileOpener;

### PluginServiceFileOpenerCallbacks

    typedef struct {
    	/* plugin_func_file_probe may be NULL */
    	gboolean (*plugin_func_file_probe) (
    	         GOFileOpener const *fo, GOPluginService *service,
    	         GsfInput *input, FileProbeLevel pl);
    	void     (*plugin_func_file_open) (
    	         GOFileOpener const *fo, GOPluginService *service,
    	         IOContext *io_context, gpointer fixme_workbook_view,
    		 GsfInput *input);
    } PluginServiceFileOpenerCallbacks;

### GO_PLUGIN_SERVICE_FILE_SAVER_TYPE

    #define GO_PLUGIN_SERVICE_FILE_SAVER_TYPE  (plugin_service_file_saver_get_type ())

### GO_PLUGIN_SERVICE_FILE_SAVER()

    #define GO_PLUGIN_SERVICE_FILE_SAVER(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_FILE_SAVER_TYPE, PluginServiceFileSaver))

`o` : |

### IS_GO_PLUGIN_SERVICE_FILE_SAVER()

    #define IS_GO_PLUGIN_SERVICE_FILE_SAVER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_FILE_SAVER_TYPE))

`o` : |

### plugin_service_file_saver_get_type ()

    GType               plugin_service_file_saver_get_type  (void);

Returns : |

### PluginServiceFileSaver

    typedef struct _PluginServiceFileSaver PluginServiceFileSaver;

### PluginServiceFileSaverCallbacks

    typedef struct {
    	void  (*plugin_func_file_save) (
    	      GOFileSaver const *fs, GOPluginService *service,
    	      IOContext *io_context, gconstpointer fixme_workbook_view,
    	      GsfOutput *output);
    } PluginServiceFileSaverCallbacks;

### GO_PLUGIN_SERVICE_PLUGIN_LOADER_TYPE

    #define GO_PLUGIN_SERVICE_PLUGIN_LOADER_TYPE  (plugin_service_plugin_loader_get_type ())

### GO_PLUGIN_SERVICE_PLUGIN_LOADER()

    #define GO_PLUGIN_SERVICE_PLUGIN_LOADER(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_PLUGIN_LOADER_TYPE, PluginServicePluginLoader))

`o` : |

### IS_GO_PLUGIN_SERVICE_PLUGIN_LOADER()

    #define IS_GO_PLUGIN_SERVICE_PLUGIN_LOADER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_PLUGIN_LOADER_TYPE))

`o` : |

### plugin_service_plugin_loader_get_type ()

    GType               plugin_service_plugin_loader_get_type
                                                            (void);

Returns : |

### PluginServicePluginLoader

    typedef struct _PluginServicePluginLoader PluginServicePluginLoader;

### PluginServicePluginLoaderCallbacks

    typedef struct {
    	GType (*plugin_func_get_loader_type) (
    	      GOPluginService *service, ErrorInfo **ret_error);
    } PluginServicePluginLoaderCallbacks;

### plugin_service_plugin_loader_generate_type ()

    GType               plugin_service_plugin_loader_generate_type
                                                            (GOPluginService *service,
                                                             ErrorInfo **ret_error);

`service` : |
`ret_error` : |
Returns : |

### GO_PLUGIN_SERVICE_GOBJECT_LOADER_TYPE

    #define GO_PLUGIN_SERVICE_GOBJECT_LOADER_TYPE  (plugin_service_gobject_loader_get_type ())

### GO_PLUGIN_SERVICE_GOBJECT_LOADER()

    #define GO_PLUGIN_SERVICE_GOBJECT_LOADER(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_GOBJECT_LOADER_TYPE, PluginServiceGObjectLoader))

`o` : |

### IS_GO_PLUGIN_SERVICE_GOBJECT_LOADER()

    #define IS_GO_PLUGIN_SERVICE_GOBJECT_LOADER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_GOBJECT_LOADER_TYPE))

`o` : |

### plugin_service_gobject_loader_get_type ()

    GType               plugin_service_gobject_loader_get_type
                                                            (void);

Returns : |

### PluginServiceGObjectLoader

    typedef struct _PluginServiceGObjectLoader PluginServiceGObjectLoader;

### GO_PLUGIN_SERVICE_SIMPLE_TYPE

    #define GO_PLUGIN_SERVICE_SIMPLE_TYPE  (plugin_service_simple_get_type ())

### GO_PLUGIN_SERVICE_SIMPLE()

    #define GO_PLUGIN_SERVICE_SIMPLE(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_SIMPLE_TYPE, PluginServiceSimple))

`o` : |

### IS_GO_PLUGIN_SERVICE_SIMPLE()

    #define IS_GO_PLUGIN_SERVICE_SIMPLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_SIMPLE_TYPE))

`o` : |

### plugin_service_simple_get_type ()

    GType               plugin_service_simple_get_type      (void);

Returns : |

### PluginServiceSimple

    typedef struct _PluginServiceSimple PluginServiceSimple;

### plugin_service_new ()

    GOPluginService*    plugin_service_new                  (GOPlugin *plugin,
                                                             xmlNode *tree,
                                                             ErrorInfo **ret_error);

`plugin` : |
`tree` : |
`ret_error` : |
Returns : |

### plugin_service_get_id ()

    charconst     *     plugin_service_get_id               (const GOPluginService *service);

`service` : |
Returns : |

### plugin_service_get_description ()

    charconst     *     plugin_service_get_description      (GOPluginService *service);

`service` : |
Returns : |

### plugin_service_get_plugin ()

    GOPlugin*           plugin_service_get_plugin           (GOPluginService *service);

`service` : |
Returns : |

### plugin_service_get_cbs ()

    gpointer            plugin_service_get_cbs              (GOPluginService *service);

`service` : |
Returns : |

### plugin_service_activate ()

    void                plugin_service_activate             (GOPluginService *service,
                                                             ErrorInfo **ret_error);

`service` : |
`ret_error` : |

### plugin_service_deactivate ()

    void                plugin_service_deactivate           (GOPluginService *service,
                                                             ErrorInfo **ret_error);

`service` : |
`ret_error` : |

### plugin_service_load ()

    void                plugin_service_load                 (GOPluginService *service,
                                                             ErrorInfo **ret_error);

`service` : |
`ret_error` : |

### plugin_service_unload ()

    void                plugin_service_unload               (GOPluginService *service,
                                                             ErrorInfo **ret_error);

`service` : |
`ret_error` : |

### GOPluginServiceCreate ()

    GType               (*GOPluginServiceCreate)            (void);

Returns : |

### plugin_services_init ()

    void                plugin_services_init                (void);

### plugin_services_shutdown ()

    void                plugin_services_shutdown            (void);

### plugin_service_define ()

    void                plugin_service_define               (char const *type_str,
                                                             GOPluginServiceCreate ctor);

`type_str` : |
`ctor` : |