[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