From 1af0973ffc48479e82c591fd47ed8b40e1204519 Mon Sep 17 00:00:00 2001 From: David Hampton Date: Mon, 2 Jan 2006 21:11:26 +0000 Subject: [PATCH] Initialize the qof instances in commodity namespaces. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@12234 57a11ea4-9604-0410-9ed3-97b8803252fd --- ChangeLog | 7 +++++++ src/engine/gnc-commodity.c | 24 ++++++++++++++---------- src/engine/gnc-commodity.h | 3 ++- src/engine/gw-engine-spec.scm | 3 ++- 4 files changed, 25 insertions(+), 12 deletions(-) create mode 100644 ChangeLog diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000000..a62299ed50 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,7 @@ +2006-01-02 David Hampton + + * src/engine/gw-engine-spec.scm: + * src/engine/gnc-commodity.[ch]: Initialize the qof instances in + commodity namespaces. + + diff --git a/src/engine/gnc-commodity.c b/src/engine/gnc-commodity.c index 97fe96abca..cf9cab859e 100644 --- a/src/engine/gnc-commodity.c +++ b/src/engine/gnc-commodity.c @@ -499,7 +499,7 @@ gnc_commodity_new(QofBook *book, const char * fullname, if (namespace) { retval->namespace = gnc_commodity_table_find_namespace(table, namespace); if (!retval->namespace) - retval->namespace = gnc_commodity_table_add_namespace(table, namespace); + retval->namespace = gnc_commodity_table_add_namespace(table, namespace, book); } else { retval->namespace = NULL; } @@ -764,7 +764,7 @@ gnc_commodity_set_namespace(gnc_commodity * cm, const char * namespace) if(!cm) return; book = qof_instance_get_book (&cm->inst); table = gnc_commodity_table_get_table(book); - nsp = gnc_commodity_table_add_namespace(table, namespace); + nsp = gnc_commodity_table_add_namespace(table, namespace, book); if (cm->namespace == nsp) return; @@ -1172,6 +1172,7 @@ gnc_commodity_table_insert(gnc_commodity_table * table, gnc_commodity_namespace * nsp = NULL; gnc_commodity *c; const char *ns_name; + QofBook *book; if (!table) return NULL; if (!comm) return NULL; @@ -1191,8 +1192,9 @@ gnc_commodity_table_insert(gnc_commodity_table * table, return c; } - nsp = gnc_commodity_table_add_namespace(table, ns_name); - + book = qof_instance_get_book (&comm->inst); + nsp = gnc_commodity_table_add_namespace(table, ns_name, book); + PINFO ("insert %p %s into nsp=%p %s", comm->mnemonic, comm->mnemonic, nsp->cm_table, nsp->name); g_hash_table_insert(nsp->cm_table, @@ -1418,7 +1420,8 @@ gnc_commodity_table_get_quotable_commodities(const gnc_commodity_table * table, gnc_commodity_namespace * gnc_commodity_table_add_namespace(gnc_commodity_table * table, - const char * namespace) + const char * namespace, + QofBook *book) { gnc_commodity_namespace * ns = NULL; @@ -1430,6 +1433,7 @@ gnc_commodity_table_add_namespace(gnc_commodity_table * table, ns = g_new0(gnc_commodity_namespace, 1); ns->cm_table = g_hash_table_new(g_str_hash, g_str_equal); ns->name = gnc_string_cache_insert((gpointer)namespace); + qof_instance_init (&ns->inst, GNC_ID_COMMODITY_NAMESPACE, book); gnc_engine_gen_event (&ns->inst.entity, GNC_EVENT_CREATE); g_hash_table_insert(table->ns_table, @@ -1654,11 +1658,11 @@ gboolean gnc_commodity_table_add_default_data(gnc_commodity_table *table, QofBook *book) { ENTER ("table=%p", table); - gnc_commodity_table_add_namespace(table, GNC_COMMODITY_NS_AMEX); - gnc_commodity_table_add_namespace(table, GNC_COMMODITY_NS_NYSE); - gnc_commodity_table_add_namespace(table, GNC_COMMODITY_NS_NASDAQ); - gnc_commodity_table_add_namespace(table, GNC_COMMODITY_NS_EUREX); - gnc_commodity_table_add_namespace(table, GNC_COMMODITY_NS_MUTUAL); + gnc_commodity_table_add_namespace(table, GNC_COMMODITY_NS_AMEX, book); + gnc_commodity_table_add_namespace(table, GNC_COMMODITY_NS_NYSE, book); + gnc_commodity_table_add_namespace(table, GNC_COMMODITY_NS_NASDAQ, book); + gnc_commodity_table_add_namespace(table, GNC_COMMODITY_NS_EUREX, book); + gnc_commodity_table_add_namespace(table, GNC_COMMODITY_NS_MUTUAL, book); #include "iso-4217-currencies.c" diff --git a/src/engine/gnc-commodity.h b/src/engine/gnc-commodity.h index e9cf2b00ee..6c96758f77 100644 --- a/src/engine/gnc-commodity.h +++ b/src/engine/gnc-commodity.h @@ -726,7 +726,8 @@ GList * gnc_commodity_table_get_namespaces_list(const gnc_commodity_table * t); * * @return A pointer to the newly created namespace. */ gnc_commodity_namespace * gnc_commodity_table_add_namespace(gnc_commodity_table * table, - const char * namespace); + const char * namespace, + QofBook *book); /** This function finds a commodity namespace in the set of existing commodity namespaces. * diff --git a/src/engine/gw-engine-spec.scm b/src/engine/gw-engine-spec.scm index 6100b23f19..4e760f332e 100644 --- a/src/engine/gw-engine-spec.scm +++ b/src/engine/gw-engine-spec.scm @@ -2145,7 +2145,8 @@ of having a parent transaction with which one is working...") ' "gnc_commodity_table_add_namespace" '(( table) - (( caller-owned const) namespace)) + (( caller-owned const) namespace) + ( book)) "Add a new namespace to the commodity table") (gw:wrap-function