r14515 - gnucash/trunk - Make GncAddress more QOF compliant. (#343726)

Derek Atkins warlord at cvs.gnucash.org
Sun Jul 16 01:16:52 EDT 2006


Author: warlord
Date: 2006-07-16 01:16:52 -0400 (Sun, 16 Jul 2006)
New Revision: 14515
Trac: http://svn.gnucash.org/trac/changeset/14515

Modified:
   gnucash/trunk/
   gnucash/trunk/ChangeLog
   gnucash/trunk/src/business/business-core/gncAddress.c
   gnucash/trunk/src/business/business-core/gncAddress.h
Log:
Make GncAddress more QOF compliant.  (#343726)
Adds BeginEdit/CommitEdit calls.




Property changes on: gnucash/trunk
___________________________________________________________________
Name: svk:merge
   - d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:12841
   + d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:12866

Modified: gnucash/trunk/ChangeLog
===================================================================
--- gnucash/trunk/ChangeLog	2006-07-15 22:27:57 UTC (rev 14514)
+++ gnucash/trunk/ChangeLog	2006-07-16 05:16:52 UTC (rev 14515)
@@ -1,3 +1,9 @@
+2006-07-15  Derek Atkins  <derek at ihtfp.com>
+
+	* src/business/business-core/gncAddress.[ch]:
+	  Make GncAddress more QOF compliant.  (#343726)
+	  Adds BeginEdit/CommitEdit calls.
+
 2006-07-15  Andreas Köhler  <andi5.py at gmx.net>
 
 	* src/report/report-system/html-text.scm: Remove a duplicate of

Modified: gnucash/trunk/src/business/business-core/gncAddress.c
===================================================================
--- gnucash/trunk/src/business/business-core/gncAddress.c	2006-07-15 22:27:57 UTC (rev 14514)
+++ gnucash/trunk/src/business/business-core/gncAddress.c	2006-07-16 05:16:52 UTC (rev 14515)
@@ -50,6 +50,8 @@
   char *	email;
 };
 
+static QofLogModule log_module = GNC_MOD_BUSINESS;
+
 #define _GNC_MOD_NAME	GNC_ADDRESS_MODULE_NAME
 
 G_INLINE_FUNC void mark_address (GncAddress *address);
@@ -137,7 +139,17 @@
 gncAddressDestroy (GncAddress *addr)
 {
   if (!addr) return;
+  addr->inst.do_free = TRUE;
+  gncAddressCommitEdit (addr);
+}
 
+static void
+gncAddressFree (GncAddress *addr)
+{
+  if (!addr) return;
+
+  qof_event_gen (&addr->inst.entity, QOF_EVENT_DESTROY, NULL);
+
   CACHE_REMOVE (addr->name);
   CACHE_REMOVE (addr->addr1);
   CACHE_REMOVE (addr->addr2);
@@ -147,16 +159,19 @@
   CACHE_REMOVE (addr->fax);
   CACHE_REMOVE (addr->email);
 
+  qof_instance_release (&addr->inst);
   g_free (addr);
 }
 
+
 /* Set functions */
 
-#define SET_STR(member, str) { \
+#define SET_STR(obj, member, str) { \
 	char * tmp; \
 	\
 	if (member == str) return; \
 	if (!safe_strcmp (member, str)) return; \
+	gncAddressBeginEdit (obj); \
 	tmp = CACHE_INSERT (str); \
 	CACHE_REMOVE (member); \
 	member = tmp; \
@@ -166,66 +181,100 @@
 {
   if (!addr) return;
   if (!name) return;
-  SET_STR(addr->name, name);
+  SET_STR(addr, addr->name, name);
   mark_address (addr);
+  gncAddressCommitEdit (addr);
 }
 
 void gncAddressSetAddr1 (GncAddress *addr, const char *addr1)
 {
   if (!addr) return;
   if (!addr1) return;
-  SET_STR(addr->addr1, addr1);
+  SET_STR(addr, addr->addr1, addr1);
   mark_address (addr);
+  gncAddressCommitEdit (addr);
 }
 
 void gncAddressSetAddr2 (GncAddress *addr, const char *addr2)
 {
   if (!addr) return;
   if (!addr2) return;
-  SET_STR(addr->addr2, addr2);
+  SET_STR(addr, addr->addr2, addr2);
   mark_address (addr);
+  gncAddressCommitEdit (addr);
 }
 
 void gncAddressSetAddr3 (GncAddress *addr, const char *addr3)
 {
   if (!addr) return;
   if (!addr3) return;
-  SET_STR(addr->addr3, addr3);
+  SET_STR(addr, addr->addr3, addr3);
   mark_address (addr);
+  gncAddressCommitEdit (addr);
 }
 
 void gncAddressSetAddr4 (GncAddress *addr, const char *addr4)
 {
   if (!addr) return;
   if (!addr4) return;
-  SET_STR(addr->addr4, addr4);
+  SET_STR(addr, addr->addr4, addr4);
   mark_address (addr);
+  gncAddressCommitEdit (addr);
 }
 
 void gncAddressSetPhone (GncAddress *addr, const char *phone)
 {
   if (!addr) return;
   if (!phone) return;
-  SET_STR(addr->phone, phone);
+  SET_STR(addr, addr->phone, phone);
   mark_address (addr);
+  gncAddressCommitEdit (addr);
 }
 
 void gncAddressSetFax (GncAddress *addr, const char *fax)
 {
   if (!addr) return;
   if (!fax) return;
-  SET_STR(addr->fax, fax);
+  SET_STR(addr, addr->fax, fax);
   mark_address (addr);
+  gncAddressCommitEdit (addr);
 }
 
 void gncAddressSetEmail (GncAddress *addr, const char *email)
 {
   if (!addr) return;
   if (!email) return;
-  SET_STR(addr->email, email);
+  SET_STR(addr, addr->email, email);
   mark_address (addr);
+  gncAddressCommitEdit (addr);
 }
 
+void gncAddressBeginEdit (GncAddress *addr)
+{
+  qof_begin_edit (&addr->inst);
+}
+
+static inline void gncAddressOnError (QofInstance *inst, QofBackendError errcode)
+{
+  PERR("Address QofBackend Failure: %d", errcode);
+}
+  
+static inline void gncAddressOnDone (QofInstance *addr) { }
+
+static inline void address_free (QofInstance *inst)
+{
+  GncAddress *addr = (GncAddress *) inst;
+  gncAddressFree (addr);
+}
+
+void gncAddressCommitEdit (GncAddress *addr)
+{
+  if (!qof_commit_edit (QOF_INSTANCE(addr))) return;
+  qof_commit_edit_part2 (&addr->inst, gncAddressOnError,
+                         gncAddressOnDone, address_free);
+}
+             
+
 /* Get Functions */
 
 const char * gncAddressGetName (const GncAddress *addr)

Modified: gnucash/trunk/src/business/business-core/gncAddress.h
===================================================================
--- gnucash/trunk/src/business/business-core/gncAddress.h	2006-07-15 22:27:57 UTC (rev 14514)
+++ gnucash/trunk/src/business/business-core/gncAddress.h	2006-07-16 05:16:52 UTC (rev 14515)
@@ -80,11 +80,10 @@
 
 /** @name Create/Destroy functions 
  @{ */
-/** create a new address */
-GncAddress * gncAddressCreate (QofBook *book, QofEntity *parent);
-
-/** destroy an address */
+GncAddress *gncAddressCreate (QofBook *book, QofEntity *parent);
 void gncAddressDestroy (GncAddress *addr);
+void gncAddressBeginEdit (GncAddress *addr);
+void gncAddressCommitEdit (GncAddress *addr);
 
 /** @} */
 



More information about the gnucash-changes mailing list