gplugin/gplugin

f10c8513f4e1
Parents d3a78065c3fa
Children 50f787185664
move GPluginLoaderClass->supported_extensions from a class method to an instance method. Fixes GPLUGIN-102
--- a/gplugin/gplugin-loader.c Sun Feb 23 03:58:53 2020 -0600
+++ b/gplugin/gplugin-loader.c Sun Feb 23 04:07:59 2020 -0600
@@ -173,8 +173,8 @@
}
/**
- * gplugin_loader_class_get_supported_extensions:
- * @klass: The #GPluginLoaderClass.
+ * gplugin_loader_get_supported_extensions:
+ * @loader: The #GPluginLoader instance.
*
* Returns a #GSList of strings containing the extensions that the loader
* supports. Each extension should not include the dot. For example: so,
@@ -184,11 +184,14 @@
* extensions that the loader supports.
*/
GSList *
-gplugin_loader_class_get_supported_extensions(GPluginLoaderClass *klass) {
- g_return_val_if_fail(GPLUGIN_IS_LOADER_CLASS(klass), NULL);
+gplugin_loader_get_supported_extensions(GPluginLoader *loader) {
+ GPluginLoaderClass *klass = NULL;
- if(klass->supported_extensions)
- return klass->supported_extensions(klass);
+ g_return_val_if_fail(GPLUGIN_IS_LOADER(loader), NULL);
+
+ klass = GPLUGIN_LOADER_GET_CLASS(loader);
+ if(klass != NULL && klass->supported_extensions)
+ return klass->supported_extensions(loader);
return NULL;
}
--- a/gplugin/gplugin-loader.h Sun Feb 23 03:58:53 2020 -0600
+++ b/gplugin/gplugin-loader.h Sun Feb 23 04:07:59 2020 -0600
@@ -38,7 +38,7 @@
GObjectClass gparent;
/*< public >*/
- GSList *(*supported_extensions)(GPluginLoaderClass *klass);
+ GSList *(*supported_extensions)(GPluginLoader *loader);
GPluginPlugin *(*query)(GPluginLoader *loader, const gchar *filename, GError **error);
@@ -49,7 +49,7 @@
gpointer reserved[4];
};
-GSList *gplugin_loader_class_get_supported_extensions(GPluginLoaderClass *klass);
+GSList *gplugin_loader_get_supported_extensions(GPluginLoader *loader);
GPluginPlugin *gplugin_loader_query_plugin(GPluginLoader *loader, const gchar *filename, GError **error);
--- a/gplugin/gplugin-manager.c Sun Feb 23 03:58:53 2020 -0600
+++ b/gplugin/gplugin-manager.c Sun Feb 23 04:07:59 2020 -0600
@@ -250,7 +250,6 @@
GError **error)
{
GPluginLoader *loader = NULL;
- GPluginLoaderClass *lo_class = NULL;
GSList *l = NULL, *exts = NULL;
g_return_val_if_fail(g_type_is_a(type, GPLUGIN_TYPE_LOADER), FALSE);
@@ -272,21 +271,10 @@
return FALSE;
}
- /* grab the class of the loader */
- lo_class = GPLUGIN_LOADER_GET_CLASS(loader);
- if(!lo_class) {
- g_set_error(error, GPLUGIN_DOMAIN, 0,
- _("failed to get the loader class for %s"),
- g_type_name(type));
- g_object_unref(G_OBJECT(loader));
-
- return FALSE;
- }
-
manager->loaders = g_slist_prepend(manager->loaders,
g_object_ref(G_OBJECT(loader)));
- exts = gplugin_loader_class_get_supported_extensions(lo_class);
+ exts = gplugin_loader_get_supported_extensions(loader);
for(l = exts; l; l = l->next) {
GSList *existing = NULL, *ll = NULL;
const gchar *ext = (const gchar *)l->data;
@@ -330,8 +318,7 @@
GError **error)
{
GPluginLoader *loader = NULL;
- GPluginLoaderClass *klass = NULL;
- GSList *exts = NULL;
+ GSList *l = NULL, *exts = NULL;
g_return_val_if_fail(g_type_is_a(type, GPLUGIN_TYPE_LOADER), FALSE);
@@ -343,25 +330,17 @@
return FALSE;
}
- klass = GPLUGIN_LOADER_GET_CLASS(loader);
- if(!klass) {
- g_set_error_literal(error, GPLUGIN_DOMAIN, 0,
- _("failed to get class from loader"));
-
- return FALSE;
- }
-
- for(exts = gplugin_loader_class_get_supported_extensions(klass);
- exts; exts = exts->next) {
+ exts = gplugin_loader_get_supported_extensions(loader);
+ for(l = exts; l; l = l->next) {
GSList *los = NULL;
- GSList *l = NULL;
+ GSList *ll = NULL;
const gchar *ext = NULL;
ext = (const gchar *)exts->data;
los = g_hash_table_lookup(manager->loaders_by_extension, ext);
- for(l = los; l; l = l->next) {
- GPluginLoader *lo = GPLUGIN_LOADER(l->data);
+ for(ll = los; ll; ll = ll->next) {
+ GPluginLoader *lo = GPLUGIN_LOADER(ll->data);
/* check if this is not the loader we're looking for */
if(G_OBJECT_TYPE(lo) != type)
@@ -384,6 +363,7 @@
break;
}
}
+ g_slist_free(exts);
manager->loaders = g_slist_remove(manager->loaders, loader);
g_object_unref(G_OBJECT(loader));
--- a/gplugin/gplugin-native-loader.c Sun Feb 23 03:58:53 2020 -0600
+++ b/gplugin/gplugin-native-loader.c Sun Feb 23 04:07:59 2020 -0600
@@ -101,12 +101,12 @@
* GPluginLoaderInterface API
*****************************************************************************/
static GSList *
-gplugin_native_loader_class_supported_extensions(G_GNUC_UNUSED GPluginLoaderClass *klass) {
+gplugin_native_loader_supported_extensions(G_GNUC_UNUSED GPluginLoader *l) {
GSList *exts = g_slist_append(NULL, G_MODULE_SUFFIX);
#if defined(__APPLE__) || defined(__MACH__)
- /* G_MODULE_SUFFIX only requests so on not windows, and both .so and
- * .dylib are use on macos, so add dylib if we're on macos.
+ /* G_MODULE_SUFFIX only requests `.so` on not windows, and both .so and
+ * .dylib are used on macos, so add dylib if we're on macos.
* See: https://gitlab.gnome.org/GNOME/glib/issues/1413
*/
exts = g_slist_append(exts, "dylib");
@@ -304,7 +304,7 @@
GPLUGIN_LOADER_CLASS(klass);
loader_class->supported_extensions =
- gplugin_native_loader_class_supported_extensions;
+ gplugin_native_loader_supported_extensions;
loader_class->query = gplugin_native_loader_query;
loader_class->load = gplugin_native_loader_load;
loader_class->unload = gplugin_native_loader_unload;
--- a/lua/gplugin-lua-loader.c Sun Feb 23 03:58:53 2020 -0600
+++ b/lua/gplugin-lua-loader.c Sun Feb 23 04:07:59 2020 -0600
@@ -81,7 +81,7 @@
* GPluginLoaderInterface API
*****************************************************************************/
static GSList *
-gplugin_lua_loader_class_supported_extensions(G_GNUC_UNUSED GPluginLoaderClass *klass) {
+gplugin_lua_loader_supported_extensions(G_GNUC_UNUSED GPluginLoader *l) {
return g_slist_append(NULL, "lua");
}
@@ -174,7 +174,7 @@
GPluginLoaderClass *loader_class = GPLUGIN_LOADER_CLASS(klass);
loader_class->supported_extensions =
- gplugin_lua_loader_class_supported_extensions;
+ gplugin_lua_loader_supported_extensions;
loader_class->query = gplugin_lua_loader_query;
loader_class->load = gplugin_lua_loader_load;
loader_class->unload = gplugin_lua_loader_unload;
--- a/perl/gplugin-perl-loader.c Sun Feb 23 03:58:53 2020 -0600
+++ b/perl/gplugin-perl-loader.c Sun Feb 23 04:07:59 2020 -0600
@@ -167,7 +167,7 @@
* GPluginLoaderInterface API
*****************************************************************************/
static GSList *
-gplugin_perl_loader_class_supported_extensions(G_GNUC_UNUSED GPluginLoaderClass *klass) {
+gplugin_perl_loader_supported_extensions(G_GNUC_UNUSED GPluginLoader *l) {
return g_slist_append(NULL, "pl");
}
@@ -279,7 +279,7 @@
GPluginLoaderClass *loader_class = GPLUGIN_LOADER_CLASS(klass);
loader_class->supported_extensions =
- gplugin_perl_loader_class_supported_extensions;
+ gplugin_perl_loader_supported_extensions;
loader_class->query = gplugin_perl_loader_query;
loader_class->load = gplugin_perl_loader_load;
loader_class->unload = gplugin_perl_loader_unload;
--- a/python/gplugin-python3-loader.c Sun Feb 23 03:58:53 2020 -0600
+++ b/python/gplugin-python3-loader.c Sun Feb 23 04:07:59 2020 -0600
@@ -41,7 +41,7 @@
* GPluginLoader Implementation
*****************************************************************************/
static GSList *
-gplugin_python3_loader_class_supported_extensions(G_GNUC_UNUSED GPluginLoaderClass *klass) {
+gplugin_python3_loader_supported_extensions(G_GNUC_UNUSED GPluginLoader *l) {
return g_slist_append(NULL, "py");
}
@@ -356,7 +356,7 @@
GPluginLoaderClass *loader_class = GPLUGIN_LOADER_CLASS(klass);
loader_class->supported_extensions =
- gplugin_python3_loader_class_supported_extensions;
+ gplugin_python3_loader_supported_extensions;
loader_class->query = gplugin_python3_loader_query;
loader_class->load = gplugin_python3_loader_load;
loader_class->unload = gplugin_python3_loader_unload;
--- a/tcc/gplugin-tcc-loader.c Sun Feb 23 03:58:53 2020 -0600
+++ b/tcc/gplugin-tcc-loader.c Sun Feb 23 04:07:59 2020 -0600
@@ -33,12 +33,8 @@
* GPluginLoaderInterface API
*****************************************************************************/
static GSList *
-gplugin_tcc_loader_class_supported_extensions(G_GNUC_UNUSED const GPluginLoaderClass *klass) {
- GSList *exts = NULL;
-
- exts = g_slist_append(exts, "c");
-
- return exts;
+gplugin_tcc_loader_supported_extensions(G_GNUC_UNUSED GPluginLoader *l) {
+ return g_list_append(NULL, "c");
}
static GPluginPlugin *
@@ -161,7 +157,7 @@
GPluginLoaderClass *loader_class = GPLUGIN_LOADER_CLASS(klass);
loader_class->supported_extensions =
- gplugin_tcc_loader_class_supported_extensions;
+ gplugin_tcc_loader_supported_extensions;
loader_class->query = gplugin_tcc_loader_query;
loader_class->load = gplugin_tcc_loader_load;
loader_class->unload = gplugin_tcc_loader_unload;