[Gnucash-changes] Replace private headers with new API functions.

Neil Williams codehelp at cvs.gnucash.org
Thu Oct 20 10:48:14 EDT 2005


Log Message:
-----------
Replace private headers with new API functions.

Tags:
----
gnucash-gnome2-dev

Modified Files:
--------------
    gnucash/src/backend/postgres:
        PostgresBackend.h
        account.c
        book.c
        events.c
        gncquery.c
        price.c
        putil.h
        table.m4
        txnmass.c
    gnucash/src/engine:
        engine-helpers.c
        qofbackend-p.h
        qofbook.c

Revision Data
-------------
Index: price.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/postgres/price.c,v
retrieving revision 1.17.4.7
retrieving revision 1.17.4.8
diff -Lsrc/backend/postgres/price.c -Lsrc/backend/postgres/price.c -u -r1.17.4.7 -r1.17.4.8
--- src/backend/postgres/price.c
+++ src/backend/postgres/price.c
@@ -30,15 +30,11 @@
 #include <string.h>
 #include <libpq-fe.h>  
 
-#include "qofbook.h"
-#include "qofbook-p.h"
+#include "qof.h"
 #include "gnc-commodity.h"
 #include "gnc-engine.h"
-#include "gnc-engine-util.h"
-#include "gnc-event.h"
 #include "gnc-pricedb.h"
 #include "gnc-pricedb-p.h"
-#include "guid.h"
 
 #include "PostgresBackend.h"
 #include "base-autogen.h"
Index: book.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/postgres/book.c,v
retrieving revision 1.6.4.5
retrieving revision 1.6.4.6
diff -Lsrc/backend/postgres/book.c -Lsrc/backend/postgres/book.c -u -r1.6.4.5 -r1.6.4.6
--- src/backend/postgres/book.c
+++ src/backend/postgres/book.c
@@ -31,13 +31,9 @@
 
 #include <libpq-fe.h>  
  
-#include "qofbackend.h"
-#include "qofbackend-p.h"
+#include "qof.h"
 #include "book.h"
-#include "qofbook-p.h"
-#include "gnc-engine-util.h"
 #include "gnc-pricedb.h"
-#include "guid.h"
 #include "kvp-sql.h"
 #include "PostgresBackend.h"
 
@@ -76,6 +72,7 @@
 pgendStoreBookNoLock (PGBackend *be, QofBook *book,
                          gboolean do_check_version)
 {
+   gint32 idata;
    if (!be || !book) return;
 
    ENTER ("book=%p", book);
@@ -84,20 +81,20 @@
    {
      if (0 < pgendBookCompareVersion (be, book)) return;
    }
-   book->version ++;  /* be sure to update the version !! */
+   qof_book_set_version(book, (qof_book_get_version(book) +1));  /* be sure to update the version !! */
 
-   if ((0 == book->idata) &&
+   if ((0 == qof_book_get_idata(book)) &&
        (FALSE == kvp_frame_is_empty (qof_book_get_slots(book))))
    {
-      book->idata = pgendNewGUIDidx(be);
+      qof_book_set_idata(book, pgendNewGUIDidx(be));
    }
 
    pgendPutOneBookOnly (be, book);
-
-   if (book->idata)
+   idata = qof_book_get_idata(book);
+   if ( idata > 0)
    {
-      pgendKVPDelete (be, book->idata);
-      pgendKVPStore (be, book->idata, book->inst.kvp_data);
+      pgendKVPDelete (be, idata);
+      pgendKVPStore (be, idata, qof_instance_get_slots((QofInstance*)book));
    }
    LEAVE(" ");
 }
@@ -145,15 +142,25 @@
    guid = nullguid;  /* just in case the read fails ... */
    string_to_guid (DB_GET_VAL("bookGuid",j), &guid);
 
-   qof_book_set_guid (book, &guid);
+   qof_entity_set_guid ((QofEntity*)book, &guid);
 
-   book->book_open = (DB_GET_VAL("book_open",j))[0];
-   book->version = atoi(DB_GET_VAL("version",j));
-   book->idata = atoi(DB_GET_VAL("iguid",j));
+   if((DB_GET_VAL("book_open",j))[0] == 'n')
+   {
+   		qof_book_mark_closed(book);
+   }
+   qof_book_set_version(book, atoi(DB_GET_VAL("version",j)));
+   qof_book_set_idata(book, atoi(DB_GET_VAL("iguid",j)));
 
    return book;
 }
 
