From 8c6e7b8394dde96488de97ccd400d19c85ba4d44 Mon Sep 17 00:00:00 2001 From: Derek Atkins Date: Thu, 5 Apr 2007 03:10:26 +0000 Subject: [PATCH] Add hooks for the gobject dispose() function so that we can migrate each object's "free()" function to a combination of dispose() and finalize(). (and yes, "make check" still passes all its tests) git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/branches/gobject-engine-dev-warlord@15827 57a11ea4-9604-0410-9ed3-97b8803252fd --- lib/libqof/qof/qof-gobject.h | 13 ++++++++++++- lib/libqof/qof/qofbook.c | 5 +++++ src/business/business-core/gncAddress.c | 5 +++++ src/business/business-core/gncBillTerm.c | 5 +++++ src/business/business-core/gncCustomer.c | 5 +++++ src/business/business-core/gncEmployee.c | 5 +++++ src/business/business-core/gncEntry.c | 5 +++++ src/business/business-core/gncInvoice.c | 5 +++++ src/business/business-core/gncJob.c | 5 +++++ src/business/business-core/gncOrder.c | 5 +++++ src/business/business-core/gncTaxTable.c | 5 +++++ src/business/business-core/gncVendor.c | 5 +++++ src/engine/Account.c | 5 +++++ src/engine/FreqSpec.c | 5 +++++ src/engine/SX-book.c | 9 +++++++-- src/engine/SchedXaction.c | 9 +++++++-- src/engine/Split.c | 9 +++++++-- src/engine/Transaction.c | 5 +++++ src/engine/gnc-budget.c | 5 +++++ src/engine/gnc-commodity.c | 10 ++++++++++ src/engine/gnc-lot.c | 5 +++++ src/engine/gnc-pricedb.c | 10 ++++++++++ src/engine/test/test-book-merge.c | 5 +++++ src/engine/test/test-recursive.c | 15 +++++++++++++++ 24 files changed, 153 insertions(+), 7 deletions(-) diff --git a/lib/libqof/qof/qof-gobject.h b/lib/libqof/qof/qof-gobject.h index 15e7f35050..d051657f28 100644 --- a/lib/libqof/qof/qof-gobject.h +++ b/lib/libqof/qof/qof-gobject.h @@ -57,16 +57,26 @@ */ #define QOF_GOBJECT_GET_TYPE(TypeName, type_name, TYPE_PARENT, CODE) \ - static void type_name##_finalize(GObject *object); \ G_DEFINE_TYPE_WITH_CODE(TypeName, type_name, TYPE_PARENT, CODE); #define QOF_GOBJECT_CLASS_INIT(type_name, TypeName) \ + static void type_name##_dispose(GObject *object); \ + static void type_name##_finalize(GObject *object); \ static void type_name##_class_init(TypeName##Class *klass) \ { \ GObjectClass *object_class = G_OBJECT_CLASS(klass); \ + object_class->dispose = type_name##_dispose; \ object_class->finalize = type_name##_finalize; \ } +#define QOF_GOBJECT_DISPOSE(type_name) \ + static void type_name##_dispose_real(GObject* object); \ + static void type_name##_dispose(GObject *object) \ + { \ + type_name##_dispose_real(object); \ + G_OBJECT_CLASS(type_name##_parent_class)->dispose(object); \ + } + #define QOF_GOBJECT_FINALIZE(type_name) \ static void type_name##_finalize_real(GObject* object); \ static void type_name##_finalize(GObject *object) \ @@ -78,6 +88,7 @@ #define QOF_GOBJECT_IMPL_WITH_CODE(type_name, TypeName, TYPE_PARENT, CODE) \ QOF_GOBJECT_GET_TYPE(TypeName, type_name, TYPE_PARENT, CODE); \ QOF_GOBJECT_CLASS_INIT(type_name, TypeName); \ + QOF_GOBJECT_DISPOSE(type_name); \ QOF_GOBJECT_FINALIZE(type_name); #define QOF_GOBJECT_IMPL(type_name, TypeName, TYPE_PARENT) \ diff --git a/lib/libqof/qof/qofbook.c b/lib/libqof/qof/qofbook.c index 167a92e207..218120b12f 100644 --- a/lib/libqof/qof/qofbook.c +++ b/lib/libqof/qof/qofbook.c @@ -102,6 +102,11 @@ book_final (gpointer key, gpointer value, gpointer booq) (*cb) (book, key, user_data); } +static void +qof_book_dispose_real (GObject *bookp) +{ +} + static void qof_book_finalize_real (GObject *bookp) { diff --git a/src/business/business-core/gncAddress.c b/src/business/business-core/gncAddress.c index 62b0018570..6341a1a1ba 100644 --- a/src/business/business-core/gncAddress.c +++ b/src/business/business-core/gncAddress.c @@ -75,6 +75,11 @@ gnc_address_init(GncAddress* addr) { } +static void +gnc_address_dispose_real (GObject *addrp) +{ +} + static void gnc_address_finalize_real(GObject* addrp) { diff --git a/src/business/business-core/gncBillTerm.c b/src/business/business-core/gncBillTerm.c index 1405456b28..ffe70522a5 100644 --- a/src/business/business-core/gncBillTerm.c +++ b/src/business/business-core/gncBillTerm.c @@ -141,6 +141,11 @@ gnc_billterm_init(GncBillTerm* bt) { } +static void +gnc_billterm_dispose_real (GObject *btp) +{ +} + static void gnc_billterm_finalize_real(GObject* btp) { diff --git a/src/business/business-core/gncCustomer.c b/src/business/business-core/gncCustomer.c index 3d79e0d9d9..d9ff57183a 100644 --- a/src/business/business-core/gncCustomer.c +++ b/src/business/business-core/gncCustomer.c @@ -97,6 +97,11 @@ gnc_customer_init(GncCustomer* cust) { } +static void +gnc_customer_dispose_real (GObject *custp) +{ +} + static void gnc_customer_finalize_real(GObject* custp) { diff --git a/src/business/business-core/gncEmployee.c b/src/business/business-core/gncEmployee.c index 68b2cc692b..7e21f02f58 100644 --- a/src/business/business-core/gncEmployee.c +++ b/src/business/business-core/gncEmployee.c @@ -79,6 +79,11 @@ gnc_employee_init(GncEmployee* emp) { } +static void +gnc_employee_dispose_real (GObject *empp) +{ +} + static void gnc_employee_finalize_real(GObject* empp) { diff --git a/src/business/business-core/gncEntry.c b/src/business/business-core/gncEntry.c index 6cf5a301b6..1df4b05f69 100644 --- a/src/business/business-core/gncEntry.c +++ b/src/business/business-core/gncEntry.c @@ -186,6 +186,11 @@ gnc_entry_init(GncEntry* entry) { } +static void +gnc_entry_dispose_real (GObject *entryp) +{ +} + static void gnc_entry_finalize_real(GObject* entryp) { diff --git a/src/business/business-core/gncInvoice.c b/src/business/business-core/gncInvoice.c index 1790178701..fb839aec2d 100644 --- a/src/business/business-core/gncInvoice.c +++ b/src/business/business-core/gncInvoice.c @@ -113,6 +113,11 @@ gnc_invoice_init(GncInvoice* inv) { } +static void +gnc_invoice_dispose_real (GObject *invp) +{ +} + static void gnc_invoice_finalize_real(GObject* invp) { diff --git a/src/business/business-core/gncJob.c b/src/business/business-core/gncJob.c index d1e8115183..f800064534 100644 --- a/src/business/business-core/gncJob.c +++ b/src/business/business-core/gncJob.c @@ -74,6 +74,11 @@ gnc_job_init(GncJob* job) { } +static void +gnc_job_dispose_real (GObject *jobp) +{ +} + static void gnc_job_finalize_real(GObject* jobp) { diff --git a/src/business/business-core/gncOrder.c b/src/business/business-core/gncOrder.c index 34e95462c1..076a97ff47 100644 --- a/src/business/business-core/gncOrder.c +++ b/src/business/business-core/gncOrder.c @@ -88,6 +88,11 @@ gnc_order_init(GncOrder* order) { } +static void +gnc_order_dispose_real (GObject *orderp) +{ +} + static void gnc_order_finalize_real(GObject* orderp) { diff --git a/src/business/business-core/gncTaxTable.c b/src/business/business-core/gncTaxTable.c index 839175a767..3059064abc 100644 --- a/src/business/business-core/gncTaxTable.c +++ b/src/business/business-core/gncTaxTable.c @@ -213,6 +213,11 @@ gnc_taxtable_init(GncTaxTable* tt) { } +static void +gnc_taxtable_dispose_real (GObject *ttp) +{ +} + static void gnc_taxtable_finalize_real(GObject* ttp) { diff --git a/src/business/business-core/gncVendor.c b/src/business/business-core/gncVendor.c index 6f5be4b0a0..6f76f735a7 100644 --- a/src/business/business-core/gncVendor.c +++ b/src/business/business-core/gncVendor.c @@ -85,6 +85,11 @@ gnc_vendor_init(GncVendor* vendor) { } +static void +gnc_vendor_dispose_real (GObject *vendorp) +{ +} + static void gnc_vendor_finalize_real(GObject* vendorp) { diff --git a/src/engine/Account.c b/src/engine/Account.c index e4b6dc7c62..6141b196cc 100644 --- a/src/engine/Account.c +++ b/src/engine/Account.c @@ -116,6 +116,11 @@ gnc_account_init(Account* acc) { } +static void +gnc_account_dispose_real (GObject *acctp) +{ +} + static void gnc_account_finalize_real(GObject* acctp) { diff --git a/src/engine/FreqSpec.c b/src/engine/FreqSpec.c index 248854e0e9..65ff230838 100644 --- a/src/engine/FreqSpec.c +++ b/src/engine/FreqSpec.c @@ -166,6 +166,11 @@ gnc_freqspec_init(FreqSpec* fs) { } +static void +gnc_freqspec_dispose_real (GObject *fsp) +{ +} + static void gnc_freqspec_finalize_real(GObject* fsp) { diff --git a/src/engine/SX-book.c b/src/engine/SX-book.c index 5c5506f3ef..95b2baf537 100644 --- a/src/engine/SX-book.c +++ b/src/engine/SX-book.c @@ -218,12 +218,17 @@ gnc_sxes_del_sx(SchedXactions *sxes, SchedXaction *sx) QOF_GOBJECT_IMPL(gnc_schedxactions, SchedXactions, QOF_TYPE_INSTANCE); static void -gnc_schedxactions_init(SchedXactions* fs) +gnc_schedxactions_init(SchedXactions* sxs) { } static void -gnc_schedxactions_finalize_real(GObject* fsp) +gnc_schedxactions_dispose_real (GObject *sxsp) +{ +} + +static void +gnc_schedxactions_finalize_real(GObject* sxsp) { } diff --git a/src/engine/SchedXaction.c b/src/engine/SchedXaction.c index c02841f700..166cedb695 100644 --- a/src/engine/SchedXaction.c +++ b/src/engine/SchedXaction.c @@ -49,12 +49,17 @@ void sxprivtransactionListMapDelete( gpointer data, gpointer user_data ); QOF_GOBJECT_IMPL(gnc_schedxaction, SchedXaction, QOF_TYPE_INSTANCE); static void -gnc_schedxaction_init(SchedXaction* fs) +gnc_schedxaction_init(SchedXaction* sx) { } static void -gnc_schedxaction_finalize_real(GObject* fsp) +gnc_schedxaction_dispose_real (GObject *sxp) +{ +} + +static void +gnc_schedxaction_finalize_real(GObject* sxp) { } diff --git a/src/engine/Split.c b/src/engine/Split.c index 043d93fa58..87e9e61b1e 100644 --- a/src/engine/Split.c +++ b/src/engine/Split.c @@ -59,12 +59,17 @@ static QofLogModule log_module = GNC_MOD_ENGINE; QOF_GOBJECT_IMPL(gnc_split, Split, QOF_TYPE_INSTANCE); static void -gnc_split_init(Split* acc) +gnc_split_init(Split* split) { } static void -gnc_split_finalize_real(GObject* acctp) +gnc_split_dispose_real (GObject *splitp) +{ +} + +static void +gnc_split_finalize_real(GObject* splitp) { } diff --git a/src/engine/Transaction.c b/src/engine/Transaction.c index d952927bda..a1c6630665 100644 --- a/src/engine/Transaction.c +++ b/src/engine/Transaction.c @@ -238,6 +238,11 @@ gnc_transaction_init(Transaction* txn) { } +static void +gnc_transaction_dispose_real (GObject *txnp) +{ +} + static void gnc_transaction_finalize_real(GObject* txnp) { diff --git a/src/engine/gnc-budget.c b/src/engine/gnc-budget.c index 3a67e14853..9d1e4d7569 100644 --- a/src/engine/gnc-budget.c +++ b/src/engine/gnc-budget.c @@ -61,6 +61,11 @@ gnc_budget_init(GncBudget* budget) { } +static void +gnc_budget_dispose_real (GObject *budgetp) +{ +} + static void gnc_budget_finalize_real(GObject* budgetp) { diff --git a/src/engine/gnc-commodity.c b/src/engine/gnc-commodity.c index 04360ad10a..55d7f46400 100644 --- a/src/engine/gnc-commodity.c +++ b/src/engine/gnc-commodity.c @@ -541,6 +541,11 @@ gnc_commodity_init(gnc_commodity* com) { } +static void +gnc_commodity_dispose_real (GObject *nsp) +{ +} + static void gnc_commodity_finalize_real(GObject* comp) { @@ -1541,6 +1546,11 @@ gnc_commodity_namespace_init(gnc_commodity_namespace* ns) { } +static void +gnc_commodity_namespace_dispose_real (GObject *nsp) +{ +} + static void gnc_commodity_namespace_finalize_real(GObject* nsp) { diff --git a/src/engine/gnc-lot.c b/src/engine/gnc-lot.c index 5315fbfb46..838f99c2a2 100644 --- a/src/engine/gnc-lot.c +++ b/src/engine/gnc-lot.c @@ -60,6 +60,11 @@ gnc_lot_init(GNCLot* lot) { } +static void +gnc_lot_dispose_real (GObject *lotp) +{ +} + static void gnc_lot_finalize_real(GObject* lotp) { diff --git a/src/engine/gnc-pricedb.c b/src/engine/gnc-pricedb.c index ffc0ee874d..138693885c 100644 --- a/src/engine/gnc-pricedb.c +++ b/src/engine/gnc-pricedb.c @@ -43,6 +43,11 @@ gnc_price_init(GNCPrice* price) { } +static void +gnc_price_dispose_real (GObject *pricep) +{ +} + static void gnc_price_finalize_real(GObject* pricep) { @@ -575,6 +580,11 @@ gnc_pricedb_init(GNCPriceDB* pdb) { } +static void +gnc_pricedb_dispose_real (GObject *pdbp) +{ +} + static void gnc_pricedb_finalize_real(GObject* pdbp) { diff --git a/src/engine/test/test-book-merge.c b/src/engine/test/test-book-merge.c index 6481685223..bf1fe4a0ad 100644 --- a/src/engine/test/test-book-merge.c +++ b/src/engine/test/test-book-merge.c @@ -107,6 +107,11 @@ gnc_myobj_init(myobj* obj) { } +static void +gnc_myobj_dispose_real (GObject *objp) +{ +} + static void gnc_myobj_finalize_real(GObject* objp) { diff --git a/src/engine/test/test-recursive.c b/src/engine/test/test-recursive.c index d510ccb60d..c503f76114 100644 --- a/src/engine/test/test-recursive.c +++ b/src/engine/test/test-recursive.c @@ -229,6 +229,11 @@ gnc_mychild_init(mychild* obj) { } +static void +gnc_mychild_dispose_real (GObject *objp) +{ +} + static void gnc_mychild_finalize_real(GObject* objp) { @@ -242,6 +247,11 @@ gnc_myparent_init(myparent* obj) { } +static void +gnc_myparent_dispose_real (GObject *objp) +{ +} + static void gnc_myparent_finalize_real(GObject* objp) { @@ -255,6 +265,11 @@ gnc_mygrand_init(mygrand* obj) { } +static void +gnc_mygrand_dispose_real (GObject *objp) +{ +} + static void gnc_mygrand_finalize_real(GObject* objp) {