r15826 - gnucash/branches/gobject-engine-dev-warlord - Get "make check" to work with the gobjectified objects.
Derek Atkins
warlord at cvs.gnucash.org
Wed Apr 4 22:44:49 EDT 2007
Author: warlord
Date: 2007-04-04 22:44:47 -0400 (Wed, 04 Apr 2007)
New Revision: 15826
Trac: http://svn.gnucash.org/trac/changeset/15826
Modified:
gnucash/branches/gobject-engine-dev-warlord/
gnucash/branches/gobject-engine-dev-warlord/lib/libqof/qof/qofbook.c
gnucash/branches/gobject-engine-dev-warlord/lib/libqof/qof/qofinstance.c
gnucash/branches/gobject-engine-dev-warlord/lib/libqof/qof/qofutil.c
gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-customer.c
gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-employee.c
gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-job.c
gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-vendor.c
gnucash/branches/gobject-engine-dev-warlord/src/engine/gnc-commodity.c
gnucash/branches/gobject-engine-dev-warlord/src/engine/test/test-book-merge.c
gnucash/branches/gobject-engine-dev-warlord/src/engine/test/test-recursive.c
Log:
Get "make check" to work with the gobjectified objects.
- fix a bunch of tests to use the new gobject defs
- make sure we initialize g_type_init() in qof_init()
- fix qofbook's destruction sequence (I broke it earlier)
- use dispose() in QofInstance
- use qof_init() for the business tests.
Property changes on: gnucash/branches/gobject-engine-dev-warlord
___________________________________________________________________
Name: svk:merge
- 3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/branches/swig-redo:802
3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/trunk:1037
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/branches/gobject-engine-dev-warlord:14369
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/branches/gobject-engine-dev-warlord1:14430
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:14282
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk2:13366
+ 3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/branches/swig-redo:802
3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/trunk:1037
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/branches/gobject-engine-dev-warlord:14369
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/branches/gobject-engine-dev-warlord1:14431
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:14282
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk2:13366
Modified: gnucash/branches/gobject-engine-dev-warlord/lib/libqof/qof/qofbook.c
===================================================================
--- gnucash/branches/gobject-engine-dev-warlord/lib/libqof/qof/qofbook.c 2007-04-05 02:44:36 UTC (rev 15825)
+++ gnucash/branches/gobject-engine-dev-warlord/lib/libqof/qof/qofbook.c 2007-04-05 02:44:47 UTC (rev 15826)
@@ -110,6 +110,8 @@
void
qof_book_destroy (QofBook *book)
{
+ GHashTable* cols;
+
if (!book) return;
ENTER ("book=%p", book);
@@ -130,10 +132,16 @@
/* qof_instance_release (&book->inst); */
- g_hash_table_destroy (book->hash_of_collections);
+ /* Note: we need to save this hashtable until after we remove ourself
+ * from it, otherwise we'll crash in our dispose() function when we
+ * DO remove ourself from the collection but the collection had already
+ * been destroyed.
+ */
+ cols = book->hash_of_collections;
+ g_object_unref (book);
+ g_hash_table_destroy (cols);
book->hash_of_collections = NULL;
- g_object_unref (book);
LEAVE ("book=%p", book);
}
Modified: gnucash/branches/gobject-engine-dev-warlord/lib/libqof/qof/qofinstance.c
===================================================================
--- gnucash/branches/gobject-engine-dev-warlord/lib/libqof/qof/qofinstance.c 2007-04-05 02:44:36 UTC (rev 15825)
+++ gnucash/branches/gobject-engine-dev-warlord/lib/libqof/qof/qofinstance.c 2007-04-05 02:44:47 UTC (rev 15826)
@@ -39,8 +39,17 @@
/* ========================================================== */
-QOF_GOBJECT_IMPL(qof_instance, QofInstance, G_TYPE_OBJECT);
+QOF_GOBJECT_GET_TYPE(QofInstance, qof_instance, G_TYPE_OBJECT, {});
+QOF_GOBJECT_FINALIZE(qof_instance);
+static void qof_instance_dispose(GObject*);
+static void qof_instance_class_init(QofInstanceClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ object_class->finalize = qof_instance_finalize;
+ object_class->dispose = qof_instance_dispose;
+}
+
static void
qof_instance_init (QofInstance *inst)
{
@@ -67,6 +76,14 @@
}
static void
+qof_instance_dispose (GObject *instp)
+{
+ QofInstance* inst = QOF_INSTANCE(instp);
+ qof_entity_release (inst);
+ G_OBJECT_CLASS(qof_instance_parent_class)->dispose(instp);
+}
+
+static void
qof_instance_finalize_real (GObject *instp)
{
QofInstance* inst = QOF_INSTANCE(instp);
@@ -76,7 +93,6 @@
inst->editlevel = 0;
inst->do_free = FALSE;
inst->dirty = FALSE;
- qof_entity_release (inst);
}
const GUID *
Modified: gnucash/branches/gobject-engine-dev-warlord/lib/libqof/qof/qofutil.c
===================================================================
--- gnucash/branches/gobject-engine-dev-warlord/lib/libqof/qof/qofutil.c 2007-04-05 02:44:36 UTC (rev 15825)
+++ gnucash/branches/gobject-engine-dev-warlord/lib/libqof/qof/qofutil.c 2007-04-05 02:44:47 UTC (rev 15826)
@@ -545,7 +545,8 @@
void
qof_init (void)
{
- qof_log_init();
+ g_type_init();
+ qof_log_init();
qof_util_get_string_cache ();
guid_init ();
qof_object_initialize ();
Modified: gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-customer.c
===================================================================
--- gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-customer.c 2007-04-05 02:44:36 UTC (rev 15825)
+++ gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-customer.c 2007-04-05 02:44:47 UTC (rev 15826)
@@ -208,19 +208,13 @@
int
main (int argc, char **argv)
{
- qof_log_init();
- guid_init ();
- qof_query_init ();
- qof_object_initialize ();
- qof_book_register ();
+ qof_init();
do_test (cashobjects_register(), "Cannot register cash objects");
do_test (gncInvoiceRegister(), "Cannot register GncInvoice");
do_test (gncJobRegister (), "Cannot register GncJob");
do_test (gncCustomerRegister(), "Cannot register GncCustomer");
test_customer();
print_test_results();
- qof_query_shutdown();
- guid_shutdown();
- qof_object_shutdown ();
+ qof_close ();
return 0;
}
Modified: gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-employee.c
===================================================================
--- gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-employee.c 2007-04-05 02:44:36 UTC (rev 15825)
+++ gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-employee.c 2007-04-05 02:44:47 UTC (rev 15826)
@@ -218,19 +218,13 @@
int
main (int argc, char **argv)
{
- qof_log_init();
- guid_init ();
- qof_query_init ();
- qof_object_initialize ();
- qof_book_register ();
+ qof_init();
do_test (gncInvoiceRegister(), "Cannot register GncInvoice");
do_test (gncJobRegister (), "Cannot register GncJob");
do_test (gncCustomerRegister(), "Cannot register GncCustomer");
do_test (gncEmployeeRegister(), "Cannot register GncEmployee");
test_employee();
print_test_results();
- qof_query_shutdown();
- guid_shutdown();
- qof_object_shutdown ();
+ qof_close();
return 0;
}
Modified: gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-job.c
===================================================================
--- gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-job.c 2007-04-05 02:44:36 UTC (rev 15825)
+++ gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-job.c 2007-04-05 02:44:47 UTC (rev 15826)
@@ -235,19 +235,13 @@
int
main (int argc, char **argv)
{
- qof_log_init();
- guid_init ();
- qof_query_init ();
- qof_object_initialize ();
- qof_book_register ();
+ qof_init();
do_test (gncInvoiceRegister(), "Cannot register GncInvoice");
do_test (gncJobRegister (), "Cannot register GncJob");
do_test (gncCustomerRegister(), "Cannot register GncCustomer");
test_job();
print_test_results();
- qof_query_shutdown();
- guid_shutdown();
- qof_object_shutdown ();
+ qof_close();
return 0;
}
Modified: gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-vendor.c
===================================================================
--- gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-vendor.c 2007-04-05 02:44:36 UTC (rev 15825)
+++ gnucash/branches/gobject-engine-dev-warlord/src/business/business-core/test/test-vendor.c 2007-04-05 02:44:47 UTC (rev 15826)
@@ -216,19 +216,13 @@
int
main (int argc, char **argv)
{
- qof_log_init();
- guid_init ();
- qof_query_init ();
- qof_object_initialize ();
- qof_book_register ();
+ qof_init();
do_test (gncInvoiceRegister(), "Cannot register GncInvoice");
do_test (gncJobRegister (), "Cannot register GncJob");
do_test (gncCustomerRegister(), "Cannot register GncCustomer");
do_test (gncVendorRegister(), "Cannot register GncVendor");
test_vendor();
print_test_results();
- qof_query_shutdown();
- guid_shutdown();
- qof_object_shutdown ();
+ qof_close();
return 0;
}
Modified: gnucash/branches/gobject-engine-dev-warlord/src/engine/gnc-commodity.c
===================================================================
--- gnucash/branches/gobject-engine-dev-warlord/src/engine/gnc-commodity.c 2007-04-05 02:44:36 UTC (rev 15825)
+++ gnucash/branches/gobject-engine-dev-warlord/src/engine/gnc-commodity.c 2007-04-05 02:44:47 UTC (rev 15826)
@@ -1533,6 +1533,19 @@
* add an empty namespace if it does not exist
********************************************************************/
+/* GObject Initialization */
+QOF_GOBJECT_IMPL(gnc_commodity_namespace, gnc_commodity_namespace, QOF_TYPE_INSTANCE);
+
+static void
+gnc_commodity_namespace_init(gnc_commodity_namespace* ns)
+{
+}
+
+static void
+gnc_commodity_namespace_finalize_real(GObject* nsp)
+{
+}
+
gnc_commodity_namespace *
gnc_commodity_table_add_namespace(gnc_commodity_table * table,
const char * namespace,
Modified: gnucash/branches/gobject-engine-dev-warlord/src/engine/test/test-book-merge.c
===================================================================
--- gnucash/branches/gobject-engine-dev-warlord/src/engine/test/test-book-merge.c 2007-04-05 02:44:36 UTC (rev 15825)
+++ gnucash/branches/gobject-engine-dev-warlord/src/engine/test/test-book-merge.c 2007-04-05 02:44:47 UTC (rev 15826)
@@ -58,6 +58,11 @@
gint64 minor;
}myobj;
+typedef struct objclass_s
+{
+ QofInstanceClass parent_class;
+} myobjClass;
+
myobj* obj_create(QofBook*);
/* obvious setter functions */
@@ -80,13 +85,40 @@
gint32 obj_getVersion(myobj*);
gint64 obj_getMinor(myobj*);
+/* --- type macros --- */
+#define GNC_TYPE_MYOBJ (gnc_myobj_get_type ())
+#define GNC_MYOBJ(o) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_MYOBJ, myobj))
+#define GNC_MYOBJ_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_MYOBJ, myobjClass))
+#define GNC_IS_MYOBJ(o) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_MYOBJ))
+#define GNC_IS_MYOBJ_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_MYOBJ))
+#define GNC_MYOBJ_GET_CLASS(o) \
+ (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_MYOBJ, myobjClass))
+GType gnc_myobj_get_type(void);
+
+/* GObject Initialization */
+QOF_GOBJECT_IMPL(gnc_myobj, myobj, QOF_TYPE_INSTANCE);
+
+static void
+gnc_myobj_init(myobj* obj)
+{
+}
+
+static void
+gnc_myobj_finalize_real(GObject* objp)
+{
+}
+
myobj*
obj_create(QofBook *book)
{
myobj *g;
g_return_val_if_fail(book, NULL);
- g = g_new(myobj, 1);
- qof_instance_init (&g->inst, TEST_MODULE_NAME, book);
+ g = g_object_new(GNC_TYPE_MYOBJ, NULL);
+ qof_instance_init_data (&g->inst, TEST_MODULE_NAME, book);
obj_setGUID(g,qof_instance_get_guid(&g->inst));
g->date.tv_nsec = 0;
g->date.tv_sec = 0;
@@ -279,9 +311,9 @@
/* import book objects - tests used */
do_test ((NULL != import), "#2 import book is NULL");
- import_obj = g_new(myobj, 1);
+ import_obj = g_object_new(GNC_TYPE_MYOBJ, NULL);
do_test ((NULL != import_obj), "#3 new object create");
- qof_instance_init (&import_obj->inst, TEST_MODULE_NAME, import);
+ qof_instance_init_data (&import_obj->inst, TEST_MODULE_NAME, import);
do_test ((NULL != &import_obj->inst), "#4 instance init");
obj_setGUID(import_obj,qof_instance_get_guid(&import_obj->inst));
do_test ((NULL != &import_obj->obj_guid), "#5 guid set");
@@ -310,8 +342,8 @@
minor = 3;
/* second import object - test results would be the same, so not tested. */
- new_obj = g_new(myobj, 1);
- qof_instance_init (&new_obj->inst, TEST_MODULE_NAME, import);
+ new_obj = g_object_new(GNC_TYPE_MYOBJ, NULL);
+ qof_instance_init_data (&new_obj->inst, TEST_MODULE_NAME, import);
obj_setGUID(new_obj,qof_instance_get_guid(&new_obj->inst));
qof_event_gen (&new_obj->inst, QOF_EVENT_CREATE, NULL);
obj_setName(new_obj, import_init);
@@ -330,8 +362,8 @@
tc.tv_nsec = 0;
/* target object - test results would be the same, so not tested. */
- target_obj = g_new(myobj, 1);
- qof_instance_init (&target_obj->inst, TEST_MODULE_NAME, target);
+ target_obj = g_object_new(GNC_TYPE_MYOBJ, NULL);
+ qof_instance_init_data (&target_obj->inst, TEST_MODULE_NAME, target);
obj_setGUID(target_obj,qof_instance_get_guid(&target_obj->inst));
qof_event_gen (&target_obj->inst, QOF_EVENT_CREATE, NULL);
obj_setName(target_obj, target_init);
Modified: gnucash/branches/gobject-engine-dev-warlord/src/engine/test/test-recursive.c
===================================================================
--- gnucash/branches/gobject-engine-dev-warlord/src/engine/test/test-recursive.c 2007-04-05 02:44:36 UTC (rev 15825)
+++ gnucash/branches/gobject-engine-dev-warlord/src/engine/test/test-recursive.c 2007-04-05 02:44:47 UTC (rev 15826)
@@ -65,6 +65,11 @@
gint64 minor;
}mychild;
+typedef struct childClass_s
+{
+ QofInstanceClass parent_class;
+} mychildClass;
+
/* simple object structure */
typedef struct parent_s
{
@@ -80,6 +85,11 @@
gint64 minor;
}myparent;
+typedef struct parentClass_s
+{
+ QofInstanceClass parent_class;
+} myparentClass;
+
/* simple object structure */
typedef struct grand_s
{
@@ -96,6 +106,11 @@
gint64 minor;
}mygrand;
+typedef struct grandClass_s
+{
+ QofInstanceClass parent_class;
+} mygrandClass;
+
mygrand* grand_create(QofBook*);
myparent* parent_create(QofBook*);
mychild* child_create(QofBook*);
@@ -164,14 +179,95 @@
gint64 child_getMinor(mychild*);
gchar child_getFlag(mychild*);
+/* --- type macros --- */
+#define GNC_TYPE_MYCHILD (gnc_mychild_get_type ())
+#define GNC_MYCHILD(o) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_MYCHILD, mychild))
+#define GNC_MYCHILD_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_MYCHILD, mychildClass))
+#define GNC_IS_MYCHILD(o) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_MYCHILD))
+#define GNC_IS_MYCHILD_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_MYCHILD))
+#define GNC_MYCHILD_GET_CLASS(o) \
+ (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_MYCHILD, mychildClass))
+GType gnc_mychild_get_type(void);
+
+/* --- type macros --- */
+#define GNC_TYPE_MYPARENT (gnc_myparent_get_type ())
+#define GNC_MYPARENT(o) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_MYPARENT, myparent))
+#define GNC_MYPARENT_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_MYPARENT, myparentClass))
+#define GNC_IS_MYPARENT(o) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_MYPARENT))
+#define GNC_IS_MYPARENT_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_MYPARENT))
+#define GNC_MYPARENT_GET_CLASS(o) \
+ (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_MYPARENT, myparentClass))
+GType gnc_myparent_get_type(void);
+
+/* --- type macros --- */
+#define GNC_TYPE_MYGRAND (gnc_mygrand_get_type ())
+#define GNC_MYGRAND(o) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_MYGRAND, mygrand))
+#define GNC_MYGRAND_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_MYGRAND, mygrandClass))
+#define GNC_IS_MYGRAND(o) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_MYGRAND))
+#define GNC_IS_MYGRAND_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_MYGRAND))
+#define GNC_MYGRAND_GET_CLASS(o) \
+ (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_MYGRAND, mygrandClass))
+GType gnc_mygrand_get_type(void);
+
+/* GObject Initialization */
+QOF_GOBJECT_IMPL(gnc_mychild, mychild, QOF_TYPE_INSTANCE);
+
+static void
+gnc_mychild_init(mychild* obj)
+{
+}
+
+static void
+gnc_mychild_finalize_real(GObject* objp)
+{
+}
+
+/* GObject Initialization */
+QOF_GOBJECT_IMPL(gnc_myparent, myparent, QOF_TYPE_INSTANCE);
+
+static void
+gnc_myparent_init(myparent* obj)
+{
+}
+
+static void
+gnc_myparent_finalize_real(GObject* objp)
+{
+}
+
+/* GObject Initialization */
+QOF_GOBJECT_IMPL(gnc_mygrand, mygrand, QOF_TYPE_INSTANCE);
+
+static void
+gnc_mygrand_init(mygrand* obj)
+{
+}
+
+static void
+gnc_mygrand_finalize_real(GObject* objp)
+{
+}
+
mygrand*
grand_create(QofBook *book)
{
mygrand *g;
g_return_val_if_fail(book, NULL);
- g = g_new0(mygrand, 1);
- qof_instance_init (&g->inst, GRAND_MODULE_NAME, book);
+ g = g_object_new(GNC_TYPE_MYGRAND, NULL);
+ qof_instance_init_data (&g->inst, GRAND_MODULE_NAME, book);
g->date = *get_random_timespec();
g->discount = get_random_double();;
g->active = get_random_boolean();
@@ -192,8 +288,8 @@
myparent *g;
g_return_val_if_fail(book, NULL);
- g = g_new0(myparent, 1);
- qof_instance_init (&g->inst, PARENT_MODULE_NAME, book);
+ g = g_object_new(GNC_TYPE_MYPARENT, NULL);
+ qof_instance_init_data (&g->inst, PARENT_MODULE_NAME, book);
g->date = *get_random_timespec();
g->discount = get_random_double();
g->active = get_random_boolean();
@@ -213,8 +309,8 @@
mychild *g;
g_return_val_if_fail(book, NULL);
- g = g_new0(mychild, 1);
- qof_instance_init (&g->inst, CHILD_MODULE_NAME, book);
+ g = g_object_new(GNC_TYPE_MYCHILD, NULL);
+ qof_instance_init_data (&g->inst, CHILD_MODULE_NAME, book);
g->date = *get_random_timespec();
g->discount = get_random_double();
g->active = get_random_boolean();
More information about the gnucash-changes
mailing list