From c7d7b9621f3b78efce21d72a65396c29570b7f8b Mon Sep 17 00:00:00 2001 From: Derek Atkins Date: Thu, 5 Apr 2007 00:24:18 +0000 Subject: [PATCH] Convert gnc_commodity objects to GObject initialization. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/branches/gobject-engine-dev-warlord@15810 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/engine/gnc-commodity.c | 42 ++++++++++++++++++++++++++++++-------- src/engine/gnc-commodity.h | 35 +++++++++++++++++++++++++++---- 2 files changed, 64 insertions(+), 13 deletions(-) diff --git a/src/engine/gnc-commodity.c b/src/engine/gnc-commodity.c index d35b2d347d..2aaba663d0 100644 --- a/src/engine/gnc-commodity.c +++ b/src/engine/gnc-commodity.c @@ -63,6 +63,11 @@ struct gnc_commodity_s char * quote_tz; }; +struct _GncCommodityClass +{ + QofInstanceClass parent_class; +}; + struct gnc_commodity_namespace_s { QofInstance inst; @@ -73,6 +78,11 @@ struct gnc_commodity_namespace_s GList * cm_list; }; +struct _GncCommodityNamespaceClass +{ + QofInstanceClass parent_class; +}; + struct gnc_commodity_table_s { GHashTable * ns_table; @@ -523,15 +533,28 @@ reset_unique_name(gnc_commodity *com) com->mnemonic ? com->mnemonic : ""); } +/* GObject Initialization */ +QOF_GOBJECT_IMPL(gnc_commodity, gnc_commodity, QOF_TYPE_INSTANCE); + +static void +gnc_commodity_init(gnc_commodity* com) +{ +} + +static void +gnc_commodity_finalize_real(GObject* comp) +{ +} + gnc_commodity * gnc_commodity_new(QofBook *book, const char * fullname, const char * namespace, const char * mnemonic, const char * cusip, int fraction) { - gnc_commodity * retval = g_new0(gnc_commodity, 1); + gnc_commodity * retval = g_object_new(GNC_TYPE_COMMODITY, NULL); gnc_commodity_table *table; - qof_instance_init (&retval->inst, GNC_ID_COMMODITY, book); + qof_instance_init_data (&retval->inst, GNC_ID_COMMODITY, book); table = gnc_commodity_table_get_table(book); if (namespace) { retval->namespace = gnc_commodity_table_find_namespace(table, namespace); @@ -596,8 +619,8 @@ gnc_commodity_destroy(gnc_commodity * cm) cm->mark = 0; - qof_instance_release (&cm->inst); - g_free(cm); + /* qof_instance_release (&cm->inst); */ + g_object_unref(cm); } void @@ -615,7 +638,8 @@ gnc_commodity_copy(gnc_commodity * dest, gnc_commodity *src) gnc_commodity * gnc_commodity_clone(gnc_commodity *src) { - gnc_commodity * dest = g_new0(gnc_commodity, 1); + gnc_commodity * dest = g_object_new(GNC_TYPE_COMMODITY, NULL); + /* qof_instance_init_data (&dest->inst, GNC_ID_COMMODITY, src->inst.book); */ dest->fullname = CACHE_INSERT(src->fullname); dest->mnemonic = CACHE_INSERT(src->mnemonic); @@ -1522,11 +1546,11 @@ gnc_commodity_table_add_namespace(gnc_commodity_table * table, ns = gnc_commodity_table_find_namespace(table, namespace); if(!ns) { - ns = g_new0(gnc_commodity_namespace, 1); + ns = g_object_new(GNC_TYPE_COMMODITY_NAMESPACE, NULL); ns->cm_table = g_hash_table_new(g_str_hash, g_str_equal); ns->name = CACHE_INSERT((gpointer)namespace); ns->iso4217 = gnc_commodity_namespace_is_iso(namespace); - qof_instance_init (&ns->inst, GNC_ID_COMMODITY_NAMESPACE, book); + qof_instance_init_data (&ns->inst, GNC_ID_COMMODITY_NAMESPACE, book); qof_event_gen (&ns->inst, QOF_EVENT_CREATE, NULL); g_hash_table_insert(table->ns_table, @@ -1609,8 +1633,8 @@ gnc_commodity_table_delete_namespace(gnc_commodity_table * table, CACHE_REMOVE(ns->name); qof_event_gen (&ns->inst, QOF_EVENT_DESTROY, NULL); - qof_instance_release(&ns->inst); - g_free(ns); + /* qof_instance_release(&ns->inst); */ + g_object_unref(ns); } /******************************************************************** diff --git a/src/engine/gnc-commodity.h b/src/engine/gnc-commodity.h index 8de43af578..5826c9ee2d 100644 --- a/src/engine/gnc-commodity.h +++ b/src/engine/gnc-commodity.h @@ -46,13 +46,40 @@ #ifndef GNC_COMMODITY_H #define GNC_COMMODITY_H +typedef struct _GncCommodityClass gnc_commodityClass; +typedef struct _GncCommodityNamespaceClass gnc_commodity_namespaceClass; + #include #include "gnc-engine.h" -#define GNC_IS_COMMODITY(obj) (QOF_CHECK_TYPE((obj), GNC_ID_COMMODITY)) -#define GNC_COMMODITY(obj) (QOF_CHECK_CAST((obj), GNC_ID_COMMODITY, gnc_commodity)) -#define GNC_IS_COMMODITY_NAMESPACE(obj) (QOF_CHECK_TYPE((obj), GNC_ID_COMMODITY_NAMESPACE)) -#define GNC_COMMODITY_NAMESPACE(obj) (QOF_CHECK_CAST((obj), GNC_ID_COMMODITY_NAMESPACE, gnc_commodity_namespace)) +/* --- type macros --- */ +#define GNC_TYPE_COMMODITY (gnc_commodity_get_type ()) +#define GNC_COMMODITY(o) \ + (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_COMMODITY, gnc_commodity)) +#define GNC_COMMODITY_CLASS(k) \ + (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_COMMODITY, gnc_commodityClass)) +#define GNC_IS_COMMODITY(o) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_COMMODITY)) +#define GNC_IS_COMMODITY_CLASS(k) \ + (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_COMMODITY)) +#define GNC_COMMODITY_GET_CLASS(o) \ + (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_COMMODITY, gnc_commodityClass)) +GType gnc_commodity_get_type(void); + +/* --- type macros --- */ +#define GNC_TYPE_COMMODITY_NAMESPACE (gnc_commodity_namespace_get_type ()) +#define GNC_COMMODITY_NAMESPACE(o) \ + (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_COMMODITY_NAMESPACE, gnc_commodity_namespace)) +#define GNC_COMMODITY_NAMESPACE_CLASS(k) \ + (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_COMMODITY_NAMESPACE, gnc_commodity_namespaceClass)) +#define GNC_IS_COMMODITY_NAMESPACE(o) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_COMMODITY_NAMESPACE)) +#define GNC_IS_COMMODITY_NAMESPACE_CLASS(k) \ + (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_COMMODITY_NAMESPACE)) +#define GNC_COMMODITY_NAMESPACE_GET_CLASS(o) \ + (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_COMMODITY_NAMESPACE, gnc_commodity_namespaceClass)) +GType gnc_commodity_namespace_get_type(void); + #define GNC_COMMODITY_TABLE "gnc_commodity_table"