[Gnucash-changes] Fixing business file backend

Neil Williams codehelp at cvs.gnucash.org
Sun Oct 16 07:53:04 EDT 2005


Log Message:
-----------
Fixing business file backend

Tags:
----
gnucash-gnome2-dev

Modified Files:
--------------
    gnucash:
        README.dependencies
    gnucash/src/business/business-core/file:
        gncmod-business-backend-file.c
    gnucash/src/engine:
        cashobjects.c
        cashobjects.h
        gnc-engine.c
        gnc-engine.h
        gnc-lot-p.h
        gnc-lot.c

Revision Data
-------------
Index: README.dependencies
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/Attic/README.dependencies,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -LREADME.dependencies -LREADME.dependencies -u -r1.1.2.5 -r1.1.2.6
--- README.dependencies
+++ README.dependencies
@@ -92,7 +92,8 @@
     - pango-1.8.1
   -  FC3 = 2004-11-08
 - Debian GNU/Linux
-  - *3.1 sarge = 2005-06-06
+  - unstable
+    (already includes goffice and will include libqof1)
 - Knoppix
   -  4.0.2 = 2005-09-24
   - *3.9   = 2005-06-01
Index: gncmod-business-backend-file.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/file/gncmod-business-backend-file.c,v
retrieving revision 1.5.4.2
retrieving revision 1.5.4.3
diff -Lsrc/business/business-core/file/gncmod-business-backend-file.c -Lsrc/business/business-core/file/gncmod-business-backend-file.c -u -r1.5.4.2 -r1.5.4.3
--- src/business/business-core/file/gncmod-business-backend-file.c
+++ src/business/business-core/file/gncmod-business-backend-file.c
@@ -28,7 +28,7 @@
 
 #include "gnc-module.h"
 #include "gnc-module-api.h"
-
+#include "gnc-engine.h"
 #include "io-gncxml-v2.h"
 
 #include "gnc-address-xml-v2.h"
