diff options
| author | Cyrille Bagard <nocbos@gmail.com> | 2017-09-30 11:22:46 (GMT) | 
|---|---|---|
| committer | Cyrille Bagard <nocbos@gmail.com> | 2017-09-30 11:22:46 (GMT) | 
| commit | db702d1243e6fec187137d48cecb89de17fefc3b (patch) | |
| tree | 13776b4b75377951d9ebf9a57078ae1aed659cba /src/plugins/pglist.h | |
| parent | 6ba73df8224dc2a88fe5f37a331960936758036e (diff) | |
Handled dependencies when loading plugins.
Diffstat (limited to 'src/plugins/pglist.h')
| -rw-r--r-- | src/plugins/pglist.h | 24 | 
1 files changed, 21 insertions, 3 deletions
| diff --git a/src/plugins/pglist.h b/src/plugins/pglist.h index 5dfd6c3..d2f2243 100644 --- a/src/plugins/pglist.h +++ b/src/plugins/pglist.h @@ -41,8 +41,21 @@ bool init_all_plugins(void);  /* Procède au déchargement des différents greffons présents. */  void exit_all_plugins(void); +/* Ajoute un greffon à la liste principale de greffons. */ +void _register_plugin(GPluginModule *); + +/* Ajoute un greffon à la liste principale de greffons. */ +void register_plugin(GPluginModule *); + +/* Charge tous les greffons restant à charger. */ +void load_remaning_plugins(void); + +/* Founit le greffon répondant à un nom donné. */ +GPluginModule *get_plugin_by_name(const char *, size_t *); +  /* Founit less greffons offrant le service demandé. */ -const GPluginModule **get_all_plugins_for_action(PluginAction, size_t *); +GPluginModule **get_all_plugins_for_action(PluginAction, size_t *); +  /** @@ -52,18 +65,23 @@ const GPluginModule **get_all_plugins_for_action(PluginAction, size_t *);  #define process_all_plugins_for(a, f, ...)                  \      {                                                       \          size_t __count;                                     \ -        const GPluginModule **__list;                       \ +        GPluginModule **__list;                             \          size_t __i;                                         \          __list = get_all_plugins_for_action(a, &__count);   \          for (__i = 0; __i < __count; __i++)                 \ +        {                                                   \              f(__list[__i], a, __VA_ARGS__);                 \ +            g_object_ref(G_OBJECT(__list[__i]));            \ +        }                                                   \ +        if (__list != NULL)                                 \ +            free(__list);                                   \      }                                                       \      while (0)  /* DPS_FORMAT */ -#define find_matching_format() +//#define find_matching_format()  #define handle_binary_format(a, f, s)                                     \      process_all_plugins_for(a, g_plugin_module_handle_binary_format, f, s) | 