+static void pg_kvp_helper (const char* key, KvpValue *value, gpointer data)
+{
+	QofBook *book = (QofBook*)data;
+	kvp_frame_set_slot_nc(qof_instance_get_slots((QofInstance*)book),
+		key, value);
+}
+
 void
 pgendBookRestore (PGBackend *be, QofBook *book)
 {
@@ -170,9 +177,13 @@
    SEND_QUERY (be, bufp, );
    pgendGetResults (be, get_one_book_cb, book);
 
-   if (0 != book->idata) 
+   if (0 != qof_book_get_idata(book)) 
    {
-      book->inst.kvp_data = pgendKVPFetch (be, book->idata, book->inst.kvp_data);
+	  KvpFrame *pg_frame;
+	  
+	  pg_frame = pgendKVPFetch (be, qof_book_get_idata(book), 
+	   	qof_instance_get_slots((QofInstance*)book));
+	  kvp_frame_for_each_slot(pg_frame, pg_kvp_helper, book);	   
    }
 
    LEAVE (" ");
@@ -200,19 +211,23 @@
    for (node=blist; node; node=node->next)
    {
       book = node->data;
-      if (guid_equal (&book->inst.entity.guid, &guid)) break;
+      if (guid_equal (qof_entity_get_guid((QofEntity*)book), &guid)) break;
       book = NULL;
    }
    
    if (!book) 
    {
       book = qof_book_new();
-      qof_book_set_guid (book, &guid);
+      qof_entity_set_guid ((QofEntity*)book, &guid);
    }
 
-   book->book_open = (DB_GET_VAL("book_open",j))[0];
-   book->version = atoi(DB_GET_VAL("version",j));
-   book->idata = atoi(DB_GET_VAL("iguid",j));
+   if((DB_GET_VAL("book_open",j))[0] == 'n')
+   {
+	   qof_book_mark_closed(book);
+   }
+//   book->book_open = (DB_GET_VAL("book_open",j))[0];
+   qof_book_set_version(book, atoi(DB_GET_VAL("version",j)));
+   qof_book_set_idata(book, atoi(DB_GET_VAL("iguid",j)));
 
    return blist;
 }
@@ -235,10 +250,18 @@
    for (node=blist; node; node=node->next)
    {
       QofBook *book = node->data;
-      if (0 != book->idata) 
+      if (0 != qof_book_get_idata(book)) 
       {
-         book->inst.kvp_data = pgendKVPFetch (be, book->idata, book->inst.kvp_data);
+	  	KvpFrame *pg_frame;
+	  
+		  pg_frame = pgendKVPFetch (be, qof_book_get_idata(book), 
+		   	qof_instance_get_slots((QofInstance*)book));
+		  kvp_frame_for_each_slot(pg_frame, pg_kvp_helper, book);	   
       }
+/*      if (0 != book->idata) 
+      {
+         book->inst.kvp_data = pgendKVPFetch (be, book->idata, book->inst.kvp_data);
+      }*/
    }
 
    LEAVE (" ");
Index: account.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/postgres/account.c,v
retrieving revision 1.23.4.3
retrieving revision 1.23.4.4
diff -Lsrc/backend/postgres/account.c -Lsrc/backend/postgres/account.c -u -r1.23.4.3 -r1.23.4.4
--- src/backend/postgres/account.c
+++ src/backend/postgres/account.c
@@ -32,17 +32,11 @@
 #include <libpq-fe.h>  
  
 #include "AccountP.h"
-#include "qofbackend.h"
-#include "qofbackend-p.h"
+#include "qof.h"
 #include "Group.h"
 #include "GroupP.h"
-#include "qofbook.h"
-#include "qofbook-p.h"
 #include "gnc-commodity.h"
-#include "gnc-engine-util.h"
-#include "gnc-event.h"
 #include "gnc-pricedb.h"
