summaryrefslogtreecommitdiff
path: root/src/plugins/plugin.h
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2017-09-30 11:22:46 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2017-09-30 11:22:46 (GMT)
commitdb702d1243e6fec187137d48cecb89de17fefc3b (patch)
tree13776b4b75377951d9ebf9a57078ae1aed659cba /src/plugins/plugin.h
parent6ba73df8224dc2a88fe5f37a331960936758036e (diff)
Handled dependencies when loading plugins.
Diffstat (limited to 'src/plugins/plugin.h')
-rw-r--r--src/plugins/plugin.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/plugins/plugin.h b/src/plugins/plugin.h
index bc6189f..6d783b7 100644
--- a/src/plugins/plugin.h
+++ b/src/plugins/plugin.h
@@ -44,6 +44,21 @@ typedef struct _GPluginModule GPluginModule;
typedef struct _GPluginModuleClass GPluginModuleClass;
+/* Fanions indiquant le statut du greffon */
+typedef enum _PluginStatusFlags
+{
+ PSF_NONE = (0 << 0), /* Aucune indication */
+ PSF_UNKNOW_DEP = (1 << 0), /* Dépendance non trouvée */
+ PSF_DEP_LOOP = (1 << 1), /* Dépendances circulaires */
+ PSF_FAILURE = (1 << 2), /* Erreur au chargement */
+ PSF_LOADED = (1 << 2) /* Greffon intégré au système */
+
+} PluginStatusFlags;
+
+
+#define BROKEN_PLUGIN_STATUS (PSF_UNKNOW_DEP | PSF_DEP_LOOP | PSF_FAILURE)
+
+
#define G_TYPE_PLUGIN_MODULE (g_plugin_module_get_type())
#define G_PLUGIN_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_PLUGIN_MODULE, GPluginModule))
#define G_IS_PLUGIN_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_PLUGIN_MODULE))
@@ -61,6 +76,14 @@ GPluginModule *g_plugin_module_new(const gchar *);
/* Fournit la description du greffon dans son intégralité. */
const plugin_interface *g_plugin_module_get_interface(const GPluginModule *);
+/* Fournit des indications sur l'état du greffon. */
+PluginStatusFlags g_plugin_module_get_flags(const GPluginModule *);
+
+/* Met à jour l'ensemble des dépendances du greffon. */
+bool g_plugin_module_resolve_dependencies(GPluginModule *, GPluginModule **, size_t);
+
+/* Termine le chargement du greffon préparé. */
+bool g_plugin_module_load(GPluginModule *, GPluginModule **, size_t);