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
This commit is contained in:
Derek Atkins 2007-04-05 03:10:26 +00:00
parent b4323dbfcf
commit 8c6e7b8394
24 changed files with 153 additions and 7 deletions

View File

@ -57,16 +57,26 @@
*/ */
#define QOF_GOBJECT_GET_TYPE(TypeName, type_name, TYPE_PARENT, CODE) \ #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); G_DEFINE_TYPE_WITH_CODE(TypeName, type_name, TYPE_PARENT, CODE);
#define QOF_GOBJECT_CLASS_INIT(type_name, TypeName) \ #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) \ static void type_name##_class_init(TypeName##Class *klass) \
{ \ { \
GObjectClass *object_class = G_OBJECT_CLASS(klass); \ GObjectClass *object_class = G_OBJECT_CLASS(klass); \
object_class->dispose = type_name##_dispose; \
object_class->finalize = type_name##_finalize; \ 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) \ #define QOF_GOBJECT_FINALIZE(type_name) \
static void type_name##_finalize_real(GObject* object); \ static void type_name##_finalize_real(GObject* object); \
static void type_name##_finalize(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) \ #define QOF_GOBJECT_IMPL_WITH_CODE(type_name, TypeName, TYPE_PARENT, CODE) \
QOF_GOBJECT_GET_TYPE(TypeName, type_name, TYPE_PARENT, CODE); \ QOF_GOBJECT_GET_TYPE(TypeName, type_name, TYPE_PARENT, CODE); \
QOF_GOBJECT_CLASS_INIT(type_name, TypeName); \ QOF_GOBJECT_CLASS_INIT(type_name, TypeName); \
QOF_GOBJECT_DISPOSE(type_name); \
QOF_GOBJECT_FINALIZE(type_name); QOF_GOBJECT_FINALIZE(type_name);
#define QOF_GOBJECT_IMPL(type_name, TypeName, TYPE_PARENT) \ #define QOF_GOBJECT_IMPL(type_name, TypeName, TYPE_PARENT) \

View File

@ -102,6 +102,11 @@ book_final (gpointer key, gpointer value, gpointer booq)
(*cb) (book, key, user_data); (*cb) (book, key, user_data);
} }
static void
qof_book_dispose_real (GObject *bookp)
{
}
static void static void
qof_book_finalize_real (GObject *bookp) qof_book_finalize_real (GObject *bookp)
{ {

View File

@ -75,6 +75,11 @@ gnc_address_init(GncAddress* addr)
{ {
} }
static void
gnc_address_dispose_real (GObject *addrp)
{
}
static void static void
gnc_address_finalize_real(GObject* addrp) gnc_address_finalize_real(GObject* addrp)
{ {

View File

@ -141,6 +141,11 @@ gnc_billterm_init(GncBillTerm* bt)
{ {
} }
static void
gnc_billterm_dispose_real (GObject *btp)
{
}
static void static void
gnc_billterm_finalize_real(GObject* btp) gnc_billterm_finalize_real(GObject* btp)
{ {

View File

@ -97,6 +97,11 @@ gnc_customer_init(GncCustomer* cust)
{ {
} }
static void
gnc_customer_dispose_real (GObject *custp)
{
}
static void static void
gnc_customer_finalize_real(GObject* custp) gnc_customer_finalize_real(GObject* custp)
{ {

View File

@ -79,6 +79,11 @@ gnc_employee_init(GncEmployee* emp)
{ {
} }
static void
gnc_employee_dispose_real (GObject *empp)
{
}
static void static void
gnc_employee_finalize_real(GObject* empp) gnc_employee_finalize_real(GObject* empp)
{ {

View File

@ -186,6 +186,11 @@ gnc_entry_init(GncEntry* entry)
{ {
} }
static void
gnc_entry_dispose_real (GObject *entryp)
{
}
static void static void
gnc_entry_finalize_real(GObject* entryp) gnc_entry_finalize_real(GObject* entryp)
{ {

View File

@ -113,6 +113,11 @@ gnc_invoice_init(GncInvoice* inv)
{ {
} }
static void
gnc_invoice_dispose_real (GObject *invp)
{
}
static void static void
gnc_invoice_finalize_real(GObject* invp) gnc_invoice_finalize_real(GObject* invp)
{ {

View File

@ -74,6 +74,11 @@ gnc_job_init(GncJob* job)
{ {
} }
static void
gnc_job_dispose_real (GObject *jobp)
{
}
static void static void
gnc_job_finalize_real(GObject* jobp) gnc_job_finalize_real(GObject* jobp)
{ {

View File

@ -88,6 +88,11 @@ gnc_order_init(GncOrder* order)
{ {
} }
static void
gnc_order_dispose_real (GObject *orderp)
{
}
static void static void
gnc_order_finalize_real(GObject* orderp) gnc_order_finalize_real(GObject* orderp)
{ {

View File

@ -213,6 +213,11 @@ gnc_taxtable_init(GncTaxTable* tt)
{ {
} }
static void
gnc_taxtable_dispose_real (GObject *ttp)
{
}
static void static void
gnc_taxtable_finalize_real(GObject* ttp) gnc_taxtable_finalize_real(GObject* ttp)
{ {

View File

@ -85,6 +85,11 @@ gnc_vendor_init(GncVendor* vendor)
{ {
} }
static void
gnc_vendor_dispose_real (GObject *vendorp)
{
}
static void static void
gnc_vendor_finalize_real(GObject* vendorp) gnc_vendor_finalize_real(GObject* vendorp)
{ {

View File

@ -116,6 +116,11 @@ gnc_account_init(Account* acc)
{ {
} }
static void
gnc_account_dispose_real (GObject *acctp)
{
}
static void static void
gnc_account_finalize_real(GObject* acctp) gnc_account_finalize_real(GObject* acctp)
{ {

View File

@ -166,6 +166,11 @@ gnc_freqspec_init(FreqSpec* fs)
{ {
} }
static void
gnc_freqspec_dispose_real (GObject *fsp)
{
}
static void static void
gnc_freqspec_finalize_real(GObject* fsp) gnc_freqspec_finalize_real(GObject* fsp)
{ {

View File

@ -218,12 +218,17 @@ gnc_sxes_del_sx(SchedXactions *sxes, SchedXaction *sx)
QOF_GOBJECT_IMPL(gnc_schedxactions, SchedXactions, QOF_TYPE_INSTANCE); QOF_GOBJECT_IMPL(gnc_schedxactions, SchedXactions, QOF_TYPE_INSTANCE);
static void static void
gnc_schedxactions_init(SchedXactions* fs) gnc_schedxactions_init(SchedXactions* sxs)
{ {
} }
static void static void
gnc_schedxactions_finalize_real(GObject* fsp) gnc_schedxactions_dispose_real (GObject *sxsp)
{
}
static void
gnc_schedxactions_finalize_real(GObject* sxsp)
{ {
} }

View File

@ -49,12 +49,17 @@ void sxprivtransactionListMapDelete( gpointer data, gpointer user_data );
QOF_GOBJECT_IMPL(gnc_schedxaction, SchedXaction, QOF_TYPE_INSTANCE); QOF_GOBJECT_IMPL(gnc_schedxaction, SchedXaction, QOF_TYPE_INSTANCE);
static void static void
gnc_schedxaction_init(SchedXaction* fs) gnc_schedxaction_init(SchedXaction* sx)
{ {
} }
static void static void
gnc_schedxaction_finalize_real(GObject* fsp) gnc_schedxaction_dispose_real (GObject *sxp)
{
}
static void
gnc_schedxaction_finalize_real(GObject* sxp)
{ {
} }

View File

@ -59,12 +59,17 @@ static QofLogModule log_module = GNC_MOD_ENGINE;
QOF_GOBJECT_IMPL(gnc_split, Split, QOF_TYPE_INSTANCE); QOF_GOBJECT_IMPL(gnc_split, Split, QOF_TYPE_INSTANCE);
static void static void
gnc_split_init(Split* acc) gnc_split_init(Split* split)
{ {
} }
static void static void
gnc_split_finalize_real(GObject* acctp) gnc_split_dispose_real (GObject *splitp)
{
}
static void
gnc_split_finalize_real(GObject* splitp)
{ {
} }

View File

@ -238,6 +238,11 @@ gnc_transaction_init(Transaction* txn)
{ {
} }
static void
gnc_transaction_dispose_real (GObject *txnp)
{
}
static void static void
gnc_transaction_finalize_real(GObject* txnp) gnc_transaction_finalize_real(GObject* txnp)
{ {

View File

@ -61,6 +61,11 @@ gnc_budget_init(GncBudget* budget)
{ {
} }
static void
gnc_budget_dispose_real (GObject *budgetp)
{
}
static void static void
gnc_budget_finalize_real(GObject* budgetp) gnc_budget_finalize_real(GObject* budgetp)
{ {

View File

@ -541,6 +541,11 @@ gnc_commodity_init(gnc_commodity* com)
{ {
} }
static void
gnc_commodity_dispose_real (GObject *nsp)
{
}
static void static void
gnc_commodity_finalize_real(GObject* comp) 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 static void
gnc_commodity_namespace_finalize_real(GObject* nsp) gnc_commodity_namespace_finalize_real(GObject* nsp)
{ {

View File

@ -60,6 +60,11 @@ gnc_lot_init(GNCLot* lot)
{ {
} }
static void
gnc_lot_dispose_real (GObject *lotp)
{
}
static void static void
gnc_lot_finalize_real(GObject* lotp) gnc_lot_finalize_real(GObject* lotp)
{ {

View File

@ -43,6 +43,11 @@ gnc_price_init(GNCPrice* price)
{ {
} }
static void
gnc_price_dispose_real (GObject *pricep)
{
}
static void static void
gnc_price_finalize_real(GObject* pricep) 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 static void
gnc_pricedb_finalize_real(GObject* pdbp) gnc_pricedb_finalize_real(GObject* pdbp)
{ {

View File

@ -107,6 +107,11 @@ gnc_myobj_init(myobj* obj)
{ {
} }
static void
gnc_myobj_dispose_real (GObject *objp)
{
}
static void static void
gnc_myobj_finalize_real(GObject* objp) gnc_myobj_finalize_real(GObject* objp)
{ {

View File

@ -229,6 +229,11 @@ gnc_mychild_init(mychild* obj)
{ {
} }
static void
gnc_mychild_dispose_real (GObject *objp)
{
}
static void static void
gnc_mychild_finalize_real(GObject* objp) 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 static void
gnc_myparent_finalize_real(GObject* objp) 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 static void
gnc_mygrand_finalize_real(GObject* objp) gnc_mygrand_finalize_real(GObject* objp)
{ {