@@ -76,15 +76,11 @@
 int
 libgncmod_business_backend_file_LTX_gnc_module_init(int refcount) 
 {  
+  if(!gnc_engine_is_initialized()) { return FALSE; }
+
   bus_core = gnc_module_load("gnucash/business-core", 0);
   if(!bus_core) return FALSE;
 
-  file = gnc_module_load("gnucash/backend/file", 0);
-  if(!file) {
-    gnc_module_unload (bus_core);
-    return FALSE;
-  }
-
   if (refcount == 0) {
     /* Initialize our pointers into the backend subsystem */
     gnc_address_xml_initialize ();
@@ -111,9 +107,6 @@
   if (bus_core)
     unload = gnc_module_unload(bus_core);
 
-  if (file)
-    unload = gnc_module_unload(file);
-
   if (refcount == 0) {
     bus_core = NULL;
     file = NULL;
Index: gnc-lot.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/gnc-lot.c,v
retrieving revision 1.14.4.9
retrieving revision 1.14.4.10
diff -Lsrc/engine/gnc-lot.c -Lsrc/engine/gnc-lot.c -u -r1.14.4.9 -r1.14.4.10
--- src/engine/gnc-lot.c
+++ src/engine/gnc-lot.c
@@ -352,9 +352,7 @@
 
 /* ============================================================= */
 
-/* change prototype of gnc_lot_register to return a gboolean
-and set a foreach 
-before enabling the object description. */
+/* Should the object description be enabled?. */
 /*
 static QofObject gncLotDesc =
 {
@@ -366,17 +364,17 @@
 book_end:           NULL,
 is_dirty:           NULL,
 mark_clean:         NULL,
-foreach:            NULL,
+foreach:            qof_collection_foreach,
 printable:          NULL,
-version_cmp:        NULL,
+version_cmp:        (int (*)(gpointer,gpointer))qof_instance_version_cmp,
 };
 */
 
-void gnc_lot_register (void)
+gboolean gnc_lot_register (void)
 {
   static const QofParam params[] = {
-	{ LOT_TITLE, 		QOF_TYPE_STRING,	(QofAccessFunc)gnc_lot_get_title, 		(QofSetterFunc)gnc_lot_set_title },
-	{ LOT_NOTES,		QOF_TYPE_STRING,	(QofAccessFunc)gnc_lot_get_notes,		(QofSetterFunc)gnc_lot_set_notes },
+   { LOT_TITLE, QOF_TYPE_STRING, (QofAccessFunc)gnc_lot_get_title, (QofSetterFunc)gnc_lot_set_title },
+   { LOT_NOTES,	QOF_TYPE_STRING, (QofAccessFunc)gnc_lot_get_notes, (QofSetterFunc)gnc_lot_set_notes },
     { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_entity_get_guid, NULL },
     { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)gnc_lot_get_book, NULL },
     { LOT_IS_CLOSED, QOF_TYPE_BOOLEAN, (QofAccessFunc)gnc_lot_is_closed, NULL },
@@ -385,7 +383,7 @@
   };
 
   qof_class_register (GNC_ID_LOT, NULL, params);
-  
+  return TRUE;
 //  return qof_object_register(&gncLotDesc);
 
 }
Index: gnc-lot-p.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/gnc-lot-p.h,v
retrieving revision 1.5.2.5
retrieving revision 1.5.2.6
diff -Lsrc/engine/gnc-lot-p.h -Lsrc/engine/gnc-lot-p.h -u -r1.5.2.5 -r1.5.2.6
--- src/engine/gnc-lot-p.h
+++ src/engine/gnc-lot-p.h
@@ -23,7 +23,7 @@
 /*
  * FILE:
  * gnc-lot-p.h
- * 
+ *
  * FUNCTION:
  * Lots implement the fundamental conceptual idea behind invoices,
  * inventory lots, and stock market investment lots.  See the file
@@ -45,13 +45,13 @@
   QofEntity entity;     /* Unique guid for this lot */
 
   /* Book that this lot belongs to */
-  QofBook *book;  
+  QofBook *book;
 
   /* Anchor for generic lot-specific data. */
   KvpFrame *kvp_data;
 
   /* Account to which this lot applies.  All splits in the lot must
-   * belong to this account. 
+   * belong to this account.
    */
   Account * account;
 
@@ -69,6 +69,6 @@
 #define gnc_lot_set_guid(L,G)  qof_entity_set_guid(QOF_ENTITY(L),&(G))
 
 /* Register with the Query engine */
-void gnc_lot_register (void);
+gboolean gnc_lot_register (void);
 
 #endif /* GNC_LOT_P_H */
Index: gnc-engine.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/gnc-engine.c,v
retrieving revision 1.17.4.7
retrieving revision 1.17.4.8
diff -Lsrc/engine/gnc-engine.c -Lsrc/engine/gnc-engine.c -u -r1.17.4.7 -r1.17.4.8
--- src/engine/gnc-engine.c
+++ src/engine/gnc-engine.c
@@ -27,7 +27,7 @@
 
 #include "gnc-engine.h"
 #include "qof.h"
-
+#include "cashobjects.h"
 #include "AccountP.h"
 #include "GroupP.h"
 #include "SX-book-p.h"
@@ -78,7 +78,6 @@
   GList                  * cur;
 
   if (1 == engine_is_initialized) return;
-  engine_is_initialized = 1;
 
   /* initialize logging to our file. */
   qof_log_init_filename("/tmp/gnucash.trace");
@@ -88,30 +87,18 @@
   gnc_set_log_level(GNC_MOD_IO, GNC_LOG_WARNING);
   gnc_set_log_level(GNC_MOD_GUI, GNC_LOG_WARNING);
   qof_log_set_default(GNC_LOG_WARNING);
-  
-  guid_init ();
-  qof_object_initialize ();
-  qof_query_init ();
-  qof_book_register ();
+  /* initialize QOF */
+  qof_init();
 
   /* Now register our core types */
-  xaccSplitRegister ();
-  xaccTransRegister ();
-  xaccAccountRegister ();
-  xaccGroupRegister ();
-  gnc_sxtt_register ();
-  FreqSpecRegister ();
-  SXRegister ();
-  gnc_budget_register();
-  gnc_pricedb_register ();
-  gnc_commodity_table_register();
-  gnc_lot_register ();
+  cashobjects_register();
 
   g_return_if_fail((qof_load_backend_library 
 		(QOF_LIB_DIR, "libqof-backend-qsf.la", "qsf_provider_init")));
   g_return_if_fail((qof_load_backend_library
 		(QOF_LIB_DIR, GNC_LIB_NAME, GNC_LIB_INIT)));
 
+  engine_is_initialized = 1;
   /* call any engine hooks */
   for (cur = engine_init_hooks; cur; cur = cur->next)
   {
@@ -135,6 +122,7 @@
   guid_shutdown();
   gnc_engine_string_cache_destroy ();
   qof_log_shutdown();
+  engine_is_initialized = 0;
 }
 
 /********************************************************************
@@ -146,3 +134,12 @@
 gnc_engine_add_init_hook(gnc_engine_init_hook_t h) {
   engine_init_hooks = g_list_append(engine_init_hooks, (gpointer)h);
 }
+
+gboolean
+gnc_engine_is_initialized (void)
+{
+/*	if (engine_is_initialized == 1) return TRUE;
+	return FALSE;
+*/	
+	return (engine_is_initialized == 1) ? TRUE : FALSE;
+}
Index: cashobjects.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Attic/cashobjects.h,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -Lsrc/engine/cashobjects.h -Lsrc/engine/cashobjects.h -u -r1.1.2.1 -r1.1.2.2
--- src/engine/cashobjects.h
+++ src/engine/cashobjects.h
@@ -27,17 +27,8 @@
 #ifndef _CASHOBJECTS_H
 #define _CASHOBJECTS_H
 
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
 #include <glib.h>
 
 gboolean cashobjects_register(void);
-	
-#ifdef __cplusplus
-}
-#endif
 
 #endif /* _CASHOBJECTS_H */
