gplugin/gplugin

Move the core gplugin types to the G_DECLARE_ macros
glib-macros
2019-07-18, Gary Kramlich
5092a2557d2f
Parents 1a6908462ac7
Children 32eb959d3b5e
Move the core gplugin types to the G_DECLARE_ macros
--- a/gplugin/gplugin-loader.h Thu Jul 18 01:13:19 2019 +0000
+++ b/gplugin/gplugin-loader.h Thu Jul 18 05:09:47 2019 -0500
@@ -22,26 +22,16 @@
#ifndef GPLUGIN_LOADER_H
#define GPLUGIN_LOADER_H
-#define GPLUGIN_TYPE_LOADER (gplugin_loader_get_type())
-#define GPLUGIN_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GPLUGIN_TYPE_LOADER, GPluginLoader))
-#define GPLUGIN_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GPLUGIN_TYPE_LOADER, GPluginLoaderClass))
-#define GPLUGIN_IS_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GPLUGIN_TYPE_LOADER))
-#define GPLUGIN_IS_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GPLUGIN_TYPE_LOADER))
-#define GPLUGIN_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GPLUGIN_TYPE_LOADER, GPluginLoaderClass))
-
-typedef struct _GPluginLoader GPluginLoader;
-typedef struct _GPluginLoaderClass GPluginLoaderClass;
-
#include <glib.h>
#include <glib-object.h>
-#include <gplugin/gplugin-plugin.h>
+G_BEGIN_DECLS
-struct _GPluginLoader {
- GObject gparent;
+#define GPLUGIN_TYPE_LOADER (gplugin_loader_get_type())
+G_DECLARE_DERIVABLE_TYPE(GPluginLoader, gplugin_loader, GPLUGIN, LOADER, GObject)
- gpointer reserved[4];
-};
+/* circular include so this needs to be after the G_DECLARE_* marcro */
+#include <gplugin/gplugin-plugin.h>
struct _GPluginLoaderClass {
GObjectClass gparent;
@@ -56,10 +46,6 @@
gpointer reserved[4];
};
-G_BEGIN_DECLS
-
-GType gplugin_loader_get_type(void);
-
GSList *gplugin_loader_class_get_supported_extensions(GPluginLoaderClass *klass);
GPluginPlugin *gplugin_loader_query_plugin(GPluginLoader *loader, const gchar *filename, GError **error);
--- a/gplugin/gplugin-native-loader.c Thu Jul 18 01:13:19 2019 +0000
+++ b/gplugin/gplugin-native-loader.c Thu Jul 18 05:09:47 2019 -0500
@@ -45,6 +45,10 @@
* as the value for #abi_version when call #gplugin_plugin_info_new.
*/
+struct _GPluginNativeLoader {
+ GPluginLoader parent;
+};
+
G_DEFINE_TYPE(GPluginNativeLoader, gplugin_native_loader, GPLUGIN_TYPE_LOADER);
/******************************************************************************
--- a/gplugin/gplugin-native-loader.h Thu Jul 18 01:13:19 2019 +0000
+++ b/gplugin/gplugin-native-loader.h Thu Jul 18 05:09:47 2019 -0500
@@ -22,16 +22,6 @@
#ifndef GPLUGIN_NATIVE_LOADER_H
#define GPLUGIN_NATIVE_LOADER_H
-#define GPLUGIN_TYPE_NATIVE_LOADER (gplugin_native_loader_get_type())
-#define GPLUGIN_NATIVE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GPLUGIN_TYPE_NATIVE_LOADER, GPluginNativeLoader))
-#define GPLUGIN_NATIVE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((obj), GPLUGIN_TYPE_NATIVE_LOADER, GPluginNativeLoaderClass))
-#define GPLUGIN_IS_NATIVE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GPLUGIN_TYPE_NATIVE_LOADER))
-#define GPLUGIN_IS_NATIVE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((obj), GPLUGIN_TYPE_NATIVE_LOADER))
-#define GPLUGIN_NATIVE_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GPLUGIN_TYPE_NATIVE_LOADER, GPluginNativeLoaderClass))
-
-typedef struct _GPluginNativeLoader GPluginNativeLoader;
-typedef struct _GPluginNativeLoaderClass GPluginNativeLoaderClass;
-
#include <glib.h>
#include <glib-object.h>
@@ -39,21 +29,10 @@
#define GPLUGIN_NATIVE_PLUGIN_ABI_VERSION 0x01000000
-struct _GPluginNativeLoader {
- GPluginLoader parent;
-
- gpointer reserved[4];
-};
-
-struct _GPluginNativeLoaderClass {
- GPluginLoaderClass parent;
-
- gpointer reserved[4];
-};
-
G_BEGIN_DECLS
-GType gplugin_native_loader_get_type(void);
+#define GPLUGIN_TYPE_NATIVE_LOADER (gplugin_native_loader_get_type())
+G_DECLARE_FINAL_TYPE(GPluginNativeLoader, gplugin_native_loader, GPLUGIN, NATIVE_LOADER, GPluginLoader)
G_END_DECLS
--- a/gplugin/gplugin-native-plugin.c Thu Jul 18 01:13:19 2019 +0000
+++ b/gplugin/gplugin-native-plugin.c Thu Jul 18 05:09:47 2019 -0500
@@ -38,7 +38,9 @@
/******************************************************************************
* Structs
*****************************************************************************/
-typedef struct {
+struct _GPluginNativePlugin {
+ GTypeModule parent;
+
GModule *module;
gpointer load_func;
@@ -48,7 +50,7 @@
GPluginLoader *loader;
GPluginPluginInfo *info;
GPluginPluginState state;
-} GPluginNativePluginPrivate;
+};
/******************************************************************************
* Enums
@@ -94,7 +96,6 @@
GPluginNativePlugin,
gplugin_native_plugin,
G_TYPE_TYPE_MODULE,
- G_ADD_PRIVATE(GPluginNativePlugin)
G_IMPLEMENT_INTERFACE(GPLUGIN_TYPE_PLUGIN, gplugin_native_plugin_iface_init)
);
@@ -103,7 +104,6 @@
GParamSpec *pspec)
{
GPluginNativePlugin *plugin = GPLUGIN_NATIVE_PLUGIN(obj);
- GPluginNativePluginPrivate *priv = gplugin_native_plugin_get_instance_private(plugin);
switch(param_id) {
case PROP_MODULE:
@@ -111,24 +111,24 @@
gplugin_native_plugin_get_module(plugin));
break;
case PROP_LOAD_FUNC:
- g_value_set_pointer(value, priv->load_func);
+ g_value_set_pointer(value, plugin->load_func);
break;
case PROP_UNLOAD_FUNC:
- g_value_set_pointer(value, priv->unload_func);
+ g_value_set_pointer(value, plugin->unload_func);
break;
/* overrides */
case PROP_FILENAME:
- g_value_set_string(value, priv->filename);
+ g_value_set_string(value, plugin->filename);
break;
case PROP_LOADER:
- g_value_set_object(value, priv->loader);
+ g_value_set_object(value, plugin->loader);
break;
case PROP_INFO:
- g_value_set_object(value, priv->info);
+ g_value_set_object(value, plugin->info);
break;
case PROP_STATE:
- g_value_set_enum(value, priv->state);
+ g_value_set_enum(value, plugin->state);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
@@ -140,31 +140,31 @@
gplugin_native_plugin_set_property(GObject *obj, guint param_id,
const GValue *value, GParamSpec *pspec)
{
- GPluginNativePluginPrivate *priv = gplugin_native_plugin_get_instance_private(GPLUGIN_NATIVE_PLUGIN(obj));
+ GPluginNativePlugin *plugin = GPLUGIN_NATIVE_PLUGIN(obj);
switch(param_id) {
case PROP_MODULE:
- priv->module = g_value_get_pointer(value);
+ plugin->module = g_value_get_pointer(value);
break;
case PROP_LOAD_FUNC:
- priv->load_func = g_value_get_pointer(value);
+ plugin->load_func = g_value_get_pointer(value);
break;
case PROP_UNLOAD_FUNC:
- priv->unload_func = g_value_get_pointer(value);
+ plugin->unload_func = g_value_get_pointer(value);
break;
/* overrides */
case PROP_FILENAME:
- priv->filename = g_value_dup_string(value);
+ plugin->filename = g_value_dup_string(value);
break;
case PROP_LOADER:
- priv->loader = g_value_dup_object(value);
+ plugin->loader = g_value_dup_object(value);
break;
case PROP_INFO:
- priv->info = g_value_dup_object(value);
+ plugin->info = g_value_dup_object(value);
break;
case PROP_STATE:
- priv->state = g_value_get_enum(value);
+ plugin->state = g_value_get_enum(value);
break;
default:
@@ -175,11 +175,11 @@
static void
gplugin_native_plugin_finalize(GObject *obj) {
- GPluginNativePluginPrivate *priv = gplugin_native_plugin_get_instance_private(GPLUGIN_NATIVE_PLUGIN(obj));
+ GPluginNativePlugin *plugin = GPLUGIN_NATIVE_PLUGIN(obj);
- g_clear_pointer(&priv->filename, g_free);
- g_clear_object(&priv->loader);
- g_clear_object(&priv->info);
+ g_clear_pointer(&plugin->filename, g_free);
+ g_clear_object(&plugin->loader);
+ g_clear_object(&plugin->info);
G_OBJECT_CLASS(gplugin_native_plugin_parent_class)->finalize(obj);
}
@@ -257,12 +257,8 @@
*/
GModule *
gplugin_native_plugin_get_module(GPluginNativePlugin *plugin) {
- GPluginNativePluginPrivate *priv = NULL;
-
g_return_val_if_fail(GPLUGIN_IS_NATIVE_PLUGIN(plugin), NULL);
- priv = gplugin_native_plugin_get_instance_private(plugin);
-
- return priv->module;
+ return plugin->module;
}
--- a/gplugin/gplugin-native-plugin.h Thu Jul 18 01:13:19 2019 +0000
+++ b/gplugin/gplugin-native-plugin.h Thu Jul 18 05:09:47 2019 -0500
@@ -22,37 +22,14 @@
#ifndef GPLUGIN_NATIVE_PLUGIN_H
#define GPLUGIN_NATIVE_PLUGIN_H
-#define GPLUGIN_TYPE_NATIVE_PLUGIN (gplugin_native_plugin_get_type())
-#define GPLUGIN_NATIVE_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GPLUGIN_TYPE_NATIVE_PLUGIN, GPluginNativePlugin))
-#define GPLUGIN_NATIVE_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((obj), GPLUGIN_TYPE_NATIVE_PLUGIN, GPluginNativePluginClass))
-#define GPLUGIN_IS_NATIVE_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GPLUGIN_TYPE_NATIVE_PLUGIN))
-#define GPLUGIN_IS_NATIVE_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((obj), GPLUGIN_TYPE_NATIVE_PLUGIN))
-#define GPLUGIN_NATIVE_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GPLUGIN_TYPE_NATIVE_PLUGIN, GPluginNativePluginClass))
-
-typedef struct _GPluginNativePlugin GPluginNativePlugin;
-typedef struct _GPluginNativePluginClass GPluginNativePluginClass;
+#include <gmodule.h>
#include <gplugin/gplugin-plugin.h>
-#include <gmodule.h>
-
-struct _GPluginNativePlugin {
- /*< private >*/
- GTypeModule parent;
-
- gpointer reserved[4];
-};
-
-struct _GPluginNativePluginClass {
- /*< private >*/
- GTypeModuleClass parent;
-
- gpointer reserved[4];
-};
-
G_BEGIN_DECLS
-GType gplugin_native_plugin_get_type(void);
+#define GPLUGIN_TYPE_NATIVE_PLUGIN (gplugin_native_plugin_get_type())
+G_DECLARE_FINAL_TYPE(GPluginNativePlugin, gplugin_native_plugin, GPLUGIN, NATIVE_PLUGIN, GTypeModule)
GModule *gplugin_native_plugin_get_module(GPluginNativePlugin *plugin);
--- a/gplugin/gplugin-plugin-info.c Thu Jul 18 01:13:19 2019 +0000
+++ b/gplugin/gplugin-plugin-info.c Thu Jul 18 05:09:47 2019 -0500
@@ -90,7 +90,7 @@
};
static GParamSpec *properties[N_PROPERTIES] = {NULL,};
-G_DEFINE_TYPE_WITH_PRIVATE(GPluginPluginInfo, gplugin_plugin_info, G_TYPE_INITIALLY_UNOWNED)
+G_DEFINE_TYPE_WITH_PRIVATE(GPluginPluginInfo, gplugin_plugin_info, G_TYPE_INITIALLY_UNOWNED)
/******************************************************************************
* Private API
--- a/gplugin/gplugin-plugin-info.h Thu Jul 18 01:13:19 2019 +0000
+++ b/gplugin/gplugin-plugin-info.h Thu Jul 18 05:09:47 2019 -0500
@@ -22,39 +22,23 @@
#ifndef GPLUGIN_PLUGIN_INFO_H
#define GPLUGIN_PLUGIN_INFO_H
-#define GPLUGIN_TYPE_PLUGIN_INFO (gplugin_plugin_info_get_type())
-#define GPLUGIN_PLUGIN_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GPLUGIN_TYPE_PLUGIN_INFO, GPluginPluginInfo))
-#define GPLUGIN_PLUGIN_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GPLUGIN_TYPE_PLUGIN_INFO, GPluginPluginInfoClass))
-#define GPLUGIN_IS_PLUGIN_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GPLUGIN_TYPE_PLUGIN_INFO))
-#define GPLUGIN_IS_PLUGIN_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GPLUGIN_TYPE_PLUGIN_INFO))
-#define GPLUGIN_PLUGIN_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GPLUGIN_TYPE_PLUGIN_INFO, GPluginPluginInfoClass))
-
-typedef struct _GPluginPluginInfo GPluginPluginInfo;
-typedef struct _GPluginPluginInfoClass GPluginPluginInfoClass;
-
#include <glib.h>
#include <glib-object.h>
+G_BEGIN_DECLS
+
+#define GPLUGIN_TYPE_PLUGIN_INFO (gplugin_plugin_info_get_type())
+G_DECLARE_DERIVABLE_TYPE(GPluginPluginInfo, gplugin_plugin_info, GPLUGIN, PLUGIN_INFO, GInitiallyUnowned)
+
#include <gplugin/gplugin-loader.h>
#include <gplugin/gplugin-version.h>
-struct _GPluginPluginInfo {
- GInitiallyUnowned gparent;
-};
-
struct _GPluginPluginInfoClass {
GInitiallyUnownedClass gparent;
- void (*_gplugin_reserved_1)(void);
- void (*_gplugin_reserved_2)(void);
- void (*_gplugin_reserved_3)(void);
- void (*_gplugin_reserved_4)(void);
+ gpointer reserved[4];
};
-G_BEGIN_DECLS
-
-GType gplugin_plugin_info_get_type(void);
-
#define gplugin_plugin_info_new(id, abi_version, ...) \
GPLUGIN_PLUGIN_INFO( \
g_object_new(GPLUGIN_TYPE_PLUGIN_INFO, \
--- a/gplugin/gplugin-plugin.h Thu Jul 18 01:13:19 2019 +0000
+++ b/gplugin/gplugin-plugin.h Thu Jul 18 05:09:47 2019 -0500
@@ -22,13 +22,8 @@
#ifndef GPLUGIN_PLUGIN_H
#define GPLUGIN_PLUGIN_H
-#define GPLUGIN_TYPE_PLUGIN (gplugin_plugin_get_type())
-#define GPLUGIN_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GPLUGIN_TYPE_PLUGIN, GPluginPlugin))
-#define GPLUGIN_IS_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GPLUGIN_TYPE_PLUGIN))
-#define GPLUGIN_PLUGIN_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE((obj), GPLUGIN_TYPE_PLUGIN, GPluginPluginInterface))
-
-typedef struct _GPluginPlugin GPluginPlugin;
-typedef struct _GPluginPluginInterface GPluginPluginInterface;
+#include <glib.h>
+#include <glib-object.h>
typedef enum /*< prefix=GPLUGIN_PLUGIN_STATE,underscore_name=GPLUGIN_PLUGIN_STATE >*/ {
GPLUGIN_PLUGIN_STATE_UNKNOWN = -1,
@@ -42,9 +37,12 @@
GPLUGIN_PLUGIN_STATES, /*< skip >*/
} GPluginPluginState;
-#include <glib.h>
-#include <glib-object.h>
+G_BEGIN_DECLS
+#define GPLUGIN_TYPE_PLUGIN (gplugin_plugin_get_type())
+G_DECLARE_INTERFACE(GPluginPlugin, gplugin_plugin, GPLUGIN, PLUGIN, GObject)
+
+/* circular dependencies suck... */
#include <gplugin/gplugin-plugin-info.h>
#include <gplugin/gplugin-loader.h>
@@ -58,10 +56,6 @@
gpointer reserved[8];
};
-G_BEGIN_DECLS
-
-GType gplugin_plugin_get_type(void);
-
gchar *gplugin_plugin_get_filename(GPluginPlugin *plugin);
GPluginLoader *gplugin_plugin_get_loader(GPluginPlugin *plugin);
GPluginPluginInfo *gplugin_plugin_get_info(GPluginPlugin *plugin);