-#include "guid.h"
 
 #include "account.h"
 #include "book.h"
Index: PostgresBackend.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/postgres/PostgresBackend.h,v
retrieving revision 1.8.4.4
retrieving revision 1.8.4.5
diff -Lsrc/backend/postgres/PostgresBackend.h -Lsrc/backend/postgres/PostgresBackend.h -u -r1.8.4.4 -r1.8.4.5
--- src/backend/postgres/PostgresBackend.h
+++ src/backend/postgres/PostgresBackend.h
@@ -37,14 +37,11 @@
 #include <libpq-fe.h>
 
 #include "Group.h"
-#include "guid.h"
+#include "qof.h"
 #include "Transaction.h"
 
 #include "builder.h"
 #include "qof.h"
-/** \todo Remove the private header
-and use API functions instead. */
-#include "qofbook-p.h"
 
 #define GNC_MOD_TXN    "gnucash-postgres-transaction"
 
Index: gncquery.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/postgres/gncquery.c,v
retrieving revision 1.29.4.7
retrieving revision 1.29.4.8
diff -Lsrc/backend/postgres/gncquery.c -Lsrc/backend/postgres/gncquery.c -u -r1.29.4.7 -r1.29.4.8
--- src/backend/postgres/gncquery.c
+++ src/backend/postgres/gncquery.c
@@ -44,12 +44,12 @@
 #include "Account.h"
 #include "Transaction.h"
 #include "gnc-engine.h"
-#include "gnc-engine-util.h"
-
-#include "qofquery.h"
+/** \todo Code dependent on the private query headers 
+qofquery-p.h and qofquerycore-p.h may need to be modified.
+These files are temporarily exported for QOF 0.6.0 but
+cannot be considered "standard" or public parts of QOF. */
 #include "qofquery-p.h"
 #include "qofquerycore-p.h"
-#include "qofclass.h"
 
 #include "gncquery.h"
 #include "builder.h"
Index: table.m4
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/postgres/table.m4,v
retrieving revision 1.7.4.4
retrieving revision 1.7.4.5
diff -Lsrc/backend/postgres/table.m4 -Lsrc/backend/postgres/table.m4 -u -r1.7.4.4 -r1.7.4.5
--- src/backend/postgres/table.m4
+++ src/backend/postgres/table.m4
@@ -13,15 +13,15 @@
        commodity,      , char *, gnc_commodity_get_unique_name(xaccAccountGetCommodity(ptr)),
        version,        , int32,  xaccAccountGetVersion(ptr),
        iguid,          , int32,  ptr->idata,