Index: cashobjects.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Attic/cashobjects.c,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -Lsrc/engine/cashobjects.c -Lsrc/engine/cashobjects.c -u -r1.1.2.3 -r1.1.2.4
--- src/engine/cashobjects.c
+++ src/engine/cashobjects.c
@@ -24,16 +24,6 @@
  
 #include "cashobjects.h"
 #include "gnc-engine.h"
-#include "gncAddressP.h"
-#include "gncBillTermP.h"
-#include "gncCustomerP.h"
-#include "gncEmployeeP.h"
-#include "gncEntryP.h"
-#include "gncInvoiceP.h"
-#include "gncJobP.h"
-#include "gncVendorP.h"
-#include "gncTaxTableP.h"
-#include "gncOrderP.h"
 #include "AccountP.h"
 #include "GroupP.h"
 #include "TransactionP.h"
@@ -41,22 +31,12 @@
 #include "SchedXaction.h"
 #include "SX-book-p.h"
 #include "gnc-pricedb-p.h"
+#include "gnc-lot-p.h"
+#include "gnc-budget-book-p.h"
 
 gboolean
 cashobjects_register(void)
 {
-#ifndef GNUCASH_MAJOR_VERSION
-	g_return_val_if_fail(gncInvoiceRegister(), FALSE);
-	g_return_val_if_fail ( gncJobRegister (),  FALSE);
-	g_return_val_if_fail(gncBillTermRegister(), FALSE);
-	g_return_val_if_fail(gncCustomerRegister(), FALSE);
-	g_return_val_if_fail(gncAddressRegister(), FALSE);
-	g_return_val_if_fail(gncEmployeeRegister(), FALSE);
-	g_return_val_if_fail ( gncEntryRegister (), FALSE);
-	g_return_val_if_fail (gncVendorRegister (), FALSE);
-	g_return_val_if_fail(gncTaxTableRegister(), FALSE);
-	g_return_val_if_fail ( gncOrderRegister (), FALSE);
-#endif
 	g_return_val_if_fail(gnc_commodity_table_register(), FALSE);
 	g_return_val_if_fail(xaccAccountRegister(), FALSE);
 	g_return_val_if_fail ( xaccTransRegister(), FALSE);
@@ -66,5 +46,8 @@
 	g_return_val_if_fail ( SXRegister (),       FALSE);
 	g_return_val_if_fail ( gnc_sxtt_register(), FALSE);
 	g_return_val_if_fail(gnc_pricedb_register(),FALSE);
+	g_return_val_if_fail (gnc_budget_register(),FALSE);
+	g_return_val_if_fail ( gnc_lot_register (), FALSE); 
 	return TRUE;
 }
+
Index: gnc-engine.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/gnc-engine.h,v
retrieving revision 1.16.4.8
retrieving revision 1.16.4.9
diff -Lsrc/engine/gnc-engine.h -Lsrc/engine/gnc-engine.h -u -r1.16.4.8 -r1.16.4.9
--- src/engine/gnc-engine.h
+++ src/engine/gnc-engine.h
@@ -221,6 +221,9 @@
  * for use without Guile. */
 void gnc_engine_shutdown (void);
 
+/** check the engine is fully initialized */
+gboolean gnc_engine_is_initialized(void);
+
 /** Pass a function pointer to gnc_engine_add_init_hook and 
  * it will be called during the evaluation of gnc_engine_init */
 void gnc_engine_add_init_hook(gnc_engine_init_hook_t hook);


More information about the gnucash-changes mailing list