mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Refactor: DECLARE/DEFINE_INTERFACE GncDenseCalModel < GObject
- use _default_init() (always called only once) to create the signals instead of _base_init() - remove unused signal vfuncs
This commit is contained in:
parent
d3bf654b11
commit
e70880de1a
@ -41,14 +41,9 @@ enum { GDCM_ADDED, GDCM_UPDATE, GDCM_REMOVE, LAST_SIGNAL };
|
|||||||
static guint gnc_dense_cal_model_signals[LAST_SIGNAL] = { 0 };
|
static guint gnc_dense_cal_model_signals[LAST_SIGNAL] = { 0 };
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gnc_dense_cal_model_base_init(gpointer g_class)
|
gnc_dense_cal_model_default_init(GncDenseCalModelInterface *g_class)
|
||||||
{
|
{
|
||||||
static gboolean initialized = FALSE;
|
gnc_dense_cal_model_signals[GDCM_ADDED] = g_signal_new("added",
|
||||||
|
|
||||||
if (!initialized)
|
|
||||||
{
|
|
||||||
gnc_dense_cal_model_signals[GDCM_ADDED]
|
|
||||||
= g_signal_new("added",
|
|
||||||
G_TYPE_FROM_CLASS(g_class),
|
G_TYPE_FROM_CLASS(g_class),
|
||||||
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
|
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
|
||||||
0 /* default offset */,
|
0 /* default offset */,
|
||||||
@ -60,8 +55,7 @@ gnc_dense_cal_model_base_init(gpointer g_class)
|
|||||||
G_TYPE_UINT /* param types */
|
G_TYPE_UINT /* param types */
|
||||||
);
|
);
|
||||||
|
|
||||||
gnc_dense_cal_model_signals[GDCM_UPDATE]
|
gnc_dense_cal_model_signals[GDCM_UPDATE] = g_signal_new("update",
|
||||||
= g_signal_new("update",
|
|
||||||
G_TYPE_FROM_CLASS(g_class),
|
G_TYPE_FROM_CLASS(g_class),
|
||||||
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
|
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
|
||||||
0 /* default offset */,
|
0 /* default offset */,
|
||||||
@ -73,8 +67,7 @@ gnc_dense_cal_model_base_init(gpointer g_class)
|
|||||||
G_TYPE_UINT /* param types */
|
G_TYPE_UINT /* param types */
|
||||||
);
|
);
|
||||||
|
|
||||||
gnc_dense_cal_model_signals[GDCM_REMOVE]
|
gnc_dense_cal_model_signals[GDCM_REMOVE] = g_signal_new("removing",
|
||||||
= g_signal_new("removing",
|
|
||||||
G_TYPE_FROM_CLASS(g_class),
|
G_TYPE_FROM_CLASS(g_class),
|
||||||
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
|
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
|
||||||
0 /* default offset */,
|
0 /* default offset */,
|
||||||
@ -85,60 +78,36 @@ gnc_dense_cal_model_base_init(gpointer g_class)
|
|||||||
1 /* n_params */,
|
1 /* n_params */,
|
||||||
G_TYPE_UINT /* param types */
|
G_TYPE_UINT /* param types */
|
||||||
);
|
);
|
||||||
|
|
||||||
initialized = TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GType
|
G_DEFINE_INTERFACE (GncDenseCalModel, gnc_dense_cal_model, G_TYPE_OBJECT)
|
||||||
gnc_dense_cal_model_get_type(void)
|
|
||||||
{
|
|
||||||
static GType type = 0;
|
|
||||||
if (type == 0)
|
|
||||||
{
|
|
||||||
static const GTypeInfo info =
|
|
||||||
{
|
|
||||||
sizeof(GncDenseCalModelIface),
|
|
||||||
gnc_dense_cal_model_base_init, /* base_init */
|
|
||||||
NULL, /* base_finalize */
|
|
||||||
NULL, /* class_init */
|
|
||||||
NULL, /* class_finalize */
|
|
||||||
NULL, /* class_data */
|
|
||||||
0,
|
|
||||||
0, /* n_preallocs */
|
|
||||||
NULL /* instance_init */
|
|
||||||
};
|
|
||||||
type = g_type_register_static(G_TYPE_INTERFACE, "GncDenseCalModel", &info, 0);
|
|
||||||
}
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
GList*
|
GList*
|
||||||
gnc_dense_cal_model_get_contained(GncDenseCalModel *model)
|
gnc_dense_cal_model_get_contained(GncDenseCalModel *model)
|
||||||
{
|
{
|
||||||
return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_contained)(model);
|
return (*GNC_DENSE_CAL_MODEL_GET_IFACE(model)->get_contained)(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
gchar*
|
gchar*
|
||||||
gnc_dense_cal_model_get_name(GncDenseCalModel *model, guint tag)
|
gnc_dense_cal_model_get_name(GncDenseCalModel *model, guint tag)
|
||||||
{
|
{
|
||||||
return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_name)(model, tag);
|
return (*GNC_DENSE_CAL_MODEL_GET_IFACE(model)->get_name)(model, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
gchar*
|
gchar*
|
||||||
gnc_dense_cal_model_get_info(GncDenseCalModel *model, guint tag)
|
gnc_dense_cal_model_get_info(GncDenseCalModel *model, guint tag)
|
||||||
{
|
{
|
||||||
return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_info)(model, tag);
|
return (*GNC_DENSE_CAL_MODEL_GET_IFACE(model)->get_info)(model, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
gint
|
gint
|
||||||
gnc_dense_cal_model_get_instance_count(GncDenseCalModel *model, guint tag)
|
gnc_dense_cal_model_get_instance_count(GncDenseCalModel *model, guint tag)
|
||||||
{
|
{
|
||||||
return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_instance_count)(model, tag);
|
return (*GNC_DENSE_CAL_MODEL_GET_IFACE(model)->get_instance_count)(model, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
gnc_dense_cal_model_get_instance(GncDenseCalModel *model, guint tag, gint instance_index, GDate *date)
|
gnc_dense_cal_model_get_instance(GncDenseCalModel *model, guint tag, gint instance_index, GDate *date)
|
||||||
{
|
{
|
||||||
(*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_instance)(model, tag, instance_index, date);
|
(*GNC_DENSE_CAL_MODEL_GET_IFACE(model)->get_instance)(model, tag, instance_index, date);
|
||||||
}
|
}
|
||||||
|
@ -30,29 +30,19 @@
|
|||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
#define GNC_TYPE_DENSE_CAL_MODEL (gnc_dense_cal_model_get_type())
|
#define GNC_TYPE_DENSE_CAL_MODEL (gnc_dense_cal_model_get_type())
|
||||||
#define GNC_DENSE_CAL_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_DENSE_CAL_MODEL, GncDenseCalModel))
|
G_DECLARE_INTERFACE (GncDenseCalModel, gnc_dense_cal_model, GNC, DENSE_CAL_MODEL, GObject)
|
||||||
#define GNC_IS_DENSE_CAL_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_DENSE_CAL_MODEL))
|
|
||||||
#define GNC_DENSE_CAL_MODEL_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GNC_TYPE_DENSE_CAL_MODEL, GncDenseCalModelIface))
|
|
||||||
|
|
||||||
typedef struct _GncDenseCalModel GncDenseCalModel; /* non existent */
|
struct _GncDenseCalModelInterface
|
||||||
typedef struct _GncDenseCalModelIface
|
|
||||||
{
|
{
|
||||||
GTypeInterface parent;
|
GTypeInterface parent;
|
||||||
|
|
||||||
/* signals */
|
|
||||||
void (*insert)(GncDenseCalModel *mdl, gint tag);
|
|
||||||
void (*update)(GncDenseCalModel *mdl, gint tag);
|
|
||||||
void (*remove)(GncDenseCalModel *mdl, gint tag);
|
|
||||||
|
|
||||||
/* virtual table */
|
/* virtual table */
|
||||||
GList* (*get_contained)(GncDenseCalModel *model);
|
GList* (*get_contained)(GncDenseCalModel *model);
|
||||||
gchar* (*get_name)(GncDenseCalModel *model, guint tag);
|
gchar* (*get_name)(GncDenseCalModel *model, guint tag);
|
||||||
gchar* (*get_info)(GncDenseCalModel *model, guint tag);
|
gchar* (*get_info)(GncDenseCalModel *model, guint tag);
|
||||||
gint (*get_instance_count)(GncDenseCalModel *model, guint tag);
|
gint (*get_instance_count)(GncDenseCalModel *model, guint tag);
|
||||||
void (*get_instance)(GncDenseCalModel *model, guint tag, gint instance_index, GDate *date);
|
void (*get_instance)(GncDenseCalModel *model, guint tag, gint instance_index, GDate *date);
|
||||||
} GncDenseCalModelIface;
|
};
|
||||||
|
|
||||||
GType gnc_dense_cal_model_get_type(void);
|
|
||||||
|
|
||||||
/** @return Caller-owned GList (but not elements). The Model-user will free. **/
|
/** @return Caller-owned GList (but not elements). The Model-user will free. **/
|
||||||
GList* gnc_dense_cal_model_get_contained(GncDenseCalModel *model);
|
GList* gnc_dense_cal_model_get_contained(GncDenseCalModel *model);
|
||||||
|
@ -59,7 +59,7 @@ struct _GncDenseCalStoreClass
|
|||||||
GObjectClass parent_class;
|
GObjectClass parent_class;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void gnc_dense_cal_store_iface_init(GncDenseCalModelIface *iface);
|
static void gnc_dense_cal_store_iface_init(GncDenseCalModelInterface *iface);
|
||||||
static void gnc_dense_cal_store_finalize(GObject *obj);
|
static void gnc_dense_cal_store_finalize(GObject *obj);
|
||||||
|
|
||||||
static GList* gdcs_get_contained(GncDenseCalModel *model);
|
static GList* gdcs_get_contained(GncDenseCalModel *model);
|
||||||
@ -85,7 +85,7 @@ gnc_dense_cal_store_init(GncDenseCalStore *self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gnc_dense_cal_store_iface_init(GncDenseCalModelIface *iface)
|
gnc_dense_cal_store_iface_init(GncDenseCalModelInterface *iface)
|
||||||
{
|
{
|
||||||
iface->get_contained = gdcs_get_contained;
|
iface->get_contained = gdcs_get_contained;
|
||||||
iface->get_name = gdcs_get_name;
|
iface->get_name = gdcs_get_name;
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
#define G_LOG_DOMAIN "gnc.gui.sx.adapter.sx-dense-cal"
|
#define G_LOG_DOMAIN "gnc.gui.sx.adapter.sx-dense-cal"
|
||||||
static const QofLogModule log_module = G_LOG_DOMAIN;
|
static const QofLogModule log_module = G_LOG_DOMAIN;
|
||||||
|
|
||||||
static void gnc_sx_instance_dense_cal_adapter_interface_init(GncDenseCalModelIface *iface);
|
static void gnc_sx_instance_dense_cal_adapter_interface_init(GncDenseCalModelInterface *iface);
|
||||||
static void gnc_sx_instance_dense_cal_adapter_dispose(GObject *obj);
|
static void gnc_sx_instance_dense_cal_adapter_dispose(GObject *obj);
|
||||||
static void gnc_sx_instance_dense_cal_adapter_finalize(GObject *obj);
|
static void gnc_sx_instance_dense_cal_adapter_finalize(GObject *obj);
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ gnc_sx_instance_dense_cal_adapter_init(GncSxInstanceDenseCalAdapter *instance)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gnc_sx_instance_dense_cal_adapter_interface_init(GncDenseCalModelIface *iface)
|
gnc_sx_instance_dense_cal_adapter_interface_init(GncDenseCalModelInterface *iface)
|
||||||
{
|
{
|
||||||
iface->get_contained = gsidca_get_contained;
|
iface->get_contained = gsidca_get_contained;
|
||||||
iface->get_name = gsidca_get_name;
|
iface->get_name = gsidca_get_name;
|
||||||
|
Loading…
Reference in New Issue
Block a user