-       bookGUID,       , GUID *, qof_book_get_guid(xaccAccountGetBook(ptr)),
+       bookGUID,       , GUID *, qof_entity_get_guid((QofEntity*)xaccAccountGetBook(ptr)),
        parentGUID,     , GUID *, xaccAccountGetGUID(xaccAccountGetParentAccount(ptr)),
        accountGUID, KEY, GUID *, xaccAccountGetGUID(ptr),
        ')
 
 define(`book', `gncBook, Book, QofBook, b,
-       book_open,      , char,   ptr->book_open,
-       version,        , int32,  ptr->version,
-       iguid,          , int32,  ptr->idata,
+       book_open,      , char,   qof_book_get_open_marker(ptr),
+       version,        , int32,  qof_book_get_version(ptr),
+       iguid,          , int32,  qof_book_get_idata(ptr),
        bookGUID,    KEY, GUID *, qof_book_get_guid(ptr),
        ')
 
Index: txnmass.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/postgres/txnmass.c,v
retrieving revision 1.14.4.5
retrieving revision 1.14.4.6
diff -Lsrc/backend/postgres/txnmass.c -Lsrc/backend/postgres/txnmass.c -u -r1.14.4.5 -r1.14.4.6
--- src/backend/postgres/txnmass.c
+++ src/backend/postgres/txnmass.c
@@ -38,11 +38,6 @@
 #include "GroupP.h"
 #include "gnc-commodity.h"
 #include "gnc-engine.h"
-#include "gnc-engine-util.h"
-#include "gnc-event.h"
-#include "guid.h"
-#include "qofbook.h"
-#include "qofbook-p.h"
 #include "Transaction.h"
 #include "TransactionP.h"
 
Index: putil.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/postgres/putil.h,v
retrieving revision 1.10.4.5
retrieving revision 1.10.4.6
diff -Lsrc/backend/postgres/putil.h -Lsrc/backend/postgres/putil.h -u -r1.10.4.5 -r1.10.4.6
--- src/backend/postgres/putil.h
+++ src/backend/postgres/putil.h
@@ -362,7 +362,7 @@
       for (node=be->blist; node; node=node->next)                \
       {                                                          \
          book = node->data;                                      \
-         if (guid_equal (&book->inst.entity.guid, &book_guid)) break; \
+         if (guid_equal (qof_entity_get_guid((QofEntity*)book), &book_guid)) break; \
          book = NULL;                                            \
       }                                                          \
       if (!book) return data;                                    \
Index: events.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/postgres/events.c,v
retrieving revision 1.13.4.5
retrieving revision 1.13.4.6
diff -Lsrc/backend/postgres/events.c -Lsrc/backend/postgres/events.c -u -r1.13.4.5 -r1.13.4.6
--- src/backend/postgres/events.c
+++ src/backend/postgres/events.c
@@ -30,15 +30,7 @@
 
 #include "events.h"
 #include "gnc-engine.h"
-#include "gnc-engine-util.h"
-#include "gnc-event.h"
-#include "gnc-event-p.h"
-#include "guid.h"
-#include "qofbackend.h"
-#include "qofbackend-p.h"
-#include "qofid.h"
-#include "qofid-p.h"
-
+#include "Transaction.h"
 #include "PostgresBackend.h"
 #include "account.h"
 #include "putil.h"
@@ -270,7 +262,9 @@
    {
       Event *ev = (Event *) node->data;
       QofIdType local_obj_type;
+      QofEntity *ent;
 
+      ent = NULL;
       /* lets see if the local cache has this item in it */
       local_obj_type = pgendGUIDType (be, &(ev->guid));
       if ((local_obj_type != GNC_ID_NONE) && 
@@ -300,6 +294,7 @@
                /* if the remote user created an account, mirror it here */
                acc = pgendCopyAccountToEngine (be, &(ev->guid));
                xaccGroupMarkSaved (xaccAccountGetRoot(acc));
+               ent = (QofEntity*)acc;
                break;
             }
             case GNC_EVENT_DESTROY: {
@@ -308,6 +303,7 @@
                xaccAccountBeginEdit (acc);
                xaccAccountDestroy (acc);
                xaccGroupMarkSaved (topgrp);
+               ent = (QofEntity*)acc;
                break;
             }
          }
@@ -324,19 +320,29 @@
             default:
                PERR ("transaction: cant' happen !!!!!!!");
                break;
-            case GNC_EVENT_CREATE:
+            case GNC_EVENT_CREATE: {
+               Transaction *trans;
                /* don't mirror transaction creations. If a register needs
                 * it, it will do a query. */
+               trans = pgendTransLookup (be, &(ev->guid));
+               ent = (QofEntity*)trans;
                PINFO ("create transaction");
                break;
-            case GNC_EVENT_MODIFY: 
+			}
+            case GNC_EVENT_MODIFY: {
+               Transaction *trans;
+               trans = pgendTransLookup (be, &(ev->guid));
                pgendCopyTransactionToEngine (be, &(ev->guid));
+               ent = (QofEntity*)trans;
                break;
+			}
             case GNC_EVENT_DESTROY: {
                Transaction *trans = pgendTransLookup (be, &(ev->guid));
                xaccTransBeginEdit (trans);
+               /* mark trans for freeing */
                xaccTransDestroy (trans);
                xaccTransCommitEdit (trans);
+               ent = (QofEntity*)trans;
                break;
             }
          }
@@ -369,7 +375,7 @@
          local_obj_type = pgendGUIDType (be, &(ev->guid));
          if (GNC_ID_NONE != local_obj_type)
          {
-            gnc_engine_generate_event (&(ev->guid), local_obj_type, GNC_EVENT_CREATE);
+              gnc_engine_gen_event(ent, GNC_EVENT_CREATE);
          }
       }
       else 
