gplugin/gplugin

Move the python types to G_DECLARE_* macros
glib-macros
2019-07-18, Gary Kramlich
057d6f2b736c
Parents 6502a3cade24
Children 50c6c92c9e0d
Move the python types to G_DECLARE_* macros
--- a/python/gplugin-python-loader.c Thu Jul 18 05:50:35 2019 -0500
+++ b/python/gplugin-python-loader.c Thu Jul 18 06:16:28 2019 -0500
@@ -28,18 +28,14 @@
#include <pygobject.h>
-typedef struct {
+struct _GPluginPythonLoader {
+ GPluginLoader parent;
+
PyThreadState *py_thread_state;
guint gc_id;
-} GPluginPythonLoaderPrivate;
+};
-G_DEFINE_DYNAMIC_TYPE_EXTENDED(
- GPluginPythonLoader,
- gplugin_python_loader,
- GPLUGIN_TYPE_LOADER,
- 0,
- G_ADD_PRIVATE_DYNAMIC(GPluginPythonLoader)
-);
+G_DEFINE_DYNAMIC_TYPE(GPluginPythonLoader, gplugin_python_loader, GPLUGIN_TYPE_LOADER);
/******************************************************************************
* GPluginLoader Implementation
--- a/python/gplugin-python-loader.h Thu Jul 18 05:50:35 2019 -0500
+++ b/python/gplugin-python-loader.h Thu Jul 18 06:16:28 2019 -0500
@@ -18,37 +18,15 @@
#ifndef GPLUGIN_PYTHON_LOADER_H
#define GPLUGIN_PYTHON_LOADER_H
-#define GPLUGIN_TYPE_PYTHON_LOADER (gplugin_python_loader_get_type())
-#define GPLUGIN_PYTHON_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GPLUGIN_TYPE_PYTHON_LOADER, GPluginPythonLoader))
-#define GPLUGIN_PYTHON_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((obj), GPLUGIN_TYPE_PYTHON_LOADER, GPluginPythonLoaderClass))
-#define GPLUGIN_IS_PYTHON_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GPLUGIN_TYPE_PYTHON_LOADER))
-#define GPLUGIN_IS_PYTHON_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((obj), GPLUGIN_TYPE_PYTHON_LOADER))
-#define GPLUGIN_PYTHON_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GPLUGIN_TYPE_PYTHON_LOADER, GPluginPythonLoaderClass))
-
-typedef struct _GPluginPythonLoader GPluginPythonLoader;
-typedef struct _GPluginPythonLoaderClass GPluginPythonLoaderClass;
-
#include <gplugin.h>
#include <gplugin-native.h>
-struct _GPluginPythonLoader {
- /*< private >*/
- GPluginLoader parent;
-
- gpointer reserved[4];
-};
-
-struct _GPluginPythonLoaderClass {
- /*< private >*/
- GPluginLoaderClass parent;
-
- gpointer reserved[4];
-};
-
G_BEGIN_DECLS
+#define GPLUGIN_TYPE_PYTHON_LOADER (gplugin_python_loader_get_type())
+G_DECLARE_FINAL_TYPE(GPluginPythonLoader, gplugin_python_loader, GPLUGIN_PYTHON, LOADER, GPluginLoader)
+
void gplugin_python_loader_register(GPluginNativePlugin *native);
-GType gplugin_python_loader_get_type(void);
G_END_DECLS
--- a/python/gplugin-python-plugin.c Thu Jul 18 05:50:35 2019 -0500
+++ b/python/gplugin-python-plugin.c Thu Jul 18 06:16:28 2019 -0500
@@ -24,7 +24,9 @@
/******************************************************************************
* Typedefs
*****************************************************************************/
-typedef struct {
+struct _GPluginPythonPlugin {
+ GObject parent;
+
PyObject *module;
PyObject *query;
PyObject *load;
@@ -35,7 +37,7 @@
GPluginLoader *loader;
GPluginPluginInfo *info;
GPluginPluginState state;
-} GPluginPythonPluginPrivate;
+};
/******************************************************************************
* Enums
@@ -62,7 +64,6 @@
gplugin_python_plugin,
G_TYPE_OBJECT,
0,
- G_ADD_PRIVATE_DYNAMIC(GPluginPythonPlugin)
G_IMPLEMENT_INTERFACE(GPLUGIN_TYPE_PLUGIN, gplugin_python_plugin_iface_init)
);
@@ -76,85 +77,54 @@
/******************************************************************************
* Private Stuff
*****************************************************************************/
-static PyObject *
-gplugin_python_plugin_get_module(GPluginPythonPlugin *plugin) {
- GPluginPythonPluginPrivate *priv = NULL;
-
- g_return_val_if_fail(GPLUGIN_IS_PYTHON_PLUGIN(plugin), NULL);
-
- priv = gplugin_python_plugin_get_instance_private(plugin);
-
- return priv->module;
-}
-
static void
gplugin_python_plugin_set_module(GPluginPythonPlugin *plugin,
PyObject *module)
{
- GPluginPythonPluginPrivate *priv = NULL;
-
g_return_if_fail(GPLUGIN_IS_PLUGIN(plugin));
g_return_if_fail(module);
- priv = gplugin_python_plugin_get_instance_private(plugin);
-
Py_XINCREF(module);
- Py_CLEAR(priv->module);
- priv->module = module;
+ Py_CLEAR(plugin->module);
+ plugin->module = module;
}
static gpointer
gplugin_python_plugin_get_load_func(GPluginPythonPlugin *plugin) {
- GPluginPythonPluginPrivate *priv = NULL;
-
- g_return_val_if_fail(GPLUGIN_IS_PYTHON_PLUGIN(plugin), NULL);
+ g_return_val_if_fail(GPLUGIN_PYTHON_IS_PLUGIN(plugin), NULL);
- priv = gplugin_python_plugin_get_instance_private(plugin);
-
- return priv->load;
+ return plugin->load;
}
static void
gplugin_python_plugin_set_load_func(GPluginPythonPlugin *plugin,
PyObject *func)
{
- GPluginPythonPluginPrivate *priv = NULL;
-
- g_return_if_fail(GPLUGIN_IS_PYTHON_PLUGIN(plugin));
+ g_return_if_fail(GPLUGIN_PYTHON_IS_PLUGIN(plugin));
g_return_if_fail(func != NULL);
- priv = gplugin_python_plugin_get_instance_private(plugin);
-
Py_XINCREF(func);
- Py_CLEAR(priv->load);
- priv->load = func;
+ Py_CLEAR(plugin->load);
+ plugin->load = func;
}
static gpointer
gplugin_python_plugin_get_unload_func(GPluginPythonPlugin *plugin) {
- GPluginPythonPluginPrivate *priv = NULL;
-
- g_return_val_if_fail(GPLUGIN_IS_PYTHON_PLUGIN(plugin), NULL);
+ g_return_val_if_fail(GPLUGIN_PYTHON_IS_PLUGIN(plugin), NULL);
- priv = gplugin_python_plugin_get_instance_private(plugin);
-
- return priv->unload;
+ return plugin->unload;
}
static void
gplugin_python_plugin_set_unload_func(GPluginPythonPlugin *plugin,
PyObject *func)
{
- GPluginPythonPluginPrivate *priv = NULL;
-
- g_return_if_fail(GPLUGIN_IS_PYTHON_PLUGIN(plugin));
+ g_return_if_fail(GPLUGIN_PYTHON_IS_PLUGIN(plugin));
g_return_if_fail(func != NULL);
- priv = gplugin_python_plugin_get_instance_private(plugin);
-
Py_XINCREF(func);
- Py_CLEAR(priv->unload);
- priv->unload = func;
+ Py_CLEAR(plugin->unload);
+ plugin->unload = func;
}
/******************************************************************************
@@ -165,12 +135,10 @@
GParamSpec *pspec)
{
GPluginPythonPlugin *plugin = GPLUGIN_PYTHON_PLUGIN(obj);
- GPluginPythonPluginPrivate *priv = gplugin_python_plugin_get_instance_private(plugin);
switch(param_id) {
case PROP_MODULE:
- g_value_set_pointer(value,
- gplugin_python_plugin_get_module(plugin));
+ g_value_set_pointer(value, plugin->module);
break;
case PROP_LOAD_FUNC:
g_value_set_pointer(value,
@@ -183,16 +151,16 @@
/* 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:
@@ -206,7 +174,6 @@
const GValue *value, GParamSpec *pspec)
{
GPluginPythonPlugin *plugin = GPLUGIN_PYTHON_PLUGIN(obj);
- GPluginPythonPluginPrivate *priv = gplugin_python_plugin_get_instance_private(plugin);
switch(param_id) {
case PROP_MODULE:
@@ -224,16 +191,16 @@
/* 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:
@@ -244,15 +211,15 @@
static void
gplugin_python_plugin_finalize(GObject *obj) {
- GPluginPythonPluginPrivate *priv = gplugin_python_plugin_get_instance_private(GPLUGIN_PYTHON_PLUGIN(obj));
+ GPluginPythonPlugin *plugin = GPLUGIN_PYTHON_PLUGIN(obj);
- Py_CLEAR(priv->module);
- Py_CLEAR(priv->load);
- Py_CLEAR(priv->unload);
+ Py_CLEAR(plugin->module);
+ Py_CLEAR(plugin->load);
+ Py_CLEAR(plugin->unload);
- 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_python_plugin_parent_class)->finalize(obj);
}
--- a/python/gplugin-python-plugin.h Thu Jul 18 05:50:35 2019 -0500
+++ b/python/gplugin-python-plugin.h Thu Jul 18 06:16:28 2019 -0500
@@ -18,37 +18,15 @@
#ifndef GPLUGIN_PYTHON_PLUGIN_H
#define GPLUGIN_PYTHON_PLUGIN_H
-#define GPLUGIN_TYPE_PYTHON_PLUGIN (gplugin_python_plugin_get_type())
-#define GPLUGIN_PYTHON_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GPLUGIN_TYPE_PYTHON_PLUGIN, GPluginPythonPlugin))
-#define GPLUGIN_PYTHON_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((obj), GPLUGIN_TYPE_PYTHON_PLUGIN, GPluginPythonPluginClass))
-#define GPLUGIN_IS_PYTHON_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GPLUGIN_TYPE_PYTHON_PLUGIN))
-#define GPLUGIN_IS_PYTHON_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((obj), GPLUGIN_TYPE_PYTHON_PLUGIN))
-#define GPLUGIN_PYTHON_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GPLUGIN_TYPE_PYTHON_PLUGIN, GPluginPythonPluginClass))
-
-typedef struct _GPluginPythonPlugin GPluginPythonPlugin;
-typedef struct _GPluginPythonPluginClass GPluginPythonPluginClass;
-
#include <gplugin.h>
#include <gplugin-native.h>
-struct _GPluginPythonPlugin {
- /*< private >*/
- GObject parent;
-
- gpointer reserved[4];
-};
-
-struct _GPluginPythonPluginClass {
- /*< private >*/
- GObjectClass parent;
-
- gpointer reserved[4];
-};
-
G_BEGIN_DECLS
+#define GPLUGIN_TYPE_PYTHON_PLUGIN (gplugin_python_plugin_get_type())
+G_DECLARE_FINAL_TYPE(GPluginPythonPlugin, gplugin_python_plugin, GPLUGIN_PYTHON, PLUGIN, GObject)
+
void gplugin_python_plugin_register(GPluginNativePlugin *native);
-GType gplugin_python_plugin_get_type(void);
G_END_DECLS