@@ -377,11 +383,11 @@
          local_obj_type = pgendGUIDType (be, &(ev->guid));
          if (GNC_ID_NONE != local_obj_type)
          {
-            gnc_engine_generate_event (&(ev->guid), local_obj_type, GNC_EVENT_MODIFY);
+              gnc_engine_gen_event(ent, GNC_EVENT_MODIFY);
          }
          else
          {
-            gnc_engine_generate_event (&(ev->guid), local_obj_type, GNC_EVENT_DESTROY);
+              gnc_engine_gen_event(ent, GNC_EVENT_DESTROY);
          }
       }
    
Index: engine-helpers.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/engine-helpers.c,v
retrieving revision 1.24.4.7
retrieving revision 1.24.4.8
diff -Lsrc/engine/engine-helpers.c -Lsrc/engine/engine-helpers.c -u -r1.24.4.7 -r1.24.4.8
--- src/engine/engine-helpers.c
+++ src/engine/engine-helpers.c
@@ -36,9 +36,10 @@
 #include "gnc-engine.h"
 #include "guile-mappings.h"
 #include "qof.h"
-/** \todo Private query headers 
-qofquery-p.h and qofquerycore-p.h
-are not exported from QOF */
+/** \todo Code dependent on the private query headers 
+qofquery-p.h and qofquerycore-p.h may need to be modified.
+These files are temporarily exported for QOF 0.6.0 but
+cannot be considered "standard" or public parts of QOF. */
 #include "qofquery-p.h"
 #include "qofquerycore-p.h"
 
Index: qofbook.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/qofbook.c,v
retrieving revision 1.10.2.9
retrieving revision 1.10.2.10
diff -Lsrc/engine/qofbook.c -Lsrc/engine/qofbook.c -u -r1.10.2.9 -r1.10.2.10
--- src/engine/qofbook.c
+++ src/engine/qofbook.c
@@ -288,6 +288,36 @@
 	book->book_open = 'n';
 }
 
+gchar qof_book_get_open_marker(QofBook *book)
+{
+       if(!book) { return 'n'; }
+       return book->book_open;
+}
+
+gint32 qof_book_get_version (QofBook *book)
+{
+       if(!book) { return -1; }
+       return book->version;
+}
+
+guint32 qof_book_get_idata (QofBook *book)
+{
+       if(!book) { return 0; }
+       return book->idata;
+}
+
+void qof_book_set_version (QofBook *book, gint32 version)
+{
+       if(!book && version < 0) { return; }
+       book->version = version;
+}
+
+void qof_book_set_idata(QofBook *book, guint32 idata)
+{
+       if(!book && idata < 0) { return; }
+       book->idata = idata;
+}
+
 gint64
 qof_book_get_counter (QofBook *book, const char *counter_name)
 {
Index: qofbackend-p.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/qofbackend-p.h,v
retrieving revision 1.2.4.8
retrieving revision 1.2.4.9
diff -Lsrc/engine/qofbackend-p.h -Lsrc/engine/qofbackend-p.h -u -r1.2.4.8 -r1.2.4.9
--- src/engine/qofbackend-p.h
+++ src/engine/qofbackend-p.h
@@ -379,6 +379,31 @@
 
 void qof_backend_init(QofBackend *be);
 
+/** Allow backends to see if the book is open 
+
+ at return 'y' if book is open, otherwise 'n'.
+*/
+gchar qof_book_get_open_marker(QofBook *book);
+
+/** get the book version
+
+used for tracking multiuser updates in backends.
+
+ at return -1 if no book exists, 0 if the book is
+new, otherwise the book version number.
+*/
+gint32 qof_book_get_version (QofBook *book);
+
+/** get the book tag number
+
+used for kvp management in sql backends.
+*/
+guint32 qof_book_get_idata (QofBook *book);
+
+void qof_book_set_version (QofBook *book, gint32 version);
+
+void qof_book_set_idata(QofBook *book, guint32 idata);
+
 /* @} */
 /* @} */
 /* @} */


More information about the gnucash-changes mailing list